Anleitung: Jeti Duplex EX Sensoren selber bauen

Anzeige

Das Jeti Duplex EX System glänzt nicht nur durch seine hohe Zuverlässigkeit, sondern ist auch für sein flexibles Telemetriesystem bekannt. Damit Daten zum Boden gelangen, braucht es Sensoren im Fluggerät. Diese kann man kaufen oder selber bauen. Wir zeigen, wie letzteres funktioniert.

Überblick

Jeti bietet bereits eine Vielzahl passender Sensoren an, die den Großteil der Anwendungszwecke der meisten Modellbauer abdecken sollten. Vor allem wenn es um die Messung hoher DC-Ströme gibt, empfehlen sich sicher die MUI-Sensoren von Jeti.*

Trotz allem gibt es immer wieder Situationen, in denen ein spezieller Sensor von Nöten ist oder ein Selbstbau gleich mehrere Messfunktionen übernehmen und somit Platz und Gewicht sparen kann.
Im Gegensatz zu vielen anderen Sender-Herstellern hat Jeti sich entschieden, dass Telemetrieprotokoll des Duplex EX Systems zumindest in Zügen öffentlich zu machen. Einige Re-Engineering Projekte werden damit zwangsweise hinfällig, auch wenn die Funktion oft auch hier gegeben war. Wer ein wenig im Internet nach selbstgebauten (DYI) Jeti Sensoren sucht, wird viele Projekte in Bezug auf das ältere Jeti Duplex System finden. Diese Codes funktionieren zwar nach wie vor auch mit den EX-Sendern, man verliert aber einiges an Komfort. Diese Anleitung soll sich daher auf das aktuelle Jeti Duplex EX System beziehen.

Jeti Duplex EX DYI Voltage Sensor Einheit Jeti Duplex EX DYI Voltage Sensor Rückseite

Anmerkung:
Diese Anleitung ist in gewisser Weise „Work in Progress“ und wird, sobald neue Erkenntnisse vorliegen, entsprechenden mit datierten Einschüben ergänzt, die mit „Update“ gekennzeichnet sind.

Duplex EX Telemetrie Bibliothek

Bis vor Kurzem wurde an vielen Projekten gleichzeitig gewerkelt, die Sensoren auf Basis der Duplex EX Telemetrie umsetzen. Keines der Projekte brachte allerdings eine Bibliothek mit, mit der man einfacher auf die entsprechenden Funktionen des Protokolls zugreifen kann. Das hat sich nun geändert, denn mit JetiExSensorCppLib des Nutzers „sepp62“ steht nun eine entsprechende Library für die Arduino IDE zur Verfügung, die aktuell aktiv weiterentwickelt zu werden scheint. Eine entsprechende Diskussion dazu findet sich im Jeti-Forum.

Installation der Bibliothek

Nachdem der Download erfolgt ist (aktuell V 0.94), muss die Bibliothek in das Library-Verzeichnis unter C:\Users\<Nutzer>\Documents\Arduino\libraries in seinem Ordner abgelegt werden. Beim nächsten Start der Arduino IDE kann dann direkt auf das enthaltene Sensorbeispiel zugegriffen werden, welches einen soliden Startpunkt, für die eigenen Sensorentwicklung bildet.
Ihr findet das Beispiel unter: Datei -> Sketchbook -> libraries -> JetiExSensor -> Examples -> JetiSensor.
Das Projekt besteht aus drei Dateien:

  • JetiExSensor.ino
  • DemoSensor.cpp
  • DemoSensor.h

Ein kurzer Blick in die letzteren beiden Dateien zeigt, dass es sich hierbei nur um zwei Code-Schnippsel zur Generierung von zufälligen Werten handelt. Zum Testen der Kommunikation zwischen Sender und Empfänger + Sensor (Arduino) ist das Beispiel jedoch bestens geeignet.

Aufbau der Hardware

Zunächst ist einmal nicht mehr nötig, als ein Arduino Pro Mini* / Uno* / Micro sowie ein Duplex EX Empfänger*, der bereits mit einem Jeti Sender gebunden ist.
Der Arduino wird dabei zu nächst über USB / das FTDI* mit Spannung versorgt. Die Spannungsversorgung des Empfängers erfolgt separat über 5 V. Der EX-Bus-Eingang des Empfängers (in unserem Fall ein Jeti RSAT2*) wird mit dem TX-Pin des Arduinos verbunden. Zusätzlich ist noch eine Verbindung gegen Masse (GND) zwischen RSAT2 und Arduino nötig.
Überträgt man nun den Beispiel Sketch auf den Arduino und begibt sich ins Telemetriemenü des Senders, so taucht nach kurzer Zeit der neue Demo-Sensor mit allen seinen Messwerten auf. Diese können zu Testzwecken nun auch auf die Startseite gelegt oder ausgewertet werden.

DYI Jeti EX Bus Spannungssensor in Betrieb DYI Jeti EX Bus Spannungssensor offline

Messen mit dem Arduino

Messungen können über den Arduino entweder direkt, wenn es sich um Spannungen handelt, oder indirekt über zusätzlich angebundenen Sensoren, ausgeführt werden. Wir wollen uns an einem einfachen Beispiel der Spannungsmessung eines LiPo-Akkus orientieren. Dazu soll ein Sensorwert an die den Sender übertragen werden, der die Gesamtspannung des LiPo-Akkus wiedergibt.
Als Grundlage dient das Auslesen einer Spannung an einem der analogen Eingänge des verwendeten Arduino Pro Mini* (A0-A4). Weitere Informationen dazu im Allgemeinen finden sich in den Arduino Tutorials.
Da eine Spannunge über 5 Volt gemessen werden soll, in unserem Fall ein 3S-Pack – also maximal 12,6 Volt -, ist ein Spannungsteiler von Nöten, da der Eingang bei zu hoher Spannung zerstört wird und somit im schlimmsten Fall den gesamten Arduino Controller unbrauchbar macht
Widerstände für einen passenden Spannungsteiler lassen sich einfach mit dem Online-tool von Raltron berechnen. Wer lieber selbst Hand anlegt, kann die folgende Formel verwenden, um die sich ergebende Teilspannung bei Verwendung vorhandener Widerstände zu berechnen:

\(U_{2}=\frac{R_{2}*U}{R_{ges}}\)

Anmerkung: Die verwendeten Widerstände können leicht durch andere ersetzt werden. Wir haben benutzt, was auf Halde war.
In unserem Fall sollen der Einfachheit halber drei 100 KΩ Widerstände zum Einsatz kommen. Zwei davon parallel geschaltet ergeben einen Widerstand von 50 KΩ, allgemein zu berechnen, nach folgender Formel:

\(R_{ges}=\frac{R_{1}*R_{2}}{R_{1}+R_{2}}\)

Zusammen mit der seriellen Schaltung des dritten Widerstands ist der Spannungsteiler vollständig. Die maximale Eingangsspannung von 12,6 V wird so in den zulässigen Messbereich mit 4,2 V „übersetzt“. Der Spannungsteiler hat damit ein Eingang-zu-Ausgangs-Verhältnis von \(\frac{12,6 V}{4,2 V} = 3\). Dieser Faktor wird später zur Umrechnung der Messung im Softwarecode benötigt.
Das folgende Schaltbild zeigt die anschließende Verbindung mit dem Arduino* sowie dem Lipo-Akku. Der Akku sollte dabei erst verbunden werden, wenn der Programmcode fertig gestellt ist, um Kurzschlüsse beim Hantieren und Testen der Schaltung zu vermeiden.

Schaltbild Jeti EX SpannungssensorBildquelle: Erstellt mit Fritzing

Jeti EX Sensor Programmierung

Damit unser Sensor überhaupt etwas macht, ist selbstverständlich eigener Software-Code nötig. Dieser ist im Falle einer Spannungsmessung sehr einfach und leicht verständlich.
Anpassungen können direkt in einer Kopie der „JetiEXSensor.ino“ erfolgen. Zuerst passen wir die Aufzählung am Anfang an. Diese legt fest, wie viele Messwerte der Sensor übertragen soll und wie diese heißen. Uns genügt daher:
enum
{
ID_VOLTAGET = 1,
};

Im darauffolgenden Array wird der Sensor genauer spezifiziert und der oben erstellten ID ein Name und eine Einheit zugewiesen.
JETISENSOR_PTR sensors[] =
{
// id name unit data type precision
new JetiSensor( ID_VOLTAGET, "Total", "V", JetiSensor::TYPE_14b, 2 ),
0 // end of array
};

In der void setup()-Funktion muss lediglich der Name des Sensors angepasst werden. Wir setzten hier beispielsweise:
jetiEx.Start( "LiPo", sensors );
Nun spezifizieren wir uns zwei neue Variablen, die wir zu Spannungsmessung brauchen:
float voltage;
int sensorValue;
const int ratio = 3;
const float correction = 1.05;
float count;

Eine kleine neue Funktion void value() übernimmt die Messung. Zu erst wird die Spannung an A3 ausgelesen. Der Arduino* zerteilt die 5 Volt dabei in 1024 (0-1023) Teile. Die Transformation in Volt erfolgt dabei mit 5.0 / 1023. Zusätzlich muss das Ergebnis für die korrekte Darstellung mit 100 multipliziert werden. Die Abschließende Multiplikation mit der Konstante ratio berücksichtig das Verhältnis unseres Spannungsteilers. Die For-Schleife dient zur Dämpfung von Schwankungen der Messungen. Es wird ein einfacher Durschnitt über zwanzig Messungen gebildet, die jeweils 10 ms auseinander liegen.
void value()
{
for(int x = 0; x < 20; x++){
sensorValue = analogRead(A3);
voltage = sensorValue * (5.0 / 1023.0)*100*ratio*correction;
count = count + voltage;
delay(10);
}
voltage = count / 20;
}

In der Hauptfunktion void loop() wird nun unsere neue Funktion aufgerufen. Zusätzlich wird der Zähler zur Bildung des Mittels nach jedem Durchlauf auf Null gesetzt. Der übrige Teil des Codes bleibt unangetastet:
void loop()
{
value();
jetiEx.SetSensorValue( ID_VOLTAGET, voltage);
count = 0;

HandleMenu();
jetiEx.DoJetiSend();
}
Nachdem der Sketch in den Arduino übertragen wurde und die Messwerte korrekt an den Sender* übertragen werden, macht es Sinn, die neuen Sensordaten auf der Hauptseite anzeigen zu lassen. Jetzt kann das erste Mal ein LiPo* verbunden werden. Der Sensor sollte nun eine Spannung an den Sender übertragen.

Spannungsteiler kalibrieren

Da die verwendeten Widerstände gewissen Fertigungstoleranzen unterliegen, ist es wahrscheinlich, dass das berechnete Spannungsteiler-Verhältnis nicht exakt eingehalten wird. Zur Kalibrierung ist ein möglichst genaues Multimeter* notwendig, welches ebenfalls die Akkuspannung misst. Teilt man nun den Messwert des Multimeters durch den Messwert des Sensors, ergibt sich ein Korrekturfaktor, der mit in den Sketch aufgenommen werden muss. Ist diese Arbeit erledigt, sollten Multimeter und Sensor die gleiche Spannung anzeigen.

Arduino Jeti-Sensor verwenden

Ist die Schaltung fertig aufgebaut, am besten auf einer kompakten Lochrasterplatine, so muss der Sensor noch entsprechend mit dem Empfänger* verbunden werden, sodass der RX ab sofort die Spannungsversorgung übernimmt. Dazu wird lediglich noch der Pluspol des EX-Bus-Eingangs mit dem VCC-Port des Arduino verbunden. Es ist zudem zu empfehlen die analogen Eingänge des Arduino-Boards mit Dioden* vor einer Verpolung zu schützen.

Jeti Duplex EX Spannungsensor AnschlussBildquelle: Erstellt mit Fritzing

Aufwändigere Jeti Sensoren realisieren

Nach dem gleichen Schema lassen sich auch Sensoren bauen, die weitaus mehr Messwerte übertragen. Denkbar ist beispielsweise eine Einzelzellenüberwachung für größere Packs* oder Stromsensoren*, die verschiedene Ströme im Modell messen. Begrenzt wird das Ganze im Endeffekt durch die Eingänge des Arduino-Boards, das zum Einsatz kommen soll.

DYI Arduino Jeti Sensor am Bonsai Wing

Anzeige

Bildquellen

  • Schaltbild Jeti EX Spannungssensor: Erstellt mit Fritzing
  • Jeti Duplex EX Spannungsensor Anschluss: Erstellt mit Fritzing
Nils Waldmann

Nils Waldmann

...studierter Wirtschaftsingenieur und Wirtschaftsinformatiker, leidenschaftlicher Modellbauer, Hobby-Fotograf, Akku-Liebhaber und freier Redakteur bei dem Computer-Onlinemagazin Allround-PC.com.

19 Gedanken zu „Anleitung: Jeti Duplex EX Sensoren selber bauen

  • 30. April 2016 um 10:27
    Permalink

    Hallo
    Könntest du bitte mal das koplette Programm aufschreiben bitte.
    Am besten das ich zwei verschieden Spannungen messen kann.
    Danke im vorraus.

    Antwort
    • Nils Waldmann
      1. Mai 2016 um 19:10
      Permalink

      Hi,
      eigentlich ist der gesamte Code ja in der Anleitung enthalten. Ich versuche die Tage noch einmal etwas zu basteln. Theoretisch musst du, nachdem du dir die Bibliothek geladen und installiert hast, nur den obigen Code anpassen. Einen neuen Sensor hinzuzufügen ist ja kein Problem.

      Grüße!

      Antwort
  • 2. Mai 2016 um 18:07
    Permalink

    Zwei verschiedene Spannungen mit ein Adruino minni Bord messen unde das ganze als .ino file und allles waäre gut.
    Brauche auch kein EX sein.
    3 Spannungen währen noch besser wens nicht zu viele umstände macht.
    Danke im vorraus leider ist mir die gabe des Programieren nicht gegeben

    Antwort
    • Nils Waldmann
      2. Mai 2016 um 18:40
      Permalink

      Hallo Oliver,
      die Gabe wird den wenigsten mit in die Wiege gelegt. Probieren führt aber meist zum Erfolg. D.h. du willst einfach drei Spannungen messen? Ohne Jeti-Protokoll? Was hast du denn genau vor? So ist das ein wenig schwierig. :)

      Grüße

      Antwort
  • 3. Mai 2016 um 19:49
    Permalink

    Ich möchte die Spannung von 2 Lipos messen sind 2S Lipos.

    Antwort
  • 3. Mai 2016 um 19:51
    Permalink

    Doch sollte Jeti sein nur brauch es kein EX Protokoll sein.

    Antwort
  • 14. September 2017 um 21:15
    Permalink

    Hallo,
    ich habe so ungefähr null Ahnung von Spannungsteilern und Elektronik was müsste ich für Widerstände benutzen für 4s und 6S Akkus und muss ich im Sketsch dann nur die 3 jeweils in 4und 6 tauschen?

    tolle Arbeit was du hier beschrieben hast

    schon mal danke für die Antwort in voraus

    Gruß Nils

    Antwort
    • Nils Waldmann
      20. September 2017 um 21:52
      Permalink

      Hallo Nils,

      für 4S und 6S Akkus musst du dann natürlich auch vier bzw sechs Spannungen überwachen, d.h. du musst den Sensor Sketch so anpassen, dass vier bzw. sechs analoge Eingänge überwacht werden. Der Spannungsteiler muss dann für jeden Ausgang so berechnet werden, dass die maximale Spannung von 5 Volt pro Eingang nicht überschritten wird.

      Grüße,
      Nils

      Antwort
  • 19. September 2017 um 18:55
    Permalink

    Hallo,

    wäre es möglich einen funktionierenden Sketch zu bekommen irgendwie klappt es schon beim Kompilieren nicht?

    Gruß Nils

    Antwort
    • Nils Waldmann
      20. September 2017 um 21:53
      Permalink

      Hallo Nils,
      ich schaue mal nach, ob ich dazu was finde. Kann aber noch einige Tage dauern, hab aktuell viel um die Ohren.

      Grüße,
      Nils

      PS: Sketch per Mail senden ist okay?

      Antwort
      • 29. September 2017 um 11:48
        Permalink

        per Mail ist ok und wäre absolut super bin am verzweifeln!

        Antwort
        • Nils Waldmann
          3. Oktober 2017 um 19:35
          Permalink

          Hi Nils,

          ist raus. Zur Not auch mal Junk-Ordner checken, wegen des Anhangs.

          Grüße,
          Nils

          Antwort
  • 27. September 2017 um 10:39
    Permalink

    Hallo Nils,
    tolle Seite…aber ich kriege es nicht hin… Ich habe den Beispiel-Sketch auf den Arduino gespielt, TX mit dem D-Ext des RSAT-2 verbunden, aber es werden keine Sensoren auf dem Sender angezeigt unter Stoppuhren/Sensoren->Sensoren/Aufzeichnung. Irgendwas scheint mir zu fehlen…
    Der Arduino sendet Daten, das habe ich mir mit einem FTDI-Kabel angesehen. In der Jeti-Anleitung steht, dass die Sensoren beim Binden des Empfängers eingebunden werden, aber da steckt ja der Bind-Plug?
    Hast Du eine Idee?
    Viele Grüße
    Andreas

    Antwort
    • Nils Waldmann
      3. Oktober 2017 um 19:31
      Permalink

      Hallo Andreas,
      es ist zugegebnermaßen schon etwas her, dass ich mir einen Sensor gebastelt habe. Mit dem Binden hat das aber nichts zu tun. Natürlich müssen RSAT und Jeti TX gebunden sein, aber das ist ja selbstverständlich. Die Sensoren wurden bei mir direkt erkannt und ohne Probleme aufgelistet. Hast du es mal mit dem unbearbeiteten Demo-Sketch aus der Bibliothek probiert? Wenn der nicht läuft, dann stimmt etwas mit deiner Verbindung nicht.

      Grüße,
      Nils

      Antwort
    • 5. Oktober 2017 um 22:01
      Permalink

      Andreas der Bindplug muss nur zum Binden des Empfängers drin stecken danach kannst du den Abziehen und einfach den Sensor einstecken der wird normal nach kurzer zeit Automatisch bei Sensoren/Aufzeichnung als Lipopack Angezeigt.

      Gruß Nils

      Antwort
  • 5. Oktober 2017 um 21:47
    Permalink

    Hallo Nils,

    mit der Jeti library 0.94 klappt es perfekt die Gesamtspannung anzuzeigen! Nochmal danke für die Mühe und den Sketch! Ist in dem Sketch sehr viel zu ändern um 4S Spannungen anzuzeigen habe fast nur 4s Akkus?

    Gruß und nochmal Danke Nils

    Antwort
  • 17. Oktober 2017 um 23:03
    Permalink

    Hallo Nils,
    ich versuche mich gerade in den Sensoreigenbau eizuarbeiten und habe deine Anleitung gefunden. Leider ist es für mich neuling sehr schwer zu verstehen. Hast du für mich die .ino als fertige Datei damit ich mit dieser deine Anleitung nachvolziehen kann.
    Grüße
    Fabian

    Antwort
  • 18. November 2017 um 23:21
    Permalink

    Hallo Nils,
    eine sehr schöne Anleitung und gut und verständlich erklärt!
    Ich habe Deine Änderungen – glaube ich- sehr sorgfältig übertragen. Leider gibt es ein Kompilierungsproblem.
    Im:
    void loop()
    {
    value(); bleibt mein Rechner hier hängen, weil “ ‚value‘ was not declaired in this scope“.

    Ich glaube ich könnte die Arduino-Datei (*.ino) auch als fertige Datei gut gebrauchen. Gerne per Mail.

    Vielen Dank Gruß
    Frank

    Antwort
    • Nils Waldmann
      19. November 2017 um 12:11
      Permalink

      Hallo Frank,
      kein Problem. Schicke ich dir an deine hinterlegte Mail-Adresse. Noch als Hinweis: Bereits vor ein paar Wochen ist in den Kommentaren aufgefallen, das meine Anpassungen des Sketches nur mit der entsprechenden Version der API zu funktionieren scheinen. Lade dir also mal genau die von mir im Text angegeben Version der Arduino Library runter und teste erneut.

      Viele Grüße,
      Nils

      Antwort

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.