Hallo Gemeinde... Hab mir ein paar Samples vom INA219 bestellt und meine passenden Platinen sind auch schon angekommen... jetzt hab ich aber nen paar offene Fragen, obwohl ich das Datenblatt schon 3 mal gelesen habe... Hier das Datenblatt: http://www.ti.com/lit/ds/symlink/ina219.pdf Also irgendwie will ich noch nicht verstehen warum man ne programmierbare Gainstufe hat und dann trotzdem das LSB für die Spannungsmessung bei 16 oder bei 32 Volt immer 4 mV groß ist... Müsste doch bei 12 Bit und 32 Volt 8mV sein.. Das selbe Unverständis bei der Shuntspannung... das LSB soll immer 10uV sein, obwohl 40mV, 80mV, 160mV und 320mV Messbereichs enden eingestellt werden können... Hängt das mit dem Oversampling zusammen, dass man im INA einstellen kann? Die letzte Frage hatte sich zum Glück mit google geklärt, auf dem TI Forum steht das die ADC Samplezeit für Spannung und Strommessung zusammen gilt. Das steht auch nirgendswo drin... Schon sehr verwirrend das ganze... Vielleicht hat jemand den INA oder ähnliche Bausteine benutzt und kann mir etwas auf die Sprünge helfen... MFG BAsti
Da steht "ADC Basic Resolution" und ist zu verstehen als die Auslösung des ADC alleine ohne den PGA.
Ja so hab ich mir das schon gedacht... also wäre das tätsächlich erreichbare LSB bei 320mV und PGA 8 -> 8 x 10 µV = 80 µV Würde Sinn ergeben.. der Programmierer braucht dann nur immer mit 10 µV multiplizieren um die Shuntspannung zu bekommen... Aber die Table 8 auf Seite 29 hat mich da zusätzlich verwirrt... Da ist die Dualdarstellung von 319,99 µV angegeben... eine theoretische Auflösung die nicht mit 12 Bit erreicht werden kann... Wahrscheinlich ist das dann wirklich nur mit der Mittelwertbildung erreichbar und bei standard ADC Einstellung, die LSB Stellen mit Nullen gefüllt?! Ich werd mal mein Glück probieren... Danke erstmal
Och man... eigentlich hatte ich schon ganz gute Ergebnisse... aber die Register des LSB bekomm ich nicht so programmiert wie ich das möchte... oder liegt es am Auslesen? Jedenfalls ist das MS Byte egal was drinnen steht immer korrekt... das LS Byte ist irgendwie anders.... Benutze die LIB von Peter Fleury
1 | if(!i2c_start(INA219_1 + I2C_WRITE)) { |
2 | |
3 | i2c_write(Confg_Reg); |
4 | i2c_write(0b00000001); |
5 | i2c_write(0b10011111); //LS Byte... immer falsch nach dem Auslesen |
6 | i2c_stop(); |
7 | |
8 | i2c_start_wait(INA219_1+I2C_WRITE); |
9 | i2c_write(Confg_Reg); |
10 | i2c_start(INA219_1+I2C_READ); |
11 | uint16_t msb_ina_temp = (uint16_t)i2c_readAck(); |
12 | msb_ina_temp <<= 8; |
13 | msb_ina_temp += (uint16_t)i2c_readNak(); |
14 | i2c_stop(); |
15 | uSpannung_ADC = Spannung_ADC = msb_ina_temp; |
16 | }
|
Vielleicht muss ich auch nochmal drüber schlafen :-/ MfG Basti
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.