OXSENS OPenXsensor: Ein schneller Einstieg

Klingt eher nach oXs config. Richtiger Spannungsslot bei A4 angegeben (Volt_1-6)? Spannungsteiler und Scale Voltage korrekt und mit Dezimalpunkt?
 
So sieht das bei mir aus (Advanced):
#define PIN_VOLTAGE 6 , 8 , 8 , 8 , 8 , 8
#define RESISTOR_TO_GROUND 4.7 , 0 , 0 , 0 , 0 , 0
#define RESISTOR_TO_VOLTAGE 8.2 , 0 , 0 , 0 , 0 , 0
#define OFFSET_VOLTAGE 0 , 0 , 0 , 0 , 0 , 0
#define SCALE_VOLTAGE 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0

Und in der Basic:
#define A4_SOURCE VOLT_1
 
Sieht gut aus. Dann grenzen wir mal weiter ein. A4 habe ich nie benutzt, geh mal probehalber auf VFAS und setze beide Spannungsteilerwerte auf 1, dann siehst du die tatsächlich an A6 anliegende Spannung. Wenn nichts kommt, hast du ein Hardwareproblem.
 
Hab das ganze mit drei Arduino's durchgespielt. Der Sensor wird im Open TX angezeigt jedoch weiterhin mit den 0,00 Volt.
Anscheinend wird der Volt_1 Wert an Pin 6 nicht korrekt interpretiert.

Frage nebenbei: Inwiefern sind die Leerzeichen zwischen den einzelnen Werten (Advanced>6.2 Voltage parameters) relevant?
 
Hast du mal VFAS anstelle A4 zur Übermittlung in der basic eingetragen?
Volt_1 an Pin A(!)6 habe ich schon dutzende Male verwendet, das geht definitiv.
Die Anzahl der Leerzeichen spielen keine Rolle. Wichtig ist nur der Dezimalpunkt und das Komma zwischen den einzelnen Spalten.
 

kalle123

Jugend forscht ....
Du solltest vielleicht mal eine Referenzspannung aktivieren ;)

// ***** 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 // set value in milliVolt; if commented, oXs will use or 1100 (if internal ref is used) or 5


Gruß und schönen Sonntag noch - KH

Vielleicht noch ein Tipp. Nimm doch den Configurator, dann werden die config Dateinen sehr viel übersichtlicher. So kann es passieren, dass man vor lauter Bäumen den Wald nicht mehr sieht.
 

kalle123

Jugend forscht ....
Hier mal als Beispiel.

Bin gerade an dem hier dran (der Stromsensor muss noch abgeglichen werden) :)

#ifndef OXS_CONFIG_BASIC_h
#define OXS_CONFIG_BASIC_h


#define PROTOCOL FRSKY_SPORT
#define VFAS_SOURCE VOLT_1
#define FIRST_BARO_SENSOR_USE MS5611
#define VSPEED_SOURCE FIRST_BARO
#define AIRSPEED_SENSOR_USE NO_AIRSPEED
#define ARDUINO_MEASURES_VOLTAGES YES
#define NUMBEROFCELLS 0
#define ARDUINO_MEASURES_A_CURRENT YES
#define AN_ADS1115_IS_CONNECTED NO
#define CALCULATE_RPM NO
#define SAVE_TO_EEPROM NO
#define A_GPS_IS_CONNECTED NO
#define A_MPU6050_IS_CONNECTED NO
#define CALCULATE_YAW_WITH_HMC5883 NO
#define A_FLOW_SENSOR_IS_CONNECTED NO
#define A_LOCATOR_IS_CONNECTED NO
#endif



#ifndef OXS_CONFIG_ADVANCED_h
#define OXS_CONFIG_ADVANCED_h

#define PIN_SERIALTX 4
#define DATA_ID_VARIO 0x00
#define DATA_ID_FLVSS 0xA1
#define DATA_ID_FAS 0x22
#define DATA_ID_GPS 0x83
#define DATA_ID_RPM 0xE4
#define DATA_ID_ACC 0x67
#define DATA_ID_TX 0x0D
#define SECOND_BARO_SENSOR_USE NO_BARO
#define SENSITIVITY_MIN 80
#define SENSITIVITY_MAX 300
#define SENSITIVITY_MIN_AT 100
#define SENSITIVITY_MAX_AT 1000
#define VARIOHYSTERESIS 5
#define REFERENCE_VOLTAGE 4920
#define PIN_VOLTAGE 0 , 8 , 8 , 8 , 8 , 8
#define RESISTOR_TO_GROUND 33.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0
#define RESISTOR_TO_VOLTAGE 56.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0
#define OFFSET_VOLTAGE 45.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0
#define SCALE_VOLTAGE 1.0 , 1.0 , 1.0 , 1.0 , 1.0 , 1.0
#define PIN_CURRENTSENSOR 1
#define MVOLT_AT_ZERO_AMP 2460.0
#define MVOLT_PER_AMP 100.0
#define RESISTOR_TO_GROUND_FOR_CURRENT 0.0
#define RESISTOR_TO_CURRENT_SENSOR 0.0
#endif
 

kalle123

Jugend forscht ....
Sensor wird erkannt (A4, ID 226) Spannung über den Spannungsteiler am Pin 6 4,4 Volt.
Hmm, hier mal die config's aus dem Configurator.
... und jetzt hast du das hier aktiviert als Referenzspannung??

#define USE_INTERNAL_REFERENCE

In der ersten config von dir war keine der drei Referenzen aktiviert und jetzt das?

'- Uncomment the "#define USE_INTERNAL_REFERENCE" to activate the 1.1 internal voltage reference (otherwise, measurements will be based on VCC).'

Du gibst zuerst gar keinen Bereich vor und jetzt 1.1V und damit willst du die 4.4V messen?

Fraglich, wie die Arduinos das überstehen .....

Gruß KH

Nimms nicht zu tragisch. Ich bin schon recht lange bei oXs und auch mir passieren Fehler. Ich hab gestern zum 1. mal den Configurator aktiv zur Einstellung benutzt. Ansonsten über die Jahre immer händisch. Hab eine Kleinigkeit übersehen und 2 Stunden nach dem Fehler gesucht :)



 
Selbst mit der auskommentierten Zeile lief es nicht. Ausgang des Spannungsteilers auf Pin 7 (entsprechen in der config geändert) wird der Sensor angezeigt, jedoch ohne Spannung. Das ich beide Eingänge fritiert hab kann ich mir nicht vorstellen. Eingang 7 wurde von mir noch nicht genutzt. Und das die Spannung übergeschlagen ist, fällt mir schwer zu glauben.
 

kalle123

Jugend forscht ....
Du hast einen 5V Arduino oder einen 3.3V?

Was mir noch einfällt. In der Arduino IDE findet sich unter Beispielen AnalogInOutserial



Einfach den sketch aufspielen und mit deinen 4.4V testen.

Output 255 entspricht 5V, 0 dann 0V. Da kannst du doch abschätzen, ob was ankommt.

cu KH
 
Zuletzt bearbeitet:
Es ist ein 5 Volt Arduino.
Das mit Sketch ist interessant. Jedoch muss ich ja den Eingang ändern (z.Zt. Pin 7)
Wie verhält es sich, wenn ich meinen Akku mit anschließe? Minus auf Ground und Plus an den Spannungsteiler. Anders geht es ja dann nicht.
 

kalle123

Jugend forscht ....
Du betreibst deinen Arduino mit der IDE. Bei UNO oder Nano per USB Kabel, beim Pro Mini halt mit nem USB Uart dazwischen.

Akku GND und + zum Spannungsteiler und GND auch zum Arduino. Ausgang Spannungsteiler dann zum im sketch ausgewählten Ax port. Kannst du doch frei im sketch einstellen. Ausgabe dann im Terminal der Arduino IDE.

cu KH
 
Hallo Zusammen,
Frage zu den Feinheiten des S.Port Protokolls, Zeichenkette 0x7E ... usw.
Wie ist im Protokoll ein "Sensor Lost" gekennzeichnet, d.h. daß der Wert "eingefroren" ist ?
Es muß wohl eine Routine im Empfänger sein, welche die Telemetriedaten eines bestimmten Sensors kennzeichnet, wenn dieser mal auf den Empfänger nicht antwortet.
Wie sieht diese Kennzeichnung aus?
Ein einfacher Timeout des OTX im Sender kann es nicht sein, es können immer Werte länger konstant bleiben.
 
Wie ist im Protokoll ein "Sensor Lost" gekennzeichnet, d.h. daß der Wert "eingefroren" ist ?
Gar nicht. Der SPort fragt einfach alle Sensoren der Reihe nach ab und bekommt eine Antwort oder auch nicht.
"Sensor Lost" wird getriggert, wenn OpenTX 10s lang keine Sensordaten für einen Sensor bekommt.
Die BEC-Spannung ist oft den ganzen Flug "eingefroren", aber das ist irrelevant für "Sensor Lost".
Man darf sich nicht durch das Logfile irritieren lassen, denn OpenTX hält einfach den letzten erfolgreich übertragenen Sensor-Wert. Das gilt auch für die Anzeige der Werte.
Die einzige Möglichkeit zu sehen, ob regelmäßige Datenaussetzer < 10s vorkommen, sind die "Sternchen" beim Sensor.
 

actron

Well-known member
Hallo Ewald

das ist je nach Sensor Hersteller und Typ unterschiedlich.

pollaufruf:
1 0x7E
2 ID mit CRC verknüpft
3 ID mit CRC verknüpft


Sensorantwort:
1 type 0x10
2 sensor id
3 sensor id
4 daten0..daten n (max 8. bytes) mit escchar für 0x7d / 0x7e
n CRC

Dateninhalt max. 8bytes mit escchar
wenn databyte 0x7d/0x7e
dann databyte = 0x20 xor databyte

Entweder der Sensor behält seinen aktuellen Wert bei "datahold"
oder
der Sensor antwortet mit "leerem" packet und einer falschen CRC
damit der Empfänger einen falschen wert erkennt.
Frsky Sensoren antworten mit "leerem" Packet

Gruß Mike
 
FPV1

Banggood

Oben Unten