Die Ansteuerung des MCP3426 funktioniert sehr gut,
Das Umrechnen der beiden Datenbyte zu einem Integer-Wert (mit Vorzeichen)
klappt auch ohne Probleme, also habe ich jetzt auch noch einen LEM HASS 200-S
Stromwandler am AD-Wandler angeschlossen.
Ich hatte zwar insgeheim gehofft, auf den Nullabgleich verzichten zu können, wenn ich
die Referenz des Stromwandlers benutze, aber ganz passte der Nullpunkt dann doch nicht.
Es fehlt um 0,00375 Volt was doch immerhin 1,2A entspricht Bei einem Messbereich von
+ - 655A sind das 0,1% vom Messbereich.
Am Programm habe ich noch ein bisschen rumgebastelt,
deshalb hier nochmalder aktuelle Hauptteil
Die Variable Ergebnis1a ist übrigens eine "long"-Variable
weil die Multiplikation mit 0,8 ganzzahlig anders nicht verlustfrei machbar ist.
Die Offset- einstellung ist nicht zufällig an dieser Stelle zwischen den Rechnungen,
Ich wollte den Offset unbedingt am Anfang der Berechnungen bitweise einstellen können.
Die Integer-Variable ist im 16Bit-Modus voll ausgenutzt, da kann ich nichts
addieren oder subtrahieren ohne dass es dann irgendwo am Ende zu Fehlern kommt,
das geht dann erst in der "long"-Variablen
und wenn ich es vor der Multiplikation mit 100
gemacht hätte dann hätte ich eine Zeile mehr gebraucht.
Statt * 100 und dann / 125 hätte auch * 4 und / 5 funktioniert, aber so könnte ich noch die
linearität ein bisschen korrigieren falls nötig
Do
'init
I2cstart
'Adressierung
I2cwbyte &B1101_0000 '3426 Schreibadresse
'Konfigurieren
'Bit 7 "Ready/"
'Bit6-5: 00:kanal1 01:Kanal2 10:Kanal3 11:Kanal4
'bit4 1=cont 0=Single
'bit3-2 00:12bit 240sps 01:14bit 60sps 10:16bit 15sps
'bit1-0: gain 00:x1 01:x2 10:x4 11:x8
'I2cwbyte &B0001_0000 'kanal1 12Bit
'I2cwbyte &B0001_0100 'kanal1 14bit
'I2cwbyte &B0001_1000 'kanal1 16bit
I2cwbyte &B0011_0100 'kanal2 14bit
'I2cwbyte &B0011_1000 'kanal2 16bit
I2cstop
Waitms 100 'auf Sample-Zeit + reserve einstellen
'Ready/ -bit muss 0 sein, wird hier in Readbyte3 eingelesen
'lesen
I2cstart
'I2creceive &B1101_0001 , Ergebnis1 , 1 , 3
I2cwbyte &B1101_0001 '3426 Leseadresse
I2crbyte Readbyte1 , Ack 'hohes Byte
I2crbyte Readbyte2 , Ack 'niedriges Byte
I2crbyte Readbyte3 , Nack 'Konfigurationsbyte zurück
'inclusive "ready-bit"
Ergebnis1 = Readbyte1 * 256
Ergebnis1 = Ergebnis1 + Readbyte2
Ergebnis1a = Ergebnis1 * 100
Ergebnis1a = Ergebnis1a - 1500 'offset
Ergebnis1a = Ergebnis1a / 125
Ergebniss1 = Str(ergebnis1a)
Ergebniss1 = Format(ergebniss1 , " 0.0")
Ich habe als Funktionsdemonstration ein kleines Video gemacht,
aber das ist noch nicht fertig hochgeladen.
das kommt noch!
vermutlich hier:
http://youtu.be/sfVUjZq0aCI
Bis dann!
Ach ja, und ein kleines Foto will ich Euch nicht vorenthalten:
Das E-Motorrad meiner Tochter hat jetzt einen Beiwagen bekommen!
Ein paar Ideen und Basteleien im Zusammenhang mit Fahrzeugen oder Maschinen aller Art. Momentan etwas "Elektronik- bzw. Atmega-lastig" Und auch sehr auf das Thema Elektroauto ausgerichtet, ich habe aber auch schon lauffähige Modellmotoren oder hydraulische Widder gebaut oder Oldtimer restauriert Das alles ist mein ganz privates Vergnügen, Ich nehme also keinerlei Aufträge an, aber wenn mich ein Thema interessiert, dann versuche ich gerne, eine möglichst einfache Lösung zu finden.
Translate
15 Mai 2013
13 Mai 2013
Messen mit dem MCP3426 16bit "delta-sigma" I²C AD-Wandler
........Wieder mal ein kleines Programm in BASCOM....
Hiermit steuere ich mit einer Franzbox-Platine einen MCP3426 an und lese die Werte aus.
erst mal nur ein Kanal, aber dann sollte der zweite Kanal auch funktionieren.
Der MCP3426 ist der kleinste und einfachste aus der MCP342X-Reihe von Microchip.
Ein sehr ähnlicher Baustein ist der ADS1112 von Texas den es bei Watterott sogar auf einem
kleinen Platinchen vormontiert gibt. Die ganze Ansteuerung ist nahezu gleich, nur mit anderen
Default-Werten. Ich will da jetzt nicht allzusehr ausschweifen, schaut Euch mal die Datenblätter an,
und staunt, was die Dinger können........
Kurz zusammengefasst:
Der MCP3426 ist ein "Delta-Sigma"-AD-Wandler mit eingebauter Referenz und I²C Ansteuerung.
Das Ganze mit einer Referenzspannung von 2,048Volt und bis zu 16Bit Auflösung.
Delta Sigma bedeutet, dass die Spannung nicht gegen GND sondern gegen einen Referenzpin
gemessen wird, der nicht auf GND liegen muss (aber kann) und Spannungen von + - 2,048V
gegen den Referenzpin in 1mV(12bit) 250µV(14bit) oder 62,5µV Schritten gemessen werden können!!!
Beide Eingangspins müssen aber innerhalb des Versorgungsspannungsbereichs liegen!
Negative Spannungen sind nicht messbar.
Zusätzlich gibt es noch eine "Gain"-Funktion, damit kann die Empfindlichkeit nochmal um die Faktoren
1 2 4 oder 8 erhöht werden (bei entsprechend kleinerem Messbereich) so dass maximal
in 0,000007812V -Schritten +- 0,256V gemessen werden können.........
das ist z.B. ideal für 200mV-Shunts zur Strommessung.
Ich will damit aber zunächst mal den LEM HASS-200-S Stromwandler auswerten,
dessen Ausgang von +- 1,875V gegen eine Referenz von 2,5V bei + - 600A ausgibt.
Da war die Auflösung des 10-Bit Wandlers im Atmega bisher einfach nicht ausreichend
um auch Ladeströme genau genug zu messen. Erschwerend kam noch die Messung
gegen GND dazu, so dass auch noch der Nullpunkt korrigiert werden musste.
In der Praxis ergeben sich dadurch folgende Auflösungen bei der Messung:
Beim 10bit AD-Wandler im Atmega sind 0-5V in 1024 Schritte aufgeteilt.
daraus ergibt sich mit dem LEM HASS 200-S eine Auflösung von 1,5625A.
beim MCP3426 muss man ein bisschen anders rechnen.
Hier geht der Messbereich nur bis + oder - 2,048V relativ zum Referenzpin.
Das wären beim LEM HASS 200-S + oder - 655,4A , dieser Wert wird aber wohl kaum erreicht,
da der HASS 200-S nur bis + - 600A angegeben ist. aber das ist hier auch egal.
Die Auflösung beträgt hier bei 12bit 0,32A, bei 14bit 0,08A und bei 16bit
geradezu unglaubliche 0,02A also 20mA bei einem Messbereich von + - 600A!
Die Auflösung von 0,08A bei 14bit-Messung ermöglicht immerhin eine Auflösung von 0,1A
im Display bei einem Messbereich von + - 650A und der Fehler ist erstaunlich gering
so im 0,2A-Bereich....... 1% vom Skalenendwert wären da schon 13A!!!!!!!
nur mal, um die Dimension und Problematik solch einer Messung zu verdeutlichen
Auflösung ist hier nicht zu verwechseln mit Messgenauigkeit, und ein gewisser Offset
ist beim LEM Stromwandler auch zu berücksichtigen, aber mit einer Auflösung im
Bereich von 0,5 bis 0,1 A kann man Ladeströme von ca 30A durchaus messen.
bei 1,6A ist aber nur eine sehr grobe Schätzung möglich.
Auf die Offset-Einstellung werde ich wohl doch nicht ganz verzichten können,
aber das ist jetzt alles wesentlich!!!!!! stabiler, seit die Referenz des LEM als Messreferenz
genutzt werden kann. Der Offset des LEM-Wandlers in meinem Versuchsaufbau
liegt bei ziemlich genau 1,2A und ist nach der Korrektur absolut stabil.(+ - 1Digit)
Dieser Offset von 1,2A beträgt 15Digits des AD-Wandlers bei 14bit, das sind gerade mal
15 x 250µV bzw 0,00375V, die der Nullpunkt des LEM bei 0A von 0V abweicht.
Mehr kann man hier nicht erwarten, das passt schon!
Die Möglichkeit, durch entsprechende "Gain"-Einstellung auch Mess-Shunts direkt
einzulesen eröffnet aber auch noch ganz andere Möglichkeiten.
So ein Shunt ist wesentlich unempfindlicher gegen äussere Einflüsse als ein Hallgeber-Stromwandler,
und die Messgenauigkeit ist eigentlich nur von der Qualität der Auswerteschaltung abhängig. Größter Nachteil eines Shunt ist die fehlende galvanische Trennung des Meßsignals.
Großter Vorteil ist die feste Nulllage und die Symmetrie in beide (Strom-) Richtungen.
Wenn die Energie die in die eine Richtung fliesst mit der Energie in die andere Richtung
verglichen werden soll, dann kommt es vor Allem auf die "Symmetrie" der Messung an
und nicht auf den tatsächlichen Fehler. Ob jetzt die Akkukapazität auf zwei Nachkommastellen
stimmt oder nicht ist völlig egal, aber die Energiemenge muss am Nullpunkt wieder passen.
Nicht zu vernachlässigen ist auch die Erwärmung so eines Shunt.
100mV bei 500A sind beachtliche 50Watt. Sehr viel mehr an Messsignal bei 500A
ist also wohl nicht möglich.Das wären dann bei 14bit und Gain 8 1600 Digits in jede Richtung,
also 0,3125A Auflösung. (0,078125A Auflösung bei 16bit und Gain 8)
Die Messung per I²C kann an der bisherigen Franzbox nachgerüstet werden.
Alle Leiterbahnen sind bereits vorhanden, nur zwei schon vorgesehene Widerstände und eine neue
Programmversion sind dafür nötig.
Ich habe I²C gewählt, weil ich da nur zwei Leitungen brauche. Obwohl I²C eigentlich nicht
ideal ist für galv.Trennung, so ist das aber mittlerweile auch kein Problem mehr dank Bausteinen wie dem
ADUM2250 und ähnlichen.
Damit kann ich jetzt endlich mal galv.getrennt Spannungen messen, und noch dazu sehr genau!
Die Leitung von der Box bis zum Messwandler sollte allerdings nicht allzu lang sein.
Ein halber Meter funktioniert aber problemlos.
$regfile = "m168def.dat"
$crystal = 8000000
'$hwstack = 40
'$swstack = 32
'$framesize = 60
Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = Portb.3 , E = Portb.5 , Rs = Portb.4
Config Lcdbus = 4
Config Lcd = 20 * 4a , Chipset = Ks077
Cls
Cursor Off
Waitms 250
Config Sda = Portc.4
Config Scl = Portc.5
I2cinit
Dim Slaveadresse As Byte
Dim Readbyte1 As Byte
Dim Readbyte2 As Byte
Dim Readbyte3 As Byte
Dim Ergebnis1 As Integer
'Do
Cls
Locate 1 , 1
Lcd "I2C MCP3426"
Wait 1
Cls
Do
'init
I2cstart
'Adressierung
I2cwbyte &B1101_0000 '3426 Schreibadresse
'Konfigurieren
'I2cwbyte &B0001_0000 'kanal1 12Bit
I2cwbyte &B0001_0100 'kanal1 14bit
I2cstop
Waitms 10 'eventuell nicht nötig
'lesen
I2cstart
I2cwbyte &B1101_0001 '3426 Leseadresse
I2crbyte Readbyte1 , Ack
I2crbyte Readbyte2 , Ack
I2crbyte Readbyte3 , Nack
Ergebnis1 = Readbyte1 * 256
Ergebnis1 = Ergebnis1 + Readbyte2
'womöglich muss ich hier noch was korrigieren........
'falls die Umrechnung so nicht passt, weil Ergebnis1 ja eine
'Integer-Variable ist......Readbyte1 bestimmt das Vorzeichen
'das würde sicher passen, wenn erst
'in einer Word-Variable multipliziert und addiert würde,
'und erst dann das Ergebnis in eine Integer-Variable übertragen würde.
Durch den Überlauf bei 32768 ergibt sich dann das Vorzeichen
'>>>>Nachtrag: man kann es tatsächlich so lassen, auch wenn es mathematisch eigentlich
'nicht korrekt ist...... Bascom rechnet manchmal ein bisschen seltsam.......
' das versteht man etwas besser, wenn man weiss dass Bascom immer
'mit den binären Werten rechnet und nur entsprechend darstellt bei Word und Integer.
'Integer, das muss erst mal verstanden werden, wie das funktioniert!
'Das wäre mal einen eigenen Post wert!....ein andermal!
'vielleicht lassen sich die beiden Byte sogar direkt in eine Integer-Variable einlesen.
'da fehlte die nötige Zeit, das alles durchzutesten, das kommt erst noch
'>>>>>>>Ich habs versucht, hat nicht geklappt, weil mindestens drei Byte zu lesen sind und bei
'I2Cread die ganzen Ack und Nack-Geschichten nicht so gesteuert werden können
'dass es passt.....dann halt nicht...
If Err = 0 Then
Locate 1 , 1
Lcd ":" ; Readbyte1 ; ":" ; Readbyte2 ; ":" ; Readbyte3 ; " "
Locate 2 , 1
Lcd Ergebnis1 ; " "
End If
I2cstop 'Bus freigeben
Loop
End
Hiermit steuere ich mit einer Franzbox-Platine einen MCP3426 an und lese die Werte aus.
erst mal nur ein Kanal, aber dann sollte der zweite Kanal auch funktionieren.
Der MCP3426 ist der kleinste und einfachste aus der MCP342X-Reihe von Microchip.
Ein sehr ähnlicher Baustein ist der ADS1112 von Texas den es bei Watterott sogar auf einem
kleinen Platinchen vormontiert gibt. Die ganze Ansteuerung ist nahezu gleich, nur mit anderen
Default-Werten. Ich will da jetzt nicht allzusehr ausschweifen, schaut Euch mal die Datenblätter an,
und staunt, was die Dinger können........
Kurz zusammengefasst:
Der MCP3426 ist ein "Delta-Sigma"-AD-Wandler mit eingebauter Referenz und I²C Ansteuerung.
Das Ganze mit einer Referenzspannung von 2,048Volt und bis zu 16Bit Auflösung.
Delta Sigma bedeutet, dass die Spannung nicht gegen GND sondern gegen einen Referenzpin
gemessen wird, der nicht auf GND liegen muss (aber kann) und Spannungen von + - 2,048V
gegen den Referenzpin in 1mV(12bit) 250µV(14bit) oder 62,5µV Schritten gemessen werden können!!!
Beide Eingangspins müssen aber innerhalb des Versorgungsspannungsbereichs liegen!
Negative Spannungen sind nicht messbar.
Zusätzlich gibt es noch eine "Gain"-Funktion, damit kann die Empfindlichkeit nochmal um die Faktoren
1 2 4 oder 8 erhöht werden (bei entsprechend kleinerem Messbereich) so dass maximal
in 0,000007812V -Schritten +- 0,256V gemessen werden können.........
das ist z.B. ideal für 200mV-Shunts zur Strommessung.
Ich will damit aber zunächst mal den LEM HASS-200-S Stromwandler auswerten,
dessen Ausgang von +- 1,875V gegen eine Referenz von 2,5V bei + - 600A ausgibt.
Da war die Auflösung des 10-Bit Wandlers im Atmega bisher einfach nicht ausreichend
um auch Ladeströme genau genug zu messen. Erschwerend kam noch die Messung
gegen GND dazu, so dass auch noch der Nullpunkt korrigiert werden musste.
In der Praxis ergeben sich dadurch folgende Auflösungen bei der Messung:
Beim 10bit AD-Wandler im Atmega sind 0-5V in 1024 Schritte aufgeteilt.
daraus ergibt sich mit dem LEM HASS 200-S eine Auflösung von 1,5625A.
beim MCP3426 muss man ein bisschen anders rechnen.
Hier geht der Messbereich nur bis + oder - 2,048V relativ zum Referenzpin.
Das wären beim LEM HASS 200-S + oder - 655,4A , dieser Wert wird aber wohl kaum erreicht,
da der HASS 200-S nur bis + - 600A angegeben ist. aber das ist hier auch egal.
Die Auflösung beträgt hier bei 12bit 0,32A, bei 14bit 0,08A und bei 16bit
geradezu unglaubliche 0,02A also 20mA bei einem Messbereich von + - 600A!
Die Auflösung von 0,08A bei 14bit-Messung ermöglicht immerhin eine Auflösung von 0,1A
im Display bei einem Messbereich von + - 650A und der Fehler ist erstaunlich gering
so im 0,2A-Bereich....... 1% vom Skalenendwert wären da schon 13A!!!!!!!
nur mal, um die Dimension und Problematik solch einer Messung zu verdeutlichen
Auflösung ist hier nicht zu verwechseln mit Messgenauigkeit, und ein gewisser Offset
ist beim LEM Stromwandler auch zu berücksichtigen, aber mit einer Auflösung im
Bereich von 0,5 bis 0,1 A kann man Ladeströme von ca 30A durchaus messen.
bei 1,6A ist aber nur eine sehr grobe Schätzung möglich.
Auf die Offset-Einstellung werde ich wohl doch nicht ganz verzichten können,
aber das ist jetzt alles wesentlich!!!!!! stabiler, seit die Referenz des LEM als Messreferenz
genutzt werden kann. Der Offset des LEM-Wandlers in meinem Versuchsaufbau
liegt bei ziemlich genau 1,2A und ist nach der Korrektur absolut stabil.(+ - 1Digit)
Dieser Offset von 1,2A beträgt 15Digits des AD-Wandlers bei 14bit, das sind gerade mal
15 x 250µV bzw 0,00375V, die der Nullpunkt des LEM bei 0A von 0V abweicht.
Mehr kann man hier nicht erwarten, das passt schon!
Die Möglichkeit, durch entsprechende "Gain"-Einstellung auch Mess-Shunts direkt
einzulesen eröffnet aber auch noch ganz andere Möglichkeiten.
So ein Shunt ist wesentlich unempfindlicher gegen äussere Einflüsse als ein Hallgeber-Stromwandler,
und die Messgenauigkeit ist eigentlich nur von der Qualität der Auswerteschaltung abhängig. Größter Nachteil eines Shunt ist die fehlende galvanische Trennung des Meßsignals.
Großter Vorteil ist die feste Nulllage und die Symmetrie in beide (Strom-) Richtungen.
Wenn die Energie die in die eine Richtung fliesst mit der Energie in die andere Richtung
verglichen werden soll, dann kommt es vor Allem auf die "Symmetrie" der Messung an
und nicht auf den tatsächlichen Fehler. Ob jetzt die Akkukapazität auf zwei Nachkommastellen
stimmt oder nicht ist völlig egal, aber die Energiemenge muss am Nullpunkt wieder passen.
Nicht zu vernachlässigen ist auch die Erwärmung so eines Shunt.
100mV bei 500A sind beachtliche 50Watt. Sehr viel mehr an Messsignal bei 500A
ist also wohl nicht möglich.Das wären dann bei 14bit und Gain 8 1600 Digits in jede Richtung,
also 0,3125A Auflösung. (0,078125A Auflösung bei 16bit und Gain 8)
Die Messung per I²C kann an der bisherigen Franzbox nachgerüstet werden.
Alle Leiterbahnen sind bereits vorhanden, nur zwei schon vorgesehene Widerstände und eine neue
Programmversion sind dafür nötig.
Ich habe I²C gewählt, weil ich da nur zwei Leitungen brauche. Obwohl I²C eigentlich nicht
ideal ist für galv.Trennung, so ist das aber mittlerweile auch kein Problem mehr dank Bausteinen wie dem
ADUM2250 und ähnlichen.
Damit kann ich jetzt endlich mal galv.getrennt Spannungen messen, und noch dazu sehr genau!
Die Leitung von der Box bis zum Messwandler sollte allerdings nicht allzu lang sein.
Ein halber Meter funktioniert aber problemlos.
$regfile = "m168def.dat"
$crystal = 8000000
'$hwstack = 40
'$swstack = 32
'$framesize = 60
Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = Portb.3 , E = Portb.5 , Rs = Portb.4
Config Lcdbus = 4
Config Lcd = 20 * 4a , Chipset = Ks077
Cls
Cursor Off
Waitms 250
Config Sda = Portc.4
Config Scl = Portc.5
I2cinit
Dim Slaveadresse As Byte
Dim Readbyte1 As Byte
Dim Readbyte2 As Byte
Dim Readbyte3 As Byte
Dim Ergebnis1 As Integer
'Do
Cls
Locate 1 , 1
Lcd "I2C MCP3426"
Wait 1
Cls
Do
'init
I2cstart
'Adressierung
I2cwbyte &B1101_0000 '3426 Schreibadresse
'Konfigurieren
'I2cwbyte &B0001_0000 'kanal1 12Bit
I2cwbyte &B0001_0100 'kanal1 14bit
I2cstop
Waitms 10 'eventuell nicht nötig
'lesen
I2cstart
I2cwbyte &B1101_0001 '3426 Leseadresse
I2crbyte Readbyte1 , Ack
I2crbyte Readbyte2 , Ack
I2crbyte Readbyte3 , Nack
Ergebnis1 = Readbyte1 * 256
Ergebnis1 = Ergebnis1 + Readbyte2
'womöglich muss ich hier noch was korrigieren........
'falls die Umrechnung so nicht passt, weil Ergebnis1 ja eine
'Integer-Variable ist......Readbyte1 bestimmt das Vorzeichen
'das würde sicher passen, wenn erst
'in einer Word-Variable multipliziert und addiert würde,
'und erst dann das Ergebnis in eine Integer-Variable übertragen würde.
Durch den Überlauf bei 32768 ergibt sich dann das Vorzeichen
'>>>>Nachtrag: man kann es tatsächlich so lassen, auch wenn es mathematisch eigentlich
'nicht korrekt ist...... Bascom rechnet manchmal ein bisschen seltsam.......
' das versteht man etwas besser, wenn man weiss dass Bascom immer
'mit den binären Werten rechnet und nur entsprechend darstellt bei Word und Integer.
'Integer, das muss erst mal verstanden werden, wie das funktioniert!
'Das wäre mal einen eigenen Post wert!....ein andermal!
'vielleicht lassen sich die beiden Byte sogar direkt in eine Integer-Variable einlesen.
'da fehlte die nötige Zeit, das alles durchzutesten, das kommt erst noch
'>>>>>>>Ich habs versucht, hat nicht geklappt, weil mindestens drei Byte zu lesen sind und bei
'I2Cread die ganzen Ack und Nack-Geschichten nicht so gesteuert werden können
'dass es passt.....dann halt nicht...
If Err = 0 Then
Locate 1 , 1
Lcd ":" ; Readbyte1 ; ":" ; Readbyte2 ; ":" ; Readbyte3 ; " "
Locate 2 , 1
Lcd Ergebnis1 ; " "
End If
I2cstop 'Bus freigeben
Loop
End
19 April 2013
Die Franzbox schrumpft aufs Minimum
Die letzten paar Abende habe ich damit verbracht, eine superwinzige Version der
Franzbox zu basteln.
Grundsätzlich ist die Schaltung weitestgehend die gleiche, aber aufgrund der etwas
eingeschränkten Leistung des Spannungsreglers musste ich natürlich auf eine Versorgung der
Displaybeleuchtung mit 5V verzichten und noch ein paar Kleinigkeiten ändern,
und Aktiv nach Plus schaltende Leistungs-Ausgänge gibt es natürlich auch nicht mehr.
Der gedachte Einsatz ist auch ein etwas Anderer.
Als Display dient wieder mal das bewährte EA DIP 204, und so sind auch die
Aussenabmessungen schon festgelegt: 27 x 68 mm.
Die Platine passt direkt hinten aufs Display und steht nicht über!
Das hat einige Stunden gedauert, alle Teile optimal zu platzieren.
UUUUUUhhhhps........Oh je.....beinahe hätte ich was sehr Schlimmes übersehen............
Das geht so nicht!!!!!!
.......wer findet den bösen Fehler??????
Nachtrag 22.4.2013: Da hab ich doch glatt ein Symbol eines P-Kanal Mosfet erwischt
und dann beim Anschliessen Drain und Source vertauscht......
Das passiert schnell mal, wenn man eine fremde Bibliothek benutzt.
Das muss ich noch korrigieren und womöglich kann ich ja doch noch einen MAX232
auf die Unterseite als Option draufpacken wenn ich etwas kleinere Transistoren nehme
und die 6-polige Klemmleiste etwas in die Mitte rücke.......
............ein bisschen überarbeitet sieht das jetzt so aus:
Hier ist jetzt so manches optimiert, ein anderer Quarz ist drauf, kleinere Transistoren, und noch ein paar
Lötjumper mit denen ich einen Interrupt-Eingang vom Drehencoder für andere Zwecke freischalten kann.
(z.B. fehlt mir so ein Eingang bei meinem IGBT-Controller zur Drehzahlmessung. Ich habe da einen
am Drehencoder "vergeudet" wo es jeder andere Eingang auch getan hätte...... Die Jumper dienen der Kompatibilität mit alten Programmen.)
Ich muss alles noch ein paar mal genauestens kontrollieren, dann kann ich mal ein paar diese Platinchen
fertigen lassen.Ein paar Kleinigkeiten sind sicher noch zu verbessern.
Zur Schaltung....(das mag Arduino-Kennern durchaus bekannt vorkommen)
Kern ist ein Atmega 328 ,diesmal in SMD-Ausführung
Versorgung ist geplant mit ca 12 bis 24V
Die 14-Poligen Anschlüsse, eimal als Wannenstecker und einmal "Micro-Match" sind
typisch für meine Entwürfe. Auf dem Wannenstecker sind alle verfügbaren Pins von PortB,
Reset, GND VCC sowie die vier Anschlüsse für den Drehencoder.
Diese Anordnung hat sich sehr bewährt, so kann ich den Anschluss gleichermaßen als
ISP-Anschluss und als Display-Anschluss verwenden und der Drehencoder
hängt am selben Bandkabel mit dran.(Ich betreibe das Display an PortB, so kann ich es am
STK500 auch mit einem einzigen Bandkabel betreiben. Die Belegung der Display-Pins
ist vom STK500 übernommen und um zusätzliche Anschlüsse erweitert.
Pin 7 ist hier frei, bei der "Franzbox" wird hier die Displaybeleuchtung versorgt und geschaltet,
Pin 8 ist mit der Reset-Leitung verbunden zwecks ISP-Funktion, 9 und 10 ist GND und
Spannungsversorgung wie beim STK500, dann kommt der Drehencoder auf D2 und D3
der Taster auf D4 und Pin 14 ist nochmal GND für den Encoder)
Mit diesem Stecker ist es auch möglich, die "nackte Platine" als Adapter zum Anschluss des
Displays zu nutzen wenn man sie mit einer bestückten 1:1 verbindet.
....und es ist ja auch möglich, zwei LCD-Displays parallel zu betreiben......
....und man kann ja auch einen 10-poligen Wannenstecker in die 14Löcher einlöten,
dann hat man einen Port (B)-Stecker wie auf dem STK500. Die Pins (B) 6 und 7 sind
da ohnehin meist nicht verwendbar, weil da der Quarz angeschlossen ist....
Alle (fast, der SMD-Atmega hat ja zwei zusätzliche) AD-Wandler Anschlüsse,
GND und 5V sind auf den Micro-Match-Stecker herausgeführt.
zusätzlich auch nochmal die Anschlüsse vom Drehencoder.
Weil ich den Drehencoder aus "historischen Gründen" an den Interrupt-Eingängen betreibe,
aber nur einen Interrupt wirklich brauche habe ich in eine Leitung einen Widerstand als
Jumper eingesetzt um notfalls einen Interrupt-Eingang umverdrahten zu können.
D5 D6 und D7 gehen auf kräftige Mosfet um Ausgänge zu schalten
Auch hier sind ein paar Bestückungsvarianten vorgesehen, um an den sechs Klemmen
auch 5V auszugeben oder zwei Analogeingänge zu beschalten.
D5 und D6 sind PWM-Ausgänge, die hier aber nur nach GND schalten.
Für einen MAX232 war leider kein Platz mehr, aber wenigstens
zwei kleine Transistoren konnte ich unterbringen um die Signale der seriellen Schnittstelle
zu invertieren. (nicht optimal, aber schon vielfach erfolgreich so angewandt)
Zum Empfangen reicht das nomalerweise, und zum Senden......das hängt von der
jeweiligen Schnittstelle ab, meist funktioniert es auch mit einem 5V-Signal,
notfalls kann man noch einen Pullup nach 12V reinbauen.
Wie schon erwähnt hat die SMD-Variante des Atmega 328 zwei zusätzliche
AD-Wandler-Eingänge (ich weiss jetzt noch nicht, ob die ggfs auch als Ausgänge
nutzbar sind.) diese habe ich als Spannungsmesseingänge vorgesehen.
Einmal zum Messen der Versorgungsspannung, und einmal als optionalen
Spannungsmesseingang an der Anschlussklemme.
Diese Platine soll je nach Bestückung als kleines EMUS-Display, als winzige SPS
oder halt für sonstige Zwecke sehr universell verwendbar sein.
Auch ein Einsatz als "Miniatur-Franzbox" ist durchaus möglich, wenn das mit den
Ausgangstransistoren so klappt wie ich das gern hätte............
Den LEM-HASS 200-S Messwandler kann man auch am Micro-Match-Stecker dranhängen,
und die drei Schalttransistoren reichen für DZM, Tankanzeige und Warnleuchte.
nur die Stromversorgung ist hier nicht zweigeteilt, aber das ist auch extern machbar,
und wenn die Displaybeleuchtung über die "Zündung" betrieben wird, ist eigentlich alles
fast so wie bisher.
Da habe ich in letzter Zeit ein paar nicht immer erfreuliche Erfahrungen gesammelt.
In der Ur-Version hatte ich solche Transistorausgänge, aber die Tankuhr von
Michaels Beetle funktionierte damit nicht, weil da offenbar ein Mikroprozessor
das Signal auswertet. da musste ich erst eine Gleichspannung generieren um eine
ordentliche Funktion zu bekommen. Bei Bernds Golf ist aber noch eine alte Version der
Tankanzeige drin, die wiederum hoheren Strom und höhere Spannung braucht,
so dass da die 5V Spannungshub nicht reichen. da ist etwa 3V voll und 8V leer,
aber da kann man dafür problemlos direkt mit PWM-Signalen ansteuern.
Ähnliche Probleme gibts beim Dehzahlmesser. neuere VW etc bekommen
das Signal als Frequenz (2 imp je Umdr.) aus der Motorsteuerung,
da reichen 12V als Rechteck. Ältere VW-Drehzahlmesser die noch direkt an der
Zündspule dran hängen brauchen jedoch viel höhere Impulse.(50-100V-Spitzen)
Das hängt aber vom Hersteller und Modell ab, das muss man testen.
Der Drehzahlmesser mit dem ich testete kommt sogar mit 5V-Impulsen zurecht.
Hier muss ich mal testen, obs eventuell klappt wenn ich eine (Relais-)Spule als "Pull-Up"
nehme und ohne Freilaufdiode schalte. Bei "neueren" Typen sollte ein Pull-Up
nach 12V ausreichen.
Na ja, mal sehen obs funktioniert.Es wird wohl noch ein bisschen dauern bis die Patinchen
in Auftrag gegeben werden......
Vielleicht hat ja noch irgendjemand eine tolle Idee.....aber es ist kein Platz mehr frei,
ausser auf der Oberseite über den Transistoren. aber den Platz wollte ich eigentlich frei lassen
wegen der Anschlüsse.
Bis demnächst!
Franz
Franzbox zu basteln.
Grundsätzlich ist die Schaltung weitestgehend die gleiche, aber aufgrund der etwas
eingeschränkten Leistung des Spannungsreglers musste ich natürlich auf eine Versorgung der
Displaybeleuchtung mit 5V verzichten und noch ein paar Kleinigkeiten ändern,
und Aktiv nach Plus schaltende Leistungs-Ausgänge gibt es natürlich auch nicht mehr.
Der gedachte Einsatz ist auch ein etwas Anderer.
Als Display dient wieder mal das bewährte EA DIP 204, und so sind auch die
Aussenabmessungen schon festgelegt: 27 x 68 mm.
Die Platine passt direkt hinten aufs Display und steht nicht über!
Das hat einige Stunden gedauert, alle Teile optimal zu platzieren.
UUUUUUhhhhps........Oh je.....beinahe hätte ich was sehr Schlimmes übersehen............
Das geht so nicht!!!!!!
.......wer findet den bösen Fehler??????
Nachtrag 22.4.2013: Da hab ich doch glatt ein Symbol eines P-Kanal Mosfet erwischt
und dann beim Anschliessen Drain und Source vertauscht......
Das passiert schnell mal, wenn man eine fremde Bibliothek benutzt.
Das muss ich noch korrigieren und womöglich kann ich ja doch noch einen MAX232
auf die Unterseite als Option draufpacken wenn ich etwas kleinere Transistoren nehme
und die 6-polige Klemmleiste etwas in die Mitte rücke.......
............ein bisschen überarbeitet sieht das jetzt so aus:
Hier ist jetzt so manches optimiert, ein anderer Quarz ist drauf, kleinere Transistoren, und noch ein paar
Lötjumper mit denen ich einen Interrupt-Eingang vom Drehencoder für andere Zwecke freischalten kann.
(z.B. fehlt mir so ein Eingang bei meinem IGBT-Controller zur Drehzahlmessung. Ich habe da einen
am Drehencoder "vergeudet" wo es jeder andere Eingang auch getan hätte...... Die Jumper dienen der Kompatibilität mit alten Programmen.)
Ich muss alles noch ein paar mal genauestens kontrollieren, dann kann ich mal ein paar diese Platinchen
fertigen lassen.Ein paar Kleinigkeiten sind sicher noch zu verbessern.
Zur Schaltung....(das mag Arduino-Kennern durchaus bekannt vorkommen)
Kern ist ein Atmega 328 ,diesmal in SMD-Ausführung
Versorgung ist geplant mit ca 12 bis 24V
Die 14-Poligen Anschlüsse, eimal als Wannenstecker und einmal "Micro-Match" sind
typisch für meine Entwürfe. Auf dem Wannenstecker sind alle verfügbaren Pins von PortB,
Reset, GND VCC sowie die vier Anschlüsse für den Drehencoder.
Diese Anordnung hat sich sehr bewährt, so kann ich den Anschluss gleichermaßen als
ISP-Anschluss und als Display-Anschluss verwenden und der Drehencoder
hängt am selben Bandkabel mit dran.(Ich betreibe das Display an PortB, so kann ich es am
STK500 auch mit einem einzigen Bandkabel betreiben. Die Belegung der Display-Pins
ist vom STK500 übernommen und um zusätzliche Anschlüsse erweitert.
Pin 7 ist hier frei, bei der "Franzbox" wird hier die Displaybeleuchtung versorgt und geschaltet,
Pin 8 ist mit der Reset-Leitung verbunden zwecks ISP-Funktion, 9 und 10 ist GND und
Spannungsversorgung wie beim STK500, dann kommt der Drehencoder auf D2 und D3
der Taster auf D4 und Pin 14 ist nochmal GND für den Encoder)
Mit diesem Stecker ist es auch möglich, die "nackte Platine" als Adapter zum Anschluss des
Displays zu nutzen wenn man sie mit einer bestückten 1:1 verbindet.
....und es ist ja auch möglich, zwei LCD-Displays parallel zu betreiben......
....und man kann ja auch einen 10-poligen Wannenstecker in die 14Löcher einlöten,
dann hat man einen Port (B)-Stecker wie auf dem STK500. Die Pins (B) 6 und 7 sind
da ohnehin meist nicht verwendbar, weil da der Quarz angeschlossen ist....
Alle (fast, der SMD-Atmega hat ja zwei zusätzliche) AD-Wandler Anschlüsse,
GND und 5V sind auf den Micro-Match-Stecker herausgeführt.
zusätzlich auch nochmal die Anschlüsse vom Drehencoder.
Weil ich den Drehencoder aus "historischen Gründen" an den Interrupt-Eingängen betreibe,
aber nur einen Interrupt wirklich brauche habe ich in eine Leitung einen Widerstand als
Jumper eingesetzt um notfalls einen Interrupt-Eingang umverdrahten zu können.
D5 D6 und D7 gehen auf kräftige Mosfet um Ausgänge zu schalten
Auch hier sind ein paar Bestückungsvarianten vorgesehen, um an den sechs Klemmen
auch 5V auszugeben oder zwei Analogeingänge zu beschalten.
D5 und D6 sind PWM-Ausgänge, die hier aber nur nach GND schalten.
Für einen MAX232 war leider kein Platz mehr, aber wenigstens
zwei kleine Transistoren konnte ich unterbringen um die Signale der seriellen Schnittstelle
zu invertieren. (nicht optimal, aber schon vielfach erfolgreich so angewandt)
Zum Empfangen reicht das nomalerweise, und zum Senden......das hängt von der
jeweiligen Schnittstelle ab, meist funktioniert es auch mit einem 5V-Signal,
notfalls kann man noch einen Pullup nach 12V reinbauen.
Wie schon erwähnt hat die SMD-Variante des Atmega 328 zwei zusätzliche
AD-Wandler-Eingänge (ich weiss jetzt noch nicht, ob die ggfs auch als Ausgänge
nutzbar sind.) diese habe ich als Spannungsmesseingänge vorgesehen.
Einmal zum Messen der Versorgungsspannung, und einmal als optionalen
Spannungsmesseingang an der Anschlussklemme.
Diese Platine soll je nach Bestückung als kleines EMUS-Display, als winzige SPS
oder halt für sonstige Zwecke sehr universell verwendbar sein.
Auch ein Einsatz als "Miniatur-Franzbox" ist durchaus möglich, wenn das mit den
Ausgangstransistoren so klappt wie ich das gern hätte............
Den LEM-HASS 200-S Messwandler kann man auch am Micro-Match-Stecker dranhängen,
und die drei Schalttransistoren reichen für DZM, Tankanzeige und Warnleuchte.
nur die Stromversorgung ist hier nicht zweigeteilt, aber das ist auch extern machbar,
und wenn die Displaybeleuchtung über die "Zündung" betrieben wird, ist eigentlich alles
fast so wie bisher.
Da habe ich in letzter Zeit ein paar nicht immer erfreuliche Erfahrungen gesammelt.
In der Ur-Version hatte ich solche Transistorausgänge, aber die Tankuhr von
Michaels Beetle funktionierte damit nicht, weil da offenbar ein Mikroprozessor
das Signal auswertet. da musste ich erst eine Gleichspannung generieren um eine
ordentliche Funktion zu bekommen. Bei Bernds Golf ist aber noch eine alte Version der
Tankanzeige drin, die wiederum hoheren Strom und höhere Spannung braucht,
so dass da die 5V Spannungshub nicht reichen. da ist etwa 3V voll und 8V leer,
aber da kann man dafür problemlos direkt mit PWM-Signalen ansteuern.
Ähnliche Probleme gibts beim Dehzahlmesser. neuere VW etc bekommen
das Signal als Frequenz (2 imp je Umdr.) aus der Motorsteuerung,
da reichen 12V als Rechteck. Ältere VW-Drehzahlmesser die noch direkt an der
Zündspule dran hängen brauchen jedoch viel höhere Impulse.(50-100V-Spitzen)
Das hängt aber vom Hersteller und Modell ab, das muss man testen.
Der Drehzahlmesser mit dem ich testete kommt sogar mit 5V-Impulsen zurecht.
Hier muss ich mal testen, obs eventuell klappt wenn ich eine (Relais-)Spule als "Pull-Up"
nehme und ohne Freilaufdiode schalte. Bei "neueren" Typen sollte ein Pull-Up
nach 12V ausreichen.
Na ja, mal sehen obs funktioniert.Es wird wohl noch ein bisschen dauern bis die Patinchen
in Auftrag gegeben werden......
Vielleicht hat ja noch irgendjemand eine tolle Idee.....aber es ist kein Platz mehr frei,
ausser auf der Oberseite über den Transistoren. aber den Platz wollte ich eigentlich frei lassen
wegen der Anschlüsse.
Bis demnächst!
Franz
12 April 2013
Kleines Display und große Ströme
In den letzten Tagen hatte ich mal wieder nicht so viel Zeit zum Basteln,
aber ein paar Dinge konnte ich doch noch voran bringen.
Die EMUS-Datenauswertung ist um ein paar wichtige Meldungen ergänzt
.....und ein Gehäuse hat das Ding jetzt auch.......
30 x 30 x 80mm , 30 x 20 x 80 wäre möglich, aber dann ohne Relais
Man sieht jetzt auch den "Allgemeinen Status" und den maximalen Balanzierwert,
also den PWM-Wert in Prozent vom am stärksten arbeitenden Balancer.
Der "Status" kommt als einfache Zahl aus dem EMUS, den dazugehörigen Text
habe ich im Programm abgelegt. Mal sehen, wann da überhaupt welche Meldung kommt.
Ich habe das Emus noch nicht während des Ladens bebobachten können,
darum geht es jetzt aber auch noch gar nicht.Erst mal ist wichtig, die richtigen
Zahlen aus dem Datenstrom herauszupicken, und das geht ja schon ganz brauchbar
Da muss jetzt noch ein (besser noch zwei) Relais hinein und noch ein bisschen am
Programm gefeilt werden, dann kann ich damit meinen Monster-Charger steuern.
Bis zum ersten Balanzieren mit voller Leistung, und dann schön gemütlich voll machen
bis zum Abschalten
Der Charger hat gestern schon mal 200A abgegeben ohne im geringsten ins Schwitzen zu kommen.
Na ja, die Leitungen wurden ziemlich warm, und meine Bleiakkus gingen dann bald in die Knie....
Hierzu ein kurzes Video:
aber ein paar Dinge konnte ich doch noch voran bringen.
Die EMUS-Datenauswertung ist um ein paar wichtige Meldungen ergänzt
.....und ein Gehäuse hat das Ding jetzt auch.......
30 x 30 x 80mm , 30 x 20 x 80 wäre möglich, aber dann ohne Relais
Man sieht jetzt auch den "Allgemeinen Status" und den maximalen Balanzierwert,
also den PWM-Wert in Prozent vom am stärksten arbeitenden Balancer.
Der "Status" kommt als einfache Zahl aus dem EMUS, den dazugehörigen Text
habe ich im Programm abgelegt. Mal sehen, wann da überhaupt welche Meldung kommt.
Ich habe das Emus noch nicht während des Ladens bebobachten können,
darum geht es jetzt aber auch noch gar nicht.Erst mal ist wichtig, die richtigen
Zahlen aus dem Datenstrom herauszupicken, und das geht ja schon ganz brauchbar
Da muss jetzt noch ein (besser noch zwei) Relais hinein und noch ein bisschen am
Programm gefeilt werden, dann kann ich damit meinen Monster-Charger steuern.
Bis zum ersten Balanzieren mit voller Leistung, und dann schön gemütlich voll machen
bis zum Abschalten
Der Charger hat gestern schon mal 200A abgegeben ohne im geringsten ins Schwitzen zu kommen.
Na ja, die Leitungen wurden ziemlich warm, und meine Bleiakkus gingen dann bald in die Knie....
Hierzu ein kurzes Video:
27 März 2013
Emus Datenstrom auswerten Versuch 3 bis 27......
Puuuuuuhhhhhhhhh!!!!!!!!!!!!
Das war eine schwere Geburt...................
Aber jetzt scheint es zu laufen!!!!!!!!!!!
Ich hätte eigentlich die Steuerung des Chargers fertig machen sollen,
aber wenn einen so was wie diese Auswertung derart nervt, und man den Fehler
einfach nicht findet, dann hat man den Kopf auch nicht für andere Dinge frei.
Das musste jetzt einfach sein..........
Was und warum das nicht klappte erzähle ich hier demnächst im Detail,
aber jetzt will ich erst mal nach Hause...........
ganz kurz:
Ich habs jetzt mit gepufferten Eingang und dem
" If Ischarwaiting() = 1 Then
Goto Onrxd "-Verfahren geschafft,
alles was so richtig per Interrupt eingelesen hat führte zu Abstürzen
denen ich noch nicht völlig auf den Grund gehen konnte.
Ich habe die Auswertung auf das allernötigste reduziert, und
die eingelesenen Strings bzw nur deren Anfang ;-) in eigenständige
Strings gespeichert und bin dann sofort in die Leseroutine zurückgekehrt
alle Berechnungen sind jetzt im Hauptprogramm, und erst wenn einige
tausend Leerdurchläufe stattfanden (geht sehr schnell) wird häppchenweise ausgewertet
und zu guter Letzt jede Zeile einzeln ins Display geschrieben.
immer wieder mit Pausen dazwischen, diese Pausen muss ich jetzt noch reduzieren,
aber wenn in der Hauptschleifen nur ein paar If-Then stehen wo eben nichts passiert
und gerade mal ein Zählwert erhöht wird, dann geht das sehr flott mit den 16 MHz.
wieder mal nicht ganz die "feine Art" , aber der Zweck heiligt hier die Mittel
das funkioniert jetzt bis zu einer lückenlosen Übertragung des gesamten Pakets
im Abstand von 150ms (im Emus ist meines Wissens 0,5s Standard)
Da ist ja noch Luft für viel mehr anzuzeigende Dinge!!!!!!!!!
Nachtrag 3.April: Ich denke da ganz besonders an die Anzeige des Seriell
aus Curtis-Controllern gesendeten Textes der normalerweise im Curtis840
angezeigt wird. Grundsätzlich ist das machbar mit einer zusätzlichen
seriellen "Software-Schnittstelle" Dass es klappt habe ich bereits erfolgreich
getestet, aber die beiden Programme zu einem zu verwurschteln ist nicht ganz so
einfach, das hebe ich mir einfach mal auf für später!Ende des Nachtrags
Ich habe auch gleich ein Wattuino Pro mini auf das EA DIP204
draufgesetzt und als Inverter einfach einen 6N137 Optokoppler genommen,
Der passt recht gut an die Programmieranschlüsse und galv. Trennung habe ich so
auch noch nebenbei.......(OK, ist nicht ganz korrekt,so zu invertieren, aber
wenns keine Allzuwichtigen Daten sind und ein Aussetzer nicht der
Weltuntergang ist, dann kann man es so machen)
Ich habe ja kein Emus BMS hier zur Verfügung, sondern muss alles simulieren
Um so richtig schnelle Daten zu bekommen habe ich den
Freeduino serial v2.0 zum Emus-Simulator umprogrammiert.
Der sendet mir jetzt ein komplettes Datenpaket so schnell er kann
und ändert dabei die Werte von Stron und SOC damit man da auch was sieht.
........Integer-Werte als HEX-Codierte Buchstaben zu schicken.......gibts eigentlich
noch was gemeineres? das war auch mit mehreren Anläufen verbunden!
Das war eine schwere Geburt...................
Aber jetzt scheint es zu laufen!!!!!!!!!!!
Ich hätte eigentlich die Steuerung des Chargers fertig machen sollen,
aber wenn einen so was wie diese Auswertung derart nervt, und man den Fehler
einfach nicht findet, dann hat man den Kopf auch nicht für andere Dinge frei.
Das musste jetzt einfach sein..........
Was und warum das nicht klappte erzähle ich hier demnächst im Detail,
aber jetzt will ich erst mal nach Hause...........
ganz kurz:
Ich habs jetzt mit gepufferten Eingang und dem
" If Ischarwaiting() = 1 Then
Goto Onrxd "-Verfahren geschafft,
alles was so richtig per Interrupt eingelesen hat führte zu Abstürzen
denen ich noch nicht völlig auf den Grund gehen konnte.
Ich habe die Auswertung auf das allernötigste reduziert, und
die eingelesenen Strings bzw nur deren Anfang ;-) in eigenständige
Strings gespeichert und bin dann sofort in die Leseroutine zurückgekehrt
alle Berechnungen sind jetzt im Hauptprogramm, und erst wenn einige
tausend Leerdurchläufe stattfanden (geht sehr schnell) wird häppchenweise ausgewertet
und zu guter Letzt jede Zeile einzeln ins Display geschrieben.
immer wieder mit Pausen dazwischen, diese Pausen muss ich jetzt noch reduzieren,
aber wenn in der Hauptschleifen nur ein paar If-Then stehen wo eben nichts passiert
und gerade mal ein Zählwert erhöht wird, dann geht das sehr flott mit den 16 MHz.
wieder mal nicht ganz die "feine Art" , aber der Zweck heiligt hier die Mittel
das funkioniert jetzt bis zu einer lückenlosen Übertragung des gesamten Pakets
im Abstand von 150ms (im Emus ist meines Wissens 0,5s Standard)
Da ist ja noch Luft für viel mehr anzuzeigende Dinge!!!!!!!!!
Nachtrag 3.April: Ich denke da ganz besonders an die Anzeige des Seriell
aus Curtis-Controllern gesendeten Textes der normalerweise im Curtis840
angezeigt wird. Grundsätzlich ist das machbar mit einer zusätzlichen
seriellen "Software-Schnittstelle" Dass es klappt habe ich bereits erfolgreich
getestet, aber die beiden Programme zu einem zu verwurschteln ist nicht ganz so
einfach, das hebe ich mir einfach mal auf für später!Ende des Nachtrags
Ich habe auch gleich ein Wattuino Pro mini auf das EA DIP204
draufgesetzt und als Inverter einfach einen 6N137 Optokoppler genommen,
Der passt recht gut an die Programmieranschlüsse und galv. Trennung habe ich so
auch noch nebenbei.......(OK, ist nicht ganz korrekt,so zu invertieren, aber
wenns keine Allzuwichtigen Daten sind und ein Aussetzer nicht der
Weltuntergang ist, dann kann man es so machen)
Ich habe ja kein Emus BMS hier zur Verfügung, sondern muss alles simulieren
Um so richtig schnelle Daten zu bekommen habe ich den
Freeduino serial v2.0 zum Emus-Simulator umprogrammiert.
Der sendet mir jetzt ein komplettes Datenpaket so schnell er kann
und ändert dabei die Werte von Stron und SOC damit man da auch was sieht.
........Integer-Werte als HEX-Codierte Buchstaben zu schicken.......gibts eigentlich
noch was gemeineres? das war auch mit mehreren Anläufen verbunden!
| von vorn |
| und von hinten
Mehr dazu demnächst!
|
Abonnieren
Posts (Atom)


