OpenXSensor - Strom und Spannungssensor

Status
Nicht offen für weitere Antworten.

fa223

Erfahrener Benutzer
🥴 Wie komm ich nur darauf dass ihr mich gerade ein bissl verarschen wollt 🤪🤣
:LOL:

Soweit ich das verstehe, macht es Bernd wie im Beitrag #375 dargestellt.
Vom S.Port-Stecker geht er mit der roten Leitung (Spannungsversorgung) auf RAW, wie in der Skizze.
Für die Spannungsversorgung des ADS1115 und des Lantian nimmt er aber den VCC-Ausgang des Arduinos.
Vorteil ist (bitte korrigieren, wenn falsch), dass er mit einer höheren Spannung als 5V bei RAW reingehen kann, der Ardu selbst und die über VCC angeschlossenen Teile aber durch den Spannungsregler auf dem Ardu nur mit 5V versorgt werden.

Da ich meinen Empfänger über den ESC versorge, sind es immer ziemlich genau 5V, die vom Empfänger kommen. Insofern ist der Weg über den Spanngungsregler nicht zwingend notwendig.

Die Skizze in #376 wäre ohne den Wandler ADS1115. Funktioniert auch, aber, wie von Bernd im openrcforum geschrieben, hat man dann nicht die "hohe" Genauigkeit. Für den verbrauchten Motorstrom ist das m. E. egal, da ja die Strommessung insgesamt nicht soooo genau ist. Wenn man aber Servoströme messen will (und so interpretiere ich den Beitrag im anderen Forum), dann ist eine Verbesserung der Genauigkeit schon wünschenswert.
 

fa223

Erfahrener Benutzer
Hallo Carbonator,
in openrcforums schreibst du, dass die Auflösung deines Sensors 0,02 A beträgt. Der ADS1115 hat einen 16 bit Wandler und du beschränkst den Messbereich auf 2048 mV. Durch die Messung der Differenzspannung erhältst du Spannungswerte von 0-2 V. Dementsprechend müsste man doch 100A/(2V/(2048mV/2^16)) rechnen? Das wären dann aber 0,0016A. Wo ist da mein Denkfehler?
In der config_advanced definierst du außerdem "ADS_SCALE 10.2, ..." Wieso eigentlich Faktor 10,2?
Offenbar stehe ich da momentan unmittelbar auf der Leitung ... ich weiß nur nicht auf welcher.
 
in openrcforums schreibst du, dass die Auflösung deines Sensors 0,02 A beträgt. Der ADS1115 hat einen 16 bit Wandler und du beschränkst den Messbereich auf 2048 mV. Durch die Messung der Differenzspannung erhältst du Spannungswerte von 0-2 V. Dementsprechend müsste man doch 100A/(2V/(2048mV/2^16)) rechnen? Das wären dann aber 0,0016A. Wo ist da mein Denkfehler?
Hallo, das ist kein Denkfehler, sondern die 0,0016A sind tatsächlich die Auflösung des A/D Wandlers. In der Praxis hatte ich eine leichte Schwankung des Offset vom Stromsensor und damit auch eine leichte Schwankung des Messwertes. Die Wiederholgenauigkeit war bei 0,02A. Da die Anzeige auch nur maximal 0,01A auflösen kann, bin ich damit zufrieden.
In der config_advanced definierst du außerdem "ADS_SCALE 10.2, ..." Wieso eigentlich Faktor 10,2?
Das mit den 10,2 hat auch nur ca. 2 Jahre gedauert, bis mir das so eingefallen ist, aber manchmal habe ich noch einen lichten Moment. FrSky sendet den Stom per Definition nur mit 1 Nachkommastelle. Man kann zwar in der Telemetrie auf 2 Nachkommastellen umstellen, aber die zweite Stelle ist leer. Man müsste also einen 10x höheren Stromwert senden (kein Problem im oXs) und auf der Empfangsseite wieder durch 10 teilen.

Aber bei einer Nachkommastelle entspricht 100% einer Ratio 25,5, damit entspricht 10% einer Ratio von 2,55. 2.55 kann man nicht als Ratio eingeben, weil nur eine Nachkommastelle möglich ist. Der nächstniedrige Wert ist 2,5. Mit einem Dreisatz kommt man dann auf den Faktor 10,2 im oXs, damit die Umrechnung wieder stimmt.
 
Erhaltene "Gefällt mir": fa223

fa223

Erfahrener Benutzer
Ach.... :unsure:

Wenn das so einfach ist, ist es mir jetzt schon peinlich, dass ich da nachgefragt habe. :rot:
Tja, im #383 ist es ja gut auf den Punkt gebracht. :giggle:

Danke. (y)
 

fa223

Erfahrener Benutzer
Für alle die einen Nachbau wagen wollen, die Größendimensonen der Bauteile.
Beim Verkleinern des Lantian aufpassen, dass man die Leiterbahn nicht beschädigt (siehe roter Pfeil).

oXs-Stromkomponenten_.jpg

oXs-Lantianleiterbahn_.jpg
 
Noch zwei Tips. Erst das Stromkabel anlöten (wenn man inline-Verkabelung will), dann den ADS mit Epoxy seitlich ankleben, dann wackelt auch nix mehr rum. Die beiden "Goldringe" des ADS haben keinen elektrischen Kontakt zu irgendetwas, man muss nicht auf Isolierung achten.

16b_1.jpg
 
Hallo zusammen. Ich habe den ganzen Thread durchgelesen, stecke aber fest. Ich versuche mir Mittels ACS712 die Stromaufnahme auf OpenTX schicken zu lasssen. Ich habs mit nem Arduino Pro Mini und nem Nano versucht. Das der ACS712 Werte ausgibt, habe ich mittels Testskript probiert. Aber es kommt über S.Port immer nur 0A an.

So sehen meine Config in der Advanced.h aus:
// ***** 6.1 - Voltage Reference to measure voltages and current *****
//#define USE_INTERNAL_REFERENCE // uncomment this line if you use 1.1 volt internal reference instead of Vcc (voltage divider mst be used to reduce voltages to 1.1 volt max)
//#define USE_EXTERNAL_REFERENCE // uncomment this line if you use an external reference instead of Vcc
#define REFERENCE_VOLTAGE 4970

es ist egal, ob ich INTERNAL oder nicht nehme. Immer 0A


// ***** 6.5 - Current parameters *****
#define PIN_CURRENTSENSOR A6 // Arduino pin used to measure the voltage provided by a current sensor
#define MVOLT_AT_ZERO_AMP 2500 // in millivolt
#define MVOLT_PER_AMP 100 // in milliVolt per Amp
#define RESISTOR_TO_GROUND_FOR_CURRENT 0 // put as comment or set to 0 if no divider is used (e.g. 19.8 for 1.1 internal ref)
#define RESISTOR_TO_CURRENT_SENSOR 0 // put as comment or set to 0 if no divider is used (e.g 39 for 1.1 internal ref)

meine Basic Config sieht so aus:

// ***** 2.1 - Frsky data *****
//#define VFAS_SOURCE VOLT_1 // select between VOLT_1, VOLT_2, VOLT_3 , VOLT_4, VOLT_5 , VOLT_6, ADS_VOLT_1, ADS_VOLT_2, ADS_VOLT_3, ADS_VOLT_4
//#define FUEL_SOURCE ADS_VOLT_1 // select between VOLT_1, VOLT_2, VOLT_3 , VOLT_4, VOLT_5 , VOLT_6, ADS_VOLT_1, ADS_VOLT_2, ADS_VOLT_3, ADS_VOLT_4
//#define A3_SOURCE ADS_VOLT_1 // select between VOLT_1, VOLT_2, VOLT_3 , VOLT_4, VOLT_5 , VOLT_6, ADS_VOLT_1, ADS_VOLT_2, ADS_VOLT_3, ADS_VOLT_4
//#define A4_SOURCE ADS_VOLT_3 // select between VOLT_1, VOLT_2, VOLT_3 , VOLT_4, VOLT_5 , VOLT_6, ADS_VOLT_1, ADS_VOLT_2, ADS_VOLT_3, ADS_VOLT_4
//#define ACCX_SOURCE TEST_1 // select between TEST_1, TEST_2, TEST_3, GLIDER_RATIO , SECONDS_SINCE_T0 ,AVERAGE_VSPEED_SINCE_TO , VOLT_1, VOLT_2, VOLT_3, VOLT_4, VOLT_5, VOLT_6, PITCH, ROLL , YAW, ADS_VOLT_1, ADS_VOLT_2, ADS_VOLT_3, ADS_VOLT_4
//#define ACCY_SOURCE TEST_2 // select between TEST_1, TEST_2, TEST_3, GLIDER_RATIO , SECONDS_SINCE_T0 ,AVERAGE_VSPEED_SINCE_TO , VOLT_1, VOLT_2, VOLT_3, VOLT_4, VOLT_5, VOLT_6, PITCH, ROLL , YAW, ADS_VOLT_1, ADS_VOLT_2, ADS_VOLT_3, ADS_VOLT_4
//#define ACCZ_SOURCE TEST_3 // select between TEST_1, TEST_2, TEST_3, GLIDER_RATIO , SECONDS_SINCE_T0 ,AVERAGE_VSPEED_SINCE_TO , VOLT_1, VOLT_2, VOLT_3, VOLT_4, VOLT_5, VOLT_6, PITCH, ROLL , YAW, ADS_VOLT_1, ADS_VOLT_2, ADS_VOLT_3, ADS_VOLT_4
//#define T1_SOURCE TEST_1 // select between TEST_1, TEST_2, TEST_3 , GLIDER_RATIO , SECONDS_SINCE_T0 ,AVERAGE_VSPEED_SINCE_TO , SENSITIVITY, PPM, VOLT_1, VOLT_2, VOLT_3, VOLT_4, VOLT_5, VOLT_6, ADS_VOLT_1, ADS_VOLT_2, ADS_VOLT_3, ADS_VOLT_4
//#define T2_SOURCE TEST_2 // select between TEST_1, TEST_2, TEST_3, , GLIDER_RATIO, SECONDS_SINCE_T0 ,AVERAGE_VSPEED_SINCE_TO , SENSITIVITY, PPM, VOLT_1, VOLT_2, VOLT_3, VOLT_4, VOLT_5, VOLT_6, ADS_VOLT_1, ADS_VOLT_2, ADS_VOLT_3, ADS_VOLT_4
//#define CURRENTMA
//#define SEND_mAhAsDist
#define SendCurrent
#define ForceAbsolutCurrent
#define SEND_mAhAsDist


die letzteren Einträge habe ich aus, glaube ich, veralteten Quellen. Aber auch da: ob mit oder ohne ... kein Unterschied.

In meiner Taranis wird der Current-Sensor ordnungsgemäß gefunden.

Da ich noch andere Sensoren (Lipo und RPM) verbaut habe, dachte ich zunächst an einen Konflikt der IDs. Aber da der Sensor gefunden wird ...

Help ;)
Gruß
Christian
 
Mit #define MVOLT_AT_ZERO_AMP 2500 // in millivolt sagst du oXs, dass erst ab 2,5V ein Strom fließt. Ist dein ACS bidirektional? Miss mal mit dem Voltmeter, welche Spannung bei 0A am Ausgang des ACS anliegt. Wenn du kein Voltmeter greifen kannst, stellt um auf #define MVOLT_AT_ZERO_AMP 100, dann solltest du einen falschen Stromwert sehen, aber mit dem kannst du rückwärts den richtigen Offset berechnen. Stell den Wert einfach hier ein. Wenn nix kommt, ist vermutlich etwas falsch verdrahtet.

Die FrSky Telemetrie kennt keinen negativen Strom, deswegen muss man auf den richtigen Anschluss am ACS achten, aber das siehst du, wenn #define MVOLT_AT_ZERO_AMP 100 aktiv ist, wenn dann der Stromwert niedriger statt höher wird .....
 
-2,5V aber nur gegen Plus gemessen, hoffe ich ;) Ist da etwas verpolt? :eek: Lass den zu messenden Strom mal andersrum fließen.
 
Wenn du -2,5V gegen Masse misst, ist etwas ganz Schräges passiert. Kannst du mal ein Bild der kompletten Verdrahtung einstellen?
 
Du kannst das schreiben, wenn ich das schreibe, bin ich wieder das @rschloch :D
 
Status
Nicht offen für weitere Antworten.
FPV1

Banggood

Oben Unten