Ergebnis ist
getBusVoltage_raw: 128
getShuntVoltage_raw: 257
getCurrent_raw:257
getPower_raw:24337
und zwar immer unabhängig von der Beschaltung. Es wird also der ina219
offenbar ausgelesen aber keine Wandlung durchgeführt. Gibts da noch
einen Befehl für die Durchführung der Wandlung den ich übersehen habe?
Danke für Unterstützung.
Aufbau genau überprüfen. Sieht für mich nach fehlender Kommunikation mit
dem INA aus. Oder muss man die Wandlung manuell anschubsen und dann
drauf warten dass sie fertig ist?
M. K. schrieb:> Oder muss man die Wandlung manuell anschubsen
Man kann dies bei den Meisten einstellen, ob "Free Run" oder
"Anschubsen" hab jetzt aber keine Zeit das Datenblatt des INA219 zu
studieren.
Nach kurzem Überflug über das DB - das läßt sich auch einstellen.
Es ist eben so die Frage, was INA219_Init() da überhaupt so einstellt.
Da muß man ein bißchen die dazugehörige Dokumentation durchlesen ...
grundschüler schrieb:> meine das Problem gefunden zu haben:>> unsigned char i2c_rep_start(unsigned char address)> {> return i2c_start( address );> }>> kann doch eigentlich nicht richtig sein?
Doch; ein repeated Start ist ein normaler Start, bei dem vorher kein
Stop gesendet wurde.
Ich würde vermuten, dass beim Lesen der Register die Fehlerbehandlung
fehlt, und dass die I²C-Kommunikation überhaupt nicht geht.
Zeig doch mal deinen Aufbau. Und idealerweise die I²C-Signale auf einem
Oszilloskop.
Clemens L. schrieb:
Danke, ein hilfreicher Blick von außen.
Wahrscheinlich hast du mit dem Kommunikationsproblem recht. Ich werde
einen la anschließen und ein Foto vom Aufbau machen und mich dann wieder
melden.
Der Tip mit dem oszilloskop war gut. Diverse Fehler gefuunden. Letztlich
hab ich alles mit bitbang-i2c neu gemacht.
Die Register werden jetzt korrekt geschrieben und ausgelesen.
Aber das Ergebnis ist doch sehr enttäuschend. Die Schwankungsbreite der
Werte, die der ina219-Baustein liefert ist mit 500% doch sehr groß. Ob
das praktisch überhaupt aussagekräftig ist?
grundschüler schrieb:> Aber das Ergebnis ist doch sehr enttäuschend. Die Schwankungsbreite der> Werte, die der ina219-Baustein liefert ist mit 500% doch sehr groß.
Das liegt sicher nicht am INA219.
mfg Klaus
Klaus R. schrieb:> Das liegt sicher nicht am INA219.> mfg Klaus
Meist unsaubere Speisung, Fehlende Block-Kap's. Ferrit-perlen oder
Spannungsregler die Schwingen. Als Beispiel, LM78xx können das gut wen
man die Falschen Kondensatoren verwendet.
Kann aber auch sein, das einfach das Layout einstreuung hat.
Normal ist dies keinesfalls!
grundschüler schrieb:> Aber das Ergebnis ist doch sehr enttäuschend.
Irgend etwas stimmt da noch nicht. Mach doch mal ein Foto vom Aufbau der
Schaltung. Sage oder besser, zeige uns was Du messen willst. Du hast ja
einen Oszi.
mfg Klaus
gar nicht so einfach mit Fotos wenn man das passende USB-Kabel verlegt
hat...
Da ich ein fertiges Modul verwende kann am Aufbau eigentlich nicht viel
falsch sein. Das Display zeigt den rohen Registerinhalt - jeweils vier
Werte gemessen im Abstand von 2sec.
in dieser Reihenfolge:
#define INA219_REG_SHUNTVOLTAGE (0x01)
#define INA219_REG_BUSVOLTAGE (0x02)
#define INA219_REG_POWER (0x03)
#define INA219_REG_CURRENT (0x04)
Busvoltage und power sind halbwegs brauchbar - shuntvoltage und current
sind im Prinzip für die Tonne.
grundschüler schrieb:> Die Schwankungsbreite der> Werte, die der ina219-Baustein liefert ist mit 500% doch sehr groß.
Ich habe mehrere Aufbauten mit Arduino (AT328) und INA219, die Meßwerte
sind sehr stabil und zuverlässig.
Finde den Pfusch in Deiner Hardware, ungeschickte Leitungsführungen,
Störsignale, Masse nicht sauber ... das verrät meine Glaskugel nicht.
Es ist auch nicht auszuschließen, dass Deine Abfrage unsauber ist.
Schaue Dir mal den Anhang an.
Ich habe mir in losen Versuchsaufbauten ein paar INA219 zerschossen,
vermutlich über wackelige Massepotentiale. Im ordentlich gelöteten
fertigen Aufbau ist bislang nichts passiert, also auch diese Möglichkeit
in Betracht ziehen.
grundschüler schrieb:> wenn ich die Spannung wegnehme ändert sich shuntvoltage praktisch nicht> während alle anderen Werte auf null gehen.
Mit dem Shunt soll ja den Strom gemessen werden. Wenn kein Strom fliesst
liegt am Shunt keine Spannungsdifferenz an. Der INA219 darf auch nicht
floaten. Dann könnte es zu Überspannungen an den Eingängen kommen. Ich
würde die Eingänge bei Deinem Aufbau unbedigt noch vor Überspannung
sichern. Ein kleiner Abreißfunke beim Öffnen des Stromkreises erzeugt
leicht über 26 V. Negative Spannungen mag der INA219 auch nicht.
Der Schaltplan wäre hilfreich.
mfg Klaus
habe jetzt die hardware überprüft - d.h. ein neues ina219-modul gekauft
uneingesetzt.
gefühlt etwas gleichmäßiger - aber die shunt-ergebnisse sind nach wie
vor praktisch nicht verwendbar. Eigentlich interessiert mich ja nur die
bus-Spannung. Ich bilde jetzt den Mittelwert aus zehn Messungen und
stelle jeweils fest, wann der Mittelwert nach unten ausweicht. Damit
bekomme ich eindeutige Ergebnisse für den geplanten Batterietester.
1
while(1)
2
3
{
4
iwu++;
5
if(iwu==60)bool_wu=1;
6
7
8
i++;
9
if(i==10)i=0;
10
11
lcd_goto(1,1);
12
xx=getShuntVoltage_raw();
13
shuntVoltageX[i]=xx;
14
lcd_int4(xx/46);
15
16
wait;wait;
17
18
19
shuntVoltageX[10]=0;
20
21
for(u8ii=0;ii<10;ii++)
22
{
23
shuntVoltageX[10]+=shuntVoltageX[ii];
24
}
25
26
lcd_goto(1,6);
27
lcd_int4(shuntVoltageX[10]/467);
28
29
lcd_goto(1,11);
30
lcd_int(shuntVoltageX[10]);
31
32
if(bool_wu){
33
messtimer++;
34
35
36
if(shuntVoltageX[10]/467<shuntVoltage_alt)
37
{
38
shuntVoltage_alt=shuntVoltageX[10]/467;
39
40
lcd_goto(1,17);
41
lcd_int4(shuntVoltage_alt);
42
43
44
lcd_goto(2+(y/4),(y%4)*5+1);
45
y++;
46
if(y==12)y=0;
47
48
lcd_int4(messtimer);
49
messtimer=0;
50
}
51
52
}
53
wait;wait;
54
55
56
}
Den Batterietest stelle ich mir so vor, dass ich beim vollgeladenen Akku
prüfe, wie lange die Entladung von 20,0 V auf 19,5 V dauert. Je größer
die Zeitspanne, um so besser der Akku.
grundschüler schrieb:> habe jetzt die hardware überprüft - d.h. ein neues ina219-modul gekauft> uneingesetzt.>> gefühlt etwas gleichmäßiger - aber die shunt-ergebnisse sind nach wie> vor praktisch nicht verwendbar.
Das kann nicht sein. Du hast doch ein Oszi. Dann messe doch mal IN+
gegen Masse, IN- gegen Masse und IB+ gegen IN-. Sind die Spannungen
sauber und konstant?
Mache Fotos vom Oszi und zeige sie hier im Forum.
Ein Schaltplan .... Ich sehe gerade Deinen Fehler!!!
Sie beigefügtes Bild.
Schau Dir zunächst unten im Bild die Beschaltung eines INA219 genau an.
Wie ist der Shunt am INA219 angeschlossen?
Der Shunt muß parallel zu Vin+ und Vin- liegen. Dann kommt Supply, die
Ladespannung an Vin+ und Load, der Akku oder Verbraucher an Vin-.
mfg Klaus
Peter K. schrieb:> So würde er ja den Kurzschlusstrom> messen.
Mit seiner ursprüglichen Schaltung misst der TO keinen Strom. Es fließt
nämlich keiner. Der differenzielle Widerstand von Vin+ und Vin- ist dann
dazwischen. Deshalb muß der Shunt von Vin+ zu Vin- angeschlossen werden.
Siehe Datenblatt.
mfg klaus
Ich bin jetzt von dem Bild ausgegangen
was er eben gepostet hat. Und da stimmt die
Beschaltung. Wenn er es so macht wie du eingezeichnet
hast, dann liegt die Battterie direkt an den Shunt und
macht einen Kurzschluss bis auf die 0,1 Ohm vom Shunt.
Oder soll das oben links überhaupt kein Akku sein ?
Peter K. schrieb:> Ich bin jetzt von dem Bild ausgegangen> was er eben gepostet hat. Und da stimmt die> Beschaltung.
Durch den Shunt soll doch Strom fliessen.
Die ursprüngliche Beschaltung sieht doch so aus. Oben aus dem schwarzen
Gehäuse kommt links ein blau-grauer Draht heraus der unten auf der
Anschlussklemme rechts angeschlossen ist. Am zweiten Pol der
Anschlussklemme, links, geht ein Draht zum Shunt auf der rechten Seite.
Der Strom soll über den anderen Shunt auf der linken Seite nach oben zu
schwarzen Gehäuse, rechts, fliessen.
1. Fehler
Zwischen den Anschußklemmen liegt nur der differezielle Widerstand des
PGA. Da fließt kein nennswerter Strom.
2. Fehler
Wozu wird bei dieser Beschaltung der Shunt überhaupt benötigt?
> Wenn er es so macht wie du eingezeichnet> hast, dann liegt die Battterie direkt an den Shunt und> macht einen Kurzschluss bis auf die 0,1 Ohm vom Shunt.> Oder soll das oben links überhaupt kein Akku sein ?
Was da oben am schwarzen Gehäuse liegt hat der TO nicht beschrieben.
Er mißt zwei Spannungen. Da der Shunt nicht parallel zu Vin+ und Vin-
liegt ist die Verbindung sehr hochohmig und schwimmt.
Wie mit dem INA zu messen ist geht aus dem Datenblatt Figure 13 genau
hervor.
mfg Klaus
Ich bin davon ausgegangen das er auf dem
Bild ein Akku mit Lastwiderstand dort zeigt.
Und über den INA219 will er nun die Spannung und
Strom messen. Aber da man aus dem Bild nix erkennen
kann sollte vielleicht hier mal ein Schaltplan
vorgelegt werden. Kann ja auch mit Hand gezeichnet werden.
So wird das hier zur Raterunde.
Klaus R. schrieb:> Ein Schaltplan .... Ich sehe gerade Deinen Fehler!!!
Ich auch, und zwar in Deiner angeblichen Korrektur, so wird das nichts.
Peter K. schrieb:> Ich bin jetzt von dem Bild ausgegangen> was er eben gepostet hat. Und da stimmt die> Beschaltung.
Links oben ist das Netzgerät und das INA-Board ist in Reihe mit der
Last, so muß das sein.
Aber: Es muß in die Plusleitung, kann ich am Bild nicht erkennen.
Und: Ich sehe keine GND-Verbindung zwischen Netzgerät und INA, wie soll
damit eine Spannungsmessung klappen?
Ich wiederhole mich:
Manfred schrieb:> Ich habe mir in losen Versuchsaufbauten ein paar INA219 zerschossen,> vermutlich über wackelige Massepotentiale. Im ordentlich gelöteten> fertigen Aufbau ist bislang nichts passiert, also auch diese Möglichkeit> in Betracht ziehen.
Manfred schrieb:> Links oben ist das Netzgerät und das INA-Board ist in Reihe mit der> Last, so muß das sein.
Wozu ist denn der Shunt da?
> das INA-Board ist in Reihe mit der> Last
Du meinst über die Anschlussklemmen?
Das INA-Board kennen wir ja auch nicht.
Für mich liegt es nahe daß die Anschlußklemme der Abschluß für Vin+ und
Vin- ist. Der TO will doch irgendwie Spannung und Strom messen.
Wie das geht sieht man doch im Datenblatt des INA219. Das ist eine
klassische Methode um High-Side eine Differenzspannung zu messen und
daraus den Strom zu berechnen.
Zwischen Vin+ und Vin- fließt kein Strom. Das ist für
Differenzverstärker ebenfalls typisch. Der Strom fließt nur über den
parallelgeschalteten Shunt. Wie gesagt, das ist eine klassische Methode.
Kurz gegoogelt.
https://www.reichelt.de/entwicklerboards-stromsensor-mit-breakoutboard-ina219-debo-sens-power-p266047.html
Ja, da gibt es ein INA219 Breakout als Stromsensor. Den könnte der TO in
der Tat verwenden. Er hätte uns auch frührer mal auch selber dieses
kleine Detail zeigen können.
Diese Platine hat schon einen 0,1 Ohm Shunt. Wozu jetzt noch die dicken
Leistungswiderstände verwendet werden bleibt rätselhaft. Ich muß wohl
mal meine Glaskugel austauschen. Es immer erquickend wenn die
Einzelheiten bröckchenweise ans Tageslicht kommen.
Also, der TO müßte vernüftige Werte messen können.
Es bleibt aber noch ein schon angesprochenes Problemchen.
Es gibt keinen Überspannungsschutz! Die Inputs werden +26 V vertragen.
Allerdings sind nur -0,3 V erlaubt.
Aber der Überspannungsschutz ist ein neues Thema für eine weitere Runde.
mfg klaus
Ich kann nur dringend empfehlen bei solchen Problemen einen sauberen
Schaltplan des gesamten Aufbaus zu zeichnen.
Also nicht nur ein Foto was Drähte und Module zeigt.
Und auch nicht irgendwelche Breakout-Boards nur als solche im Schaltplan
verwenden.
Sondern die genaue Beschaltung, so wie sie im Breakoutboard umgesetzt
ist, in den eigenen Schaltplan übernehmen. Am besten nen Rechteck drum
und die Artikelnummer des Breakoutboards dazu.
Dann wird einem selbst nämlich klar was man da genau wie verbunden hat
und kann das leicht mit Beispielschaltplänen und Prinzipschaltungen aus
dem Datenblatt vergleichen. Natürlich haben es auch andere, wie z.B. wir
hier im Forum, dann viel leichter zu helfen.
Ich hoffe das bisherige Stochern im Nebel hier war dem TO genug Lehre
warum diese Vorgehensweise sinnvoll ist.
Klaus R. schrieb:> Wozu ist denn der Shunt da?
Wenn ich das mal wüsste, der muß irgendwas mit Strom messen zu tun
haben.
>> das INA-Board ist in Reihe mit der Last> Du meinst über die Anschlussklemmen?
Ja, und ich meine es nicht, ich weiss es!
> Das INA-Board kennen wir ja auch nicht.
Wenn Du weder den Baustein noch das Board kennst, dann erspare uns Deine
falschen Ratschläge!
> Ja, da gibt es ein INA219 Breakout als Stromsensor.
Tolle Erkenntnis, wieso wohl steht bei TI im Datenblattkopf "Current
Monitor"? Verdammt nochmal, die Strommessung per Shunt ist seine primäre
Aufgabe, genau dafür wurde das IC entwickelt! Du postest ein Bild aus
dem Datenblatt, aber hast es nicht verstanden.
Wenn grundschüler irgendwann in eine weiterführende Schule wechselt,
lernt er evtl., wie man ordentliche Fotos macht. Trotzdem erkenne ich
auf dem das allseits bekannte Board, wie ich es mehrfach eingesetzt
habe. Die ganzen Chinadinger sind von Adafruit abgemalt, da findet man
auch den Stromlauf dazu.
Zwischen Vin+ und Vin- liegt der Shunt.
Der wird in Reihe zum messenden Objekt geschaltet.
Über den Shunt wird die Spannung gemessen und daraus
dann der Strom berechnet. Dies geschied alles auf dem
Board vom INA. Der last Widerstand ist wahrscheinlich dafür da,
das es keinen Kurzschluss gibt. Denn sonst wäre als einzigster
Verbraucher ja nur noch der Shunt vom INA (0,1 Ohm) vorhanden.
Und bei 3,2A ist schluss.
Manfred schrieb:>> Ja, da gibt es ein INA219 Breakout als Stromsensor.>> Tolle Erkenntnis, wieso wohl steht bei TI im Datenblattkopf "Current> Monitor"? Verdammt nochmal, die Strommessung per Shunt ist seine primäre> Aufgabe, genau dafür wurde das IC entwickelt! Du postest ein Bild aus> dem Datenblatt, aber hast es nicht verstanden.
Offensichtlich hast Du Dir den Link von Reichelt nicht richtig
angesehen. Reichelt selber spricht vom Stromsensor. Der INA219 selber
ist im Grunde genommen nur ein AD-Wandler mit PGA. Zusätzlich hat er
Register für Leistungswerte, Stromwerte und Spannungswerte. Erst ein
externer Widerstand macht das Ganze zum "Stromsensor" obwohl das nur ein
Wert von zwei weiteren ist.
Und die primäre Aufgabe ist nicht nur die Strommessung. Aus dem
gemessenen Strom und einer Spannung wird auch die Leistung ermittelt.
Kalibrieren und filtern kann man auch. Also ein recht brauchbarer IC.
mfg Klaus
Klaus R. schrieb:> Ein Schaltplan .... Ich sehe gerade Deinen Fehler!!!
Denke, der Anschluss ist richtig Akku - shunt - Last in dieser
Reihenfolge in Reihe. Die Busspannung wird ja auch richtig gemessen.
ich hab kein brauchbares oszi - nur einen logic-analycer. Die
i2c-Kommunikation klappt aber inzwischen einwandfrei.
grundschüler schrieb:> Denke, der Anschluss ist richtig Akku - shunt - Last in dieser> Reihenfolge in Reihe. Die Busspannung wird ja auch richtig gemessen.
Es fehlte nur die Schaltung des Breakouts. So konnte man annehmen das
die Leistungswiderstände der Shunt sein sollten. Wenn die Busspannung
auch richtig gemessen wird, dann ist ja alles in Ordnung. Aber Du
zeigtest uns auch stärkere Schwankungen. Die treten in dieser Form bei
einem Akku nicht auf.
mfg Klaus