Translate

12 Dezember 2013

Wieso und warum und warum nicht anders?

Wie ganz leicht zu bemerken ist, habe ich mich in den letzten Tagen endlich mal
wieder ein bisschen mit der Franzbox beschäftigt bzw. endlich mal wieder damit
beschäftigen können........
So ganz allmählich komme ich den Grenzen dieses wenn mans genau nimmt
Arduinoähnlichen Gebildes recht nahe. Es ist nicht mal der Programmspeicher,
Die Franzbox an sich braucht etwa 8k, und dann ist da ja auch noch ein
BMS-Programm mit einzelspannungs und Min-Max-Auswerung mit drauf
als eigentlich funktionsfähige Altlast bzw Demo. Derzeit stillgelegt, aber vorhanden)
Allerdings liegen die meisten Probleme in der "gewachsenen Programmstruktur"
Was ursprünglich mal als kleine Spielerei um die Ampere auf dem Drehzahlmesser anzuzeigen
begonnen hat ist nun doch schon etwas umfangreicher geworden und macht Sachen
an die ich anfangs nie und nimmer gedacht hätte.
Angefangen hat das ja als ATtiny13, und dann war aber sehr schnell klar, dass ein
10bit-Timer hier nicht ausreicht weil sich die Frequenz über die Periodendauer
der Takte im Drehzahmesser errechnet, und bei niedrigen Frequenzen
sehr viele Timer-Takte zusammenkommen.

Hier wird einfach eine Konstante durch den auf den Nullpunkt bezogenen Wert
des Stromwandlers geteilt

Ein Vierzylinder-Drehzahlmesser baucht
33,3333....Hz je 1000u/min und wenn dann die Schritte bei 6000 U/min bzw 600A
nicht allzuriesig werden sollen, dann kommt man mit den 1024 Schritten eines
10Bit-Timers nicht weit.Der idealste Prozessor war deshalb wegen seines 16Bit-Timers,
der Verfügbarkeit und der Kompatibilität mit der Bascom-Demo sowie dem STK500
ein Atmega48. Mittlerweile bin ich beim Atmega328 angekommen...........
Der 168 müsste aber auch locker reichen wenn das Programm erst mal aufgeräumt wird.
Ich nutze derzeit zwar nur einen winzigen Teil des 16Bit-Timers, aber ohne einen
16 bit -Timer gehts nicht ganz so einfach. .....oder womöglich doch, wenn man den Prescaler
während des Betriebs umschalten kann.....Man könnte auch noch anderweitig ein bisschen
tricksen, so ein 10-bit-Timer kann ja auch noch eine andere Zahl hoch oder runterzählen,
mit ein bisschen if-Then müsste er dann halt zwei- drei - mal oder noch öfter durchlaufen.
Mit etwas gutem Willen geht das dann durchaus, ich habs aber so noch nicht versucht,
das war mir dann letztendlich völlig egal, als immer mehr an Funktionalität dazu kam
und ich sowieso derart viele Ports brauchte.

........vielleich wäre das mal eine Idee für einen supersimplen Ampere zu DZM-Signal-
Wandler, eigenständig und ohne irgendwelchen sonstigen Schnickschnack für diejenigen,
die gar keine Ah-Zählerei brauchen, weil sie z.B. schon ein brauchbares BMS drin haben
das diese ganzen Funktionen ohnehin schon erledigt. (z.B. Emus) sondern nur ein Amperemeter
Ein LEM HASS 200 für 600A -Anzeige, ein ATtiny25, ein 5V-Regler und noch ein paar
Kleinteile (Transistor, Elkos, Supressor-Diode etc  auf die Größe einer Briefmarke gepackt
sollten das dann schaffen. (Kein Display, keine Konfiguration,  bestenfalls 4 / 6 Zyl. )
Ich werde gelegentlich mal drüber nachdenken...müsste eigentlich machbar sein
Das sollte unter 10Euro an Material für die Platine + LEM (ca 17Euro) zu schaffen sein.


Derzeit läuft die Box mit 4MHz und der Timer mit Prescaler 64 da passen dann Werte
von ca 5800 bei fast 0A    ca 36000 bei 3A  ca 64000 bei etwa 100A
ca 65223 bei 300A  und 65379 bei 600A..... 16Bit, das geht von 0 bis 65535.
Ich zähle da übrigens aufwärts bis zum Überlauf, das hat sich mal so ergeben, obwohl es
eigentlich in dem Fall "falsch" ist weil ja die Takt-Zahl bei 0A eigentlich am größten ist.
(eine Konstante geteilt durch den Stromwert, ergibt die Periodendauer,
natürlich nicht bis geteilt durch 0 runter, da muss man aufpassen!)
Das sollte ich mal unstellen und eine Berechnung sparen
Vielleicht wird da auch klar, wieso ich 4MHz gewählt habe, wobei aber 8 oder 16 MHz
sicher auch gehen würden (Arduino.........) wobei aber ein "Baudratenquarz" mit
uhrenkompatiblerem Wert viel an Rechen und Versuchsarbeit erspart hätte.
Na ja, jetzt ists halt so!
4,0960 MHz oder 3,6864 MHz wären jedenfalls die bessere Wahl gewesen.
bzw 7,3728 für mehr Rechenleistung oder 8MHz für mehr Arduino-Kompatibilität.
Aber alle Konstanten zu überarbeiten gefällt mir jetzt auch nicht..... irgendwann mal....

Wenn man ohnehin schon den Strom misst und Timer zur Verfügung hat,
dann ist ein Ah-Zähler die logische Weiterentwicklung, und weil der Atmega48
auch ein Display treiben kann kam eins zum Anderen und schon war der erste Prototyp
fertig. Den Rest in Prozent umzurechnen und per PWM auf die Tankanzeige zu
schicken war ebenfalls selbstverständlich.Das war aber letztendlich der problematischste
Teil des ganzen Projekts!! Mit einem Drehspul- oder Hitzdrahtinstrument geht das
problemlos, aber elektronische Tachos wie neuere von VW mit all ihren  plausibilitäts-
Prüfungen, Kurzschluss- und Leitungsbruchüberwachung muss man erst mal überlisten.

Wie erfasst man Amperestunden?
 Ganz einfach! Man macht in festem zeitlichen Abstand Strommessungen, addiert die Werte
und teilt das Ergebnis durch die Zahl der Messungen je Zeiteinheit.Das Ganze wird noch
entsprechend auf Ah umgerechnet und addiert
Bei den ca. 15 Messungen je Sekunde im Fall der Franzbox kommt man so auf  ganz
brauchbare Ergebnisse

Warum habe ich jetzt so weit ausgeholt? Es ist wichtig, möglichst oft in einem festen
Zeitabstand zu messen, Diesen Takt erzeugt ein Timer. jedes Mal wenn ein Nulldurchlauf
erfolgt wird ein zugeordnetes Unterprogramm ausgeführt und der Timer darin wieder
auf den Startwert gesetzt von dem aus er dann wieder hochzählt bis zum Überlauf.

Diese Unterprogramme müssen kurz sein! Weil sie vorrangig ausgeführt werden
macht der Rechner in dieser Zeit nichts anderes, das muss alles warten bis das
Unterprogramm fertig ist.
Jetzt laufen hier aber schon zwei Timer, und jeder von denen startet je Durchlauf
einmal ein Unterprogramm. Der eine ca 15 mal je Sekunde für den Zeit-Takt
und der andere 400mal pro Sekunde wenn 600A angzuzeigen sind.
Doppelte Frequenz, weil ich da einen Ausgangspin jedes Mal umschalte um ein
Rechtecksignal zu erzeugen.
Das macht der Atmega alles ganz locker nebenbei, weil er mit 4MHz etwa
vier Millionen Befehle pro Sekunde abarbeiten kann (na ja, nicht ganz so viele,
aber es reicht locker) Das geht so lange gut wie nicht zeitintensive Sachen dabei
sind wie vor allem Schreiben in ein Display oder Datenverkehr nach "draussen"
So was muss ins Hauptprogramm wo es dann immer wieder angehalten wird
solange eines der vorrangigen Unterprogramme läuft.

Mittlerweile ist aber in den Timer-Unterprogrammen derart viel an zusätzlichen
Aktionen und Berechnungen reingepackt, dass die Grenze beim Hinzufügen der
I²C Funktionen überschritten wurde. das muss aber letztlich trotzdem da rein,
weil ich sonst nicht garantieren kann, dass die Messwerte aktuell sind.

Hier muss also unbedingt der Ablauf verbessert werden.
Ich werde es versuchen, eine Zahl ni einer Schleife hochzuzählen und
so einen Ablauf in die aufgeteilten I²C-Funktionen hineinzubekommen
also bei jedem Durchlauf nur einen Teil auszuführen.
Die Messung der Zellenspannung braucht z.B. nicht jedesmal zu erfolgen,
das reicht z.B. 1x pro Sekunde, zum Umschalten des Wandler-Kanals
sind aber ebenfalls ein paar Befehle nötig.
Konfigurieren und Auslesen des Wandlers in einem einzigen Durchlauf
ist aber nicht möglich, das hat die Störungen verursacht über die ich schon berichtete.

Es darf an dieser Stelle natürlich auch nicht vergessen werden, dass ich bisher mit
Software-I²C Arbeite, aber zumindest schon mal die "richtigen" Pins benutze.
Vielleicht ist ja alles schon besser wenn die Hardware-TWI (=I²C) aktiviert wird.
Da ist noch sehr viel zu tun und auch zu testen.........

Den Wert zu übernehmen und auch die Berechnungen sollten schnell genug klappen
Es wird sich aber nicht vermeiden lassen, bei der Wertübernahme zu tricksen.
Wenn es keinen Neuen wert gibt, dann ist es wohl am sinnvollsten, dann den zuletzt
gelesenen nochmal zu nehmen, oder aber  einfach nur die geringere Anzahl bei der
Berechnung zu berücksichtigen, Ob jetzt 15 x oder 10 x pro Sekunde gemessen wird
sollte nicht das Problem sein, und dass die Zeitabstände so nicht alle identisch sind
auch nicht. Die Zahl der Messungen je Sekunde ist aber dann auch noch konstant
und darauf kommts an. Ich will aber keinesfalls die Messwerterfassung ins
Hauptprogramm legen und nur die Werte in den Unterprogrammen übernehmen.
Das wäre dann die allerletzte Notlösung, aber dann wäre irgendwan der Sinn
der genaueren Messung über den externen AD-Wandler in Frage gestellt.

Der Jack hat im aktuellen Video sein neues Wunderkästchen sehr genau beschrieben,
 und das was da alles reingepackt ist ist der richtige Weg zu besseren Messungen
als mit der derzeitigen Version der Franzbox möglich sind.
eine ganz andere Möglichkeit wäre aber auch in der Richtung Raspberry zu
suchen, zumal es da mittlerweile ganz ernsthafte Bestrebungen gibt, die vielen
mittlerweile verfügbaren Arduino-Erweiterungen damit zu betreiben.

Stand der Dinge ist derzeit:
Die Franzbox als AH-Zähler ist in der aktuellen Version durchaus brauchbar,
wenngleich auch nur zwei Stück tatsächlich im Einsatz sind.... :-)
Ein älterer Prototyp dient Versuchszwecken, aber da sind ein paar Ports anders belegt,
da ist eine eigene Programmversion notwendig, mehr als eine Erweiterung auf
mehr als 255Ah Akkukapazität (-999 ??) werde ich da wohl nicht "nachrüsten"
Von einer "Serienfertigung" kann man daher gewiss nicht reden.
Ich habe aber zuhause ein paar Stück für vollkommen andere Aufgaben programmiert
und steuere damit Schmiervorrichtungen, Kraftwerksrechenreiniger, Ladegeräte
und auch im IGBT-Controller in meinem Prüfstand mit dem STILL-Stapler-Motor
ist so eine Platine das Kernstück. In einem ganz speziellen Fall ist die H-Brücke
bestückt, und da steuert die Box einen lernfähigen  Positionierantrieb und auch eine
Kommunikation per Modbus-Protokoll habe ich schon zum Laufen gebracht.

Wenn es klappt, die I²C AD-Wandlung so richtig zum Laufen zu bekommen
um die Auflösung der Strommessung von derzeit etwa 3A auf 0,1A zu verfeinern,
und zugleich galv. zu trennen (letzteres ist offenbar kein Problem)
dann gibts dafür natürlich eine Erweiterungsplatine für I²C Strom- und Spannungsmessung.
Sollte ich es aber nicht Timer-interruptgesteuert schaffen, dann bleibt es bei der
bisherigen Strommessung und nur die galv. getrennte Spannungsmessung erfolgt
dann per I²C. Das kann nämlich auch problemlos im Hauptprogramm erfolgen,
und da klappt das wunderbar! 

Leider haben alle Atmegas nur 10bit AD-Wandler, und die Xmegas sind deutlich
aufwändiger zu programmieren. Es wäre natürlich auch denkbar, einen der vorhandenen
AD-Wandler-Eingänge anders einzulesen und schlicht und einfach unterhalb einer
bestimmten Grenze den Wert des anderen AD-Wandlers zu nehmen.
Schliesslich ist ja nur die zu grobe Auflösung bei niedrigen Strömen wirklich problematisch,
aber ganz sooooo einfach ist das trotzdem nicht, weil dadurch auch die Messung am anderen Kanal beeinträchtigt wird wegen der Last des Spannungsteilers die ja dann nicht ganz gleichmäßig ist.
..........es müsste aber durchaus machbar sein!!!!!! und auch ohne Layout-Änderung!

Es gäbe ja auch noch die etwas verwegenere Variante mit Oversampling ( und ev. Einspeisen
von "Rauschen"????) das sollte ich vielleicht auch mal ausprobieren. zumindest muss ich mal mein
Programm dahingehend überarbeiten. Ich bin mir jetzt gerade gar nicht mehr sicher,wie
ich da alles gemacht habe. Sicher ist, dass ich die Auflösung fürs Display ein bisschen umrechne
damit es nicht ständig wechselt, aber das macht ja die Auflösung nochmal schlechter.
Ich muss da also unbedingt für die Berechnung zum Auswerten alle "Korrekturen" entfernen
und fürs Display einen gesonderten Mittelwert aus einigen Messungen bilden.
Das löst aber nicht ein weiteres Problem, das ich mit dem Delta-Sigma-Wandler nicht habe,
nämlich die Drift von der Referenzspannung gegenüber dem Nullpunkt des LEM-Sensors.
Der Delta-Sigma-AD-Wandler ist auch an die Referens des Lem angeschlossen, das ist
wesentlich besser und stabiler.

....und weil ich grad am Schreiben bin..... es ist mir mittlerweile auch gelungen,
Bascom .Hex-Files per Arduino-Bootloader auf Arduino zu laden.
Auch das Brennen des Arduino-Bootloaders auf einen Atmega 328P
funktioniert mittlerweile.
Einen Arduino direkt per Bascom und Arduino-Bootloader zu beschreiben hat
aber noch nicht geklappt.
Allerdings habe ich festgestellt, dass dazu als Betriebssystem mindestens Windows XP
nötig zu sein scheint, aber mein Bascom ist auf einer Win2000-Parition installiert.
Da bin ich ständig am neu booten, und alles was mit Arduino zu tun hat baut unter
WIN2000 keine Verbindung zu den angeschlossenen Platinen auf.
.....noch nicht mal zu einem Duemillanove-Klon mit echter serieller Schnittstelle.......

Das letzte Franzbox-Programm läuft zwar auf dem Arduino-M238P wenn ich es
im Freeduino seriell per Bootloader drauflade und dann den Chip
in die Franzbox-Platine stecke, und obwohl die Fuses stimmen läuft es dann
aber lähmend langsam. Da bin ich noch nicht dahintergekommen weshalb das so ist.
Wie schon mehrfach erwähnt ist die Franzbox-Platine definitiv Arduino-kompatibel.
Die Ports passen, und sogar das EA DIP204 kann so wie es beschaltet ist auch
per Arduino betrieben werden. Das passt alles zusammen,obgleich das Display
unter Arduino eine eher harte Nuss ist, weil die Startadressen der Zeilen von der
Norm abweichen und man da sogar im Programm rumeditieren muss.
Bei echten "Industriestandard-LCDs" hat man dieses Problem nicht
und man müsste zum programmieren halt so vorgehen wie auch bei den ganzen
Arduino-mini-Versionen ohne seriellen Pegelwandler bzw USB-Anschluss.
also entweder ohne Bootloader per ISP-Programmer oder mit einem seriellen Adapter
den man sich zur Not aus einem gesockelten Arduino (Uno, 2009, oder Freeduino)
basteln könnte, was aber nicht ganz problemlos funktioniert wegen Timing-Problemen
im Zusammenhang mit dem Auto-Reset des Arduino.  Nur mal so am Rande erwähnt.
Die ISP-Variante ist die problemloseste, man muss nur erst mal die .hex-Dateien
auf dem Rechner finden..... irgendwo im temporären Ordner von Windows........

Ich bin nicht der große Arduino-Fan, aber das liegt hauptsächlich daran, dass ich
mit Bascom angefangen habe, und dass es daher nicht ganz einfach ist die Denkweise
auf Arduino umzustellen. Hinzu kommt, dass es bei Arduino nicht wirklich vorgesehen ist,
Prescaler von Timern zu verändern oder mit anderen Quarzen zu arbeiten.
Gewiss ist das auch bei Arduino machbar, aber man muss da halt leider schon in die
Trickkiste greifen, während das bei Bascom völlig unproblematisch ist.
Hier fehlt mir einfach noch die Erfahrung Das wird aber sicher noch besser im Lauf der Zeit.
Aber das ist jetzt überhaupt nicht mein Problem!

In den nächsten Tagen wird hier aber nicht viel passieren, es hat sich daheim schon wieder
eine riesige Menge an "dringendst zu erledigenden Dingen" angesammelt so dass wieder mal
eine "schöpferische Pause" nötig ist.

bis demnächst!
Franz







11 Dezember 2013

Aaaaahhhhhh Ja!!!!!!!! Wieder mal was gelernt! "Neueres" Golf Kombiinstrument ansteuern

Kaum ist ein Problemchen gelöst, da taucht ein neues auf.............

Wie schon erwartet war die Ansteuerung der Hitzdraht-Tankanzeige vom 93er Golf einfach,
aber was machen die computergesteuerten Kombiinstrumente mit Schrittmotor-Anzeigen?

Natürlich funktionieren die mit reiner PWM nach GND getaktet nicht!
Ich habs schon irgendwie geahnt! Obwohl die mit dem gleichen Tankgeber arbeiten
haben die einen völlig anderen Spannungsbereich von etwa 0,7 bis 2,7V
Da fliesst also viel weniger Strom auf der Leitung.

Dieser Spannungsbereich ist vergleichbar mit dem des Golf4, allerdings nicht ganz die gleichen
Werte und vor allem "andersrum" Ich hatte schon die Befürchtung, doch wieder auf die
Schaltung mit dem LT1010 zurückkehren zu müssen, aber dann habe ich doch noch eine
recht einfache Lösung gefunden. Der Vorwiderstand von 25-30 Ohm ist hier noch viel wichtiger
als beim Hitzdrahtinstrument, Damit stellt man die Anzeige erst mal grob auf etwas mehr als voll.
.......und dann noch ein richtig schöner großer Kondensator nach dem Widerstand nach GND
und schon funktioniert das auch mit den moderneren Anzeigen!!!!!!!
(2200 µF reichen allemal, ich weiss aber noch nicht wie der Wert mindestens sein muss)
Das neuere Kombiinstrument aus einem 96er 1,6l 75PS Golf zeigt wunderbar genau an!
Die Schaltung per Transistor nach GND ist mit ein sehr großes Anliegen, und weil sich hier
auch schon wieder das nächste Problem abzeichet weiss ich jetzt schon, dass da noch ein
paar Meßreihen und Versuche nötig sein werden.Nicht zuletzt weil ich die Leitung der
Tankanzeige bis 0,63V runterziehen muss, bzw sogar auf etwa 250mV wegen des
Vorwiderstandes. Das kann nur ein N-Mosfet, und die sind wiederum mit 3,3V nur
schlecht anzusteuern.In meiner Mini-Franzbox habe ich NPN-Transistoren als
Schaltelemente drin, da ist bei 0,7V Schluss! Der Ausgang ist also zum Ansteuern der
elektronischen Tankanzeige nicht geeignet.Die Hitzdraht-Version sollte funktionieren


Leider funktioniert aber auch der Drehzahlmesser nicht ganz so wie erwartet.
Michael hat sowas auch schon mal festgestellt, bei Drehspul-DZM fällt das aber nicht auf.

>>EDIT 12.12.13: .....nein, das kanns da nicht gewesen sein!
Das bisherige Programm ist hier fehlerfrei, zumindest was dieses Zucken betrifft  :-)
Das muss einen anderen Grund gehabt haben und schon mit dem Meßsignal ankommen.
Hier lags an was anderem im Zusammenhang mit I²C!!
Das wird noch eine harte Nuss, da gehts ans Eingemachte und an die Grenze
des Machbaren. Das wird aber dann in einem eigenen Thread behandelt!
kurz: Die I²C Geschichte muss aus dem Timer-gesteuerten Unterprogramm
raus, weil sich da sonst die Interrupts gegenseitig stören.
Das war übrigens zugleich auch der Grund für die Anzeige-Fehler im Display!


Die Nadel ist ein bisschen nervös, und ich bin mir in diesem Fall sicher, dass das nicht
am Kombiinstrument liegt, und auch nicht an einer zu hohen Spannung am Ausgang der
Franzbox, weil ich da schon ein Poti reingesetzt habe. Ich kann da ziemlich weit runterdrehen,
und irgendwann ist das Signal zu klein, aber am leichten Zucken der DZM-Nadel ändert
das nichts. Da muss ich mir demnächst mal das Ausgangssignal unbedingt genauer ansehen!
Natürlich schwankt der Wert am Timer ganz leicht, aber bin ich da womöglich schon
in einem Bereich wo die Schritte zu groß werden? bei 200A (2000 u/min) ist es noch
nicht tragisch, aber im oberen Bereich wird es dann unangenehm.
Da müsste ich dann eventuell die Taktfrequenz der Box erhöhen um den Timer mit niedrigeren
Zahlenwerten zu betreiben. Das wird interessant! Aber nicht mehr heute.........

06 Dezember 2013

Umbau der Franzbox auf Transistorausgang für "normale" Tankanzeigen

Nachdem sich herausstellte, dass die Ansteuerung der Tankuhr je nach Fahrzeug durchaus
unterschiedlich erfolgen muss gibt es hier eine ganz spezielle Umbauanleitung für Bernd.

Die Ansteuerung mit einer Spannung  von 0-4,5V wie sie bei neueren VW-Tankanzeigen ab Golf4
nötig ist, weil da der Rechner im Kombiinstrument offenbar nur impulsförmig den Widerstand
des Tankgebers misst ist bei den älteren Anzeigen bis hin zum Golf3 nicht verwendbar,
weil die mit anderen Spannungen auf der Geberleitung arbeiten. (aber mit ähnlichen Geber-Werten
Ich muss an dieser Stelle zugeben, dass ich das bisher nie direkt "am Objekt" nachgemessen habe,
aber das ganze Verhalten deutet darauf hin, und sobald irgendetwas mit Kondensator und Widerstand
in der Leitung war ging die Anzeige auf Anschlag.Diese Tankanzeige per PWM anzusteuern klappte
jedenfalls nicht, aber über den Umweg per PWM eine Spannung von 0-5V zu erzeugen und diese in
einen LT1010 als analogen Leistungstreiber einzuspeisen und mit dieser Gleichspannung zu arbeiten
klappte es sofort. Es müsste auch funktionieren, diese Anordnung auf 0-12V zu erweitern indem
man den TC4431 bestückt und mit dessen 12V-Ausgang und dem LT1010 an 12V arbeitet
aber gerade die LT1010 sind sehr teuer, so dass ich sie wenn es irgendwie möglich ist nicht
einsetzen möchte.Wer ein bisschen Ahnung von Elektronik hat, der wird mir zustimmen, dass
es eine sehr schwierige Aufgabe ist, einen veränderlichen Widerstand zu bauen.
Es ist viel einfacher, die Spannung zu erzeugen, die im jeweiligen Fall an diesem Widerstand
anliegen würde. Das war in diesem Fall der entscheidende Trick!

Hier geht es aber um einen ganz speziellen Fall einer Tankanzeige eines späteren Golf1 Cabrios
das bereits die Golf2 Armaturen drin hat. Ich habe in meinem "Fundus" aber nur einen 93erGolf3
Tacho gefunden, der jedoch vom Verhalten her nahezu identisch sein sollte.Golf2 und 3 Tanks
und deren Geber sind jedenfalls untereinander austauschbar, also arbeiten die sehr ähnlich.
Ich kann jedoch hier noch nicht versprechen, dass sich alle Golf3 Tankanzeigen bzgl PWM gleich
verhalten, sondern nur dass die Geber gleich sind! Von den Tachos gibt es verschiedene Versionen
von verschiedenen Herstellern sowohl mit Hitzdraht als auch später mit Schrittmotor-Anzeigen.
Da muss ich erst mal ein neueres Kombiinstrument besorgen, dann sehen wir weiter........

Diese Hitzdraht -Tankanzeigen brauchen einen weitaus größeren Bereich zum Ansteuern.
bei "LEER" liegen hier annähernd 9V auf der Leitung
Andererseits kann man hier aber das Signal takten so dass es eigentlich viel einfacher ist, diese
Instrumente anzusteuern.Gewissermaßen exakt die Schaltung so wie sie ursprünglich geplant war.
Ich habe deshalb heute meine Versuchs-Box auf einen Transistorausgang (open Drain N-Mosfet)
umgebaut

Zum besseren Verständnis nochmal der Schaltplan: (zum Vergrößern anklicken)


........und die zu verändernden Stellen:





 Was ist zu machen?
1.Brücke in JP2 entfernen Der LT1010 wird dadurch stillgelegt
2. Pin 5 (Ausgang) des LT1010 abtrennen (würde nur stören)
3.Transistor einlöten (N-Mosfet, BDX77 oder IRF1404 oder sonstigen der bei 5Vein wenig schaltet)
4.Brücke einlöten (R34)
5.Brücke einlöten (IC4 Pin2 nach Pin 6)
6.Widerstand einlöten ca.1k - 4k7k oder ähnlich (R31) bzw R32 wiederverwenden
7.Eventuell Widerstand R32 entfernen (kann aber auch drin bleiben)

Beim Anklemmen der Tankuhr sollte man noch einen Widerstand in Reihe schalten der
etwas kleiner sein sollte als der minimale Widerstand des Tankgebers. Bei Vw hat der Geber
z.B. ca 33Ohm bei "Voll" also wären hier 27 Ohm gut. Ich habe  zwei 47R parallel genommen.
So kommt man dann auf annähernd 100% Puls-Pausenverhältnis bei voll.
Wenn man es noch "ganz besonders gut" machen will, dann könnte man dann noch einen weiteren Widerstand vom Ausgang der Box nach GND legen der dem maximalen Widertand des Tankgebers entspricht, aber den kann man auch weglassen, sonst könnte ich mir auch die Einstellung im Menue
der Box sparen.So kommt man halt auf einen Einstellbereich des PWM-Ausgangs der annähernd von
0 - 100% Puls-Pausenverhältnis einstellbar ist, aber ohne diesen Widerstand war die Einstellung des Nullpunkts bei Stufe 22 von 255 auch schon sehr in der Nähe von Null, das reichte locker für den
Abgleich auf den Nullpunkt der Tankanzeige.

Das wars schon!

Nach diesem Umbau konnte ich die Tankanzeige eines Golf3-Tachos problemlos abgleichen.
Allerdings fiel auf, dass diese Tankanzeige beim verwendeten Kombiinstrument aus einem
'93er 1,8 90PS sehr!!!! stark gedämpft ist, und im Bereich 2/3 bis 3/4 Voll etwas viel anzeigt (+5%)
und dann relativ lange braucht bis bei 50% auch 50% auf der Uhr stehen.
der Bereich unter 1/2 und um 1/4 passt aber sehr gut. damit kann man schon zufrieden sein!
Bei anderen Systemen ist die Mitte überhaupt nicht einzeln abgleichbar, da ist dieser Fehler
noch viel größer und überhaupt nicht beeinflussbar.
Da muss man halt ein paar mal im Menue ein bisschen nachstellen, dann passt das
schon so wie man es haben will.
Unter 0% Rest zeigt dann das Display (lo) an und bei der eingestellten Grenze,
(normalerweise -5%) kommt die Warnleuchte. Hier empfiehlt sich die ehemalige
Ladekontrolleuchte die mit dem Schalttransistor im Ausgang der Box angesteuert wird.
Bei tieferer Entladung als -10% schaltet die AH-Anzeige der Box ab und ein Text
zeigt blinkend "!!Tiefentladen!!  In diesem Zustand (Warnung oder Tiefentladen)
würde auch die automatische Nachladeschaltung für die Bordbatterie nicht mehr
einschalten.

............und wo dieses doppelte h in Ah herkommt werde ich auch noch finden..........
natürlich wärs mit einem Leerzeichen hinter dem h weg, aber ich will wissen wie das
entsteht!Deshalb ist das noch nicht geändert








bis demnächst!
Franz

04 Dezember 2013

Galvanisch getrennte Spannungsmessung per I²C

Die Messung per I²C läuft jetzt im aktuellsten Programm der Franzbox!
derzeit bis 160V, aber das ist nur eine Frage des Eingangsspannungsteilers.
Hier wird zwar die "Akkuspannung" angezeigt, aber nur deshalb, weil
ich da schöner testen kann, und weils für die Strommessung noch ein paar
Änderungen im Programm braucht. Ich hätte gerne beide Möglichkeiten
einstellbar bzw sogar automatisch umgeschaltet, entweder wie bisher
Strommessung per LEM und Onboard AD-Wandler ohne Spannungsmessung
und als Option die genauere Messung per I²C extern und galvanisch getrennt
inklusive Akkuspannung.       ............sieht schon mal sehr gut aus!

Hier taucht auch wieder mal die Frage auf Shunt oder Induktiver Wandler.
Weil die Spannungsmessung ohnehin schon eine Verbindung zum Akkupack hat
wäre für den Shunt nur noch eine Leitung zusätzlich zu legen.
Der Shunt hätte den größten Vorteil bei geringen Strömen, weil da 0A
auch 0,0V Messignal ergeben, keine Drift, kein Nullabgleich,
da kommts nur auf die Qualität des Messverstärkers an.
Hier ist aber alles möglich, mal Preise und Verfügbarkeit checken!
So ein Shunt liegt preislich wohl irgendwo bei 50 Euro, und ist damit deutlich teurer
als ein LEM-Wandler für unter 20Euro.Die LEM-Wandler arbeiten erstaunlich gut,
aber mit 1-2% Fehler muss man immer rechnen und der Nullpunkt wandert ein bisschen
mit der Temperatur. An einem 10Bit AD-Wandler ist ein Schritt schon 1,6A
Da kann man keine Wunder erwarten, und zur Messung des Nachladens mit
10A oder so genügt das halt einfach nicht. Zum Ah-zählen bei Strömen um 150A
reichts aber locker!
Wie schon gesagt, es kommt halt drauf
an, welche Messeigenschaften man haben will, und was man bereit ist, dafur zu bezahlen.
Shunts sind in der Regel auf 50 ; 60 ; 100; oder 200mV Ausgangsspannung
abgeglichen, und weil die Last im Fall eines Antriebs nicht dauerhaft anliegt darf man den
hier auch mal etwas knapp dimensionieren. Ein 300A/100mV -Shunt kann hier also
durchaus auch für 600A/200mV verwendet werden. Das hält der schon ein paar Minuten aus!
Allerdings: 500A und 200mV sind schon 100W Verlustleistung! das darf man nicht
auf die leichte Schulter nehmen! Da verwundern die Abstimmungen auf 50mV nicht!
Aber dann ist der Messverstärker wirklich gefordert, wenn das so um 0A auch
noch passen soll!

Die Signale laufen übrigens auch schon über den Isolator, und das Problem
des Programm-Stillstandes bei "offenem" I²C-Bus ist inzwischen auch gelöst

Kleiner Nachtrag 5.12.13:
Mit einem anderen Spannungsteiler (60k + 500R =121:1) kann jetzt bis 247V
gemessen werden, Das passt fürs erste.
Leider ist die ganze Ausleserei in der Interrupt-routine nicht ganz unproblematisch.
Es kommt zu etwas seltsamen Timing-Problemen??? im Display die ich vorher nicht
feststellte. Mehrstellige Zahlenwerte die ich direkt anzeigte wurden sporadisch nur
einstellig dargestellt, wodurch die Anzeige gelegentlich flackerte und zuckte.
Dies betraf hauptsächlich das Menue und die Anzeige der Amperestunden bei 100%.
Ich konnte zwar die wirkliche Ursache noch nicht feststellen, aber als "Workaround"
wandle ich diese Werte jetzt in einen String bevor ich sie anzeige. Dann passt die Anzeige!
Ich muss zumindest den Strom-Wert unbedingt in einer Interrupt- Schleife einlesen,
und dann auch beide Kanäle abwechselnd. Weil der AD-Wandler dazu auch jedesmal
umkonfiguriert werden muss sind das durchaus einige Daten auf den I²C-Leitungen.
Die Spannung bräuchte zwar nicht derart oft gemessen werden ( ca 15x je Sekunde),
aber anders wärs noch komplizierter, weil ja die ganzen Schreib- und Lesevorgänge
koordiniert sein müssen.Erst IC ansprechen, Kanal aktivieren, ein bisschen warten und
dann auslesen.
Der Zeitliche Ablauf und die Berechnungen laufen im Hintergrund so wie bisher,
und die Werte sind nach wie vor korrekt, es ist noch kein unlösbares Problem aufgetaucht.




03 Dezember 2013

Galvanisch getrennte Spannungsmessung mit MCP3426 und ADUM2250

Der Messaufbau ist zwar sehr primitiv und nur mal schnell zusammengelötet,
aber so funktioniert das schon recht gut und genau so wie erhofft.

Als AD-Wandler dient ein MCP3426, das ist der kleine I²C delta-sigma-Stromwandler
in den ich mich regelrecht verliebt habe und der für diesen Zweck hervorragend geeignet ist.
12 14 oder 16Bit Auflösung bei +- 2,048V Eingangsspannung gegen einen Bezugspunkt
der nicht auf GND liegen muss das Ganze zwei Mal, Referenzspannung etc "On Board"
Es ist keinerlei externe Beschaltung notwendig ausser Spannungsversorgung und I²C
Der funktioniert von 3-5,5V und ausserdem ist noch ein "gain" also ein Vorverstärkungsfaktor
von 1  ;  2  ; 4 oder 8 einstellbar das ergibt z.B. einen Eingangsbereich von +- 0,256mV
bei einer Auflösung von 65536 Schritten bei 16Bit ok, braucht nicht jeder so fein, und dann
wird der Wandler auch langsam, aber 12Bit sind auch noch 4096 Schritte
bzw 14bit 16384Schrittegesamt also 8192 von 0-maximum.
Damit kann man direkt einen Strom-Shunt auslesen. (meist auf 200mV abgeglichen)
15 SPS (16 bits)  60 SPS (14 bits)  240 SPS (12 bits) (SPS= Messungen pro Sekunde)
wie ich in teinem älteren Post schon mal erwähnte kann man bei +-2,048V Eingang
und Betrieb an 5V einen LEM Stromwandler ebenfalls direkt anschliessen.
Der Messbereich des LEM HASS200S geht dann bis +- 645A also mehr als nötig für
das Maximum von +-600A.
Die Ansteuerung per I²C ist erstaunlich einfach.
Weil es immer wieder die gleichen Befehlssequenzen sind ist das in Bascom mit
wenigen Zeilen Programm erledigt. Die Zahlen auf dem Display der Franzbox
(:7:32:16) sind die drei Byte, die pro Messung empfangen werden
also highbyte, lowbyte, Statusbyte  7 x 256 + 32 ergibt 1824.

Das schöne am MCP3426 ist, dass die Eingangsspannung schon korrekt ausgegeben
wird. 1824 sind bei 12 Bit und den 2,048V Referenz auf +- 2048 Schritte
exakt 1,824V am Eingang!

Das ist wesentlich schöner zu berechnen als z.B. 1024 Schritte bei 5,07V Referenz
umzurechnen wie das beim Onboard-AD-Wandler des Atmega üblich ist.

........wer hier mal meinen Spannungsteiler genauer anschaut wird feststellen, dass
da was nicht stimmen kann......ich habe mal wieder dieses doofe Messinstrument
erwischt, das bei leerer Batterie ohne Warnung zu viel anzeigt.......und habs im Programm
angepasst, ohne lange zu überlegen. Dieses Messgerät wird jetzt entsorgt!

Für die galv.Trennung des I²C-Busses sorgt ein ADUM2250.
einfach mal nach den Datenblättern googeln, die sind leicht zu finden!

So ist die gesamte Messvorrichtung mit gerade mal ca.10 Bauteilen zu realisieren.
I²C ist zwar nicht unbedingt das ideale Bussystem in rauher Umgebung, da muss ich
noch ein paar Versuchsreihen durchführen, aber wenn man den Messwandler nicht
allzuweit weg vom Auswerterechner platziert dann funktioniert das sehr zuverlässig
und auch schnell.SPI ist da auch nicht viel besser, braucht aber einen Port mehr
und RS232 ist eher langsam und braucht einiges an Hardware zusätzlich.




27 November 2013

Das EA DOGM163-Display ist kompatibel !!!!!!!!

Gute Nachrichten in der Display-Problematik!
Vorhin in der Mittagspause habe ich mal versucht, das EA DOGM163 Display
an der Mini-Franzbox zum Laufen zu bekommen.Gestern abend hatte ich noch einen
Adapter dafür gebaut um alles an meinen Platinen betreiben zu können
Es funktionierte fast auf Anhieb, nur die Kontrasteinstellung gab sich äusserst zickig.
Hmmmmmm erstens schlecht dokumentiert, und dann auch noch ein Schreibfehler in
der Bascom-Hilfe-Datei an ganz entscheidender Stelle..........
Da wurde die Mittagspause dann etwas länger....... ;-)
Aber jetzt funktionierts! Auch die Kontrasteinstellung per Software!
Das ist mal wert dieser Sache einen eigenen Tröööt zu widmen.
Kurz gefasst:
Das ist die eigentliche Änderung im Programm
Config Lcd = 16 * 3 , Chipset = Dogm163v5 , Contrast = &h79     '16*3 type EA DOG display
anstatt wie bisher beim EA DIP204
Config Lcd = 20 * 4a , Chipset = Ks077                                          'für EA DIP204-4

Die Zahl für den Kontrast  geht von &b0111 0000 bis &b0111 1111 bzw von &h70 bis &h7F
es gibt also 16 mögliche Werte und wenn man das mit dem Kontrast weglässt, dann wird der
voreingestellte Defaultwert genommen der mir in dem Fall aber zu dunkel war.
Entscheidend ist, das nur die letzten vier Bit den Kontrast bestimmen und vorne 0111 = 7h
stehen muss. In dezimalen Werten ist das also 112 bis 127 was natürlich auch funktioniert
Es ist mir noch nicht gelungen, die Zahl als Variable einzufügen. da muss man also ein bisschen
"zaubern" um den Kontrast vom Menue aus einzustellen. möglich ist es sicher, aber halt nicht
so ganz simpel.Schlimmstenfalls 16 verschiedene Config LCD-Zeilen und ein Sprungbefehl davor.
Aber das geht garantiert noch eleganter.

Nachtrag Juni2014:
Vor einiger Zeit habe ich eine Möglichkeit gefunden, wie man das EA DOGM nachträglich
neu initialisieren kann, (nicht ganz einfach......der Bascom-Befehl INITLCD ist einer der Schlüssel!)
 und auch, wie den Kontrast im laufenden Betrieb ändern kann, aber das ist nicht so wirklich sauber
zu machen.Man muss nach dem (Neu-)Initialisieren, das immer mit dem Wert in Configlcd passiert
sofort die korrigierten Kontastwerte nachschicken. Das Progamm hierzu habe ich in den Tiefen des
WWW.entdeckt, und ein wenig korrigiert und angepasst, weil da der gesendete Wertebereich für
den Kontrast nicht richtig ausgegeben wird. Ein Ändern des Kontrast-Wertes im Bascom-Programm
per Menue ist mit nach wie vor nicht gelungen.
Das Ganze steht etwas weiter vorne hier im Blog, ziemlich weit unten auf diesem Post:
http://vehikelfranz.blogspot.de/2014/04/lange-nichts-los-hier.html


Das EA DOGM-Display an der Franzbox:
Ich habe natürlich meine Texte noch nicht neu formatiert, aber alles wird schön angezeigt!
Suuuuper! und das auch mit 5V Betriebsspannung!




















Natürlich hab ich es heute Abend auch mit dem Franzbox-Programm versucht:
Selbstverständlich (?) hat es da auch geklappt! Auch die Formatierung der Texte
auf  3x16 Zeichen ist machbar.Weniger zu lesen, aber doch noch verständlich.
Die BMS-Funktionen habe ich aber bis auf weiteres stillgelegt.
Ich brauche Platz für die I²C Geschichten.














Hier sieht man sehr gut, wie klein und flach die EA DOGM Displays sind:

allerdings lief nicht alles perfekt. Die Schaltung lief über Nacht durch und
am nächsten Morgen war dann das Display leer! 
Es geht also wohl doch nicht ohne Stützkondensator am LCD.
Ich werde auch noch den Reset und die geschaltete Beleuchtung
so anklemmen wie in der Box vorgesehen, dann wird das hoffentlich
unempfindlicher.

kleines Update:
jetzt sind auch 500Ah einstellbar (da sollten noch viel mehr möglich sein, (999?)
ich muss das aber erst noch in Ruhe durchrechnen, damit keine Variable
an eine Grenze kommt.Die Berechnungen sind nicht immer einfach wenns
"krumme" Zahlen sind.
Wenn es schnell gehen soll kann man nur mit ganzen Zahlen rechnen und es wird
nicht gerundet. da muss man also oft erst multiplizieren, was berechnen
und dann wieder dividieren damits auch nach dem Komma noch stimmt.







24 November 2013

Franzbox "MINI" als Controller

Gestern konnte ich endlich mal die "Mini"-Version der Franzbox als PWM-Controller in Betrieb
nehmen. Auch wenn da noch irgendwelche Kleinigkeiten im Programm nicht ganz das machen wie
es eigentlich beabsichtigt ist so kann man da doch sehr gut sehen, wie ich das Setup-Menue
gestaltet habe. Die Start-Stop-Funktion hat in der normalen Box schon einwandfrei funktioniert,
aber im Rahmen der Übertragung auf die "Mini"-Box und der Einfügung der Drehzahlmessung
und verschiedener andere Dinge hat sich wohl ein kleiner Fehler eingeschlichen, und es sieht
sehr danach aus als würde da eine Zahl in Zusammenhang mit negativen Stromwerten bei 0
überlaufen..... wie dem auch sei, das finde ich schon raus!

>>>>EDIT 25.11.13:
Ich meine ich habs gefunden! einmal nicht abgefragt ob >0 vor "decr" einer Word-Variable.....
Leider kann ich es heute nicht testen weil der Controller in meiner Werkstatt ist,
und ich noch in der Firma sitze.......

Nochmal Edit 28.11.13:
........das wars wirklich! Aber der Fehler war nicht neu sondern auch in der alten Version schon drin!
Wieso ist das da nicht aufgefallen? Ganz einfach:Da war der Spannungsmesseingang ein bisschen
stärker geglättet.Höherer Widerstand und größerer Kondensator. Um hier unter Null überzulaufen
muss ja bei PWM=0 ein Stromsignal größer als die Begrenzung im Leerlauf ankommen. Das sollte ja
überhaupt nicht möglich sein.Offenbar aber doch! und das Programm muss das auch vertragen können.
Egal, jetzt funktionierts und wieder mal ist ein gut verstecktes Fehlerchen gefunden und beseitigt!
Für so was ist es wieder mal gut, einen Prüfstand zu haben.


Das Video auf Youtube

.......wie schon erwähnt klappt es hier einfach nicht mehr, wie gewohnt Videos einzubinden.
Ich kann zwar mit der selben Ameldung sowohl den Blogger als auch Youtube aufrufen,
aber von hier aus werden meine eigenen Youtube-Videos nicht mehr gefunden.
Auch das direkte Hochladen macht Probleme........


19 November 2013

Die "Franzbox" und die Displayproblematik

Das 5V / 3,3V-Problem im Fall der Franzbox lässt mir keine Ruhe!
Es geht jetzt mehr darum, in welche Richtung ich jetzt weiterentwickle.
Jedes Teil, das man ändert zieht gewaltige Kreise und verändert mehr am Konzept
als man zunächst meint.

Das EA DIP204 Display ist definitiv eine Sackgasse, so gehts also nicht weiter.
Ich habe noch so viele 5V-Displays wie Platinen, aber das wars dann.
Direkt aufs EA DIP203 umzusteigen ist mit den derzeitigen Layouts nicht ohne Probleme möglich

Leider passt in das bisherige Gehäuse keines der vielen Standarddisplays rein.
Mehr als 75 x 40 mm geht auf gar keinen Fall, und ich hätte gerne mindestens zwei Zeilen
mit je 20 Zeichen aber da führt kein Weg hin. Ich werde also eventuell auf zwei Zeilen mit 16
Zeichen ausweichen müssen, aber selbst da gibts nichts wirklich passendes.
Mit 2 x 16 Zeichen kann ich zwar mehr oder weniger gut die Infos der bisherigen Franzbox anzeigen
aber an BMS-Funktionen ist so nicht zu denken.

Ein letzter Strohhalm sind die EA DOG-Displays, aber die sind wieder mal ein bisschen
anders anzusteuern aber das sollte zu schaffen sein. Ich hab einfach mal eins bestellt
mit 3 x 16 Zeichen. Das sollte als Kompromiss reichen. Ganz neu soll es die auch als 4 x 20
Version geben, aber ich hab noch keinen Händler gefunden der sie jetzt schon liefert.
Im Datenblatt steht, die Text-Versionen seien mit 5V zu betreiben! das muss ich jetzt mal alles
klären und auch mal schauen wie da die Zukunft aussieht.
Wenn das EA DOG halbwegs kompatibel ist, dann ist es auch an der bisherigen Box-Platine
zu betreiben, und es sieht sehr danach aus dass eine kleine Programmanpassung reichen müsste

Die Abmessungen wären fürs Design sehr günstig und auf den paar zusätzlichen mm ist
wohl auch noch ein MAX232 unterzubringen als ordentlicher serieller Schnittstellenbaustein.
Da wird dann aus der EADIPUINO-Platine wie ich meine Mini-Version gennnt habe
eine EADOGUINO werden mit vermutlich  55 x 40 mm wenn ich den Drehencoder
auch noch auf die Platine packe und den schwarzen Stecker eventuell durch was kleineres ersetze

...........es wird sich demnächst zeigen wie es weiter geht!

15 November 2013

Golf 4 Gaspedal elektrisch


Heute ist das E-Gaspedal angekommen, das ich für 1Euro ersteigert habe.

Es stammt aus einem Golf4 und weil eine Befestigungslasche fehlt wollte es wohl keiner.
Ansonsten ist es neuwertig, und für meine Versuche gerade recht.

Dieses Pedal stammt aus einem Benziner und deshalb hat es zwei Potis drin
eines an Pin 1 und 5 mit dem Schleifer auf Pin6
und ein weiteres auf Pin2 und Pin3 mit dem Schleifer auf Pin 4

Ich hab mir mal rausgemessen was das denn für Widerstandswerte sind.
Erst mal nur für das zweite Poti, weil es das normalerweise auch in Diesel-Pedalen gibt

zwischen Pin2 und 3 hat das Teil ca 1,1kOhm
Pin4 nach Pin3 geht von 1k1in Ruhelage  bis 1k9 bei Vollgas
Pin4 nach Pin2 geht von 1k8 in Ruhelage bis 1k0 bei Vollgas

es ergibt sich also Pin2 + 86R + 850R(Poti) + 165R Pin3
und noch ca 910R in Serie zum Schleifkontakt

Bei Pin3 an GND und  Pin2 an 5V kommen  0,75V bis 4,6V an Pin4 raus.

Damit kommt mein Controller wunderbar zurecht!
Die Endpunkte sind ja im Menue einstellbar, und die Vorwiderstände ermöglichen auch
noch eine grobe Plausibilitätsprüfung der Signale bzgl Masseschluss oder Leitungsbruch

Das muss ich unbedingt heute noch testen!
Das andere Poti ist übrigens etwas hochohmiger ausgelegt.
Ich muss es aber erst noch genauer durchmessen.
Zur Plausibilitätsprüfung sind zwei Potis drin, die so ausgelegt sind, dass das zweite
eine geringere Spannung ausgibt. meist die Hälfte so dass die beiden Ausgangssignale
immer unterschiedlich aber in einem festen Verhältnis zueinander sind.
mehr ein andermal, ich muss noch wo hin und die Zeit drängt bereits.........








(mal schauen, ich kann schon seit einiger Zeit keine Youtube-Videos mehr hier direkt einbinden,
vielleicht klappt es ja mittlerweile wieder.... bis dahin erst mal der Link
ich bin ziemlich sicher, dass es an meinem veralteten Browser + Betriebssystem liegt,
aber das werde ich mal an einem anderen, aktuelleren PC testen müssen)

Nachtrag 18.11.13:
Natürlich hat es geklappt, das Pedal anzuschliessen und es funktioniert ganz hervorragend.
Ich habe mich schon seit langem gefragt, warum diese Pedale so selten verwendet werden.
Im Fall von Controllern, die einen Widerstand von 5kOhm gegen Masse brauchen
könnte es Probleme geben, aber nahezu jeder Controller der auch Spannungsgesteuert
(0-5V) verwendet werden kann sollte damit zurechtkommen. In den meisten Fällen kann man
den Eingang entsprechend konfigurieren. Die meisten Hallgeber-Pedale liefern auch eine Spannung
von etwas über 0V bis knapp unter 5V und auch bei Controllern für 5k gegen GND
handelt es sich meist um einen Spannungseingangbei dem halt die resultierende Spannung
bei mehr oder weniger konstantem Strom gegen GND gemessen wird.
Diese VW-Pedale sind qualitativ über jeden Zweifel erhaben und selbst als originales
Neuteil sehr preiswert. Wenn meine Infos stimmen kosten die so um die 60Euro neu.
es gibt einige verschiedene Ausführungen, auch in stehender Version.
Eine ganz besondere Ausführung ist die seilzugbetätigte Version wie sie in diversen
TDI-Modellen zu finden ist. (spätere Golf3 TDI  ; T4  ; diverse Audi-Modelle, auch Benziner
und auch in so manchem BMW-Modell findet man diese seilzugbetätigten Geber)
Der TDI wurde im Lauf seiner Entwicklung irgendwann von
mechanischer auf elektrische Gasbetätigung umgestellt. hierzu wurde ein Geber an der
Pedalerie angebracht und mit einem kurzen Zugseil betätigt.
Eine recht aufwändige Konstruktion, so dass die Konstruktion als komplette Einheit
mit Pedal eine sehr logische Weiterentwicklung darstellt.
Der seilzugbetätigte Geber eignet sich natürlich ganz besonders für Umbauten bei denen
komplette Pedaleinheiten keinen Platz haben.
Einfach mal im bekannten Auktionshaus nach Gaspedalgeber bzw. Pedalwertgeber suchen........


08 November 2013

10 St. EA DIP204-4HNLED (5V-Version) eingetroffen.... Franzbox und Arduino.....

Ich hätte es ja nicht für möglich gehalten, aber die geradezu verzweifelt
gesuchten Displays sind jetzt tatsächlich eingetroffen!

10St. nagelneue EA DIP204-4HNLED Displays 4 x 20 Zeichen, 5V Betriebsspannung
Die 4HNLED haben einen erweiterten Temperaturbereich von -20 bis +70°C dafür laufen die
ausschliesslich mit 5V



















.............ein herrlicher Anblick! Die Franzbox könnte also noch ein paar Mal
in der bisherigen Ausführung gebaut werden, und auch die Prototypen der Franzbox mini
können nun doch noch so wie eigentlich gedacht entstehen.
Schade aber, dass die derzeitige Schaltung keine Zukunft hat, weil das
ziemlich sicher die letzten 5V EA DIP204 Displays sind die auf dem Markt sind.
Es gäbe zwar momentan noch mehr, aber ich will jetzt trotzdem nicht mehr davon kaufen,
nur weil ich sie irgendwann mal vielleicht doch noch brauchen könnte.......

Michael hatte mal die Vision eines Franzbox-Shields für den Arduino.........
Grundsätzlich wäre das kein großer Aufwand, aber ich habe ein kleines Problemchen
damit, das Programm 1:1 auf den Arduino zu übertragen, weil es da gar nicht so einfach ist,
mit anderen Prescalern bei den Timern und mit anderen Quarzfrequenzen als vorgesehen
zu arbeiten. Das geht mit Bascom viel einfacher!
Ansonsten ist die Form des Arduino sehr ungeeignet für den Einsatz als eigenständiges Gerät.
(Ich frage mich jedesmal, wieso das denn gerade so geworden ist.....seltsames Design......)
Wie könnte man dann die Franzbox auf Arduino-Basis verwirklichen?

ganz einfach: man bestückt eine Franzbox-Platine mit dem entsprechenden Quarz und Prozessor
und benutzt eine Arduino-Platine ohne Prozessor als Programmer bzw USB-Adapter
Der Bootloader kann per ISP-Programmer oder auch mit einem entsprechend programmierten
Arduino geladen werden, und dann braucht man ja eh nur noch die serielle TTL-Schnittstelle,
5V , GND und Reset von Franzbox-Platine und Arduino-Platine verbinden.
.........und schon kanns losgehen! alle Signale ausser Reset liegen auf dem roten Stecker der
Franzbox (Micromatch 14). Der Reset ist auf dem schwarzen Stecker zu finden,
weil ich die Box normalerweise nur damit per ISP-Programmer programmiere.
Das klappt übrigens auch mit den HEX-Dateien von Arduino! (myAVR Progtool eignet sich gut)
Man muss nur erst mal rausfinden, wo Arduino die ablegt.......im Temporären Ordner von Windows!


Hier ist der Schaltplan der Box:
Der Plan ist leider etwas verwirrend, weil da mehrere Bestückungsvarianten bzw sogar völlig
unterschiedliche Versionen und Schaltungen alternativ bestückbar sind. es sind also niemals
alle Bauteile bestückt, aber dafür sind ausgangsseitig interessante Sachen möglich.
von open collector bis zur H-Brücke und auch Spannungsausgabe mittels PWM und LT1010
ist da vorgesehen.(aber nicht alles gleichzeitig) da braucht man halt Phantasie beim Bestücken ;-)
Mit den beiden Netzteilschaltungen verhält es sich ebenso. Es kommt halt drauf an,
was man haben will.... Schaltausgang, zusätzlichen GND-Anschluss oder auch den 5V-Ausgang
über Zündung während der Rest an Dauerplus hängt. Alles machbar!

Ein paar Beispiele:
(Ich hoffe, Bernd liest das auch)
Die 5V Hub des LT1010 an 5V sind unter Umständen zu wenig...... entweder Umbau auf 12V Hub
Also: An JP2 die 5V Versorgung des (der) LT1010 trennen und mit 12V versorgen.
(das allein könnte in Bernds Fall eventuell schon reichen)
ansonsten:
R32 entfernen. IC4 und R31 bestücken, Pin 6 und 7 von IC4 verbinden und über einen Widerstand
mit dem Eingang des LT1010 verbinden. Schon hat man einen Ausgangsspannungsbereich bis 12V
(Der TC4431 setzt um von 5 auf 12V, und der LT 1010 ist ein 1:1 Treiber für die Spannung an C9
das ist der rechte zwischen den LT1010.

oder Umbau auf Open Collector für die Tankuhr:
LT1010 entfernen Q4 bestücken R34 bestücken, bzw Brücke, R31 bestücken und
entweder IC4 bestücken Pin6 und 7 gebrückt oder statt IC4 dessen Pin2 nach Pin6 brücken,
das geht auch, wenn Q4 halbwegs TTL-tauglich ist. Für die paar mA der Tankuhr reichts allemal.
Der TC4431 ist ein Mosfet-Treiber, der nur bei 12V H-Brücken-Schaltung der Ausgänge nötig ist.
...........das meine ich mit "phantasievoll bestücken".........

Port B ist in meiner Grundschaltung zugleich der Display-anschluss und ISP-Anschluss
Das klappt gut, und wenn beim Programmieren das Display wirres Zeug zeigt dann ist das
nicht weiter tragisch.
Die Display-Belegung und auch das EA DIP204 sind grundsätzlich Arduino-kompatibel.
Weil das EA DIP204 ein bisschen vom Standard abweicht sind dabei ein paar Dinge zu beachten,
aber das habe ich in früheren Posts schon mal beschrieben.

http://vehikelfranz.blogspot.de/2013/01/franzbox-meets-arduino.html

http://vehikelfranz.blogspot.de/2013/03/franzbox-meets-arduino-teil-2.html


Zum vergrößern anklicken!




06 November 2013

Saugrohr-Unterdruckfühler

Sehr oft taucht die Frage auf, wie man denn eine Vakuumpumpe aus-und einschalten könnte.

Eine interessante Variante um den Unterdruck im Vakuum-Teil z.B. des Bremskraftverstärkers zu messen
sind die in sehr vielen Fahrzeugen eingesetzten Saugrohr-Unterdrucksensoren.
Ebenso verwendbar sind die Sensoren von Freescale wie man sie in verschiedensten Ausführungen bekommen kann.(z.B. Reichelt) Elektrisch verhalten sich alle recht ähnlich, allerdings mit verschiedenen
Druckbereichen, Genauigkeiten und entsprechenden Kennlinien.
Zur Unterdruckmessung braucht man einen Fühler, der dafür vorgesehen ist,  also einen aus dem KFZ-Bereich oder einen mit zwei Anschlüssen zur Differenzdruckmessung.

Die Auto-Sensoren zeichnen sich halt durch besonders robuste Gehäuse, dichte Stecker und
gut passende Erfassungsbereiche aus.
Die Preise beginnen bei etwa 10 Euro (Golf,"Zubehör") bis gute 50Euro "Markenware"

Fast alle dieser Sensoren laufen mit 5V und haben einen Ausgangspin an dem sich je
nach Druck die Spannung ändert. meist irgendwo zwischen ca.1V und 4V je nach Druck.

Ich habe zu diesem Thema einen sehr interessanten Link gefunden, den ich Euch
nicht vorenthalten möchte:

http://download.ms-motor-service.com/ximages/PG_SI_0102_de_web.pdf

Die Auswertung kann mit einer simplen Schaltung erfolgen, (OP, Microprozessor etc)
bis hin zu einer drehzahlgeregelten Unterdruckpumpe ist fast alles möglich.

Ich habe kürzlich eine Wasserstandsanzeige mit Auswertung der Verschmutzung eines
Kraftwerksrechens gebaut und da klappt die Messung mit einer Auflösung von 1mm bei jeweils
1Meter Messbereich ganz hervorragend und zuverlässig. (Freescale Sensor MPX5010DP)
(ein "intelligentes System", das aus der Differenz der Wasserstände vor und nach dem Rechen
und dem Vergleich der Zustände vor und nach einem Reinigungslauf
die Zeit zwischen den Reinigungsläufen so einstellt, dass gereinigt wird, bevor der Rechen
durch Laub und Schmutz "zu macht".
Beim bisherigen System mussten es mehr als 5cm Differenz am Rechen sein bis die Reinigung startete. Knapper konnte man es wegen der Hysterese der Fühler nicht einstellen, und gerade jetzt im Herbst
geht durch das viele Laub im Wasser eine Menge Leistung verloren

Letztendlich erscheinen die gewonnenen Zentimeter Gefälle gering zu sein, aber die Mehrleistung ist
messbar, und das summiert sich im Lauf der Zeit, selbst wenns nur etwa 1 KW ist......)





23 Oktober 2013

Alles klar, nur viel anderes zu tun.....

Hallo allerseits!

Nachdem sich die ersten Leute schon Sorgen machen ;-) .......
Hier ist alles ok! Ich hatte nur absolut keine Zeit, hier mal wieder was zu posten.

Der "neue" Golf fängt allmählich an, Spass zu machen nachdem ein Großteil des Murks
beseitigt ist, den irgendjemand an dem Auto verbrochen hat........
Den falsch aufgelegten Riemen hatte ich schon erwähnt,
eine Antriebswelle war mit nur vier Schrauben am Getriebe befestigt
der wild eingeschweisste Kat war völlig zerbröselt und fast dicht
der noch nicht mal richtig schmutzige Iiiieh-Bäääh-Verteiler hatte ca einen mm Luft in der Lagerung
und die Zahnriemenspannrolle war auch  neu, aber mit dem Füllstück aus Kunststoff im Lager
wurde die immer wieder locker, zumindest fast.
Dass der Zahnriemen um einen Zahn falsch aufgelegt war fällt da schon kaum noch ins Gewicht
Für den TÜV mussten dann noch ein paar Gummis in der Vorderachse erneuert werden,
die Spurstangenköpfe, die vorderen Bremsschläuche, Radbremszylinder hinten,
neue Scheinwerfer und Blinker,dann wars mit dem TÜV kein Problem mehr.
Es ist echt erschreckend, was für einen Schrott man da im Versandhandel an Golf-Ersatzteilen
geliefert bekommt! Na ja, nicht immer, aber mittlerweile hat sich bei mir ein regelrechtes
Gruselkabinett angesammelt an fast neuen Teilen die vollkommen unbrauchbar bis
geradezu lebensgefährlich sind. Vor allem Gummiteile sind meist das Allerletzte!
Die originalen Spurstangenköpfe waren jetzt über 20Jahre und 200000 Km drin!
Irgendwann ist halt einfach mal Schluss, was solls.....ich kenne Fälle, da waren Billigteile
nach weniger als einem Jahr völlig hinüber. Wenns um Fahrwerk, Lenkung und Bremsen geht
sollte man schon sehr gut aufpassen, was man sich da andrehen lässt, und gerade diese
"Verschleißteile" machen doch einen Großteil dieses zweifelhaften Geschäfts aus.

An den Schwellern war dann doch eine Kleinigkeit zu schweissen weil da an der üblichen Stelle
ganz vorne immer Beschädigungen durch Hebebühnen zu finden sind.
Und da wo das Blech umgebogen wird rostets halt........ ein typisches Leiden bei frühen Golf 3.
Trotzdem eine wunderbar erhaltene Karosserie! Kein Rost im Inneren der Schweller!

In Sachen EV und Franzbox ist nicht sehr viel passiert, aber mein "Monster-Charger" macht große
Fortschritte. Nachdem die Kühlung und die Ansteuerung des IGBT ein bisschen verbessert
wurde kann man damit inzwischen mit etwa 100A laden. Da kommt man dann schon in Bereiche
wo die Zellspannungen auch schon bei ca 70% SOC bedenklich werden.
Die Sache mit dem Reduzieren der Stromstärke nach dem ersten Abschalten des BMS im
Auto ist also unbedingt notwendig, um die Zellen wirklich voll zu bekommen.
Ich habe die Leistungsstufe  an meinem Prüfstand mit dem Still-Motor auch schon mit über 200A belastet,
aber das dürfte als Dauerleistung ziemlich sicher nicht zu schaffen sein.



neues von der Franzbox:
Die ersten Tests mit den I²C-AD-Wandlern waren höchst erfolgreich, aber da habe ich nicht mehr
weitergemacht, weil die Zeit fehlte. Da muss vor Allem eine Platine her, weil die ICs so winzig sind.
Das kommt schon noch!
Bernd wünschte sich noch eine längere Nachladezeit für die automatische Nachladung der
Bordbatterie. Das ist jetzt im Menue einstellbar.
Bernd konnte auch seine Box selber "flashen"! Prima!
Mit der Anpassung an die Golf2-Elektrik gabs einige Problemchen die "lustigerweise" mit der
"Urversion" nicht aufgetreten wären. Die alte Ausführung der Tankanzeige braucht eine höhere
Spannung am Geber als die 5V, dafür wäre ein per PWM nach GND getaktetes Signal kein Problem
für das Instrument. Das muss also in dem Fall wieder mal umgebaut werden und zwar so wie es ganz am Anfang geplant war, aber in Michaels Beetle nicht funktionierte Hmmmmmm..........
Wenigstens reicht es, bzw ist es möglich, die Platine entsprechend zu bestücken.

Dass der Drehzahlmesser des Golf1 Cabrios (schon mit Golf2-Elektrik) nicht mit dem 12V
Rechteck der Box arbeiten wollte ist ein bekanntes Problemchen das also nicht sehr überraschend kam.
Da gibt es aber fertige Module aus der VW-Tuning-Szene um die nötigen Spannungsspitzen zu erzeugen.
(z.B. für Motor-Umbauten im Golf2 etc..... Stichwort: "Zündsignalsimulator"  )
Das ist so wie es ist, und es ist irgendwie beruhigend, dass ein sehr bekanntes Gerät aus Australien
zur Stromanzeige am DZM exakt das gleiche Problemchen hat.
Womöglich geben die gar nur 5V Signale aus ?! Ich nenne jetzt mal keinen Namen ;-)
Das hängt halt vom Drehzahlmesser ab, und ältere, die normalerweise direkt von der Zündspule
einer Unterbrecher- bzw Transistor-Zündung angesteuert werden rechnen halt mit Impulsen
in der Größenordnung von 100V! die kann man mit 12V nicht immer ansteuern, obwohl es meistens
sogar klappt. einfach testen, und ggfs muss halt ein "Zündsignalsimulator" dazwischen.
Dann klappt das auch mit antiken Drehzahlmessern. für die ca 50Euro die so ein Ding kostet
lohnt es sich nicht, jetzt selber was zu basteln.

Sobald ich wieder ein bisschen Luft habe werde ich mal versuchen das Franzbox-Programm endlich
auf der "Mini-Platine" und mit 3,3V zu betreiben. Die Problematik dabei kommt von der Umstellung
auf 3,3V bei den EA-DIP Displays....und somit auch die Referenz der AD-Wandler 3,3V beträgt
Der LEM Stromsensor will aber weiterhin mit 5V betrieben werden, mit 0A = 2,5V das verträgt
sich einfach nicht ohne Probleme und zusätzliche Bauteile die bisher nicht vorgesehen sind.
Natürlich kann man einen Spannungsteiler reinhängen, aber schon das getrennte Netzteil
sorgt für eine zusätzliche Drift der Nulllage
Es wird sich wohl drauf hinauslaufen, dass ich die ganze AD-Wandler-Geschichte auslagere
und sowohl den LEM (hier wäre dann auch ein Shunt zu Srommessung denkbar,
aber das hängt auch noch sehr von der zu messenden Stromstärke ab......)
als auch die längst überfällige Messung der Fahrakku-Spannung über einen
galv. getrennten I²C Koppler aufs Potential der Fahrakkus verlagere und dort per
I²C-AD-Wandler auswerte.

Für die Signale zur Tankuhr,  zum Drehzahlmesser und zur Warnleuchte sind jetzt open collector
Transistoren vorgesehen. Für die Tankanzeige muss ich mir noch was einfallen lassen.
Zumindest für neuere die nicht mit PWM direkt angesteuert werden können.

Ich habe keine Platinen der bisherigen Franzbox mehr übrig, und so wird es sie auch nicht mehr geben
wenn nicht noch ein kleines Wunder in Sachen Display geschieht und ich ein schönes 5V-Display finde
das mindestens 2 x 20 Zeichen darstellt.besser 4x20 wie bisher. 2x16 ist zu wenig!
Ins Gehäuse sollte es auch passen, wobei das gar nicht soooo wichtig ist weil mans auch am
äusseren Stecker betreiben kann. Die Bauform der EA-DIP 204 war halt perfekt
und nur die grünlich-gelben passen ins bisherige Gehäuse. Die blauen und Schwarz weissen sind
auf einer Seite länger und haben nicht mittig Platz. (da hätte ich noch ein paar in 5V auf  Reserve)
Mit 4x16 Zeichen wird der Text zu sonderbar und grafische Displays hätten gern 8 Datenleitungen.
Ich hab nur vier und mehr sinds einfach nicht.

na ja, mal sehen wies weiter geht..........


Nachtrag 4.November 2013:
Auch wenn ichs noch nicht ganz glauben kann, und ich die Dinger jetzt auch noch nicht
in den Händen habe, aber ich habe tatsächlich noch 10St. EA-DIP204-HNLED aufgetrieben!!!
Ein schöner Batzen Geld, der da im Regal landet, das war jetzt nicht vorgesehen, aber
was sein muss muss sein! Die 5V-Typen kommen nicht wieder!
Einer Mini-Franzbox und auch zwei Stück in der bisherigen Ausführung steht somit nichts mehr im Weg.
Ich könnte zwei allerletzte Platinen die momentan für einen ganz anderen Zweck bestückt sind
notfalls umbauen.  ....aber alles zu seiner Zeit.....nicht jetzt!








15 August 2013

....und wieder kränkelt ein Golf, diesmal ein anderer........

Seit ein paar Tagen ist es soweit....mein "neuer" Golf (Golf3 1,8 90PS Bj 92) ist endlich zugelassen und
läuft weitestgehend problemlos.Weitestgehend soll heissen, dass irgendwas mit dem Motor
nicht so ganz passte. Auf der Autobahn wurde er recht warm, das war ich vom bisherigen 1,6er nicht
gewohnt. bei dem war die Temperatur bei 90 Grad regelrecht festgenagelt, egal ob man mit
90 oder 180 unterwegs war. Hier stieg aber die Temperatur auf 100 bis 110° sobald man schneller
als 130 fuhr. Es muss hier noch angemerkt werden, dass der "neue" erst kurz bevor ich ihn kaufte
eine neue Kopfdichtung sowie alle Riemen neu bekommen hatte.Trotz seines Alters ist der Wagen
nahezu rostfrei, so ein richtiger "Opa-gepflegter Garagenwagen", zwar trotzdem 200000Km, aber offenbar nur bei Sonnenschein gefahren.
Tja, irgendwas stimmte hier nicht, aber nachdem ich mir jetzt unnötigerweise einen neuen Thermostat
besorgt hatte kam mir heute eine Idee.........Das Ganze machte den Eindruck als würde die Hitze nicht
richtig abgeführt. Ich hatte so was schon mal recht ähnlich erlebt als vor vielen Jahren mal der Thermostat meines damaligen Golf1 kaputt war, aber die Ursache war hier wesentlich trivialer.........
Irgend ein begnadeter Mechaniker hatte den Riemen falsch eingebaut, so dass die Wasserpumpe rückwärts lief!!!!!........das geht bei diesem Modell tatsächlich.....und weil das Treibrad der Wasserpumpe
keine Rillen hat, ist es sehr verlockend, den Riemen so aufzulegen, dass die glatte Seite auf dem glatten Rad läuft! Na ja, eine Sache von zwei Minuten und alles passte wieder. Jetzt stimmt auch der Temperaturhaushalt!

Diesen Golf "musste ich einfach haben" das ist einer mit Automatik, das machte ihn noch billiger,
und andererseits die "rostfreie" Karosserie........ Ich habe mit dem Getriebe einige Versuche vor.
Das ist schon das elektronisch gesteuerte Viergang Automatikgetriebe mit Wandlerüberbrückung im
dritten und vierten Gang.....Sollte ich doch noch mal einen Golf elektrifizieren, so wäre das eine tolle Basis.
Dank der elektronischen Steuerung könnte man da das Getriebe so schalten lassen wie man es sich gerade wünscht. Leider ist die Übersetzung wieder mal etwas "zu kurz", 100Km/h = 3000 U/min .....hmmmmm......
aber wenn der Rest erst mal passt, dann gäbs da auch noch "längere" Versionen vom 2.0-Modell
oder gar dem TDI. (gabs auch als Automatik!!!)  Auch der VR6 hat ein sehr ähnliches Getriebe.
Hauptsächlich unterscheiden die sich nur in der Enduntersetzung
CKX 4,529. Das bei mir verbaute dürfte sehr ähnlich sein, ist aber ein anderes,(müsste ein CFD sein)
das es nur im ersten halben Jahr gab, noch mit dem ECO / Sport -Schalter der dann entfiel
85KW ist 4,222,
VR6 hat 3,700,
die 66/81KW Diesel haben 3,273!!!!!! das wären dann 2168 U/min bei 100 Km/h!
Damit käme dann sogar mein Still 11-Zöller zurecht!!!
Mal rausfinden, ob man ans Automatik-Getriebe
auch einen 90er Antriebswellenflansch ranzaubern kann....
Na ja, jetzt wird der "neue" erst mal ein paar Monate gefahren, Tüv ist auch bald fällig,
im Winter darf nochmal der "alte" ran und dann sehen wir mal ganz gemütlich weiter.

15 Juli 2013

Sekundentakt bzw Uhr mit 4,0960 MHz Quarz

....ein kleiner Sommerloch-Füller......Sekundentakt, auch so kann mans machen:

Wie schon öfter zuvor war wieder mal für ein ganz anderes Projekt
eine halbwegs exakte Zeitmessung gefragt.
Weil hier aber aus verschiedenen Gründen eine klassische Lösung mit einem
"Uhrenquarz" nicht in Frage kam und die Schaltung weiterhin mit
ca 4MHz betrieben werden sollte (wg.PWM) musste eine andere Lösung her.

(es gibt die Möglichkeit, einen 32.768 kHz Quarz als Taktgeber nur für die Uhr
anzuschliessen und den Atmega über den internen Oszillator zu takten, aber
ich kann in diesem Fall mit 1 oder 8 MHz nichts anfangen, ich brauche
einfach ca. 4MHz um eine PWM-Frequenz von etwa 8 kHz zu erhalten)

Bisher habe ich hierzu einfach einen Timer laufen lassen und
die erhaltenen takte gezählt und dann entsprechend in Minuten
umgerechnet. Das ist aber nie wirklich genau geworden, nur so bis
etwa +- eine Minute pro Tag. Es hat zwar locker gereicht, und
war auch absolut ganggenau, nur eben mit fester Abweichung aber
eine wirkliche Uhr wars halt nicht
Diesmal wollte ich das ein bisschen eleganter hinbekommen.
So richtig mit zuvor ausrechnen und dann passts.
Das bisherige Verfahren war gar nicht so schlecht, nur der Abgleich
war nicht so toll gelöst und nicht fein genug, weils halt einfach nicht passte.
Der 4MHz Takt und die Teilung durch 1024 ergeben einfach kein
"Stunden-Kompatibles" Ergebnis, irgend ein Rest bleibt immer.
eine Sekunde pro Stunde macht einfach schon fast eine halbe Minute
pro Tag. Damit kann man heutzutage niemand mehr beeindrucken!
Aus meiner Charger-Steuerung hatte ich noch 4,0960 MHz Quarze übrig.
(da war ein 1,0 kHz Rechteck zu erzeugen)
Das passt hervorragend, weil damit bei einem Prescaler von 1024
eine Taktfrequenz von exakt 4kHz am Timer entsteht. ( 4 * 1,024 = 4,096)
Damit kann man was anfangen, das sind "gerade" Zahlen zum runterteilen.
Ein anderer gängiger Wert der gut geeignet wäre sind 3,6864 MHz.
(ein typischer "Baudratenquarz" mit dem fast alle gängigen Baudraten möglich sind
Der Hauptvorteil des 3,6864 MHz Quarzes wäre eine größere Anzahl an Baudraten
die perfekt passen würden. Damit ergibt sich nach dem Vorteiler 1024
eine Frequenz von 3600Hz am Timer.Das ist auch als Zeitbasis bestens geeignet.

Es kommt halt immer drauf an, was man denn letztendlich haben will.
Ich habe den 4.0960 MHz Quarz genommen, weil ich den ganz einfach schon
da liegen hatte und derzeit die serielle Schnittstelle nicht benötigt wird.
Falls man die serielle Schnittstelle braucht, dann wäre der 3,6864 MHz Quarz auf alle
Fälle vorzuziehen. Die Abweichung der PWM-Frequenz ist normalerweise
das geringere Problem.Da werde ich mir mal ein paar besorgen wenn ich wieder
mal Bauteile bestelle. Ich muss mal eine Liste erstellen, was wofür geeignet ist.
(Baudraten, PWM-Frequenzen und geradzahlige Taktfrequenzen)

erst mal einen Timer initialisieren:

Config Timer2 = Timer , Prescale = 1024          'Konfiguriere Timer2
Enable Timer2
On Timer2 Count_von_timer2

Dann für Ordnung nach dem Einschalten sorgen

Timer2 = 6            '250 Schritte
 'Timer2 = 31        '225 Schritte
Count0 = 0
Countmin = 0
Sek = 0

und das dazugehörige Unterprogramm:

Count_von_timer2:
Timer2 = 6                                 '=250 Schritte mit 4kHz =16Hz
'Timer2 = 31                                   '=225 Schritte mit 3,6kHz =16Hz
Incr Count0
If Count0 >= 16 Then                 ' 16 Schritte = 1 Sekunde
Incr Sek
Count0 = 0
End If
If Sek >= 60 Then
Incr Countmin                            '  "long-Variable, läuft nicht so schnell über....
Sek = 0
End If
Return

So habe ich ein sehr exaktes Sekunden und Minutensignal.
In drei Tagen weniger als eine Sekunde Abweichung! Noch besser als erwartet!
Nachtrag: mittlerweile fast 100Stunden gelaufen, noch immer keine feststellbare Abweichung!
Die Umrechnung in Stunden geschieht im Hauptprogramm,
aber das ist dann eh nur fürs Display. Hier wird intern in Minuten gerechnet,
da gehts eigntlich gar nicht sooooooogenau, aber ich wills diesmal korrekt haben,
auch im Hinblick auf ein demnächst mal aktualisiertes Franzbox-Programm
wo die Genauigkeit der Messungen verbessert werden soll.

Nachtrag: Aber auch mit den 4 MHZ der Franzbox bekäme man einen brauchbaren Takt hin!
.......oder wenn für Arduino-Kompatibilität 8 bzw sogar16 MHz-Quarze eingesetzt würden.
Ich war nur damals einfach noch nicht so weit das anders zu machen.....
Das muss ich bei einem der nächsten Updates mal korrigieren.
Mit 16MHz ist z.B. ein exakter 500Hz Takt möglich  also 125Hz bei 4MHz.
ich habe im Box-Programm aber versucht, die Messung direkt vom Timer aus zu steuern
und habe den Timer deshalb möglichst langsam laufen lassen mit ewa 15 Durchläufen pro Sekunde.
Das funktioniert auch, aber es schafft auch noch ganz andere Probleme auf die ich hier aber nicht
eingehen will. Besser wäre es gewesen, mit 125Hz zu takten und dann die auszuführenden Aktionen
auf den Durchlauf so zu verteilen dass es nicht zu Timimgproblemen kommt.Manche Dinge müssen
nicht gar so oft erfolgen insbesondere das Schreiben ins Display oder Messungen der 12V-Batterie


05 Juli 2013

Drehzahlmessung im IGBT-Controller-Programm (in Bascom)

Wie ich schon erwähnte fehlt in meinem IGBT-Controller noch eine Drehzahlmessung
und Drehzahlbegrenzung.

Als Grundvoraussetzung wird hier ein Taktgeber mit einem Impuls pro Umdrehung
angenommen. (üblich sind meist zwei oder mehr Impulse, aber so ist es noch
besser verständlich, und ich will später die Taktzahl pro Umdrehung ohnehin noch konfigurierbar machen)

Es gäbe da verschiedene Möglichkeiten, die Drehzahl zu erfassen.
Da kommt es halt auch immer darauf an, was man am Ende haben will.
Schnelle Erfassung oder solls sehr genau sein, was hat man an Hardware zur Verfügung

Die einfachste Möglichkeit wäre, in einem festen Zeitfenster die Takte zu zählen.
Das dauert aber zu lange! hier kommt es auf schnellste Reaktion bei Überdrehzahl an.
Dazu muss ich z.B die Zeit zwischen zwei Impulsen messen.
So erfasse ich die Dauer jeder einzelnen Umdrehung! Das ist schon viel schneller!

Im Layout der Miniatur-Franzbox habe ich hierfür einen Interrupt-Eingang zur Verfügung.
Den kann ich nutzen um bei jeder fallenden Flanke am Pin eine Aktion zu starten.
Hier wird der Wert eines Zählers ausgelesen und dann der Zähler wieder auf Null gestellt.
Der Zähler zählt dann quarzgenau weiter und beim nächsten Impuls wiederholt sich das Ganze.

Hier braucht man natürlich auch erst mal einen Zähler, der erst mal initialisiert werden muss

mit
Config Timer1 = Timer , Prescale = 256
wird der eingeschaltet

Dann muss der Interrupt-Eingang initialisiert werden
Config Int1 = Falling
Enable Interrupts
Enable Int1

On Int1 Dzmcalc

Wenn die Bedingung für den Interrupt erfüllt ist, hier eine fallende Flanke am Eingang INT1
dann wird das Unterprogramm Dzmcalc ausgeführt

Dzmcalc:
Imp = Timer1           >>> Die Variable IMP übernimmt den Zählwert des Timers
Timer1 = 0              >>> Der Timer wird wieder auf 0 gesetzt
Return

ein bisschen Theorie: Timer1 beim Atmega168 ist ein 16bit-Timer,
der zählt von 0 bis 65535  Prescale = 256 bedeutet, 256Prozesortakte entsprechen einem
Zählschritt. Der Prozessor läuft mit 4MHz (weil ich damit auf ca. 8kHz PWM-Frequenz komme)
Der Zähler taktet also mit 15625Hz und es würden knapp 4,2 Sekunden vergehen, bis es
zu einem Überlauf kommt. das reicht bis herunter auf 15 U/min.

um jetzt die Frequenz in Hz zu erhalten braucht man nur die Konstante 15625 durch den Zählwert
zwischen zwei negativen Flanken zu teilen.
bei 3000 u/min wären es 50Hz also ca 312 Takte in 1/50 Sekunde
15625 / 312 = 50,08

um eine U/min Anzeige zu erhalten muss man nur als Konstante 60 x 15625 = 937500 nehmen.

.........dann gilt es noch, einen Überlauf des Zählers zu verhindern
da habe ich es mir einfach gemacht und nur im Hauptprogramm die Zeile

If Timer1 > 60000 Then Timer1 = 60000  

eingefügt. das genügt fürs Erste. so geht die Anzeige nicht unter 15 U/min aber das
stört hier nicht weiter. Natürlich kann man das "edler" lösen.
Ein bisschen nachbessern muss ich da noch, damit die Zahl nicht an irgend einem undefinierten
Wert hängen bleibt wenn der Motor steht, oder wenn zwischendurch mal eine
Störung eingefangen wird. Alles machbar........
Eine Kompensation der Programmlaufzeit habe ich auch nicht, das ist hier ebenfalls
bedeutungslos und vernachlässigbar gering

500,0 mHz ergeben eine Anzeige von 29 U/min
1,0 Hz ergibt 59U/min
10 Hz ergibt 599U/min
100Hz ergibt 6009 U/min

das ist vollkommen ausreichend genau ein paar Takte gehen während des Auslesens und
dem anschliessenden Nullsetzen verloren und bei höheren Frequenzen kommt man bereits
in Bereiche wo die Messauflösung spürbar wird. Da Bascom nicht aufrundet
wird die kleinere Zahl angezeigt solange das Ergebnis kleiner ist als die nächste ganze Zahl.
Bei deutlich mehr Takten je Umdrehung wäre ein Prescaler von 64 vorteilhaft.
......das ist mittlerweile schon geändert, so ist die Auflösung bei hohen Drehzahlen besser
allerdings wird weniger als 60 U/min nicht mehr gemessen.aber das ist eh
annähernd Stillstand! wen interessiert das überhaupt!???

Die paar Zeilen habe ich vorhin dem Controllerprogramm hinzugefügt und auf der
Miniatur-Platine erfolgreich getestet. Einen Menuepunkt zum Einstellen der Drehzahlgrenze
muss ich erst noch einfügen aber das geht einfach.Nur zum sauberen Herunterregeln bei
Überdrehzahl muss ich mir noch was einfallen lassen. das muss auch da angreifen wo ich jetzt
schon den Strom bei Überstrom zurückregle. mal sehen obs schnell genug reagiert aber
bei einer einzigen Störung nicht gleich anfängt zu ruckeln oder sonst wie überreagiert.


 Da ist alles drauf was man für einen PWM-Controller braucht!
Hier fällt es gar nicht gleich auf, wie winzig die Platine tatsächlich ist

Das Display ist noch recht provisorisch, da gebe ich einfach die Zahlenwerte der wichtigsten
Variablen und Zwischenwerte aus
Pot127  das "Gaspoti" steht auf dem korrigierten Wert 127 (0-1023)
LEM44  der Wert des LEM-Wandlers nach der Nullpunktkorrektur ( -512  0   512 )
PWM0  Die PWM steht gerade auf  0 (0-255)
Amp68  Die Stromstärke beträgt 68A
max10 Strombegrenzung bei 10A (defaultwert nach Programmierung, bis 600A einstellbar)
N6009  Drehzahl 6009 U/min (eingespeist 100Hz)
ADC546 der echte AD-Wandler-Wert des "Gaspoti" (0-1023)
lo100  nullstellung "Gaspoti"   Offseteinstellung
hi1000 100%-Stellung des "Gaspoti"   Offseteinstellung

Die Meldung Throttle?  Err:1  ist eine Fehlermeldung, weil das "Gaspoti" beim Einschalten
nicht auf Null stand. Hier gibt es mehrere konfigurierbare Grenzwerte und Offseteinstellungen
sowohl beim Start als auch während des Betriebs.
(Nullstellung, Kurzschluss bzw Drahtbruchüberwachung etc.)
und auch eine "IDLE"-Funktion also so was wie eine Start-Stop-Automtik ist mit drauf,
falls man auf die Idee kommt die Servopumpe am Fahrmotor zu betreiben oder
ein Automatikgetriebe verwendet

Schade, dass im Augenblick mein Prüfstand nicht betriebsbereit ist, weil ich gerade ein paar der
Akkus für andere Zwecke brauche.
Unter Laborbedingungen funktionieren alle Ein- und Ausgänge wunderbar, aber
in der Praxis wars dann trotzdem schon maches Mal ganz anders

Die Meldungen im Zusammenhang mit der "IDLE"-Funktion sind mittlerweile auch ein bisschen
überarbeitet so dass sie mehr Sinn ergeben.An ein paar Stellen ist der Ablauf noch nicht
flüssig genug bzw wird gelegentlich das Display gelöscht wenns eigentlich nicht nötig ist.
Ausserdem gibt es jetzt auch einen Schaltausgang für eine Warnleuchte welche anzeigt, dass
der Motor gerade trotz "Idle = On" angehalten wurde.Nach einschalten der "Zündung"
steht der Motor zunächst, wenn man dann "Gas" gibt bleibt die PWM auf einem voreingestellten Mindestwert.Der Motor läuft im Stand weiter. ein Druck auf den Bedienknopf hält den Motor an
Die Warnleuchte geht an und eine Meldung ( "IDLE STOP!! " ) wird in der Statuszeile
angezeigt. Das ganze "IDLE-Zeug" ist eine Spielerei, weil ich einfach mal gerne einen E-Motor
mit einem Automatikgetriebe koppeln möchte. (VW 4-Gang mit Wandlerüberbrückung und
womöglich sogar Fliehkraftkupplung statt Wandler oder eine externe Pumpe und gar kein Wandler...
........momentan noch reine Gedankenspiele,  nichts reell geplantes!!!!)

ein paar Kleinigkeiten fehlen noch, aber das ist nicht so wichtig, reine Kosmetik.
Nach dem Einschalten steht noch nichts in der "Statuszeile"
Irgendwo gibt es einen Überlauf oder so was ähnliches, wenn ich im Idle-Modus 800A simuliere,
das finde ich auch noch, ich habs gerade eben bemerkt, das kommt ja normal nicht vor,
drum fiel es bisher auch nicht auf.(..... mal die Variablen  checken)
 Überhaupt muss ich mal schauen, was dann am Ende noch an Ports frei ist.
So wäre zum Beispiel eine Temperaturanzeige sinnvoll. (hatte ich ja schon mal in der 1.Franzbox)
und weil ich ohnehin gerade mit Drucksensoren zu tun habe, eine Unterdruckmessung und Ansteuerung
einer Saugpumpe für den Bremskraftverstärker bringe ich da auch noch unter wenn die
Anschlüsse reichen.......
Das heb' ich mir aber alles auf für später!

Ich bin jetzt erst mal sehr zufrieden, dass meine Miniatur-Franzbox-Platine bisher
ohne echte Probleme in Betrieb zu nehmen war und alle Komponenten das machen
was sie sollen, wenngleich manches noch verbesserungsfähig ist.
.................und dieses 3,3 Volt Problem nervt ganz gewaltig!