Translate

04 April 2012

Franzbox re-reloaded once again!!!!!!!!!!

Hi!

Hier im Blog war mal wieder lange Zeit nichts los, was aber bei mir immer
eher ein Zeichen ist, dass anderweitig einfach viel zu viel los war!

Dass ich meine "Universalplatine" vor einiger Zeit neu aufgelöst habe,
das erwähnte ich ja schon. Mit anderer Bestückung ist die Platine
für alle möglichen anderen Einsätze zu modifizieren.

Unter Anderem habe ich damit eine Positionier-Steuerung gebaut,
die per PWM einen Stellmotor an mehrere Positionen fahren lässt.
Die Rückmeldung geschieht per Poti.
....und weil da doch noch eine serielle Schnittstelle drauf ist, wurde ich gefragt,
ob man das nicht womöglich darüber ansteuern kann, anstatt über den
Bedienknopf, und wenns irgendwie geht dann auch über eine RS485 Schnittstelle
und noch besser per MODBUS, dann könnte man das in ein schon bestehendes
System mit Touchscreen etc integrieren......eine "noble" Lösung!!!!

Hmmm........das war so eigentlich nicht vorgesehen, aber von der Hardware her
wars gar nicht soooo schwer. Ich hatte noch Platz für ein achtpoliges IC
auf den Pads die sonst für den LT1010 vorgesehen sind, und die Umverdrahtung
hält sich in Grenzen. RS485 ist in Bascom kein Problem, das Ansteuern der
Schreib/Lese-Leitung ist einfach.
Ein SN75176 RS485 Treiberbaustein kostet übrigens nur etwa 25 Cent (Farnell)
Schwieriger war schon die Programmierung eines Modbus-Slave in Bascom,
weil die Bascom-Modbus-Library nur für Master geschrieben ist.
Warum eigentlich??? hier fehlt nur eine Kleinigkeit, um auch ein einzelnes Byte zu
senden, (Modbus-Pakete bestehen aus "Word" also immer zwei Byte,
aber der Slave gibt die Zahl der Nachfolgenden Byte als Byte zurück,
und genau das geht da nicht!
Das sollten die dringend mal nachreichen! so wie es jetzt ist, kann man
im Slave-Mode damit nur die Checksumme generieren.......immerhin!
aber den Rest muss man "zu Fuß" programmieren....schade!

....Aber was ist eigentlich MODBUS ??????
Das ist eigentlich nicht wie der Name vermuten lässt ein Bus-System, sondern
eher eine Industrie-Standard gewordene Definition des Datenaufbaus
bei serieller (oder auch per TCP-IP) Ansteuerung von Geräten.
Man kann damit 32 Geräte an der RS485-Schnittstelle parallel betreiben.
(ein Master, 32 Slaves )

Gar nicht so unvernünftig das Ganze! Und weils halt ein Standard ist,
findet man auch Geräte und Programme die solche "slaves" steuern können.

Zum Thema Modbus haben andere schon genug erzählt, also
einfach mal Google befragen!
Ich hatte zum ersten Mal damit zu tun, aber das Protokoll gefällt mir sehr gut,
und man kann damit sehr flexibel arbeiten.
Es ist nicht verkehrt, das zu kennen,weil es sehr gut geeignet ist,
sowohl Befehle als auch Daten zu übertragen, und das auch mit
Checksummenkontrolle, Empfangsbestätigungen und
Adressierung der einzelnen Slaves


Ich will aber heute nicht mehr näher darauf eingehen, das ist viel zu
umfangreich und eventuell mal Thema eines anderen Beitrages.

Eigentlich wollte ich über die letzten Fortschritte der "Franz-Box" berichten.

Was ist jetzt neues in der Franz-Box zu finden ?


Grundsätzlich blieben alle bisherigen Funktionen in etwa so, wie sie waren,
aber es kamen noch ein paar Dinge dazu, bzw wurden Einstellungen verändert.

1. Eine Meldung, wenn ein automatischer Reset erfolgte. Nach einem Neustart
muss man jetzt den erfolgten Reset quittieren. So ist man immer sicher,
dass nicht ein unbemerkter Reset die Werte verfälscht.

2. Die Display-Beleuchtung ist jetzt geschaltet, und geht im "Standby-Betrieb"
nach einiger Zeit aus. Zusammen mit einer etwas besseren Konfigurationsmöglichkeit
der Stromversorgung der Ausgänge (DZM, Tankuhr und Versorgung des Wandlers)
konnte ich so die Stromaufnahme im Ruhezustand, d.h. die Box läuft, incl.Display,
aber der Wandler ist nicht versorgt, weil das Auto steht und die "Zündung" aus ist
auf wunderbare 13mA senken. Mit Licht und Wandler sinds aber auch nur
etwa 50mA, da kann man auch nicht jammern!

3.Der Feinabgleich des Drehzahlmessers ist einfacher, wenn man im Abgleichmenue
ist, dann werden jetzt einfach 400A simuliert, und man kann die Anzeige darauf
hintrimmen.

4.Zurückgespeiste Ströme können auf Wunsch am DZM angezeigt werden.
(natürlich nur der Betrag, immer mit positivem Vorzeichen)

5.der Takt zum DZM kann auf einen Mindestwert eingestellt werden,
um die "Dynamische Öldruckanzeige" von VW auszutricksen.
(obs genügt ?? ich habe keinen Ausgang für die beiden Öldruckschalter)

.........und dann ist da noch eine Kleinigkeit: ich dachte die Uhr wäre im
Standby-Betrieb stehen geblieben, dem war aber nicht so, da hatte ich mich
selber ausgetrickst...... wäre das noch eine sinnvolle Funktion?
kein Problem, noch ein Menuepunkt und noch zwei Variablen sowie eine
if-then-Abfrage in der Zeitmessung, aber braucht mans????
Wenns jemand haben möchte, es wäre machbar, aber jetzt mag ich gerade nicht ;-)

apropos Menue:
Das Menue ist schon lange genug, und man muss immer ganz durchklicken.
eine Timeout-Funktion in Verbindung mit einer sinnvolleren Anordnung der
Menuepunkte wäre vielleicht nicht schlecht.
Mit dem abschliessenden Klick übernimmt man den jeweiligen Wert ins
EEProm, zum Abbrechen gibt es keine Möglichkeit ausser einem Reset
durch Abschalten der Versorgung. ich könnte ev. den Licht-Timer
auch zum Verlassen des Menues benutzen, der wird ohnehin schon
bei jeder Aktion am Bedienknopf neu gestartet, und das Zeitverhalten
ist auch schon konfigurierbar. wenn man sich dann also nicht sicher ist,
oder man die Konfiguration abbrechen will, einfach nichts tun, und
man ist nach ca 30sek. wieder draussen aus dem Menue.
Ich meine, das geht sehr einfach einzubinden.
(in einem anderen Programm hatte ich so was schon mal drin)

Nachtrag 05.April : Der Timeout in der Setup-Funktion ist jetzt auch drin!
Aber nicht über den Lichttimer, sondern fest auf ca 30Sekunden
Drücken auf den Knopf übernimmt den aktuell eingestellten Wert
wie bisher, wenn man nicht bestätigt wird der Wert des gerade
aufgerufenen/angezeigten Menuepunktes nicht gespeichert,
und 30 Sekunden nach Start des jeweiligen Menuepunktes oder
30 Sekunden nach der letzten Drehbewegung des Knopfes
ohne Bestätigung wird das Menue verlassen und das Programm
nach einer kurzen Fehlermeldung (hier ist keine Bestätigung nötig)
ganz normal gestartet.


Nachtrag 10.Apr.2012:  und wieder mal sind Bugs aufgetaucht;
Nach kurzem Drücken der Taste bis zur Warnung "loslassen sonst Reset in 5 Sek"
blitzte unter ganz bestimmten Umständen unberechtigt die neue Meldung " Timeout im Setup" auf.
und viel schlimmer: der Ah-Zähler wurde zurückgesetzt......ein falscher Sprungbefehl
.......Ach ja......irgendwas findet man immer......da war nur eine winzige Änderung nötig,
goto Run1 statt  goto Run  kleine Ursache, große Wirkung!
jetzt passt das aber auch!


Jetzt fehlt eigentlich nur noch ein externer Reseteingang für den Charger,
weil ja eine einfache Stromunterbrechung wegen des Goldcap jetzt
etwas länger dauern muss. Da muss ich mir noch was einfallen lassen.
Die "richtige" Reset-Leitung ist auf den beiden Display/ Programmiersteckern
verfügbar. ich werde wohl noch einen Optokoppler / Relais?
am Display oder an einem extra Kabel vorsehen.
Ein "Software-Reset" braucht halt noch einen Eingangs-Pin und es ist nicht
mehr viel frei, bzw  ich will die Ports frei halten für I²C (PC.4 und PC.5)
oder RS485 (braucht Lese/Schreib-Umschaltung,z.B. PC.2??) ......oder ähnliches........
Bleiben eigentlich nur PC.1 und PC.2 für solche Sachen übrig, wobei
an PC.1 eventuell noch ein weiterer Stromwandler dran soll, um den
Ladestrom genauer zu messen............Das Ende der Fahnenstange
ist erreicht, und irgendwann muss es einfach gut sein.......
mit einem derart einfachen Schaltungsaufbau kann man nicht sehr viel mehr
rausholen. Die recht grobe Auflösung der Messung ist prinzipbedingt,weil ich
mit voller Absicht alles möglichst einfach gestaltet habe, und deshalb
den LEM HASS200 wählte, den man ohne weitere Beschaltung direkt
an einem AD-Wandler mit 5V Referenz betreiben kann.

Für genauere Messungen braucht man eine andere Technik.
Es muss noch nicht einmal analog per Shunt gemessen werden,
aber es müsste zumindest ein wesentlich besserer AD-Wandler
mit entsprechend hochgenauer Referenz verwendet werden.
Messung per Shunt und Vorverstärker wäre natürlich auch möglich,
aber auch das ist nicht automatisch besser, sondern auch da müsste man dann
schon ganz schön zaubern um Genauigkeiten um die 0,1% zu erreichen.
Das ist aber für diesen Verwendungszweck nicht nötig.
Die Franzbox ist dafür gedacht, eine halbwegs zuverlässige Darstellung
der Restenergie und der aktuellen Stromstärke auf den schon vorhandenen
Instrumenten wie Tankuhr und Drehzahlmesser zu ermöglichen.
Alles Andere, insbesondere die messtechnische Erfassung des Nachladens
ist eher als "Schätzhilfe" anzusehen, damit man in etwa sagen kann, wieviel
unterwegs mal nachgeladen wurde. Start der Entnahme-Messung sollte immer
eine abgeschlossene Aufladung bis zum Abschalten des Ladegerätes
als Grundvoraussetzung haben.

Und: Die Ah-Messung der Franzbox (ohne BMS-Funktion) ersetzt keine
Einzelspannungsüberwachung, sondern soll diese sinnvoll ergänzen, um
eine bessere Abschätzung der Restenergie zu ermöglichen.
Auch wenn ich mich jetzt wiederhole: Da man den Lithium-Zellen ihren
Energieinhalt nur dann "ansieht" wenn sie entweder ganz voll oder ganz leer
sind hilft einfach nur Amperestunden zählen, wenn man wissen will, wieviel
noch drin ist

Gerade einfache Systeme (z.B. das ansonsten sehr brauchbare
und  höchst empfehlenswerte "Mini-BMS")
können nur Bescheid geben wenns eigentlich schon fast zu spät ist.

........und auch wenn Jack Rickard so tut, als wäre "unten" balanzieren
das einzig machbare, so bleibe ich bei meiner persönlichen Meinung,
dass "oben" zu balanzieren technisch wesentlich einfacher zu lösen ist,
und in Verbindung mit einer funktionierenden Einzelzellenüberwachung
durchaus auch eine brauchbare Methode ist, seine Zellen zu "managen"
Ich will hier Jacks Ansichten nicht widerlegen, aber ich bin der Meinung,
er sieht das etwas zu pragmatisch! Wenn er reine "oben"-Shunts
ohne Überwachung der unteren Grenze verteufelt, dann hat er auch
absolut recht! Aber deshalb gleich auf die komplette Überwachung zu
verzichten, weil man bei einem "unten" balanzierten Akkupack wieder nach der
Gesamtspannung gehen kann, das geht mir einfach einen Schritt zu weit
Ohne Überwachung der unteren Spannungsgrenze
jeder einzelnen Zelle geht es meiner Meinung einfach nicht!
Ich will jederzeit über jede einzelne Zelle Bescheid wissen! das ist mit den
heutigen elektronischen Möglichkeiten keine Zauberei mehr!
Ein automatisch und narrensicher arbeitendes System
wird wohl irgendwo in der Mitte liegen.....wenn man erst mal weiss,
welche Zellen die stärksten oder die schwächsten sind, dann wäre es auch
durchaus denkbar, das beim "oben" Balanzieren so anzupassen, dass
alle zugleich leer werden. Meine BMS-Versuche werden in diese
Richtung gehen! Es ist ganz gewiss nicht die beste Methode,
alle Zellen auf drei Nachkommastellen genau "oben" anzugleichen.
Es gilt, die Eigenheiten jeder einzelnen Zelle zu ermitteln, und dann
darauf zu reagieren.....das wird manchmal auch darauf hinauslaufen,
dass man eine Zelle durch eine bessere ersetzt....oder dass man in
Systemen mit parallelen Paaren bessere mit schwächeren kombiniert,
um überall auf gleiche Eigenschaften zu kommen.



Nachfolgend ein Video vom 3.April, das die meisten Funktionen zeigt.
es wurde allerdings schon wieder am Programm gearbeitet ,
so dass hier noch ein paar Dinge fehlen bzw danach geändert wurden
Die wichtigsten letzten Änderungen zeigt deshalb das zweite Video
Franz



Hier der Nachtrag vom 4.April 2012:







Kommentare:

  1. Hallo Franz,

    meinst Du das "Wippen" des Drehzahlmessers kommt von der "Dynamischen Öldruckanzeige"?
    Die Werte im Display "springen" ja auch ein wenig, weshalb ich auf den Messdurchlauf getippt hätte.
    Das ist das, was ich mal schrieb, wenn ich Verbraucher anschließe, wie z.B. die Heizung, oder das Ladegerät.
    Es steht dann nicht konstant eine Stromstärke, sondern es "springt" z.B: beim Laden zwischen 12A und 15A, fließen tun ~14A.

    Gleiches ist bei Heizung, Licht etc. zu sehen.
    Soll ich mal ein Video davon machen?

    Gruß,
    Michael

    AntwortenLöschen
  2. Dieses Wippen ist ganz einfach die Auflösung der Messung.
    Ich habe eine Auflösung der Werte von 2 x 1,5625 A
    (insgesamt 1600A in 1024 Schritten wäre 1,5625 A je Schritt,
    aber um die Anzeige zu beruhigen, und die Berechnungen zu
    vereinfachen habe ich es nochmal gröber gemacht, und weil
    der Atmega nur mit ganzen Zahlen rechnen mag kommen dann
    halt 3A-Schritte raus.)
    .....und wenn dann die Messung gerade auf der Kippe ist, dann
    schwankt das um 3A hin und her.....irgendwelche Störungen fängt
    man nämlich auch immer irgendwo ein, und die geben dann den
    Ausschlag im wahrsten Sinne.
    Damit werden wir einfach leben müssen!

    Das mit der Dynamischen Öldruckanzeige und der Mindestfrequenz
    betrifft das gepiepe, wenn der Strom bei 0 war und Du dann wieder losgefahren bist. Ich finde aber die Lösung mit dem ausgebauten
    Piepser besser! Das nächste Problem kommt nämlich dann bei
    ca 1500 U/min bzw 150A, weil da die VW-Anzeige ein Umschalten der
    Öldruckschalter erwartet. Das müsste man mal in der Praxis testen,
    aber da fehlt mir sowohl ein passendes Testfahrzeug als auch
    überhaupt die nötige Zeit und Lust das zu testen.
    ....Raus mit dem Zeug...und es ist Ruhe!

    AntwortenLöschen
  3. eine Idee hätte ich da noch, was eventuell los sein könnte.

    Wenn die Schwankungen aufhören, wenn Du die Leitung zur
    Tankuhr abklemmst, dann könnten die Messpulse von der
    Tankuhr die Schwankungen verursachen.
    Das wäre mit der neuen Version eventuell sogar behoben,
    weil da der Prozessor (=Referenzspannung) eine eigene
    Stromversorgung hat.Ich kanns gerade nicht sagen, wie
    das bei Deiner Version angeschlossen ist, also von wo aus
    der LT1010 versorgt wird, wenn der an der Versorgung des
    Prozessors dran hängt, dann gäbs da geringfügige
    Rückwirkungen auf dessen Spannung, die ja zugleich
    die Referenz des AD-Wandlers ist. Ich schau mal nach!

    Franz

    AntwortenLöschen
  4. Der LT1010 hängt bei Deiner Franzbox an der
    Prozessorspannung! Klemm mal die Tankuhr ab!
    (Klemme 2) wenns dann nicht mehr schwankt
    dann ist alles klar! Das sollte mit der
    neuen Version "ganz nebenbei" behoben sein.
    Der Pin2 des LT1010 müsste an die anderen 5V
    oder an 12V angeschlossen werden, aber die
    5V zum Prozessor laufen direkt über diesen Pin,
    das geht also nicht ganz problemlos zu ändern.
    Mach einfach mal den Test mit abgeklemmter
    Tankuhr und teile mir das Ergebnis mit.

    mfG
    Franz

    AntwortenLöschen
  5. .....und dann wäre da noch eine Ursache,
    die auch die Nadel des DZM bei derart niedrigen
    Strömen zucken lässt:
    12A Stromanzeige auf dem Drehzahlmesser entsprechen
    einer simulierten Motordrehzahl von 120 U/min,
    und das wäre eine Taktfrequenz von nur 4 Hz.
    ( 2 Umdrehungen pro Sekunde, je zwei Impulse bei 4-Zyl.)
    das ist natürlich nicht zu verhindern,
    ausser mit einer Mindesttaktfrequenz,
    die dann so um die 30A simuliert.
    Das ist aber keine feine Lösung.......

    AntwortenLöschen
    Antworten
    1. Hallo Franz,
      gehört zwar nicht zu diesem Post, aber Deine Mailbox unter Freenet ist voll.
      Ich brauche nämlich mal wieder Deine Hilfe bezüglich E-Motor für meinen Polo.
      Ich hab da nen 24V, 4kW,1700rpm wo ich Deiner Hilfe bedarf.

      Martin

      Löschen