OXSENS openXsensor mit HOTT Protokoll, erste Tests

Habe heute mal ein APM Power Modul getestet. Die gibt es recht günstig und habe alles was man braucht.
Leider ist die Strommessung schrecklich ungenau.

PowerModulStrom.jpg

Ich kann leider nur bis 15A belasten, mehr gibt meine Stromsenke nicht her, dennoch ist die Abweichung schon sehr deutlich zu sehen.
Das Modul ist bereits auf einen kleineren Messbereich umgebaut, da die Auflösung der original 90A alles noch schlimmer macht. Messbereich liegt jetzt bei 50A, entspricht etwa 21mV/A in meiner Auslegung mit Vref 1,1V. Der Messwiderstand wurde auf 0,001 Ohm geändert, original sind es 0,0005 Ohm. Leider ist es nicht einmal möglich, eine Skalierung vorzunehmen, wie es bei der Spannungsmessung der Fall ist, die Eingaben an der Stelle bleiben wirkungslos.

Das kann man doch sicher irgendwie verbessern?
 

Anhänge

Hallo,

mit diesen Parametern müsste es doch hinzubiegen sein:

// ***** 6.4 - Current parameters *****
//#define PIN_CURRENTSENSOR 3
#define MVOLT_AT_ZERO_AMP 2500 // in millivolt
#define MVOLT_PER_AMP 60 // in milliVolt per Amp
#define RESISTOR_TO_GROUND_FOR_CURRENT 19.8 // put as comment or set to 0 if no divider is used
#define RESISTOR_TO_CURRENT_SENSOR 39 // put as comment or set to 0 if no divider is used
 
Hallo,

mit diesen Parametern müsste es doch hinzubiegen sein:

// ***** 6.4 - Current parameters *****
//#define PIN_CURRENTSENSOR 3
#define MVOLT_AT_ZERO_AMP 2500 // in millivolt
#define MVOLT_PER_AMP 60 // in milliVolt per Amp
#define RESISTOR_TO_GROUND_FOR_CURRENT 19.8 // put as comment or set to 0 if no divider is used
#define RESISTOR_TO_CURRENT_SENSOR 39 // put as comment or set to 0 if no divider is used
Leider nicht, mit Skalierung und Offset würde es hingegen ganz gut gehen!
 
Habe das mal mit Excel nachgerechnet... Wenn ich das Messergebnis in mV *0,868+0,4 rechne, dann passt das Endergebnis am besten. Wo muss das denn jetzt hin?
 
Ich sehe das so:

der Offset wird hier definiert:
#define MVOLT_AT_ZERO_AMP 2500 // in millivolt

die Skalierung hier:
#define MVOLT_PER_AMP 60 // in milliVolt per Amp

das heißt, du musst wissen, wieviel mV bei 0 Ampere anliegen und wieviel mV je Ampere der Sensor bringt. Bin jetzt zu faul zum Rechnen, aber du hast ja alle Werte.
 
Ich sehe das so:

der Offset wird hier definiert:
#define MVOLT_AT_ZERO_AMP 2500 // in millivolt

die Skalierung hier:
#define MVOLT_PER_AMP 60 // in milliVolt per Amp

das heißt, du musst wissen, wieviel mV bei 0 Ampere anliegen und wieviel mV je Ampere der Sensor bringt. Bin jetzt zu faul zum Rechnen, aber du hast ja alle Werte.
Stimmt, du hast recht! So geht es doch, ist aber etwas umständlich. Habe jetzt eine ganze Weile gebraucht, bis das passte.
 
Wenns einfach wäre, könnts ja jeder;)

Aber eig. misst du nur 1x die Spannung am Sensorausgang bei 0A, dann bei z.B. 10A, rechnest die mV pro Ampere aus und gibst beides ein. Welche Werte hast du jetzt in der config?

Die Referenzspannung hat, glaube ich, auch noch Einfluss auf die Messung, vielleicht kannst du das mal testen - ich hab keinen Stromsensor im Einsatz. Das ist die Spannung am 5V Anschluss, wenn du über den internen Spannungsregler gehst, bzw. die Versorgungsspannung.

// ***** 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
//#define USE_EXTERNAL_REFERENCE // uncomment this line if you use an external reference instead of Vcc
#define REFERENCE_VOLTAGE 4970 // set value in milliVolt; if commented, oXs will use or 1100 (if internal ref is used) or 5000 (if internal ref is not used)
 
Nun, 0A=0mV , so einfach ist es nicht. Errechnet hatte ich 21,8mV/A, mit der Eingabe 21mV/A, habe ich dann folgendes gemessen:

HTML:
 A Ist	Mess. A	 mV/A
0	 0	
1,00	 0,7	 14,70
2,00	 1,8	 18,90
2,99	 2,9	 20,37
4,02	 4,1	 21,42
5,03	 5,3	 22,13
6,05	 6,5	 22,56
7,06	 7,6	 22,61
8,09	 8,9	 23,10
9,11	 10	 23,05
10,12	 11,2	 23,24
12,17	 13,5	 23,29
15,21	 17,1	 23,61
Mit -8mV Offset und 23,9mV/A habe ich nun brauchbare Ergebnisse bis 15A, höher messen geht gerade nicht. Lediglich unterhalb von 1A stimmt die Messung nicht wirklich, das ist für mich akzeptabel. Muss das mal anständig verexceln... :rolleyes:
 
Nun, 0A=0mV , so einfach ist es nicht.
Hab ich ja auch nicht geschrieben. Miss doch mal mit dem Multimeter die Ausgangsspannung am angeschlossenen Sensor ohne Stromfluss, das ist dein Offset. Dann miss die Sensorspannung bei einem Strom(1) z.B. 8A und Strom(2) z.B. 15A. Mit (U(2) - U(1)) / (I(2) - I(1)) hast du dann die Skalierung. Wenn du dann noch die genaue Referenzspannung eingibst (gemessen am 5V PIN), sollte alles sofort stimmen.

Müsste so gehen, habs aber selbst noch nicht gemacht, mangels Sensor.
 
Hab ich ja auch nicht geschrieben. Miss doch mal mit dem Multimeter die Ausgangsspannung am angeschlossenen Sensor ohne Stromfluss, das ist dein Offset. Dann miss die Sensorspannung bei einem Strom(1) z.B. 8A und Strom(2) z.B. 15A. Mit (U(2) - U(1)) / (I(2) - I(1)) hast du dann die Skalierung. Wenn du dann noch die genaue Referenzspannung eingibst (gemessen am 5V PIN), sollte alles sofort stimmen.

Müsste so gehen, habs aber selbst noch nicht gemacht, mangels Sensor.
Bei 0A messe ich tatsächlich 0mV, daher kann ich den Offset so nicht bestimmen. Bei geringer Last, BEC+OXs+Empfänger, das sind <100mA, messe ich immer noch 0mV. Habe es dann mit den gemessenen und angezeigten Werten ausgerechnet. So hatte es fast gestimmt, etwas nachkorrigiert und dann war es ok. Das Problem ist also gelöst, ich stand da anfangs wohl etwas auf der Leitung :eek:
 
OK, jetzt hab ichs kapiert. Das ist dann ein Problem des Sensors.

Es gibt einen neuen oXs branch, in den auch die HOTT Änderungen eingepflegt werden. Mstrens hat sehr viele Änderungen gemacht, um den Code einzudampfen. Ist eventuell noch etwas buggy, wenn du Lust und Zeit hast, könntest du den HOTT-Teil testen.

https://github.com/openXsensor/openXsensor/tree/OpenXsensor_newSport
 
https://github.com/openXsensor/openX...ensor_newSport

Die neueste Version (eben online gegangen) erlaubt jetzt die Verwendung von 2 zusätzlichen Variablen im HOTT-Protokoll: Temperatur 1 und Temperatur 2. Mstrens bittet um Tests der neuen Version. Hier die Beschreibung des HOTT-Ausgabeteils mit den automatischen und manuell zu wählenden Ausgaben:

* Measurements being automatically transmitted are :
* - Relative altitude(cm), main vertical Speed(cm/sec) (when at least first baro sensor is present)
* - Cell voltages, lowest cell voltage (when NUMBER_OF_CELLS > 0)
* - up to 3 battery voltages (set up has to specify which voltage measurements are transmitted - E.g. VOLT_1,VOLT_2, ...)
* - Current (when Current sensor is present)
* - GPS (long, lat, speed, altitude , course, distance from home, direction from home, number of sat, type of fix) (when GPS sensor is present)
* - RPM (when RPM sensor is present)
* On top of this, you can also specify how to fill telemetry fields temperature1 and temperature2 (note : those 2 fields can only report a value from -20 up to 235)
* Put those line(s) as comment when no measurement has to be transmitted in those telemetry field(s)
* ex:
* #define BATTERY_1_SOURCE VOLT_4 // select between VOLT_1, VOLT_2, VOLT_3 , VOLT_4, VOLT_5 , VOLT_6
* #define BATTERY_2_SOURCE VOLT_2 // select between VOLT_1, VOLT_2, VOLT_3 , VOLT_4, VOLT_5 , VOLT_6
* #define MAIN_BATTERY_SOURCE VOLT_5 // select between VOLT_1, VOLT_2, VOLT_3 , VOLT_4, VOLT_5 , VOLT_6
* #define TEMPERATURE_1_SOURCE TEST_1 // select between TEST_1, TEST_2, TEST_3 , GLIDER_RATIO , SENSITIVITY
* #define TEMPERATURE_2_SOURCE SENSITIVITY // select between TEST_1, TEST_2, TEST_3 , GLIDER_RATIO , SENSITIVITY
 

Jochen222

Erfahrener Benutzer
Ich bin gerade dabei mal den OpenXsensor auszuprobieren. Auf meiner MS5611 Platine ist auch ein MPU6050 enthalten, deshalb habe ich folgendes in der Config Datei:

#define USE_6050

Damit bekommen ich folgenden Fehler:

openXsensor.ino: In function 'void calculateAllFields()':
openXsensor:893: error: 'yaw' was not declared in this scope
Exception in thread "Thread-186" java.lang.NullPointerException


Lt. Github wurde am 10.4 folgendes geändert:

Bug fix in calculate yaw rate
 
Hallo,

hier ist eine Version vor der YAW-Änderung. Mit der scheint es zu gehen.

Gruß Bernd

Edit: Ich hab das Thema an mstrens weitergeleitet
 

Anhänge

Zuletzt bearbeitet:

kalle123

Jugend forscht ....
Ich bin gerade dabei mal den OpenXsensor auszuprobieren. Auf meiner MS5611 Platine ist auch ein MPU6050 enthalten, deshalb habe ich folgendes in der Config Datei:

#define USE_6050

Damit bekommen ich folgenden Fehler:

openXsensor.ino: In function 'void calculateAllFields()':
openXsensor:893: error: 'yaw' was not declared in this scope
Exception in thread "Thread-186" java.lang.NullPointerException


Lt. Github wurde am 10.4 folgendes geändert:

Bug fix in calculate yaw rate
Bitte stell bei deiner nächsten Frage die verwendete Datei oXs_config.h als zip Datei hier ein, damit man da mal rein schauen kann.
 
Mstrens hat den Fehler gefunden, der aktuelle Master funktioniert jetzt wieder mit HOTT.
 

Jochen222

Erfahrener Benutzer
Hallo,

ich suche noch ein möglichst kleines GPS für den Sensor. Das kleinste was ich gefunden habe mit Ublox Chip ist das schon bekannte "Naze GPS +" für ca. 10Eur (Aliexpress). Hat jemand dazu schon Erfahrungen mit dem Betrieb am OpenXsensor?
Evtl. wäre auch das Beitian BN-880 (Ublox-8 Clone) interessant.
Die kleinen MTK3329/3339 PA6.. dürften ja nicht funktionieren, da der OpenXsensor meines Wissens nach kein NMEA verseteht.
 

kalle123

Jugend forscht ....
Bernd, mein GPS ist gestern angekommen.

Das Modul aus dem Gehäuse raus gelöst (war mit Heißkleber eingepappt) und ein "vernünftiges" Kabel sauber angelötet.

Bin überrascht. Funktioniert wirklich super.

Dank dir für den Tipp. Gruß KH
 

Anhänge

FPV1

Banggood

Oben Unten