Diese Seite mit anderen teilen ...

Informationen zum Thema:
Forum:
elweb Batterie
Beiträge im Thema:
24
Erster Beitrag:
vor 2 Monaten, 3 Wochen
Letzter Beitrag:
vor 1 Monat, 1 Woche
Beteiligte Autoren:
sharpals, laase, Berlingo-98, thegray, Karlfred, Bernd Schlueter

Projektvorstellung

Startbeitrag von sharpals am 23.05.2017 05:44

Hier meine projektvorstellung zur messung von einzelspannungen, bzw kontrolle von zellen.

Projekt mit sourchcode

Die aufgabenstellung ist:

Es müßen 2 - 20 accus überwacht werden, bzw, ihr lade/entladeverhalten.
Die daten sollen per serieller schnittstelle übertragen werden und zwar
im klartext.

Da an den accus hohe spannungen auftreten können, dürfen max 2 accus an
einem kontroller hängen und jede schaltung muß von der anderen ,
galvanisch, getrennt werden.

Als zielplatform wurde ein Tiny85 gewählt ( overkill !! ).
Die auswahl auf dem prozessor ist gefallen, weil (mind) zwei ADC
vorhanden sind und der pinchange-INT vorhanden ist.

Da die anzahl der überwachten teile nie gleich ist, wurde dieDaisy Chain
gewählt.

Und die daten werden auf einen Open-Collector-Ausgang gegeben.

Um das zu bewerkstelligen und auch die eindeutige identifikation des
jeweiligen messeinganges zu gewährleisten, muß es also einen master
geben und slaves.

Der master ist , per definition die nummer 1 und 2.

Ist er mit der messung und übertragung seiner daten fertig, gibt er
einen Übertragungsimpuls aus. Dieser impuls wird auf einen
Interrupteingang des folgenden prozessors gegeben. Sobald dieser
ausgelöst wird, misst auch er seine daten und sendet sie. So geht es
dann bis zum letzen weiter.

Da ich aber den Quelltext nicht für master und slave aufspalten wollte
und die schaltung auch universell sein soll, fragt der prozessor , beim
start, ob der strobeeingang kurzgeschlossen ist, wenn er es ist, dann
wird aus ihm ein master.

Der vorteil dieses vorgehens ist, die daten kommen in geordneter
reihenfolge af dem bus .....

Das datenprotokoll ist

#13(return) #10 (newline) DATENSTRING und als abschluß ';'

Die passende software : [www.mikrocontroller.net]

Wenn es anwendungsfälle gibt, bitte melden.

Gruß Michael

Antworten:

Hallo Michael,
laß uns besser mal hier reden als in zig parallel-threads a la dendriten usw
Ja,ich bin sehr interessiert an Deinem Programm zur optischen Visualisierung von vielen (bei mir wünschenswert 20) Zellspannungen. Ich verwende zwar nicht Deine Attiny Hardware, aber die Daten werden ebenso als einfache csv ASCII seriell gesendet. HW besteht bei mir aus Atmega328 mit vorgestztem MUX für 20 Zellen und nachgeschalteten Balancerstufen 0.4A.
Stampplot ist super, geht aber leider nur bis 10 Zellen.
In dem Zip file unter mikro.net war keine Delphi-Datei, oder?
Wie läuft es jetzt mit Deinem Visu-Programm, würden 20 Kanäle funktionieren? Wenn es Dir an Testumgebung mangelt, ich würxe gern mittesten, könnte es mit XP (RS232 direkt) und Win10 (seriell USB Wandler) ausprobieren.
Viele Grüße, Lars
P.S.: ich finds immer gut, wenn der "stream" sich nicht von dem unterscheidet, der auch mit Windows-Hausmitteln a la Hyperterminal o.ä. angezeigt und aufgezeichnet werden kann. "13,10" setze ich daher auch immer hinter jede gesendete "Zeile".

von laase - am 27.05.2017 11:45
Hallo, ja das sollte gehen. Ich habe das programm für 29 messwerte vorgesehen ...

Das programm arbeitet zur zeit mit Ganzzahlen, was aber änderbar ist ( dan müßte ich nur einen multiplikator einbauen ).

D.h die Tinys senden 314 für 3,14V.

also sieht das programm bei 9,6K ( auch da könnte man eine auswahl anbieten ) folgendes.

310;400;.....;#13;#10

Ich habe dir hier die neuste version hineingelegt.

[www.mikrocontroller.net]

versuche mal , ob das so geht. Andernfallt könnte man eine anpassung vornehmen.

Und wenn du noch eine Idee hast, die werte anders darzustellen, immer her damit.

Gruß Michael

von sharpals - am 30.05.2017 05:28
Hallo Michael,
habe gestern Abend ziemlich lange drangehangen, weil Dein S_Plot bei mir auf Win10 das erste Mal lief.
Kurz, weil es vll auch für andere interessant ist, die Stolpersteine, mit denen ich zu kämpfen hatte:
1. Programm muß unter Win10 im Kompatibilitätsmodus ausgeführt werden. Der für WinXP SP3 ging sofort.
2. die meisten herumliegenden USB-Serial Adapter haben einen Prolific PL-2303 Chip drin, der unter dem für Win10 angebotenen Treiber nicht funktioniert. Stattdessen muß man unbedingt die Version 3.3 von 2009 oder 2010 installieren. Meinen Treiber habe ich von hier. Andere Downloadseiten hatten zT Viren mit im Angebot ;-)
3. S_Plot will semikolon-separierte Werte, nicht "csv" (comma separated values). Ich mußte mein Programm dafür umschreiben
4. Das Programm zeigt mir innerhalb der ersten 30s einen Fehler an, daß es nichts empfängt. Tatsächlich werden aber 19 der abgeschickten 20 Werte korrekt im Terminalfenster angezeigt. Nach Ablauf der 30s steht im Fenster "0 expected, 20 received". Es wird daher kein einziger Graph angezeigt.

1-3 sind gelöst, an 4 arbeite ich noch. Evtl. ein Timingproblem. Ich habe aber extra schon den Oszillator kalibriert, damit die 9600 Baud auch wirklich eingehalten werden. Das integrierte Terminal von BASCOM und Hyperterminal zeigen mir die 20 Werte sehr schön nacheinander an, im Terminalfenster von S_Plot steht an der 20. Stelle eine 0. Im Hauptfenster werden ebenfalls 20 Werte als Zahl angezeigt, aber jeweils sogar 5-stellig, also mit einer 0 mehr hintendran, als urpsrünglich abgeschickt.

Liegt es vll daran, daß ich 20 vierstellige Werte a la "3554" und nicht dreistellige "999" übertrage und daher zu viel Zeit dafür ins Land geht?

Wenn ich zwei Wünsche hätte, dann wären diese:
- Komma statt Semikolon als Separator (dann wären meine gesendeten Strings auch kompatibel zu Stampplot, zu Terminalprogrammen, die eine Abspeicherung als csv vornehmen und zu vielen anderen "Plot von ComX" Programmen
- Format und Skalierung bis zu "4300", um die Spannung typischer Lithiumzellen auf 1mV genau darstellen zu können. "5900", wie viele moderne Multimeter schadet aber sicherlich auch nicht.

Ein Tipp noch für die, die selbst basteln:
Wer wie ich einen Optokoppler zur Potentialtrennung des seriellen Signals nutzt, hat mit einem USB-seriell Wandler letztlich viel weniger Probleme, als mit einem "echten" RS232-Port. Letzterer hat nämlich keine Spannungsversorgung für den hinterm Optokoppler nötigen Pullup-Widerstand und man braucht entweder ein extra Netzteil dafür oder eine Diodenschaltung, die die Spannung aus der COM-Schnittstelle selbst generiert. Ziemlich viel Geschleuder am Kabel jedenfalls. Die USB-seriell Wandlermodule stellen 5V bereit, wo man bequem den Pullup-Widerstand ranhängen kann. Der sollte, je nach Übertragungsverhältnis des Optokopplers, in der Größenordnung des Vorwiderstands für die Sendediode liegen. Ganz ohne Pullup ging es aber leider auch nicht.

Ich hoffe, ich bekomme heute die ersten Kurven zu Gesicht, werde mal mit dreistelligen Dummy-Übertragungen probieren. Teste vll auch mal Deine neue Version.
Viele Grüße, Lars

von laase - am 31.05.2017 19:21
Zitat
Bernd
Lars, unser Datenformat ist dezimal. das könnten wir natürlich ändern, aber dann in jedem Prozessor. ...
Aber wir könnten die reinen dezimalen Datenfiles ja auch in Hex übersetzen und damit stampplot füttern... Stimmt, die light-Version kann Vieles, was auch unsere software kann.
...
Im Moment sind wir etwas festgelegt und sich in eine neue Sprache einzugewöhnen, braucht auch Zeit und bringt Ärger...Stampplot kannten wir noch nicht, als wir loslegten...


Hallo Bernd,
meine und die von mir an StampPlot geschickten sind ja auch per ASCII übertragene Dezimalwerte! Man braucht da kein Hex!
Deshalb meinte ich ja auch zu Michael: besser den Datenstring so gestalten, daß er von den verschiedensten Programmen empfangen werden kann und universell/international lesbar ist.
Wenn es aber geht, würde ich gern, daß wir alle auf vierstellige Werte umsteigen. Schadet bestimmt auch den NiCads nicht ;-)
Drei Stellen sind doch arg wenig, wenn man mehr mit unserer Hard- und Software anfangen möchte. Und programmtechnisch gesehen: das Byte (0-255) ist auch bei 999 eh schon überschritten ...
Die Baudrate finde ich super, das ist der kleinste gemeinsame Nenner von vielen und für unsere Zwecke absolut ausreichend. Bei High-Speed BMSen die Ihren Zellverläufe schnell wie ein Oszi darstellen wollen, werden die 9600 Baud natürlich nicht ausreichen, aber da müssen wir auch nicht unbedingt hin.
Viele Grüße, Lars

von laase - am 31.05.2017 19:38
Ja das mit dem adapter ist ärgerlich, es gibt aber auch auf der herstellerseite noch den treiber.

Also das programm zählt am anfang die eingelaufenden werte, um festzustellen, ob sich danach ein fehler enschleicht.

wert1;wert2;wert;0#10#13

die letzte null ist aus technischen gründen nötig.

Es sollte etwa so aussehen

642; 584; 684; 692; 123; 555; 0

von sharpals - am 01.06.2017 06:55
vorausschau :

ich habe jetzt einei ini eingebaut, dort könne parameter angepasst werden.


[Main]
Seperator=;
framed_Checked=1
Bautrate=9600
[SKALE]
maximaler_wert=1000
minimaler_wert=200
anzeige_skala=10

Jetzt könntest du für deine aufgabenstellung die ini wohl so ändern:

[Main]
Seperator=,
framed_Checked=0
Bautrate=9600
[SKALE]
maximaler_wert=10000
minimaler_wert=2000
anzeige_skala=1

von sharpals - am 01.06.2017 08:07
Zitat
sharpals
Hier meine projektvorstellung zur messung von einzelspannungen, bzw kontrolle von zellen.
Gruß Michael


Hallo Michael,
Ich habe folgende Probleme:
1. ich verstehe die Schaltung nicht, die Du im microcontroller.net angeben hat.
[attachment 2322 325365.jpg]
Konkret:
Was liegt an PB5? Geht ins Nirvana. Oder zu anderen Plantinchen?
PB3 geht über 10 kOhm an GND ??? Wieso denn das. Und dann noch 100 kOhm von GND zu Plus (VCC). Ist das so richtig gezeichnet?
PB4 verstehe ich so, dass damit über 220 Ohm der untere Optokoppler gegen Gnd geschaltet wird. OK so.
PB2 geht wieder über 220 Ohm an Masse bzw. GND. Und was sollen R4 und R5 mit je 100 kOhm. Gehen auch an GND, aber oben wohin??
PB1 schaltet über 10 KOhm den oberen Optokoppler gegen VCC.
PB0 verschwindet nach unten aus dem Bild. Zur nächsten Messplatine?
Welches sind die eigentlichen Messeingänge, die zu den Akkus gehen?
Wie ist das Zusammenschalten mehrerer dieser Platinen zu einem System, konkret: wie hängen die 4 kleinen Platinen elektrisch zusammen. Ein Gesamtplan mit 4 Platinen, Anschluss an die zu messenden Akkus und an den Rechner wäre sehr hilfreich für mich.

Gruss, Roland

von Berlingo-98 - am 02.06.2017 14:35
Sorry für die werte, ich komme mit dem schaltplaneditor nie so zurecht und zeichne meine platinen dann ohne router. ( und ich sehe der schaltplan ist mist !! ).

Die Optokoppler bekommen 220 - 330 Ohm als Vorwiderstand ( R6 / R7 )

Die widerstände, die vom analogeingang an masse gehen haben alle 9,9K (R1 / R2 ) und die vom Analogeingan zur messenden spannung gehen haben 90,4K (R3/R4/R5).

Da ja Zwei batterien übereinander liegen, habe ich den oberen spannungsteiler aus der kombination 9,9 und 2x90,4 K genommen. So hat der untere wandeler eine etwas höhere auflösung. Würde man auf liPO mit einer Zelle gehen, dann könnte man für unten anstelle von 90,4K 45K nehemn und oben würde nur ein 90,4k ligen. Dann wird die messgenauigkeit doppelt so hoch.


Die Schaltung arbeite als parasit an der zu messenden batterie. ( ohne regler LIPO 1 Zelle und mit regler ca 6-8V )

Also PB5 ( reset) ist in der tat unbeschaltet .

PB0 ist der übertragungseingang, der vom vorherigen prozessor kommt und ist Low aktiv. Er wird von den Oberen Opto angestoßen.
IC3 ist der Strobe und geht gegen masse und PB0 und stößt den folgenden PB0 an.

Wenn der prozessor gestarte wird und erkennt, daß der eingang kurzgeschlossen ist, wird er zum master und stößt alle anderen an ( er muß dann natürlich zuerst in der kette stehen). Er gibt dann alle 300ms ( kannman ändern ) einen impuls ab, nachdem er gemessen hat und seine daten gesendet hat. Die anderen warten auf dem impuls und messen dann selber und senden ihre daten und geben auch einen impuls aus.

Ein kanal ( PB3 ) misst sozusagen die betriebsspannung , ist aber in der geänderten version am eingang des spannungsreglers angelegt, dammit er wirklich die batterie misst.

Bei lipos würde der regler verschwinden und der Prozessor liegt dann direkt an der batterie an.

PB2 misst die spannung der batterie, die über der liegt, an die der kontroller anliegt.
ALso R2/R4/R5

ALso ein Baustein ist immer für zwei hinterinander liegende batterien zuständig.

IC4 ist der Opto, von denen die seriellen daten auf einen OPENcollectorbus gehen.
Alle OPtoausgänge , der seeriellen schnittstelle liegen paralell, das geht, weil die µC ja nie zusammen senden, sondern hintereinander.

Die schaltung ist im 4er-Block auf einer 50mmX50mm Platine untergebracht , so daß eine platine 8 Batterien überwachen kann, weitere kacheln können an die angeschlossen werden.

Übrigens der 78L05 ist nicht zu verwenden, sondern ein Lowdrop regler, der 78L05 macht hier zu viele probleme.

also die verschaltung


Master >> Slave >> slave >> .....

Wenn man ein Higlevel Programmer hat, könnte man den resetpin umwidmen und einen 3ten kanal zum messen bekommen.

----------------------------------------------------------------------------------------------------------------

Ich beschreib noch mal die schaltung, da der stromlaufplan fehlerhaft ist, die schaltung aber nicht !!!

IC PIN8 = VCC , PIN7 analog für batterie 2, Pin 6 Strobeausgang auf den optokopler IC3, mit widerstand R6, PIN5 Strobeeingang von der vorherigen schaltung.

PIN4 Ground , Pin3 RS232c auf IC4 mit widerstand, PIN2 analogeingang für das messen der ersten batterie , Pin1 unbelegt.

An Pin 2 liegt also ein widerstand gegen masse (R1) und einer gegen plus der versorgenden batterie ( R3 ).

An Pin 7 liegt auch ein widerstand gegen masse ( R2 ) und der andere zweig aus ( R4/R5) geht an die andere batterie.

Aud meiner Platine wurden nur die rollen von den eingängen vertauscht, weil dann das layout besser zu handhaben ist.

von sharpals - am 02.06.2017 18:02
Hallo Michael,
danke für die wortreiche Erklärung. Ist ein bisschen Arbeit, das jetzt alles nachzuvollziehen. Es wäre wohl an der Zeit, den Plan einfach mal neu zu zeichnen. Am besten gleich mit vier Attiny45, damit man auch das Zusammenspiel erkennt, und mit klaren Bezeichnungen der Akkuanschlüsse. Denn dass an PB3 die Spannung eines Akkus gemessen wird, war so nicht ersichtlich. In der bisherigen fehlerhaften Zeichnung mißt Du hier die Versorgungsspannung VCC nach dem Spannungsregler.

Was mich auch stutzig macht, ist die unterschiedliche Genauigkeit bei der Spannungsmessung: ein Kanal mit voller, ein Kanal effektiv mit halber Auflösung.
Und dann noch eine Frage, die ich mir bisher nicht beantworten konnte: Hängt die Versorgunsspannung an einem der zwei zu überwachenden SAFT Blöcke, also an 6V, oder an zweien, also an 12 Volt? Die Spannung an einem zu messen wäre ein konstruktiver Fehler. Durch die Messversorgung wird ein Akku mit ein paar Milliampere ständig belastet, der andere nicht. Daher würde ich die Versorgung von beiden Akkus nehmen, also nom. 12 Volt. Dann hat man auch mehr Reserve im Spannungsregler und kann auf einen lop-drop-out Regler verzichten.

Gruss, Roland

von Berlingo-98 - am 03.06.2017 10:21
Die Konstruktion ist so gewählt worden, weil der erste Gedanke gewesen ist, es an LiPos zu hängen.
Auf die Versorgung über Zwei batterien hatte ich verzichtet, weil bei NiCad doch bis zu 19V auftreten können, zumindest bei der Konfiguration von bernd.

Natürlich könntest du die Konfiguration so ändern, das die Schaltung an beiden batterien hängt, aber das dürfte akademisch sein.
Die Slaveprozessoren gehen unter 5mA !!! Und wenn sie schlafen, sind sie kaum noch messbar. Und da wir hier von strömen in 10 - 100A aus gehen, dürfte das rauschen sein.

Außerdem ging es mir darum, die verlustleistung an den reglern zu reduzieren. Der Lm 78L05 verbraucht alleine schon 5-8 mA,
die LdoS aber unter 1mA. Was noch dazu komt, weiche Akkus geraten schon mal sehr tief und bringen die 78L05 durcheinander und er hat immer (ca) 1,7V Spannungsabfall. Die Ldos hingegegen , gehen gegen 0,1 - 0,3 V im Grenzbereich.

Und keine Angst, die LDos kosten auch nichts ....

Das mit der genauigkeit hat was mit den 10bit zu tun.
Der untere wandler arbeitet eben von 0-9,99V und der obere von 0..18,99V.
Da ja beide an einer gemeinsammen masse hängen, liegt es eben in der natur, daß der obere in der genauigkeit zurückgeht.

von sharpals - am 03.06.2017 18:07
Die letzte Version läuft jetzt bei mir. Sehr seltenes Aufhängen ist wohl eher auf meinen Rechner zurückzuführen, ansonsten jetzt störungsfrei. Der Kompatibilitätsmodus erzeugte bei mir regelmäßig den Programmstillstand. Windows 10 ist eben eine unbekannte Welt voller, ich möchte es einmal so nennen, Microsoft-Fehlern. Letzte Version: 003j, ohne Kompatibilität-Modus und damit wieder umschaltbarer Zeitbasis ohne Stillstand.
Lars, bei Dir ist der Kompatibilitätsmodus noch erforderlich?
Wenn alles so läuft wie bei mir, sehe ich jetzt den Zeitpunkt gekommen, allen die hard- und software zugänglich zu machen...
Sehr irritiert hatte mich noch das merkwürdige Verhalten zweier Batterien, was ich zunächst auf Programmierfehler zurückführte. Ist aber nicht so, die Merkwürdigkeiten (ich schob es auf "Dendriten") sind real und mit dem separatem Messinstrument nachweisbar.. Damit funktioniert die gesamte Messanordnung und software, wenigstens bei mir.
Einfach super, was Michael da geleistet hat. Es war viel Arbeit.

Trotzdem habe ich immer noch den Wunsch, den leidigen RS232/USB-Adapter durch eine bluetooth- Verbindung zu ersetzen und wurde fündig bei fertigen Audio-bluetooth Adaptern. Alle, die ich fragte, scheuen sich aber , diese einzubinden. Wenn ich es richtig verstanden habe, ist das Ganze aber sehr einfach und man braucht nicht den Arduino, für den die preiswertesten Funkadapter gebaut sind. Wer kennt sich damit aus? Benötigt wird nur eine Verbindung in eine Richtung: vom Datenbus zum Rechner oder smartphone.

von Bernd Schlueter - am 04.06.2017 08:00
Hallo, ich habe den plan nochmal überarbeitet, weil er wirklich mist gewesen ist. Besonders lustig, daß target macht schon gerne mal verbindungen, die ich garnicht gewollt hatte.

Bitte mal um draufsicht und binn auch für fragen offen ...

[www.mikrocontroller.net]

Der neue plan ist jetzt ganz unten.

von sharpals - am 06.06.2017 09:52
Zitat
sharpals
Bitte mal um draufsicht und binn auch für fragen offen ...
[www.mikrocontroller.net]


Danke, der Plan gefällt mir jetzt wesentlich besser. Habe es im mikrocontroller.net auch detailliert kommentiert.
Noch diese Fragen:
5 Volt oder 3,3 Volt, das ist hier die Frage. Ich dachte, der 5V Regler ist schon lange durch eine 3,3 Volt Version ersetzt.
.... und mit welchem Editor ist der Plan gezeichnet? Würde auch gerne mal sowas probieren. Mit eagle bin ich bisher noch nicht so gut zurechtgekommen.

Gruss, Roland

von Berlingo-98 - am 06.06.2017 14:25
Hallo Roland,
forsche mal hier nach Target 3001: [www.ibfriedrich.com]
gefällt mir viel besser als eagle.
Gruß Karlfred

von Karlfred - am 06.06.2017 20:31
Hallo Karlfred,
danke für Deinen Hinweis auf Target3001.
Mittlerweile weiß ich, dass Michael (Sharpals) den Entwurf in Target3001 gemacht hat.
Und ich habe eagle schon seit einer Weile auf meinem Rechner installiert.
Und seit gestern auch Target3001, zum Ausprobieren und Weiterbearbeiten von Michaels Entwurf (den ich aber noch nicht als Datei habe).
Außerdem habe ich mir mal die diversen Vergleiche angeschaut, z.B. hier auf dem mikrocontroller.net.. Ist schon ein paar Jahre her, der Vergleich könnte heute mit den neuen Programmversionen anders aussehen.
Oder hier nochmal für eine Studentenversion.

Oder hier eine Übersicht von Schaltplaneditoren auf dem mikrocontroller.net

Dabei bin ich auf ein weiteres Programm gestossen: KiCad. Sieht auch nicht schlecht aus, und ist als open source sogar kostenlos.
Mehr zu KiCad hier.

Meine Frage:
Hast Du - oder jemand anderes - Erfahrungen mit diesen Programmen und kannst mir Hinweise geben hinsichtlich Einarbeitung und Nutzung? Also eigene Erfahrungen.

Gruss, Roland

von Berlingo-98 - am 07.06.2017 07:56
Schaut mal wider in den Faden vom µC, dort ist die Datei und noch etwas an Erklärungen.

KiCad geht auch, wahr mir nur zu sperrig ....
Das ist alles auch ein wenig Geschmackssache.

von sharpals - am 07.06.2017 19:03
Hi,
seit gestern sind die Probleme mit der Meßdatendarstellung behoben. Michaels, bei mir heißt sie V5, bei ihm wohl V0.03o, läuft stabil und zeigt über seriell-USB Wandler brav an. Man muß keinen Kompatibilitätsmodus anschalten. Vor dem ersten Aufruf der exe muß ich aber in "Eigenschaften -> allgemein" einmal auf "zulassen" klicken. (Win 10 meint, daß alle exen, die von auswärts kommen per default erst einmal nicht ausgeführt werden dürfen)
Die gewünschten min und max Werte muß man VOR Programmstart in der ini eintragen. Dort auch unter "serial timeout" die Zeit, die maximal zwischen zwei Datenstrings vergeht, sonst kommen Fehlermeldungen. Auch einzutragen ist das als Datenseparator verwendete Zeichen.
Das ganze funktioniert bei mir jetzt gut mit vierstelligen Zahlen 3599 = 3,599 V und einem "," als Separator. Vierstellig habe ich gemacht, da mir 10mV Auflösung zu gering sind, zB beim balancen. Der Atmega schafft mit 10Bit von Haus aus schon etwa 4mV, mit oversampling, also mehrfachen Ad-Wandlungen auch gut 1mV. Ich mache zZt 8 faches Oversampling und teile danach durch 2.
Viele Grüße, Lars

von laase - am 23.06.2017 06:33
also das syncronisieren kann dann abgeschltet werden, wenn die messwerte nicht gestört werden und zuverlässig sind.

Die funktion ist für schmutzige umgebungen gedacht, wo schon mal werte zerstört werden.

Bei bernd seinem fahrzeugt schlagen abundzu starke störungen hindurch. D.h es fehlen auf einmal messwerte. Da das programm ja nicht weis, wer da weg ist, gerät die reihenfolge durcheinander und es werden caotische werte angezeigt.

Das wird einfach verhindert, indem es eine messreihe aufnimmt und dann feststellt, wie lang die kette sein muß. Kommt etwas , daß nicht die länge hat, so wird es verworfen.

von sharpals - am 25.06.2017 11:51
Hi Jungs,
da Michael sich so gut für uns ins Zeug gelegt hat, übernehme ich hier jetzt mal die Erklärung des Programms S_Plot. Jedenfalls von dem, was ich bisher verstanden habe und nutze.
S_Plot kann seriell empfangene Daten auf dem Bildschirm in Form von Kurven (Linien) darstellen (plotten). Dabei ist es egal, über welchen Port die Daten eintreffen. RS232, USB, Bluetooth usw. funktionieren. Hauptsache, es ist ein "Com"-Port, der dann auch im Geräte Manager von Windows entsprechend unter "Anschlüsse (Com&LPT)" zu sehen und aktiv sein sollte.

Mein BMS z.B. spuckt alle 2 Sekunden 20 Zellspannungen in der Form 3232,3245,3235,3236,.... usw. aus. Der Ausgang liegt an einem Optokoppler; immer wenn etwas gesendet wird, schließt dieser also seine Kollektor-Emitter-Strecke kurz. Um daraus einen digital mit dem Computer lesbaren Pegel zu machen, braucht man eine Spannungsversorgung und einen Pullup-Widerstand. Netterweise stellen die günstig bei Ebay erhältlichen USB-seriell-Wandler, wie zB:
http://www.ebay.de/itm/USB-nach-TTL-seriell-Kabel-Adapter-PC-PL2303HX-Chipsatz-USB-Kabel-Computer-Kabel-/262559615331?hash=item3d21c5c963:g:gCoAAOSwtnpXoJgZ
gleich eine 5V Spannung zur Verfügung. Man muß dann nur noch von +5V (hier rot) zu Dateneingang RX (hier weiß) einen Widerstand schalten, bei mir sind es 5,6kOhm. Der schwarze Leiter ist das Bezugspotential des Rechner und kommt an den Emitter des Optokopplers, weiß auf den Kollektor. Der grüne kann Daten senden, das brauchen wir nicht und lassen ihn hängen.

Vorsicht bei den Prolific-Chips, die in den Adaptern sind: die Typen PL-2303H, HX Rev. A, X und XA sind nicht mit den aktuellen Treibern für Win 8 und Win 10 kompatibel. HX Rev. D, HXD, TA, TB, EA, RA und SA dagegen schon. Sollte man nun einen solchen älteren Chip abbekommen haben, so geht es aber mit einem Treiber für Win 7 trotzdem. Man suche nach Version 3.3 von um 2005-2009 herum oder direkt nach PL2303_Prolific_DriverInstaller_v1210.exe (Quelle zB siehe mein Beitrag vom 31. Mai in diesem thread!) und wähle bei der Installation manuell den entsprechend älteren Treiber aus.

In dem Moment, wo der USB Stecker gesteckt wird, sollte man mit dem Oszi, so zur Hand, eine 5V Ruhespannung, gefolgt von mehr oder weniger vielen L-Impulsen, also Abfällen nach Minus, sehen. Wenn das Null-Potential dabei "nur zur Hälfte" erreicht wird, ist entweder der 5,6k Pullup-Widerstand zu klein (dann zB 8,2k oder 10k wählen) oder der Ansteuerstrom des Optokopplers oder Transistors ist zu gering (Vorwiderstand verringern).

Bevor man nun die S_Plot.exe startet (siehe auch meine vorherigen Beiträge im Fred; "Kompatibilität" ist selbst unter Win10 nicht mehr erforderlich!), sollte man die zugeörige s_plot.ini bearbeiten oder zumindest prüfen, sie beinhaltet die für die Funktion wesentlichen veränderbaren Parameter (vor Änderungen immer eine Kopie "s_plot_vorher.ini" anlegen!):
- mit "Seperator" wird der Datenseparator, also das Trennzeichen zwischen zwei aufeinanderfolgenden Zellspannungen eingestellt, in meinem Fall ein Komma ",", bei Bernd und Michael wohl ein Semikolon ";". Man muß wissen, was sein eigenes Gerät an der Stelle sendet, das bekommt man zB mit den gängigen Terminalprogrammen "Hyperterminal" oder "HTerm" heraus.
- "Bautrate" kennzeichnet die Geschwindigkeit, mit der die Hardware die seriellen Daten sendet. 9600 Baud ist eine sehr verbreitete Baudrate, weitere sind zB 57600 oder (ziemlich hoch) 115200 Baud. Da ich es nicht eilig habe und es mit dem 5,6kOhm Pullup-Widerstand gerade noch geht, bleibe ich bei 9600 Baud. Wenn man es nicht weiß, kann man das auch bei Hyperterminal ausprobieren. Wenn die Baudrate falsch eingestellt ist, kommt entweder gar nichts oder Hieroglyphen an.
- "serial_timeout" ist die Zeitspanne, die das Programm S_plot auf den nächsten Dateneingang wartet, bevor es die Lust verliert und eine Fehlermeldung herausgibt. Sollte etwas länger als die typische Pausenzeit zwischen zwei Datenstrings eingestellt sein. Bei mir mit "3" perfekt.
- "framed_Checked" gibt an, ob das Programm die Unversehrtheit der eingehenden Daten prüfen soll oder nicht. Wenn "1" werden nach Programmstart zunächst ca. 20 Datenstrings auf ihre Länge hin analysiert. Das dauert bei mir recht lange. Es hat aber den Vorteil, daß wenn einer der nächsten Strings dann nicht diese Länge aufweist, das Programm sofort weiß: hier stimmt etwas nicht, diese Daten sind zu verwerfen. Wenn die Daten dagegen stets mühe- und fehlerlos eintreffen, kann man hier auch ruhig eine "Null" eintragen und das Programm zeichnet vom Start weg schon Linien.
- [SKALE] steht für die Skalierung der Werteachse bei Programmstart, vielen auch als Y-Achse bekannt. Bei Lifepo4 trägt man hier typischerweise max 3600 und min z.B. 3100 ein. "3000" deshalb nicht, weil Michael die Achse in 10 Hilfslinien unterteilt und sich 500mV nunmal "augengefälliger" durch 10 teilen lassen als z.B. 600mV. Ansonsten kann da natürlich jeder das eintragen, was er für angebracht hält. Wenn die Zellspannungen nicht als "3250" sondern als "325" ankommen, so muß man das hier natürlich entsprechend eintragen.
- alle unter [Knopf] eingetragenen Werte verändern die Werteachse, wenn die Schaltflächen unter "set values" gedrückt werden. Michael hatte hier Schaltflächen für Lipo, NiC usw. vorgesehen. Ich denke aber, daß der typische Anwender sich meist EINE Chemie anzeigen läßt und die Schaltfläche daher lieber als "Bildschirmlupe", d.h. zum "hineinzoomen" benutzt. Ich habe die obere Schaltfläche daher mit "3560-3610"mV vorbelegt, dem Spannungsbereich, den man beim Balancieren beobachtet. Die mittlere Schaltfläche hat den Bereich "3000-3200"mV, also einen Spannungsbereich, den man während der Fahrt bzw. Last sehen möchte. Da man zZt noch nicht ohne Programmneustart zu den unter "SKALE" eingestellten werten zurückkommt, habe ich der untersten Schaltfläche einen relativ großen Wertebereich von "3100-4100" mV verpaßt, sozusagen zum Herauszoomen. Hier könnte man sinnentsprechend natürlich auch den unter [SKALE] genutzten Bereich eintragen. Die Schaltfläche "Auto" liefert mir einen unnötig großen Bereich von irgendwo knapp über Null bis ca. 4000, was ich nicht haben will. Ich nutze sie deshalb nicht, genauso wenig die Schieberegler. Michael hat hier aber schon Abhilfe angekündigt und mir zwei Fenster versprochen, in die man "online" die jeweils nächstgewünschten min und max werte eintragen kann. So, Michael, jetzt kommst Du aus der Nummer nicht mehr raus ;-)
- "close" schließt das "values" Fenster und zum Glück nicht das Programm
- "Pause" setzt den Empfang und die Aufzeichnung von Daten aus
- "clear" löscht den Bildschirm, wohl aber nicht die stets parallel laufende Aufzeichnung.
- mit "zapp" kann man ein Bildschirmfoto des gerade aktuellen Bildausschnitts machen und als Bilddatei abspeichern.
- Apropos Aufzeichnung: die läuft ab erstem empfangenen Datenstring stets im Hintergrund mit. Sie kann bis zu 5000 Zeilen (also Datentelegramme bzw. -strings) aufzeichnen. Bei erreichen dieser Grenze oder bei jedem Ausschalten des Programms wird eine Datei mit dem Namen "[DatumUhrzeitAufzeichnungsende].txt" im Verzeichnis von s_plot.exe angelegt. Diese Datei ist ganz einfach zB mit Excel einlesbar und man kann sich dann alle Kurven noch einmal anschauen und aufs Netteste analysieren, interpretieren, wundern usw. Wenn die 5000 Zeilen rum sind, wird zwangsabgespeichert und eine neue Datei angefangen. 5000 Zeilen sind aber schon ganz gut, bei meiner Sendefrquenz alle 2s sind das immerhin 2 3/4 Stunden!
- zurück zur .ini:
- "Kanalauswahl" kann man per Häkchen im Programm vornehmen oder eben auch schon hier. Alle gewünschten Kanäle, auf die das Programm warten und die angezeigt werden sollen, erhalten hier eine "1". Bei meinen 20 Werten stehen dort also 20 Einsen, gefolgt von 9 Nullen. Das Programm kann bis zu 29 Werte empfangen und als Linie plotten.
- unter "Knopf_X" kann man eintragen, wie die Beschriftung des Knopf ungter "set values" aussehen soll. Bei mir Klartext oder besser: Klarzahlen.
- Chapter [PAL] beherbergt die Farben im RGB System. 255 ist jeweils Maximum und meint: "davon satt". Alles auf 255 ist daher weiß (bei mir Nr. 0, die Gitterlinien), alles auf 0 ist schwarz (bei mir Nr.31, der Hintergrund). Wenn man Farbverläufe von "leuchtend" bis "weißeingetönt" haben möchte, läßt man einfach die charakteristische Farbe auf "255" und ändert die andere(n) in konstanten Schrittweiten wie zB 100, 150 und 200. Auch Magenta (255,0,255) und Cyan (0,255,255) lassen sich noch gut verstehen, nur bei orange (zB 255,192,0) hatte ich meine Probleme. Hier habe ich einfach die Funktion der Hintergrundfarbe "Zelle ausmalen" von Excel genutzt: die Farbe wird dargestellt und der Wert kann unter "weitere Farben -> benutzeredefiniert" eingestellt oder abgelesen werden.
- ich persönlich bevorzuge "4er Zellkontingente" bei der Aufteilung meiner Batterien. D.h. immer 4 Zellen sind für mich eine gedachte Einheit. Geht, glaube ich, vielen von uns so, vielleicht weil das dann dem "guten alten 12V-Akku" entspricht. Wie auch immer, ich möchte kein Wirrwar von Farben auf dem Bildschirm, sondern ich möchte diese 4er Gruppen auch in den Linien wiedersehen. Jeder neue 4er Block beinnt bei mir also mit einer "knalligen" Farbe, gefolgt von bei gleichem Grundfarbton immer heller werdenden 3 weiteren Zellen. Aber auch das kann jeder für sich selbst ändern. Das geht so bis PAL_RGB29. RGB30 ist die Farbe, in der die Zeitachse (x-Achse) beschriftet ist, Diese habe ich blau gelassen. Nach einiger Zeit springt sie im Programm aber auf rot um. Warum, weiß ich nicht, störe mich aber nicht daran.
- Man kann jeden Graphen (Linie) zur besseren Darstellbarkeit mit einer individuellen Offsetspannung belegen, um so zB ein paar bestimmte Zelle aus dem Pulk herauszulösen und besser betrachten zu können. Auch dieses feature habe ich noch nicht verwendet.

Ich werde das Programm zum "Mitschneiden" beim Fahren nehmen (zB mit altem WinXP Laptop) und vor allem auch beim Laden bzw. Zyklisieren von Akkus aller Art. Als ich neulich einen 12s Fahrradakku Zyklentests unterzog, hätte ich mich darüber sehr gefreut. Was solls, freue ich mich eben jetzt auf künftige Anwendungen.

Mehr fällt mir gerade nicht ein. Mit Michaels Zustimmung rechnend, stelle ich seine letzte an mich übersandte Programmversion (Ver.0.03q) und die von mir wie hier beschrieben bearbeitete s_plot.ini nebst einer Excel Datei mit den verwendeten Farbverläufen hier
[www.dropbox.com]Dropbox
ein.
Rückmeldungen, Vorschläge usw. sind Michael und mir immer willkommen!

Viele Grüße, Lars

von laase - am 30.06.2017 21:36

serielles Plotprogramm Zellspannungsrecorder bis zu 29 Kanäle

Update: Michael hat jetzt doch noch Fenster zum "online" Ändern des Anzeigebereichs eingefügt. Habs wieder in die Dropbox
reingestellt. ini kann bleiben.
Ich finde das jetzt absolut super. Echt universell brauchbar.
Sagt aber mal bitte Bescheid, ob das für noch irgend jemand hier interessant ist.
Viele Grüße, Lars

von laase - am 02.07.2017 22:13

Re: serielles Plotprogramm Zellspannungsrecorder bis zu 29 Kanäle

Interessant schon - aber bei mir kommt nächsten Monat erst mal meine 20 Einzelinstrumente rein nach dem ich meinen Akkusatz instand gesetzt habe.

Im Winter wenn ich nichts schwerst wiegendes ansteht werde ich mir das Parallel einrichten wollen.

von thegray - am 03.07.2017 12:24

Re: serielles Plotprogramm Zellspannungsrecorder bis zu 29 Kanäle

na das Zuschauererlebnis von 20 Digitalanzeigen wird das Programm auch nur schwer toppen können ;-)
Aber jetzt mal im Ernst: schon an die Verwendung von Drehschaltern (2 Ebenen, 6 Pole) gedacht?
Der Drehschalter hier sollte genau das können: in 6 verschiedenen Positionen jeweils das + und - einer Zelle zum Meßgerät schicken. Und schon brauchst Du nur noch 4 Meßgeräte nebst 4 Schaltern und keine 20 Meßgeräte mehr! Weiterer Vorteil: alle Zellenspannungen, die von EINEM Gerät ausgewertet werden, werden eben auch von genau EINEM Vergleichsgerät gemessen, die Einschätzung erfolgt also auf einer einheitlichen Grundlage. Wenn Du 20 günstige Schätzeisen kaufst, werden ein paar davon ziemlich voneinander abweichen.
Ich hatte solch eine Schalterlösung mal in der Vor-Mikrocontroller-Zeit und lebte ganz gut damit. Nach zehn Jahren kommt es bestimmt auch mal vor, daß man an einer Schaltposition etwas "hin und herwackeln" muß um die höchstmögliche Spannung zu erhalten, aber dann kann man ja auch mal den Schalter tauschen.
Viele Grüße, Lars

von laase - am 03.07.2017 22:42

Re: serielles Plotprogramm Zellspannungsrecorder bis zu 29 Kanäle

also 3 Drehschalter + Griff und 3 Instrumente danke für den Vorschlag.

A. Spreizung habe ich noch nicht verifiziert - na und bei unter 5 Euro incl Versand.
Sehe ich bis zum Beweis des Gegenteils - als erstmal gering da aus der gleichen Lieferung.

B: mit Schalter hätte ich nie einen Überblick sondern nur eine Teilmenge zu Zeit X

C: Sehe ich nicht welche x grade bei Belastung y wie am Wegbrechen ist.

D: beim Laden auch

F wie Fuck ich muß beim Fahren schon wieder runterschauen und/um richtig umschalten.

Die Schaltelemente nehmen mir auch Platzweg ; meine 20 Module bekomme ich locker auf 2Bierdeckel unter bei zwei Stellen hinter dem Komma .

Ach ja wenn ich meinen damaligen Kaufpreis rechne, spare ich ~20Euro.

Wenn ich einmal Abgelenkt vom Umschalten ein Verkehrsproblem habe - ich bewege mich in einer Groß-Stadtregion mit über 100. 000 Pendlern und zwei der wichtigsten Autobahnen..... Kostet mich das neben Unbequemlichkeit wieviel ?

Also da ich genug Platz habe - Gewicht und Kabelage keine Rolle spielt ist bei abwägung der vor und Nachteile PLAN B abgelehnt. Sei angemerkt das ich das schon Zigmal Durchgespielt habe bevor zur Tat geschritten.

Aber in einem EL mit ein 2 auf 8 Position mein Gott wenn der grade rumliegt

von thegray - am 04.07.2017 00:03
Zur Information:
MySnip.de hat keinen Einfluss auf die Inhalte der Beiträge. Bitte kontaktieren Sie den Administrator des Forums bei Problemen oder Löschforderungen über die Kontaktseite.
Falls die Kontaktaufnahme mit dem Administrator des Forums fehlschlägt, kontaktieren Sie uns bitte über die in unserem Impressum angegebenen Daten.