Translate

01 Juli 2011

Hallo allerseits!

es gibt mal wieder was Neues zu berichten!

Die "Universalplatine" läuft annähernd so wie geplant!!!!
Das Energiezählerprogramm läuft darauf ganz so wie gewünscht und erhofft!
Bei der Positioniersteuerung gibt es noch Probleme an einer
völlig unerwarteten Stelle. Die Abschaltung der Endstufen durch Trennen
der GND-Leitung per MOSFET gefährdet die Teiber-ICs (TC4431)
Da ich dort die GND-Verbindung beibehalte können in gewissen
Betriebszuständen und mit größerer induktiver Last gefähriche
Spannungs und Stromspitzen auftreten, mit denen ich an dieser Stelle
nicht in diesem Ausmaß gerechnet hatte. Das lässt sich aber
in den Griff bekommen, indem die Abschaltung auf die Plus-Seite
verlegt wird und die Gate-Leitungen zusätzliche Widerstände
eingebaut bekommen sowie noch ein paar kleine Änderungen.........

Es hat sich natürlich ein kleinerer Layout-Fehler eingeschlichen ,
aber es ist nur eine zu dünne Leiterbahn.Die war schon mal dicker,
aber bei irgend einem Rip-Up-Durchlauf hat Eagle die neu
verlegt, und dann natürlich in der Standardabmessung gelegt.
Ich habs dann übersehen.......ein typischer Fehler......
Ein paar Verbindungen hätte ich doch noch vorsehen sollen,
aber das ist nicht weiter tragisch, ganz leicht nachzuverdrahten.
Trotzdem ist das aber ärgerlich. Ich habe den Display-Stecker um
vier Pins erweitert. diese aber nur an den beiden Display-Anschlüssen,
die gleichzeitig auch zum Programmieren vorgesehen sind miteinander verbunden
aber nicht an den "Micro-Match" Stecker angeschlossen, weil ich meinte,
das nur im Notfall zu brauchen. Na ja, die Praxis ist oft anders als die Theorie,
und das geht recht gut nachzuverdrahten.

Nachtrag 29.06.2011:
Am Energiezähler/BMS-Programm habe ich noch ein bisschen rumgespielt.
Die ganze BMS-Geschichte ist jetzt auch abschaltbar wenns nicht gebraucht
wird, bzw für die momentane Testphase der Energiezähler und Anzeige-funktionen.
Eventuell brauche ich die Abschaltung noch für ganz was Anderes, wenn ich
noch mehr Statusmeldungen bzw seriell empfangene Meldungen z.B. aus
Curtis-Controllern ;-) anzeigen möchte......mal sehen.........
Ziel ist ein möglichst universell verwendbares Programm mit vielen Optionen
und Abschaltbaren Extras, wenn diese nicht gewünscht oder benötigt sind.
Es ist noch so einiges an Programmspeicher frei, also geht da noch was!
Die Korrektur der DZM-Frequenz geht jetzt von 90 bis 220%, da wäre ich fast
über ein Problem gestolpert, deshalb nicht weniger als 90% sonst reicht mir
eine Variable nicht mehr......
Ich werde wohl noch die Anzeige von zurückgespeistem Strom im DZM einschaltbar machen,
(bringt nur bei AC-Motoren was, und die Rückgewinnung wird eh meist völlig überbewertet )
und einen kleinen Bug hab ich noch drin....( wenn aufgrund fehlender Messspannung
 "Standby" angezeigt wird, und die Anzeige der Rückgewinnung im DZM eingeschaltet ist,
dann wird der Programmablauf sehr langsam, und dafür gibts eigentlich keinen Grund......
zumindest ist das nicht so gewollt..... da wird wohl die Laufzeiteit des Timer-Unterprogramms
zu lang weil mit der Unterdrückung der Division durch Null was nicht korrekt arbeitet )
.........das krieg ich auch noch hin...........

Elektrisch passt nach derzeitigem Erkenntnisstand alles ganz gut.
Jetzt fehlt nur noch ein schönes Gehäuse fürs Display und den Bedienknopf, dann könnte man
zumindest den Energiezähler und die Anzeigefunktionen auf DZM und Tankuhr schon
mal benutzen. Das Display passt ggfs auch in die Box, aber spätestens bei Verwendung
als BMS sollte das Display im Blickfeld des Fahrers montiert sein.
Die Serielle Schnittstelle läuft auch, also steht einer späteren Aktivierung
der BMS- Funktion auch nichts mehr im Weg.

Weil ich mein Evaluation-Board (STK500) neulich wo vergessen und noch nicht abgeholt habe
musste ich notgedrungen auch meinen Eigenbau-AVR-ISP-Programmer in Betrieb nehmen.
Das hat auch wunderbar geklappt und ich kann den Programmer sogar angeschlossen lassen
wenn ich mit der Platine arbeite und teste! Das macht gleich noch mehr Spass!

01.07.2011:
Heute hatte ich mal etwas Zeit, um weiterzumachen.
Zunächst habe ich das Programm nochmal durchgeschaut und überarbeitet.
Natürlich tauchten noch ein paar Dinge auf, bzw konnte manches verbessert werden.
Das Störmelderelais funktioniert jetzt auch bei BMS-Meldungen wie Über- oder Unterspannung
einzelner Zellen.Wenn eine Zellenspannung fehlerhaft ist, dann hält die Messung bei der
fehlerhaften Zelle an, und misst nur diese, bis der Fehler beseitigt ist.
Das kostete einiges an Überlegungen, diese Funktion mit der gezielten  Einzelzellenabfrage
und den einstellbaren Grenzwerten in Einklang zu bringen!
Insbesondere lief die Messung nicht mehr weiter, wenn ich im Störungsfall auf Einzel-Anzeige
umschaltete und auf eine andere als die fehlerhafteZelle schaltete,
weil ja im Fehlerfall nicht weitergeschaltet wird.
(Lösung: Bei Tastendruck zum Umschalten wird jetzt der gemessene Minimalwert auf den
eingestellten Obergrenzenwert gesetzt und der Maximalwert auf den Untergrenzenwert.So läuft
dann die Messung bei "null" los und übernimmt die aktuellen Werte.)
Warum so kompliziert? Zuvor dauerte es ziemlich lange, bis die auffällige Zelle wieder dran war.
Da der Alarm kommt, wenn die erste Zelle auffällt ist anzunehmen, dass alle anderen
noch "in Ordnung" sind.deshalb wird die auffällige dann gezielt beobachtet.
Das  mit dem lange dauern ist auch so eine Sache, an der ich noch verbessern könnte.
Da müsste ich die (einfachen) "WAIT" -Befehle zum Stoppen der Anzeige bzw zum Umschalten
der Störmeldungen durch (kompliziertere for....next.....) Zählschleifen ersetzen.
Das mache ich mal, wenn mir langweilig ist.
Es ist halt soooo einfach, nur wait 1 zu tippen um eine Sekunde zu warten, gerade
in der Anfangsphase des Programms..... aber wait = warten, deshalb passiert in dieser Zeit
ganz einfach NICHTS und das sind bei 4MHz (das ist langsam) eben vier Millionen Takte,
was für sehr viele ( >1000000!!! ) Rechenschritte reichen würde.

Zum aktuellen Stand gibt es ein paar Videos.
Eine Funktion habe ich in den Videos nicht erklärt (vergessen) :
Wenn man im laufenden Betrieb kurz auf den Knopf drückt dann schaltet die Messung um auf
Einzel-Messung. Es wird dann nur eine Zelle gemessen, durch Drehen des Knopfes kann
man die zu messende Zelle auswählen. ein weiterer Druck auf den Knopf schaltet wieder
auf Normalbetrieb zurück.

noch was zu den Videos:
Da ich mit der Video-Qualität hier im Blog sehr unzufrieden bin/war (die reduzieren nochmal....)
hab ichs zum Vergleich auch auf  Youtube hochgeladen. ( viel besser !!!!!!!!)
Das ist beide Male jeweils die selbe FLV-Datei, die hochgeladen wurde !!!
Die Avi (ca 350MB) aufgenommen mit einer SONY DSC-2000 also einer recht einfachen
Kamera der 50Euro-Klasse die übrigens erstaunlich gut funktioniert  (bin sehr zufrieden)
wurde mit dem "Quick Media Converter" (Freeware!!!)  zu FLV (ca 60MB) gewandelt.


 Video 1 per Youtube:

Video 2 per Youtube:

Video 3 per Youtube:



Das macht der Blogger draus:
Ich hab noch gar nicht geschaut, wie groß diese Dateien überhaupt noch sind.
Egal, der Upload dauert ewig, und dann dieses Ergebnis...... das
werde ich wohl einfach abhaken.......... und bis auf Weiteres Youtube nutzen.


Video 1 per Blogger
















........und so schaut das mit Gehäuse aus:








 

man kann auch ein zweites Display dranhängen!!!!!!

Das Display und der Drehencoder werden zusammen über ein 14-poliges Bandkabel angesteckt.
Diesen Stecker gibt es zwei mal auf der Platine, und man kann je nach Bedarf den inneren
oder den äusseren Stecker benutzen, bzw auch zwei Displays dranhängen.
Da auf den Steckern noch eine steuerbare Leitung da ist (PortC.5, damit soll eigentlich die
Display-Beleuchtung geschaltet werden, aber das geht notfalls auch anders)
müsste man sogar die beiden Displays ohne großen Aufwand getrennt voneinander beschreiben können,
wenn man unabhängige Enablesignale schickt. Das werde ich gelegentlich mal versuchen.
Zwei Displays an einem Prozessor, das ist in Bascom durchaus vorgesehen.
Das muss ich beim nächsten Layout unbedingt berücksichtigen bzw. konfigurierbar machen!

Nachtrag 12.8.2011:
Das mit den zwei Displays ist doch gar nicht sooooo einfach, eigentlich sollte es reichen,
einen zweiten Enable-Ausgang zu definieren und dann vor dem Schreiben das Display
umzuschalten bzw zu wechseln. Da hätte ich sogar schon eine Leitung im Layout (C.5),
und dazu gibt es so manche Anleitung für Displays mit 80Zeichen,
allerdings sind diese Displays meist zweizeilig
aber wenn ich E2 hinzufüge kriege ich von Bascom die Fehlermeldung, es sei kein platz mehr
für ein Bit und dann passiert irgendwas sehr ernstes mit der .bas-Datei, und
die Fehlermeldung geht nicht mehr weg, auch wenn man die Änderung zurücksetzt............
Der Weg sollte aber trotzdem richtig sein, und notfalls brauche ich halt den
zusätzlichen Port damit der mir das dann extern umschaltet
(ein paar invertierende Und-Gatter z.B.ein 7426,  '37 oder '38  reichen da)
Vielleicht geht das nur mit bestimmten zweizeiligen Displays......schade......
sollte eigentlich nich ärgern, aber was solls.....ich bleib da dran
mit acht Zeilen je 20 Zeichen ließe sich schon was anfangen!!!

Jetzt würde ich mal sagen, der Energiezähler ist grundsätzlich einsatzbereit.
Der Praxistest wird die letzten Fehlerchen schonungslos aufdecken!
Es ist noch nicht zu spät für Verbesserungsvorschläge und neue Ideen.

Dinge die ich noch irgendwie vermisse oder ändern will:

1.Temperaturanzeige
          Die hatte ich schon drin, aber wo soll ichs anzeigen?????
          eventuell nur als Warnmeldung bei Grenzwertüberschreitung?
          und Anzeige nur im "Einzel-Modus"  ?????
2.Anzeige der Gesamtspannung
          Das scheitert momentan hauptsächlich am noch nicht fertigen
          galv.getrennten Messumformer und eben am Platz im Display.
          Ich werde den Wert im Wechsel mit der 12V-Akku-Anzeige
          anzeigen, wenn mir nicht doch noch was besseres einfällt.
3.vorgegebener Wert beim Abgleich des Drehzahlmessers
          ich hatte ja immer ein Poti als Signalgeber, aber wenn man später
          mal die Anzeige des Drehzahlmessers korrigieren will, dann hat
          man das nicht. Ich denke mal 300A wären da gut, das ist etwa
          die Mitte des anzeigbaren Bereichs.Das reicht dann auch, wenn sich jemand
          eine andere Skala eingebaut haben sollte, weil die maximale Stromstärke
          meist deutlich unter 600A bleibt.
4. eine "Mindestdrehzahl" für den Drehzahlmesser
         wer hätte das gedacht, dass die "dynamische Öldruckkontrolle" von VW
         derart mit dem Drehzahlmesser gekoppelt ist und dann auch noch
         sehr umständlich zu überlisten ist.............
         Ausbauen von LED und Piepser wäre die andere Möglichkeit!!!!!
         dann wäre da wirklich Ruhe!
5. eventuell noch Umschaltbar für einen größeren Messwandler
         ...gibt es einen LEM-HASS300 der dann bis 900A könnte??
         wenn ja, dann bau ichs mal mit ein, ist wenig Aufwand!
6.(für später mal.....) Auswertung des Tachoimpulses
         so Spielereien wie Verbrauch/100Km etc wären schon noch machbar,
         aber da fehlt mir momentan die nötige Zeit, um mich darum zu kümmern.
         ........und wo soll ichs anzeigen?????
         vielleicht so:
7.Anzeigen von Sonder-Infos bei Drehen des Knopfes
         Das ginge noch! (Danke, Michael !!! ein guter Vorschlag!)
         Drehen des Knopfes ist derzeit im Standard-Modus noch ohne
         Funktionalität. Da könnte man z.B. in der obersten Zeile so Dinge
         wie Aussentemperatur, Akkutemperatur, Motortemperatur
         Gesamtspannung, Bordspannung oder was auch immer anzeigen.
         .........das Display könnte dann auch wieder automatisch auf
         "Standard-Modus" zurückkehren

Der Knopf wird dann aber ganz schön mit Funktionen überladen....
ob das wirklich nötig ist ??????? ich meine, eher nicht, aber
wers will kanns durchaus haben, ist eine reine Programmsache,
und ein Problem der dafür nötigen Anschlüsse. Die Ports dafür
liegen auf dem bislang nicht benutzten roten Stecker neben den Klemmen.
da ist u.A. auch die serielle Schnittstelle drauf sowie der "echte" Reset
und noch manches mehr.
Da die BMS-Geschichte ohnehin eine eigene Hardware braucht, die
hier angeschlossen wird werde ich diese ganzen Zusatz-Spielereien
dort mit unterbringen. In der Grundausstattung wird nicht viel mehr
enthalten sein als bis jetzt vorgesehen ist

Der festeingestellte Grenzwert für extreme Tiefentladung oder Überladen ist
derzeit auf -10% bzw 110% Restenergie festgelegt.
         Man könnte dafür auch noch Menuepunkte zum Einstellen
         einrichten, aber der Alarm kommt hier auch über die
         Einzelspannungsüberwachung und den konfigurierbaren Alarm
         gibt es auch noch, das sollte genügen

ich hätte ggfs ein paar (5??) der (unbestückten)Platinen günstigst abzugeben,
da ich wohl kaum alle 15 Stück in nächster Zeit selber brauchen werde.
Die Platinen passen in die "Strapubox 523" -Gehäuse, die es bei Conrad gibt.
Ich habe selber ca. 16 Euro pro Stück bezahlt. (Kleinauftrag, Beta-Layout)
und eine "Serie" werde ich wohl kaum auflegen, weil das
bei so einem Privatprojekt ohnehin kaum möglich ist.
Die Platinen passen in die "Strapubox 523" -Gehäuse, die es bei Conrad gibt.
Nach wie vor ist das für mich eher eine willkommene Programmierübung,
bei der sogar was brauchbares herausgekommen ist, das auf verschidenste
Weise verwertbar ist. Ein Atmga 48 bis 328 mit etwas Peripherie und
Display in einem kleinen Kästchen für kleinere Regel, Mess und
Steuerungsanwendungen. eine H-Brücke bis ca 30A ist auch mit dabei;
12V-Betrieb, serielle Schnittstelle....Spannungsausgang, Messeingang
 .......und noch ein paar Dinge mehr........je nach Bestückung....
Genau so was habe ich mir "immer schon" gewünscht!
Eine kleine, billige, universell verwendbare SPS !!!!!!!!



Nachtrag 18.07.2011:
Die ersten Praxistests sind vielversprechend! Michael hat in den letzten Tagen
die alte , aber auf Spannungsausgang für die Tankuhr
umgebaute Version der Box in Betrieb genommen, und zumindest die
Restenergieanzeige über die Tankuhr und die Ampere-Anzeige über den
Drehzahlmesser funktionieren schon mal.
Die "neue" Box ist gleich aufgebaut, was die Schaltung betrifft,
das sollte also auch funktionieren.......wir werden sehen......(läuft auf Anhieb!!!!)
Es gibt noch Probleme mit der dynamischen Öldruckkontrolle,
weil der ab ca 2000U/min also 200A abgefragte und
als Schliesser ausgelegte zweite Öldruckschalter fehlt, und der andere,
eigentlich ganz herkömmlich funktionierende  bei Stillstand kein Warnsignal
ausgibt
 Hier könnte es eventuell schon genügen,
den Anschluss auf GND zu legen. hierbei kommt es auf den Schaltpunkt an, und
auch darauf, ob die Funktion der Schalter auch bei stehendem Motor
überwacht wird. dann wäre auch noch eine Mindestfrequenz
beim Signal zum DZM nötig.
Ganz schön viel Aufwand, den VW da betreibt!
Notfalls Öldruck-LED und Piepser stillegen,
die braucht eh keiner mehr..........





.........Und noch was völlig anderes hab ich kürzlich mal programmiert:
einen "Frequenzumrichter für Drehstrom bis 250Hz mit PWM-Ausgängen"
auf Atmega48-Basis.
Das war wieder mal eigentlich nur eine reine Programmierübung,
hauptsächlich wegen des Auslesens einer Wertetabelle,
aber das Ergebnis ist recht vielversprechend.
Alle vier Grad werden die drei PWM-Kanäle "upgedatet"
bzw alle zwei Grad, dann halt nur bis 125Hz.
Der Atmega läuft mit 8Mhz, das ergibt ca 16kHz PWM-Frequenz.
(ev. noch bis 10 Mhz, aber dann gibts bei der PWM Probleme....)
Da bin ich leider "festgenagelt", was den Takt anbelangt,
und davon hängt auch der Rest, insbesondere die Timer ab.
Die Sinus-Werte werden aus einer Tabelle ausgelesen,
Das Ganze läuft als Interrupt-Routine, nur das Einlesen
des Analogwertes für die Frequenzvorgabe läuft im Hauptprogramm.
Sogar mit Display gings bei niedrigen Frequenzen,
aber nur zu Testzwecken....
Eine Strombegrenzung und eine Reduzierung/Anpassung der
Spannung bei sehr niedrigen Frequenzen ist bislang noch nicht
drin, aber ich werds zumindest später irgendwann mal versuchen!
Das sollte schon gehen, zumal da nur bei niedrigen
Frequenzen zusätzliche Berechnungen nötig sind.
Die eigentliche Strommessung und Begrenzung müsste ins Hauptprogramm,
aber die Reduzierung der Amplitude bei niedrigen Frequenzen muss leider
mit ins Unterprogramm des Timers, aber da das nur unterhalb von
ca 40Hz (????) so richtig notwendig ist sollte gerade da noch genügend
Rechenzeit übrig sein um die PWM-Pegelvorgaben entsprechend
herunterzurechnen.......erst mal die nötigen Formeln finden,
bzw die Abhängikeiten ausmessen

Ich habe jetzt nicht vor, auch noch einen Controller für AC-Motoren
zu bauen, aber das war noch so ein Versuch,der schon lange
überfällig war.

Die Ausgangssignale der drei Phasen als PWM-Signal mit 5V Amplitude
sehen sehr gut aus, und wenn noch eine "If...then" Zeile im
Interrupt-Unterprogramm Platz hat, dann sollte das Reduzieren der Spannung
bei niedrigen Frequenzen auch noch gehen.
Da sind aber noch weitere Versuche nötig, mal schauen, ob und wann ich
dafür mal Zeit habe..........
Eigentlich will ich demnächst lieber mit den Messmodulen fürs BMS
weitermachen, jetzt wo doch der BMS-Master schon weitestgehend läuft...............

und mir geht der LTC 6802-1 bzw 6802-2 einfach nicht aus dem Kopf.....
Siehe:
http://cds.linear.com/docs/Datasheet/68021fa.pdf

Keine Optokoppler etc , so einer ist zwar auch nicht geschenkt,
aber wenn ich das mit dem Auswerteprotokoll auf die Reihe brächte
wäre das natürlich eine tolle Alternative!

mfG
Franz