OpenTX - Multiplex MLINK Konverter

eisi

Vereinsmitglied
Tach zusammen,

@Reinhardt: vielen Dank für Deine Tests. Schön - ich hoffe Du hast Dich beim Radfahren erholen können.
Danke für Deine Arbeit. Ich versuche Deiner Erklärung folgen zu können. Danke das es Dich als Spezialist gibt. Ich freue mich schon auf das finale Ergebnis.

Gruß
Frank
 

kalle123

User
Frank, du weißt aber, dass ein voll funktionierender Konverter schon da ist?!
Geh mal hier im thread auf Seite 1.
cu KH
 
Frank, du weißt aber, dass ein voll funktionierender Konverter schon da ist?!
Geh mal hier im thread auf Seite 1.
cu KH
Genau, es gibt schon einen funktionierenden Konverter, der mit der Arduino IDE erstellt wurde.
Wer also eine Lösung braucht, die schon fertig verfügbar ist, sollte sich mit dem Teensy Projekt befassen.

Ich wollte einen Konverter direkt in C programmieren, der auf einem verbreiteten µC läuft.
Ich habe den Konverter daher für den ATmega 328P geschrieben , der auch in einigen Arduino Boards (und Klons) verbaut ist.
Als IDE nutze ich das Atmel Studio 7.

Außerdem wollte ich das Programm genau auf meine Bedürfnisse zuschneiden, und später auch leicht erweitern können.
Das geht aber eigentlich nur, wenn man es selbst programmiert hat (und Spaß macht es außerdem :)).

Mein Projekt ist keinerlei Konkurrenz zu dem existierenden Teensy basierten Konverter, der der Startpunkt für diesen Thread hier im RCN war.


Gruß
Reinhardt

P.S.: Es läuft schon fast alles so wie ich mir das vorstelle. ;)
 

gruni

User
Genau, es gibt schon einen funktionierenden Konverter, der mit der Arduino IDE erstellt wurde.
Wer also eine Lösung braucht, die schon fertig verfügbar ist, sollte sich mit dem Teensy Projekt befassen.

Ich wollte einen Konverter direkt in C programmieren, der auf einem verbreiteten µC läuft.
Ich habe den Konverter daher für den ATmega 328P geschrieben , der auch in einigen Arduino Boards (und Klons) verbaut ist.
Als IDE nutze ich das Atmel Studio 7.

Außerdem wollte ich das Programm genau auf meine Bedürfnisse zuschneiden, und später auch leicht erweitern können.
Das geht aber eigentlich nur, wenn man es selbst programmiert hat (und Spaß macht es außerdem :)).

Mein Projekt ist keinerlei Konkurrenz zu dem existierenden Teensy basierten Konverter, der der Startpunkt für diesen Thread hier im RCN war.


Gruß
Reinhardt



P.S.: Es läuft schon fast alles so wie ich mir das vorstelle. ;)

Hallo Reinhard,

brauchst Du noch ein Jeti oder Hott-Equippment zum proggen?
Vielleicht gelingt Dir die Umsetzung der Protokolle, daß wäre super. TG2-Modul, Jeti 6erRX oder Sat und ein UNISENSE kann ich mal testhalber beisteuern. Ich glaube nämlich, daß ich dieses Jahr zu nix mehr komme diesbezüglich.

Grüsse und Dank für die Alternativ-Route, Grüsse aus Holland, Gruni
 
Hallo Reinhard,

brauchst Du noch ein Jeti oder Hott-Equippment zum proggen?
Vielleicht gelingt Dir die Umsetzung der Protokolle, daß wäre super. TG2-Modul, Jeti 6erRX oder Sat und ein UNISENSE kann ich mal testhalber beisteuern. Ich glaube nämlich, daß ich dieses Jahr zu nix mehr komme diesbezüglich.

Grüsse und Dank für die Alternativ-Route, Grüsse aus Holland, Gruni
Hallo Gruni,

ich fürchte, ich muss Dich enttäuschen.
Meine Freizeit ist mit dem M-Link Konverter schon gut ausgelastet, und jetzt geht ja auch die Flugsaison los.
(Fliegen kommt bei mir eh zu kurz. :cry:)

Wenn der Konverter mal soweit fertig ist, werde ich aber gerne den Source Code zur Verfügung stellen.
(und meinen Support hier im Forum ;))
Dieser ist modular aufgebaut, und er kann sicher ganz gut als Basis für einen anderen Konverter dienen.
Das FrSky Interface Modul z.B. kann praktisch unverändert übernommen werden.
Das Hauptprogramm wohl ebenfalls, da es nur den übergeordneten Programmablauf abbildet.
M-Link Interface müsste neu für Jeti/HoTT gemacht und das eigentliche Berechnungsmodul entsprechend angepasst werden.


Gruß
Reinhardt
 
Hallo Reinhardt,
Dürfen wir dein Programm mal testen?
In meiner X9e mit Hfmg1 muß ich den Teensy per Taster immer noch trennen. Deine Option wäre für das Hfmg1 daher sehr interessant!
Lg Roland
 
Hallo Roland,

klar könnt Ihr demnächst testen.
Ich will noch einige Kleinigkeiten abschließen (z.B. was passiert, wenn der Empfänger ausgeschaltet und wieder eingeschaltet wird).
Dann stelle ich gerne ein ladbares File zur Verfügung zum testen (für den ATmega 328P).
Den Source Code gibt es dann, wenn ich die Kommentierung einigermaßen abgeschlossen habe.

Da ich mit Atmel Studio arbeite und das Programm mit dem Atmel ISP Programmer lade, erstelle ich normalerweise ein File im Intel Hex Format.
Kannst Du das in Dein Board laden?

Und nicht vergessen: Beim ATmeg328P kann man das Ausgangssignal des HW USART nicht per SW invertieren.
Man benötigt also zur Ansteuerung der Taranis den Transistorinverter.

Ich gebe Bescheid, wenn ich soweit bin.


Gruß
Reinhardt
 
Hallo zusammen,

ich habe jetzt den Konverter in einer ersten Version soweit fertig, dass er das tut, was ich in der ersten Ausbaustufe wollte. :)
Er überträgt jetzt folgende M-Link Sensorwerte.

LQI (Adresse 1) wird derzeit einfach in den RSSI Wert kopiert.

Empfängerspannung (Adresse 0) wird zur A1 Spannung (Skalierung auf 25,6 V im Sender)

Spannung (Adresse 2) wird zur A2 Spannung (Skalierung auf 25,6 V im Sender)

Des weiteren werden mit passenden IDs übertragen:

Spannung (Adresse 5)
Strom (Adresse 3)
Ladung (Adresse 4)
Höhe (Adresse 6)
Steigrate (Adresse 7)

Ich werde heute Nachmittag ein Intel Hex File hier zur Verfügung stellen, falls jemand den Konverter testen möchte.
(Source Code gibt es natürlich auch, aber ein bisschen später.)
Bis dahin will ich noch ein paar Dinge abtesten, aber jetzt ruft erst mal die (häusliche) Pflicht.
 
Hallo zusammen,

so jetzt ist es also soweit, hier ist eine erste Test Version des Konverters, falls ihn jemand testen möchte.
(Roland, Kalle, Gruni ?)

Controller ist der ATmega328P.
Das M-Link Signal muss an den Pin D2 angeschlossen werden.
Das Taranis Signal kommt am USART Tx Pin (D1) heraus und muss invertiert werden.
(Das geht bei den ATmega Controllern leider nicht per SW.)

Ich stelle auch noch die Header Files für die beiden C Interface Module mit ein.
Daraus sind (auch für Nicht-Programmierer) die verwendeten M-Link Adressen und FrSky Daten IDs ersichtlich.
Den kompletten Source Code gibt es, wie schon gesagt, dann später auf Anfrage natürlich auch.

Wenn jemand testet, würde ich mich natürlich über Rückmeldungen bzgl. evtl. Fehler freuen.
Es dürfen auch gerne Vorschläge gemacht werden, wie man das Teil zukünftig erweitern könnte.

Ich habe die Dateien durch Anhängen von .txt zu Textdateien gemacht, um sie hier hochzuladen.
Das Code File ist im Intel Hex Format.
 

Anhänge

  • frsky_interface.h.txt
    1,8 KB · Aufrufe: 96
  • mlink_interface.h.txt
    2,5 KB · Aufrufe: 102
  • mlink_frsky_v080.hex.txt
    5,4 KB · Aufrufe: 109
Hallo Reinhardt,
Welches board verwendest du? Oder nur den Chip?
Holst du die Versorgungsspannung vom mlink Modul oder der Taranis? Also 3,3v oder 5V?

Kannst du mal Bilder von deinem fertigen Konverter zeigen? Wie groß /klein ist das ganze Teil?
Lg Roland
 
Hallo Roland,

zum Programmieren und Testen habe ich alles mit einem Arduino Uno gemacht,
den ich über einen selbstgebauten Adapter behelfsmäßig an die Taranis angeschlossen habe.
Versorgt wurde das Board von einem eigenen Netzteil über den Stromversorgungsanschluss.

Für die Praxislösung schwebt mir ein Arduino Pro Mini Klon ohne angelötete Stiftleisten vor (16 MHz, 5 V), z.B. so was hier.
Das Teil ist gerade mal 18 x 33 mm groß und man könnte daran leicht die Kabel anlöten.
Vielleicht ließe sich sogar der Inverter darauf irgendwie unterbringen, sind ja nur drei Bauteile.

So ein Board passt in das Batteriefach der Taranis und könnte vom seriellen Port auch mit Strom versorgt werden.
Wie ich das dann nur zweiadrige Kabel zum M-Link Modul leite, weiss ich noch nicht genau.
Am liebsten wäre mir eine interne Lösung ohne außen liegende Kabel, mal sehen, wie das gehen könnte.

Controller ist in jedem Fall ein ATmega 328P, für den ich das Programm auch kompiliert habe.
Dann muss ich mir noch überlegen, wie ich das Teil dann programmiere, da gibt es verschiedene Möglichkeiten.

Eine ganz andere Möglichkeit wäre, den Konverter auf einem Stück Laborkarte/Lochrasterplatine mit normalen Bauteilen aufzubauen.
Da man ja nur zwei I/O Pins braucht, könnte man das relativ leicht realisieren, einschließlich Transistorinverter.
Dann könnte ich auch einen ATmega88 nehmen, von denen ich noch etliche rumliegen habe.
So habe ich das für den PPM/Spektrum Umsetzer gemacht, der in meiner alten MC16/20 zum Steuern von Blade Helis werkelt.

Also für Fotos ist es leider noch zu früh.
 
Ok, ich dachte an Arduino pro mini 3.3v. Dann könnte ich die Spannung vom mlink Modul nehmen. Die entsprechende Verkabelung vom Teensy Konverter könnte ich so gleich weiter verwenden.
Kannst du mir ein einfachen ISP Programmer empfehlen?
Sobald ich einen Programmer habe, möchte ich deine Hex Files testen.
Den passenden Inverter habe ich auch noch auf einem Steckbrett.

Beim Arduino uno kann man den Chip raus nehmen, bei den kleinen Clones leider nicht.
Interessant weil klein wäre natürlich eine eigene Platine mit Chip, Inverter und 2 Steckern.

Planst du noch weitere Sensorwerte hinzuzufügen?

Aktuell nutzte ich den Teensy Konverter. Der funktioniert wunderbar. Trotzdem freue ich mich auch deinen Konverter testen zu können. Danke für die Files!

Lg Roland
 
Hallo Roland,

das Pro Mini mit 3,3 V läuft nur mit 8 MHz, der derzeitige Konverter muss aber zwingend mit 16 MHz laufen,
da sonst der SW UART zum Einlesen der M-Link Daten nicht funktioniert.
Die Versorgung der 16 MHz / 5 V Variante ist kein Problem, da der entsprechende Spannungsregler auf dem Board drauf ist.
Man muss halt die Spannung von der Taranis nehmen.
Ich könnte natürlich mal versuchen, ob der SW UART auch mit 8 MHz hinzukriegen ist, der Rest des Programms ist unkritisch.
Dann könnte ich eines der bei mir rumliegenden Boards nehmen.

Was zusätzliche Parameter angeht, das sollte kein Problem sein.
Es ist halt momentan so programmiert, dass jedem M-Link Parameter eine feste Adresse zugeordnet ist.
Aber es sind ja schon noch ein paar Adressen frei. ;)

Als ISP Programmer benutze ich den Atmel AVRISP mkII.
Der ist halt relativ teuer, es gibt auch billigere Ausführungen, mit denen ich aber keine Erfahrung habe.
 

kalle123

User
Wenn jemand testet, würde ich mich natürlich über Rückmeldungen bzgl. evtl. Fehler freuen.
Es dürfen auch gerne Vorschläge gemacht werden, wie man das Teil zukünftig erweitern könnte.

Reinhardt, falsche Jahreszeit.
Würde ja gerne mal testen, aber auch ein einfacher Test erfordert Zeit. Sprech da aus Erfahrung.
Du schaust ab und zu mal aus dem Fenster?

cu KH
 
Reinhardt, falsche Jahreszeit.
Würde ja gerne mal testen, aber auch ein einfacher Test erfordert Zeit. Sprech da aus Erfahrung.
Du schaust ab und zu mal aus dem Fenster?

cu KH
Mach Dir mal keinen Kopf, Fliegen geht vor, das ist ja klar.
Wobei, wenn ich im Moment aus dem Fenster schaue, ist mir nicht nach Fliegen. :(

Der Haupttest besteht ohnehin darin, dass ich das Teil jetzt baue und in meiner Taranis im praktischen Einsatz teste.
Große Fehler dürften auch nicht drin sein im Programm, einige kleiner Macken habe ich während der Trockentests schon ausgebügelt.
 

kalle123

User
Mach Dir mal keinen Kopf, Fliegen geht vor, das ist ja klar.
Wobei, wenn ich im Moment aus dem Fenster schaue, ist mir nicht nach Fliegen. :(

Wo du Recht hast ...

Na, vielleicht lad ich dein mlink_frsky_v080.hex mal auf nen Uno. Pro mini ist mir zu tüf*te*lig.
Da muss ich ja erst mal suchen, wo MISO und MOSI drauf liegen. ;)
Hab zwar keinen Atmel AVRISP mkII hier, aber ein usbasp wird es auch tun.

Eine Anmerkung dazu, Reinhardt. Wenn du wirklich Mittester suchst, dann solltest du die Hardware (Anschluss, Tools ...)
und den Vorgang des Aufspielens vielleicht etwas ausführlicher schildern. Nicht jedem ist das sooo geläufig.

Wir haben beim MLink Konverter #1 versucht, den "Ball flach zu halten". Halt um Mitstreiter ins Boot zu ziehen.
Waren schon wenige genug.

Gruß KH
 
Eine Anmerkung dazu, Reinhardt. Wenn du wirklich Mittester suchst, dann solltest du die Hardware (Anschluss, Tools ...)
und den Vorgang des Aufspielens vielleicht etwas ausführlicher schildern. Nicht jedem ist das sooo geläufig.
Das ist natürlich ein guter Hinweis, Kalle
Wenn ich einen praxistauglichen Konverter gebaut habe, werde ich das auf jeden Fall nachholen.
Mal sehen, ob ich am Pfingstwochenende dazu komme, die notwendige Hardware zu bestellen.

Was mich eigentlich hauptsächlich interessiert, ist ob die Telemetrieübertragung mit dem HFMG1 auch immer problemlos anläuft.
Da hoffe ich natürlich auf ein Feedback von Roland. ;)

Ansonsten ist das Teil jetzt nicht so kompliziert, dass ich massig Fehler erwarte, ich habe es ja durchaus getestet.
Aber natürlich hat man schon Pferde kotzen sehen.
 
Hallo zusammen,

damit dieser Thread nicht ganz in der Versenkung verschwindet, gibt es schon mal das versprochene Schaltbild.
Wie man sieht, wird bei mir der Konverter über den seriellen Port der Taranis mit Spannung versorgt.
Da die Masse intern ja durchgeschleift sein dürfte, reicht damit zum M-Link Modul ein einadriges Kabel.
Vielleicht kann ich das zum Testen durch die Trainerbuchse fädeln und von außen im M-Link Modul einstecken.
Dann müsste ich erst mal nichts bohren, um das Kabel ganz im Inneren verschwinden zu lassen.

Außerdem ist am Samstag die bestellte Hardware eingetroffen.
Mal sehen, wenn ich das kleine Proto-Board auf das Pro Mini aufstecke, ob das dann noch ins Batteriefach passt.
Dann könnte man sehr elegant den Inverter integrieren und das ganze auch noch absteckbar machen, z.B. um die Firmware zu ändern.

Das Adafruit Trinklet Board habe ich aus Neugier mal mitbestellt, da es einen USB Anschluss zum Flashen neuer Firmware hat.
Es ist auch mit einem ATmega 328P bestückt, hat also kein natives USB, aber zum Firmware Update sollte das reichen.
Ein entsprechender Bootloader müsste bereits auf dem µC drauf sein.

Schaun mer mal.

Reinhardt
 

Anhänge

  • M-Link_FrSky_Telemetriekonverter.jpg
    M-Link_FrSky_Telemetriekonverter.jpg
    35,5 KB · Aufrufe: 281
  • Hardware.jpg
    Hardware.jpg
    238,4 KB · Aufrufe: 252
Ansicht hell / dunkel umschalten
Oben Unten