Multiplex sendet auf Spektrum (MPX2DSM)

ingo_s

User
Hi,

nach dem Urlaub habe ich nun auch die Firmware fertiggestellt.

Im Vergleich zu den Arduino Lösungen sind noch einige Optimierungen eingeflossen.
Wie Don auch, Messung mit 125ns Auflösung (Timer freilaufend), Jitter Filterung, automatischer asynchroner Betrieb bei zu hohen Framezeiten, Reichweitentest mit DX5e HF-Modul und andere Kleinigkeiten. Die vorgenommenen Optimierungen sollten sich in die Arduino Umgebung übernehmen lassen, da nur der Timer1 benutzt wird.

Grüße
Ingo
 

Anhänge

  • PPMtoDSM2_Box.jpg
    PPMtoDSM2_Box.jpg
    32,9 KB · Aufrufe: 80

milu

User
Hallo Benrd,
und ich habe ihm noch schnell vor sein Urlaub Layout auf Film belichtet und Platine geätzt.
Natürlich habe ich gerne gemacht - aus eigene Interesse;) Nur habe ich noch kein günstige Sender gefunden (und ohne HF-Modul - kein Heli) cry:
 

Patman

User
Baubericht MPX2DSM

Baubericht MPX2DSM

So, nun hatte ich etwas Zeit zum Basteln. Dann mache ich einen kleinen Baubericht - rückwärts.
Also hier das fertige Ergebnis.


Grüße,
Patman

.
2012-12-13 18-06-34.jpg2012-12-13 18-06-54.jpg2012-12-13 18-08-32.jpg
 

Patman

User
Baubericht MPX2DSM

Baubericht MPX2DSM

Hallo!

Falls jemand Interesse an einer geätzten Platine hat, dann bitte per PM melden. Ab so ca. 10 Stück könnte man eine Kleinserie fertigen lassen. Dann ist der Aufbau der Schaltung kein Problem. Für die Lochrasterkonstruktion sollte man schon gut löten können.

Achtung, die Schaltung wurde im Gegensatz zu meinem Schaltplan von oben noch einmal geändert. Statt der Eingangsbeschaltung mit Transistorstufe wurde eine einfache Signalbegrenzung mit einer Zener-Diode gewählt. Das PPM-Signal der MPX-Sender ist aus Batteriespannungsniveau!

Grüße,
Patman
 

ingo_s

User
Hi,
bei mir hat an der Royal das PPM Signal nur 2V Spitze und ist für den ICP-Input etwas knapp im Pegel.

Meine Software habe ich deshalb auf alternativen Betrieb am Komperator Input erweitert (das spart den Transistor), neben weiteren Optimierungen wie 22ms Spektrum timing usw.
Eine funktionsgleiche Version habe ich auch als Arduino Sketch erstellt. Wer sie testen will PN an mich.

Gruß Ingo
 

Patman

User
MPX2DSM - Schaltplan

MPX2DSM - Schaltplan

mpx2dsm_v1_2.jpg

.
Die Reset-Beschaltung und den Blockkondensator unten rechts kann man bei Aufbau auf Lochraster der Einfachheit halber evtl weglassen.

Grüße,
Patman
 
kleine Fehler

kleine Fehler

Hallo Patman,

schön, dass Du dieses Projekt zugänglich machst.
Die Kombination von R1=0 Ohm und D2 ist witzlos. R1 sollte etwas größer sein und der Tipp die Resetbeschaltung wegzulassen ist auch nicht so gut:-) Wenigstens der R3 muss dran.

Ich habe ein ppm2dms auf Basis eines MLP4DSM Senders gebaut. Reicht für einen MCPx. Es muss aber der originale Quarz 7,xxx? MHz verwendet werden.

Weiter so.

Viele Grüße Sven
 

Anhänge

  • ppm2dms2.JPG
    ppm2dms2.JPG
    38,2 KB · Aufrufe: 59

Patman

User
Hallo Sven,
danke für den Hinweis. Also nun der Vorwiderstand für die Zenerdiode. Berechnung: eins gemerkt, fünf im Sinn, Übertrag, Punkt vor Strich ...blabla...
Ah, kommt ca. 150 Ohm raus. Ich werde den Wert im Schaltplan ändern.
Grüße,
Patman
 

ingo_s

User
Der AVR hat interne Klemmdioden zu GND und VCC, die Zenerdiode ist daher nicht notwendig. Zusätzlich ist der Eingang hochohmig, allenfalls mit ca. 50kOhm internem PullUp aktiviert, so das ein Vorwiderstand von 2,2 bis 3,3KOhm ein praxisgerechter Wert ist.

Gruß Ingo
 
diode

diode

>Der AVR hat interne Klemmdioden zu GND und VCC, die Zenerdiode ist daher nicht notwendig.

Die Dioden sind herstellungsbedingt zum Substrat. Der Strom fliest dadurch unkontrollierte Wege durchs Substrat und kann irre Effekte verursachen. Deshalb steht auch im Datenblatt Vio max Vcc+0,3V oder so ähnlich. Also immer mit Zennerdiode oder Notfalls eine Shottky-Diode, Flussrichtung I/O-Pin zum Sender, Pullup on.

Gruß Sven
 

ingo_s

User
Hallo Sven,

"Die Dioden sind herstellungsbedingt zum Substrat"

das scheint beim AVR nicht der Fall zu sein. Der Reset Pin ist davon ausgenommen (max 13V).
Dann schreibt Atmel in der I/O Port Doku "All I/O pins have protection diodes to both VCC and Ground" lässt aber leider eine eindeutige Angabe über den maximalen Dioden-Strom vermissen.
Im Application Example AVR182 setzt Atmel diese Dioden selber ein, mit dem Hinweis das die Dioden erst bei VCC +0,5V bzw. Gnd -0,5V aktiv werden und der maximale Strom 1mA nicht überschritten werden sollte.

Gruß Ingo
 

ingo_s

User
Hi,

bei der MPX Royal habe ich festgestellt, das der Pegel das PPM-Signals an der L/S-Buchse für den ICP-Eingang grenzwertig ist.
Ohne vorgeschalteten Transistor sollte man unbedingt den Komperator Eingang benutzen!

Hier die Beschaltung meiner Arduino-Lösung (einfacher gehts nicht):
Anhang anzeigen Ardo2Tx11.pdf
Passenden Sketch für MPX, der einige Optimierungen enthält:
- Input per Komperator für kleine Pegel (konfigurierbar)
- festes 22ms Spektrum Timing
- Impuls-Messung mit 125ns Auflösung mit anschliessender Jitter Filterung
- Channel Mapping, Channel Reverse per Tabelle anpassbar
- Umrechnung der MPX Impulsbreitenvarianz auf Spektrum
- Reichweiten Mode
- Anzeige von Fehlern im PPM-Signal

Einfach per PN anfordern, da Zip-Datei hier nicht möglich ist.

Gruß Ingo
 
Hallo zusammen,

ich hole diesen alten Thread mal hoch, da es thematisch passt.

Da meine DX-6i der Meinung war, sie müsste den Gaskanal auf Dauervollgas schalten (und dadurch meinen Blade
an die Zimmerdecke geschickt hat), habe ich kurzerhand beschlossen, mir einen PPM Umsetzer für das Spektrum Protokoll zu bauen.
Also das HF Modul aus der DX-6i entnommen (ist hier freundlicherweise nur gesteckt) und losgelegt.
Mikrocontroller ist ein ATmega 88PA, getaktet mit 8 MHz, aufgebaut ist das ganze auf einem Stück Experimentierboard (ca. 5x5 cm).

Da ich auch meine Hallenflieger auf Spektrum umgerüstet hatte (weil ich nicht immer zwei Sender mitnehmen wollte),
werde ich das Teil erst mal in meine betagte MC-16/20 einbauen, die ich (bisher mit M-Link) zum Hallenfliegen benutze.
(Später dann vielleicht ein Konverter mit digitalem Summensignal von einem M-Link Empfänger, um flexibler zu sein, mal sehen.)

Ich habe die Firmware für den Umsetzer PPM -> Spektrum in AVR Assembler geschrieben, Funktionsumfang ähnlich wie oben von Ingo aufgelistet:
- festes 22ms Spektrum Timing, unabhängig vom PPM Signal
- Impuls-Messung mit 125ns Auflösung, aber ohne spezielle Jitter Filterung
- Channel Mapping per Konstanten im Source Code
- Umskalierung so, dass keine Wegveränderung auftritt, d.h. die vom Spektrumempfänger erzeugten Impulse
sind genauso lang wie die entsprechenden Impulse im PPM Signal.
- Reichweiten Mode habe ich weggelassen, für die Halle m.E. entbehrlich
- Anzeige von Fehlern im PPM-Signal gibt es ebenfalls nicht
Bindemodus ist natürlich vorgesehen.

Mich würde jetzt mal Folgendes interessieren:

Ich werde mit dem Code (läuft im Prinzip, kleinere Änderungen sind aber noch möglich) irgendwo bei 800 Bytes landen.
Wie verhält sich das im Vergleich zu anderen Implementierungen mit Arduino, C, etc., welche Größen haben Eure erzeugten Images in etwa?


Gruß
Reinhardt
 

ingo_s

User
Mein Arduino funktionsgleicher WinAVR Code hat ca. 1600 Byte. Allerdings mit allem Schnickschnack, wie Umrechnung der Impulsbreiten von MPX auf Spektrum, Signalüberwachung usw.
Früher habe ich auf AVR viel Assembler eingesetzt, bis der WinAVR brauchbar war. Der Mehrverbrauch von "C" hält sich in Grenzen wie ich feststellen konnte. Auf Assembler gehe ich nicht mehr zurück, mit "C" lommt man schneller ans Ziel.

Gruß Ingo
 
Hallo Ingo,

Danke für Dein Feedback.
Ich habe gerade nochmal nachgeschaut, es sind im Moment genau 683 Byte, da hatte ich wohl eine falsche Zahl im Kopf.

Was meinst Du eigentlich genau mit Umrechnung der MPX Impulsbreiten auf Spektrum?
Ich rechne den gemessenen Wert des PPM Impulses so um, dass der Bereich 900 - 2100 us durch die Codes 0x000 bis 0x3FF abgedeckt wird.
Dann ist der am Ausgang des Spektrum-Empfängers erzeugte Impuls genauso lang wie der entsprechende PPM Impuls.
Von welchem Sender das PPM Signal kommt, ist egal.


Gruß
Reinhardt
 

Keks

User
Was meinst Du eigentlich genau mit Umrechnung der MPX Impulsbreiten auf Spektrum?

Vermutlich geht es um die 150 % Spektrum Weg.
Glaube ich hatte 145% Spektrum = 100% MPX, DX7s-AR8000 zu Royal16-RX9, mit dem Multimate gemessen. Alle Werte ohne Peng. :D

Also Multimate an reines Spektrum System und bis auf 145% Servoweg hochgedreht ergab den gleichen Empfänger Impuls in us, wie ein reines MPX System bei 100%.

Bei einem Spektrum-Computer-Sender ist der Vollausschlag, im Servomonitor, mit 150 % angegeben. Wobei ein Spektrum-Analogsender vermutlich nur 100% schaft, wenn in die Steuerrichtung getrimmt ist. Somit hat der Analog-Sender eigentlich nur 85% (???) Spektrum-Steuerweg. Auf diesen Wert sind die Bordelektronik, von Blade mCPx V2 & Co ausgelegt. Wenn Horizon jetzt einen Wert von 85%, für Computer-Sender (Spektun) empfielt, um die Stabilisierung des Blade mCPx V2 nicht zu blockieren, dann ist das mit 2/3 (100/150) auf zB eine MPX Royal DSM2 umzurechnen, also nur ca 60% einzustellen.

Bei einem Eigenbau, mit Microkontroller/Arduino, kann man dies natürlich gleich berücksichtigen, womit man die Blade Einstellempfehlung übernehmen kann.
 
Ansicht hell / dunkel umschalten
Oben Unten