Amperemeter, Ahzähler, oder was man sonst noch so basteln kann



Bis zu 350 € für alle Fahrer von Elektroautos!
» Jetzt die höchste Quote am Markt sichern
» Oder direkt FIX 85 € erhalten.

Bereits jetzt THG-Quote für 2024 beantragen! Sichere dir deinen Quoten-Anspruch bevor die Prämie sinkt!
(Werbung)

Sascha_W

Aktives Mitglied
23.04.2006
346
Seit fast 3 Wochen versuche ich mich an meinem ersten Microkontroller Projekt.
Da ich von den kleinen Dingern Null Ahnung hatte bin ich mit einem Arduino eingestiegen, nachdem ich einen Artikel in der CT gelesen hatte.

Das erste Zwischenergebniss will ich euch nicht vorenthalten:

Schaltplan als PDF

Bild 1

Bild 2

Für den Analogteil fehlt mir noch ein IC, der ist daher noch ungetestet.
Über Anregungen konstruktive Kritik würde ich mich freuen.
 

Max E.

Aktives Mitglied
06.04.2007
636
Was macht der LT1167 bei negativer Spannung am Messeingang? ( Reku oder Laden )
Du hast an Pin 4 und 7 +5V. An Pin 4 muss aber GND.
Wenn der Strom in die andere Richtung läuft, musst du dem Microcontroller noch klarmachen, wie er das messen soll. Der kann doch nur pos. Spannungen wandeln :(
Dafür brauchst du einen Spannungsteiler am Eingang des LT, der bei Null Strom schon die halbe AD-Wandler ( ~ 1/2xVersorgungsspannung? ) liefert.

Gruss
Olaf
 

Sascha_W

Aktives Mitglied
23.04.2006
346
Ich hab schon gedacht, das Interessiert keinen.

An Pin 4 sollen -5V, hatte die Beschriftung nur Kopiert, ohne anzupassen.
Das Anheben der Spannung, um Negative Werte messen zu können, möchte ich so nicht umsetzen.
Darunter würde die Aflösung doch sehr leiden bei einem Meßbereich bis 150A.

Muß ich den Microcontroller vor Negativen Spannungen schützen?
Sonst könnte ich doch die Ausgangsspannung des 1176 einfach Invertieren und auf einen weiteren Eingang geben.
Dann hätte ich in beide Stromrichtungen die volle Auflösung zur Verfügung.
 

R.M

Bekanntes Mitglied
24.12.2006
10.248
Hallo

Das ist das Problem wenn man zwar programmieren kann aber in der Analogtechnik nicht fit ist, es gibt generell mehrere Möglichkeiten.

1. du hast einen differenziellen Eingang
2. du mißt nur den Betrag und wertest die Polarität gesondert aus.
3. du vergißt die direkte Wandlung arbeitest mit einem Analog Integrierer so daß Schwankungen in der Stromaufnahme keinen Einfluß auf die Messung haben.

Du hast warscheinlich vergessen daß da Pull up oder Pull down Widerstände nötig sind um definierte Pegel zu schaffen, außerdem wirst du um Integrationsglieder nicht herumkommen da die Stromaufnahme durch die Taktfrequenz erheblich schwankt.

Damit man dies auslegen kann muß man erst mal wissen was wirklich vorgeht, dazu wäre ein Oszilloskop recht gut dabei sollte die Meßfrequenz mindestens das 10 fache der Taktung des Controllers betragen.

Gruß

Roman
 

Sascha_W

Aktives Mitglied
23.04.2006
346
lol, Programmieren kann ich ja auch nicht wirklich.
Mir liegen da eher Spannungen von 400V DC und Steuerungen mit Profibusanschluß anstelle von 30mV und einem Microcontroller ;)
Den differenziellen Eingang werde ich bei einem Atmega wohl vergeblich suchen, Pullup/down kommen noch.
Ich dachte an eine RC Kombination vor dem ATmega um ruhe in die Messung zu bekommen.

Ein Oszilloskop hab ich zwar, aber son Hameg ist nicht gerade Userfreundlich während einer ELfahrt.
 

R.M

Bekanntes Mitglied
24.12.2006
10.248
Hallo

Alternative wäre I³C Bus und ein differenzieller Wandler, mit den 16 oder 24 bit Auflösung hättest du dann auch keine Genauigkeitsprobleme.

RC Kombination ist schon eine Alternative, muß man halt ausprobieren.

Mit dem Oszilloskop habe ichs zwar noch nicht probiert aber mit einer transportablen Datenerfassung schon.

Ist aber auch nicht so einfach dasTeil passt gerade mal auf die Akkuabdeckung und einen Wechselrichter braucht man auch noch. Bedienung während der Fahrt ist etwas abenteuerlich.

Ich hab bei meinem BMS einfach einen Hallsensor genommen der gibt +/- 4V aus damit fällt schon mal der ganze Verstärkerkram weg.

Gruß

Roman
 

inoculator

Bekanntes Mitglied
19.04.2006
5.044
Hallo Sascha,

stelle Dir doch zunächst einmal die Frage, wie genau möchstest Du sein?
Kommt es Dir auf 2 Stellen hinter dem Komma an, oder reicht doch die 1. ?

Kombiniere Romans Vorschlag, die Polarität seperat zu messen mit dem RC-Glied zur Glättung -evt. sogar RCL mit 15kHz Resonanz und einer Unterwelle von 5kHz.

Um den Messverlauf über einen Zyklus zu analysieren, könnte es reichen, alle 10 oder 20 Takte des µPC einen Messwert einzulagern. Beim Auslesen nach dem Zyklus, kannst Du Spitzen und Schwankungen bestimmt ausreichend erkennen.

Denke immer daran: Kein Rodhe und Schwarz bauen, sondern funktionale und robuste Ware.

Ansonsten freue ich mich darüber, daß Du Deine Ideen frei postest... aber da haben wir ja schon mal drüber gesprochen....

Gruss

Carsten
 

Sascha_W

Aktives Mitglied
23.04.2006
346
Da hab ich auch schon sehr mit "geliebäugelt".
Aber Zielsetzung ist unter anderem, alle Teile problemlos zu erhalten (Reichelt), nicht jeder hat die Möglichkeit bei farnell zu bestellen.
Außerdem sind die Teile doch recht teuer und das Problem mit dem differenziellen Wandler bleibt bestehen.
Irgendwie will ich auch die Aussage, das das Abfragen des EL Shunts nur Bastelei ist nicht im Raum stehen lassen.
Wie hast Du die Negativen Spannungen abgefragt?

Das ist wirklich eine gute Lösung, die letzten Bits an Auflsung wären dann zwar völlig Oversized aber der Bauteilaufwand hält sich in Grenzen
(bevor ich da eine OP Schlacht mit Invertierern, Integrierern und Instrumentenverstärkern veranstalte).
Gibts sowas auch bei Reichelt?


Zur Genauigkeit:
150A / 1024bit => Auflösung ca. 0,15A - Damit kann ich leben
150A / 512bit => Auflösung ca. 0,3A - Das gefällt mir nicht
Wenn dann der Wert noch um 2-3bit schwankt, dann ist das ja schon fast ein Ampere.
Oder verrechne ich mich da?


Hmm, das ist nicht so ganz nach meiner Vorstellung, den Wert Softwaremäßig wieder hinzubiegen.
Dann taugt die Eingangsschaltung nichts.


Ich habe wirklich einige Zeit damit verbracht, eine vernünftige Schaltung im Web zum Thema Stromerfassung mittels Shunt und Microcontroller zu finden.
Alles was ich bisher zusammenbekommen habe seht Ihr in meinem PDF Schaltplan.
Ich hoffe, genügend Tipps zu bekommen, um das Ganze zu einem Vernünftigen Projekt heranreifen zu lassen.
Das Resultat werde ich hier dann gerne allen zur Verfügung stellen.
Wenns jemanden Interessiert stelle ich auch den Code ein.

Auf jeden Fall lernt man eine Menge bei solch einem Projekt, bis vor einer Woche kannte ich nichtmal einen Instrumentenverstärker
 

R.M

Bekanntes Mitglied
24.12.2006
10.248
Hallo

Die Sensoren kann jeder bei LEM übers Internet bestellen, ich hab einen mit +/- 300A der hat inklusive Versandkosten 27¤ gekostet.

Den dazugehörigen DCDC Wandler der die +/- 15 V erzeugt die du auch zum Betrieb des OP brauchst wenn du differenziell messen willst gibts wiederum bei Reichelt.

Ich messe nur den Betrag der Spannung und werte die Polarität aus, das ganze geht auf einen Analogintegrierer mit 20ms Taktzeit, die Ausgangsimpulse werden dann je nach Polarität positiv oder negativ gezählt.

Die Schaltungen sind entweder bei Elektor oder Conrad abgekupfert und modifiziert daher kann ich sie nicht hier rein stellen.

Hat den Vorteil daß es auch ohne Microcontroller funktioniert.

Die I²C Bausteine sind etwas selten, aber wenn du mal C-Control als Stichwort eingibst findest du viele käufliche Schaltungen, ich hab da was von AD in meinem BMS, finde aber jetzt das Datenblatt nicht, muß also morgen erst mal mit der Lupe nachschauen.


Gruß

Roman
 

Sascha_W

Aktives Mitglied
23.04.2006
346
Mensch sind das jetzt schon 2Monate, da sich mich nichtmehr um das Projekt gekümmert habe?
Asche auf mein Haupt, die bestellten Bauteile sind zwar alle eingtroffen aber in der Wartezeit hab ich mir irgendwie zuviele neue Basteleien auferlegt.

Durch einen Thread von Carsten
jo..... wir wollten so vieles... Da war auch etwas mit Code für ein AH-Zähler.....
jaja..... wir werden alt
will ich mal wieder was schreiben.

@Carsten
Ups, das ist mir glatt entgangen.
Habe seit Deinem Besuch bei mir auch nichtmehr an dem Ah Zähler weitergearbeitet.
Statdessen habe ich erfolglos mit DCF77 und Temperatursensoren rumgespielt.
Und ein "neues" selbstrepariertes Labornetzteil hab ich jetzt (MRGN - 900).
Damit kann ich einen 6V Saft block mit bis zu 60A laden - bisher aber noch nicht praktiziert - der Ah Zähler fehlt noch :(
Leider hab ich mich bei meiner Zusammenschaltereil von allen möglichen Netzteilen etwas verrechnet und eine NiCd Zelle gehörig zum Kochen gebracht.
Erschreckend, was da 15minuten bei 30A bewirken können - mein Schreibtisch sah aus wie Sau.

Hier mal Das Programm für den Arduino, mit dem ich das Display zum Leben erwecke.
(Garnicht so leicht nach 2 Monaten noch die letzte funktionierende Version herauszufinden)
Code:
 #include <LiquidCrystal.h> LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // Display mit den benötigten Pins initialisieren int shuntPin = 0; // Stromeingang an Analog-Input 5 float Strom = 0; //Stromwert auf 0 Initialisieren unsigned long LCDzeit; //Zeiterfassung für Aktualisierung Display unsigned long Aszeit; //Zeiterfassung für Messung Amperesekunden float As; //Amperesekunden float Ah; //Amperestunden int Bargraph; //Variable Bargraphansteuerung int Bargraphl; //Variable Bargraphrestlöschung
void setup()
{ lcd.begin(20, 2); // Dimensionen Display Spezifizieren lcd.print("ELduino V1.0"); // Startmeldung delay (2000); // 5Sekunden anzeigen lcd.clear(); // Display ablöschen
}
void loop()
{ Strom = analogRead(shuntPin) * 0.1955 ; // Analogeingang = Variable Strom, Umrechnen 5V=200A if (millis() - Aszeit > 1000) { // Jdede Skunde Aszeit = millis(); // Zeit rücksetzen As = As + Strom; // Jede Sekunde Ampere aufaddieren Ah = As / 3600; // Amperesekunden in Amperestunden umrechnen } // Schleifenende Zeit Amperestundenmessung if (millis() - LCDzeit > 100) { // Alle 100ms LCDzeit = millis(); // Zeit rücksetzen lcd.setCursor(0, 1); // Cursor auf Spalte0, Reihe1 setzen if (Strom < 100) // Textausrichtung, wenn I<100 {lcd.write(0x20); // // Space(HEX 20), Leerstellen einfügen if (Strom < 10) // Textausrichtung, wenn I<10 { lcd.write(0x20);} // // Space(HEX 20), Leerstellen einfügen } lcd.print(Strom); // Stromwert auf Display ausgeben lcd.setCursor(7,1); // Cursor auf Spalte6, Reihe1 setzen (Reihen zählen ab0) lcd.print("A"); // Einheitszeichen A lcd.setCursor(10, 1); // Cursor auf Spalte0, Reihe1 setzen lcd.print(Ah); // As auf Display ausgeben lcd.setCursor(17,1); // Cursor auf Spalte17, Reihe1 setzen (Reihen zählen ab0) lcd.print("Ah"); // Einheitszeichen Ah } // Schleifenende Zeit Displayaktualisierung if (Strom < 5)
{ lcd.setCursor(0, 0); // Cursor auf Spalte0, Reihe0 setzen (Reihen zählen ab0) lcd.print("Strom"); // Bezeichnung für Anzeigewert lcd.setCursor(10, 0); // Cursor auf Spalte0, Reihe1 setzen lcd.print("Verbrauch"); // Bezeichnung Verbrauch
}
else
{ lcd.setCursor(0, 0); // Cursor auf Spalte0, Reihe0 setzen Bargraph = 20 - Strom / 10; // Bargrafenlänge berechnen for (int i=Bargraph; i < 20; i++){ //Bargrafenschleife lcd.write(0xFF); // Zeichen schreiben } // Schleifenende Bargraph Bargraphl = 20 - Bargraph; // Zeilenrest berechnen for (int s=Bargraphl; s < 20; s++){ //Schleife Zeilenrest lcd.write(0x20); // // Space(HEX 20), um Reste abzulöschen } // Schleifenende Zeilenrest
}
} // Schleifenende void loop


Mittlerweile muß ich zugeben, das die Stromsensoren von LEM ganz schön Sexy sind ;)
Das DIng müßte ich nur Anschließen und schon wär ich fertig.
 

inoculator

Bekanntes Mitglied
19.04.2006
5.044
schei... ist das simpel....

Ich dachte da kommt jetzt tiefstes Assembler auf mich zugeflogen...
Boah... das kann ja mein Sohnemann.

nee... back to the roots.... wo ist mein 8080?

;-)

Ok, Sascha.... jetzt habe ich Blut geleckt....

Wir sollten uns dringend auf eine Entwicklerbasis festlegen, dann kann ich bei mir das Board und die Schnittstelle aufbauen.
Los.... mach mal Liste, was muss ich holen und am Besten wo?

gruss

Carsten
 

Sascha_W

Aktives Mitglied
23.04.2006
346
Sach ich doch :)

Hast Du ein PayPal Konto ?
Ich leider nicht sonst würde ich mir diesen Der Link wurde entfernt (404). hier zulegen.


Ansonsten kann ich Dir auch einen Arduino Bootlader auf einen normalen Atmega brennen.
Dann ist der Aufbau auf einem Breadboard schnell gemacht.
 

Bernd Schlueter

Bekanntes Mitglied
10.12.2004
10.138
Also, da kann ich mich auch für begeistern, oder bin ich da auf eine teure Entwicklungsumgebung festgelegt? Bascom ist immerhin augenzwinkernd etwas geöffnete Saftware. Der Henning arbeitet leider in seiner Firma mit einer kommerziellen Software...Atmel ist gut. Vorschlag: wir einigen uns darauf, sofern open source. Oder was macht der bootlader?
 

Sascha_W

Aktives Mitglied
23.04.2006
346
Nee, ist alles kostenlos nur der Name Arduino ist rechtlich geschützt.
Deswegen verwenden Ableger nur das ...duino wie der Iduino aus der Bucht.
Ich spiele momentan mit dem Eval Board von Pollin rum, man kanns aber auch stecken oder sonstwie nachbauen.

Entwicklungsumgebung ist zwar spartanisch, basiert aber auf processing und ist ebenfalls kostenlos.
 

Sascha_W

Aktives Mitglied
23.04.2006
346
Welche Stromsensoren verwendet Ihr denn so?
Typbezeichnung und ungefähre Preislage würden mich schon weiterbrngen.
Auf der LEM Webseite werde ich erschlagen von zig Typen in sicherlich allen Preislagen.

Momentan spiele ich mit so einem Stromwandler rum, der gibt aber einen Ausgangsstrom aus und keine Spannung:
Telcon HTP 50
(Hatte ich mal in der Bucht erworben)
Dazu einen DC/DC wandler von Reichelt für +/- 15V
Der Link wurde entfernt (404).
Die ganze Sache reagiert sehr empfindlich auf Spannungsschwankungen das gefällt mir nicht.
Außerdem ist der Strom zu klein, das ist nur was fürs Ladegerät Daheim.
 

Josef Fenk

Mitglied
15.04.2005
102
Hallo Sascha,

zu Deiner Frage

"Welche Stromsensoren verwendet Ihr denn so? "

Bei meinem uC OPEN MICRO Board benutze ich einen OP LM258 mit 2 OPs im Pin 8 Gehäuse. Der eine OP für den Fahrtstrom benutzt den vorhandenen Messwiderstand beim Curtis lt. Cityel Schaltplan R1 (mit 150A//50mV//0,33Ohm) und der andere den Messwiderstand R2 im Ladekreis (mit 15A//50mV//3,33 Ohm).
Der OP ist integrierend geschaltet, d.h. vom Messwiderstandanschluß der näher zu der Batterie liegt geht es über einen Widerstand 1kOhm zum invertierenden (-)Eingang des OPs. Die andere Seite des R1 Widerstandes liegt über einen 1kOhm Widerstand direkt am (+) Eingang des OPs. Vom Ausgang des jeweiligen OPs geht eine Reihenschaltung aus Poti ca. 100kOhm und Widerstand ca. 47 kOhm zurück auf den invertierenden ( -) Eingang. Parellel dazu liegt noch eine Kondensator ca. 1uF, der für die Integration (Mittelwert Bildung) dient. Stellt man mit der Serienschaltung + Poti ca. 100 kOhm ein, so hat man eine Verstärkung von 100kOhm / 1kOhm = ca. 100. Fliessen am Messwiderstand R1 = 150A, so fallen über diesen Widerstand 50mV ab, diese werden dann um den Faktor *100 verstärkt, sodaß 50*100= 5000mV nach dem OP vorliegen, die dann direkt zur Wandlung im AD Wandler eingesetzt werden können. Bei mir hat sich die Schaltung bestens bewährt und die Gesamtkosten (1Doppel_OP+ 3 Widerstände + Poti+Elko) liegen unter 1 Eu. Falls man den Abgleich in der Sotware vornimmt kann auch das Poti entfallen. Falls gewünscht kann ich Euch die Schaltung ins ELWIKI stellen.

Viele Grüße

Josef Fenk
 

JB Elektronikdesign

Aktives Mitglied
15.10.2006
467
Warum den teuren Arduino kram? Den Mega gibts fürn Euro, Stromsensor von Allegro als kostenloses Sample und für die die es nicht verstehen kann man auch in Basic programmieren. Alles simpel und leicht erhältlich. Auch alles schon mal dagewesen.

Gruß

Jens
 

Sascha_W

Aktives Mitglied
23.04.2006
346
Der Arduino Kram ist garnicht teuer, ich nehm dafür einen Atmega von Reichelt und spiel die Software selbst auf (kostenlos).
Das hat den Vorteil, das ich mich in kürzester Zeit einarbeiten konnte und ein Funktionierendes Projekt habe.

Bei Allegro hab ich leider keine Durchstecksensoren gefunden.
 

Sven Salbach

Bekanntes Mitglied
15.03.2007
9.385
46
Hannover
www.litrade.de
Ich habe bereits ein laufendes System.
Wenn Du dich mit PAscal als PRogrammiersprache anfreunden könntest könnte ich Dir meinen kompletten derzeitigen code für Alle ATMEL Modelle vom Mega8 - Mega256 schicken

Ich nutze AVRco oder neuerdings habe ich die Vollversion von Mirkopascal erworben.

Zur Strommessung nimmst Du einen Stromwandler von Allegro dann brauchst Du kaum elektronik
Meld Dich eifnach, falls Du interesse hast..
Auch nutze ich UART zur Datenübertragung Uhrzeitmodule (RTC Clock) und 1Wire TEmperaturfühler
 

Sascha_W

Aktives Mitglied
23.04.2006
346
Schade, das die Software nicht frei verfügbar ist - wie Bernd schon geschrieben hat sollte dies für ein offenes Projekt voraussetzung sein.
Blick zwar nicht komplett durch aber Pascal scheint auch gut lesbar zu sein.
Fragst du den Temperatursensor jetzt via I2C oder 1Wire ab?

Klar bin Ich interessiert daran wie Du die Strommessung mit dem Allegro Stromsensor realisiert hast.



 

Anmelden

Neue Themen

Neueste Beiträge