RC Fernsteuerung "hacken"

Hallo allerseits,
Ich möchte meinen Quad von meinem Pc aus steurn. Er fliegt bereits von Hand mit multiwii.
Ich habe hier also eine Funke FS-T6 und möchte nun mit einem Arduino die Potis ersetzen/simulieren. Ich habe das Ding also mal aufgemacht. Ich bin dann an einen Poti drann um die Werte zu messen. Lag so im Bereich 50-650. Dann bin ich an die Schnittstelle gegangen zwischen poti und der Hauptplatine und hab da den Mega an bin 9 angeschlossen. Wenn ich jetzt das Beispiel Sweep ausführe sollte sich der Servo am Empfänger eig bewegen macht er aber nicht.

Jetzt hier zu meiner Frage:
Benutzt die Funke überhaupt PWM?
Oder anwas kann es denn noch liegen?

Danke schonmal für eure Antworten :slight_smile:

Der Poti des Knüppels der Fernsteuerung gibt eine Gleichspannung aus. PWM ist eine gepulste Gleichspannung die bei der das Verhältnis zu HIGH-Zeit zu LOW-Zeit geändert wird. Die Summe von HIGH-Zeit und LOW-Zeit bleibt daher konstant und damit auch die Frequenz.

Du kannst das PWM Signal mit einem RC-Glied glätten wobei es aber vorteilhaft ist die PWM-Frequenz zu erhöhen um die Latenzzeit zu verringern.

Was meinst Du mit:"Lag so im Bereich 50-650."

Eine konstante Spannung kannst Du mit einem DAC oder einem digitalen Potentiometer erzeugen aber da ist vorher zu sehen welche Spannungsbereich Du brauchst.

Grüße Uwe

es ist einfacher ein ppm summensignal vom arduino zu erzeugen und das direkt in das hf-modul einzuspeisen. Über Google findest du bestimmt die lib. weiss grad nicht wie sie heißt, hab aber schon mal mit rumgespielt.

Der Poti des Knüppels der Fernsteuerung gibt eine Gleichspannung aus.

Ist denn diese Gleichspannung auch gepulst also auch PWM?

Was meinst Du mit:"Lag so im Bereich 50-650."

Ich habe die Potis an den analogPin des Arduinos geklemmt und ausgelesen. Ich habe dann je nach Stellung des Knüppels Werte von 50-650 bekommen. PWM-Signale kann ich doch an den AnalogPins auslesen oder?

Verbessert mich bitte wenn ich falsch liege aber so wie ich das jetzt verstanden habe gibt mir der Poti PWM Signale aus. Da ich mit dem Arduino problemlos PWM Signale erzeuzgen kann, könnte ich doch den Arduino einfach als "Ersatz" für den Poti an die Funke klemmen und so die Signale simulieren.

Achso noch ein anderer Vorschlag wie ich die funke vom Arduino steuern kann. Undzwar über die Lehrer/Schüler Buchse. Welche Signale benötigen die denn? Ist das mit einem Ardu überhaupt u realisieren? Und was haltet ihr für die bessere Idee?

Werte von 50-650 bekommen.

Prozent, Promille, Volt, Ampere, Ohm, Watt, Hz, Frösche ?

Und was haltet ihr für die bessere Idee?

Der Ansatz von ElEspanol scheint mir Sinn zu machen.

Prozent, Promille, Volt, Ampere, Ohm, Watt, Hz, Frösche ?

So wie ich das sehe sind das "PWM's" . Wie auch immer die einheit dafür ist.

Wegen dem Einspeisen ins Hf Modul. Das Hf Modul ist die SendeUnit der funke also da wo die verarbeiteten Daten ankommen oder?

xxxmicroxxx:
So wie ich das sehe sind das "PWM's" . Wie auch immer die einheit dafür ist.

Wegen dem Einspeisen ins Hf Modul. Das Hf Modul ist die SendeUnit der funke also da wo die verarbeiteten Daten ankommen oder?

An den Potis dürfte eine Gleichspannungsquelle angeschlossen sein.
Der Schleifer der Potis dürfte an einen PPM Generator angeschlossen sein.
Dieses PPM Signal dürfte vom Sender(HF Teil) versendet werden.
Erst der Empfänger macht aus dem PPM ein (oder mehrere) PWM für die Servos.
Auch wieder mit HF Teil und dann ein Decoder.

Also, nee, PWM an den Potis ist unwahrscheinlich.
Und auch unwahrscheinlich ist, dass dein Multimeter was sinnvolles anzeigt, wenn du es an ein PWM Signal klemmst.

vielleicht hilft das weiter:

http://www.reseau.org/arduinorc/index.php?n=Main.HomePage

Gruß Bernd

Eher nicht.
Da ist nämlich offenbar mal wieder jemand am Werke, der keine Ahnung hat von dem, was er tut.
Sonst würd er kaum "PWM`s" an den Potis messen... :sob:
Insofern gibts eigentlich nur eine Empfehlung: Finger weg von dem Sender.

Ich habe die Potis an den analogPin des Arduinos geklemmt und ausgelesen.
PWM-Signale kann ich doch an den AnalogPins auslesen oder?

Also kein Multimeter..... OK ....
Nein, die analog Pins werten Spannungen aus.
Bei PWM fütterung werden eher Zufallswerte gemessen.

So wie ich das sehe sind das "PWM's" . Wie auch immer die einheit dafür ist.

PWM definiert sich über die Frequenz und das Puls-Pausen Verhältnis.

Undzwar über die Lehrer/Schüler Buchse. Welche Signale benötigen die denn?

Das könnte sein, dass du diese Buchse für deine Zwecke nutzen kannst.
Von den Signalen habe ich allerdings keine Ahnung.
Würde aber auf PPM tippen.

Was die Lehrer-Schüler-Buchse angeht, da gibts völlig verschiedene Betriebsarten.
Deshalb funktioniert auch nicht jede Sender-Mischung so.
Generell aber wird es gehen-falls du rausfindest, wie das bei deinem Sender gehandhabt wird.
Nen weiterer Vorteil ist, dass du die Garantie nicht verlierst, da du den Sender ja nicht mal öffnen musst.
Bei manchen Systemen wird dort parktisch lediglich das "Summensignal" NF übertragen, also das, was der Sender normalerweise zum HF-Teil durchreicht.
Teilweise aber eben auch noch sehr spezifische Zusatzdaten.
Wenn du im Lehrer-Schülerbetrieb z.B. auch die Möglichkeit hast, einzelne Kanäle freizugeben und ähnliches, dürfts schwieriger werden.
Das wäre immerhin nen Anhaltspunkt....

Hast du ein link zur Funke? Marke?
ich geh mal davon aus, dass das eine billig Funke ist.
wie hier im Forum öfters mal zu lesen ist, funktioniert auch diese Funke mit Rauch. also aufpassen, dass der Rauch nicht rauskommt ;D

Über die Potis wird es kompliziert. Da brauchst du für jeden Kanal spezielle ICs, weil das läuft analog, nicht PWM. da lass lieber die Finger von. die Lehrer/Schülerbüchse ist auf jeden Fall vorzuziehen. dann kannst du auch jederzeit eingreifen, wenn der Arduino Scheiße steuert.

es ist fast sicher, dass deine Funke als Eingangssignal ein PPM Signal nimmt. also muss aber Arduino ein PPM Summen Signal generieren, das du in den Sender einspeist. du solltest dich darüber schlau machen, was ein PPM Summensignal überhaupt ist. Das ist kein PWM Signal, sondern eine Mischung aus mehreren, den Kanälen entsprechenden, PWM Signalen nacheinander. wenn es dir nicht gelingen, herauszufinden, wie das funktioniert, dann lass besser gleich die Finger ganz davon.

Ja das ist eine billig Funke 70€ bei Conrad. FS-T6.
http://www.conrad.de/ce/de/product/405625/Modelcraft-FS-T6-Hand-Fernsteuerung-24-GHz-Anzahl-Kanaele-6?ref=searchDetail

wie in der Beschreibung auf Seite 26 steht, ist der Sender als Lehrersender geeignet. Und PPM macht er auch. Also ideal.
Du gehst mit einem vom Arduino erzeugten PPM-Summensignal auf die Schülerbuchse. Somit kannst du jederzeit übernehmen, wenn der Arduino falsch steuert. Sicherheitshalber aber immer am Lehrersender Schwebegas drin lassen, wenn der Arduino steuert, so dass beim übernehmen das Ding nicht runterfällt oder hochschiesst. Und die Lehrerfunktion musst du noch aktivieren.

Jetzt musst du dur nur noch Gedanken machen, wie du das Summensignal generierst und ggf. eine Pegelanpassung vornehmen. Ich weiss nämlich nicht, ob dein Sender 5V oder was anderes erwartet.

Ok, aber wie kann ich das PPM Signal erzeugen, ich hab es mal mit diesem Sketch versucht:
https://code.google.com/p/generate-ppm-signal/downloads/list
aber das muss ich mir nocheinmal genauer anschauen.
Wie sieht es denn mit selber Programmieren aus? Ich müsste doch eig nur ein HIGH Signal erzeugen dass ich mit delay unterbreche oder sehe ich das falsch?

Jetzt nochmal zum Trainer Port. Ich habe hier mal was gefunden über die Pinbelegung:

An Pin 1 kommt dann das PPM Signal rein. Aber was kommt an Pin4 "Weak Signal" dran?

Sodala,
hab mich jetzt mal rangesetzt und probiert selber so ein PPM Generator zu schreiben. Als Vorlage hab ich das schöne Gif auf Wikipedia genutzt: Puls-Pausen-Modulation – Wikipedia
Bin ich mit dem Code auf dem richtigen Weg oder denke ich in die total falsche Richtung.

Hier der Code

int ppmout;

int wert1;
int wert2;


int ch1 = 1;
int ch2 = 1;
int ch3 = 1.5;
int ch4 = 0.5;
int ch5 = 0.7;
int ch6 = 1;
int ch7;

void setup()
{
   Serial.begin(9600);
  ppmout = 10;
  pinMode(ppmout, OUTPUT);
}

void loop()
{
  
 wert1 = 3.5+ch1+ch2+ch3+ch4+ch5+ch6;
 wert2 = 20-wert1;
  ch7 = wert2;
  digitalWrite(ppmout, HIGH);            //Kanal 1
    delay(0.5);                          //Kanal 1
  digitalWrite(ppmout, LOW);             //Kanal 1
    delay(ch1);                          //Kanal 1                        
  
  
  digitalWrite(ppmout, HIGH);            //Kanal 2  
    delay(0.5);                          //Kanal 2 
  digitalWrite(ppmout, LOW);             //Kanal 2 
    delay(ch2);                          //Kanal 2 
  
  
  digitalWrite(ppmout, HIGH);            //Kanal 3 
    delay(0.5);                          //Kanal 3 
  digitalWrite(ppmout, LOW);             //Kanal 3 
    delay(ch3);                          //Kanal 3 
 
 
  digitalWrite(ppmout, HIGH);            //Kanal 4
    delay(0.5);                          //Kanal 4
  digitalWrite(ppmout, LOW);             //Kanal 4
    delay(ch4);                          //Kanal 4
  
  
  digitalWrite(ppmout, HIGH);            //Kanal 5
    delay(0.5);                          //Kanal 5
  digitalWrite(ppmout, LOW);             //Kanal 5
    delay(ch5);                          //Kanal 5
 
 
  digitalWrite(ppmout, HIGH);            //Kanal 6
    delay(0.5);                          //Kanal 6
  digitalWrite(ppmout, LOW);             //Kanal 6
    delay(ch6);                          //Kanal 6
 
 
  digitalWrite(ppmout, HIGH);            //Kanal 7
    delay(0.5);                             //Kanal 7
  digitalWrite(ppmout, LOW);             //Kanal 7
    delay(ch7);                             //Kanal 7

    
    Serial.println(ch7);
    
    
    
    
 
}

das geht so nicht.

  1. böses delay
  2. muss aus Geschwindigkeitsgründen in Assembler sein und per interrupt laufen, da schon kleine Abweichungen die Servos zittern lassen
  3. weil halt

Oszi wäre auch nicht schlecht, dass du siehst, was du programmierst. Weil das ist meistens nicht das, was du denkst, dass du programmierst. Oder mindestens ein Logikanalyzer

Auch solltest du mit einem Oszi messen, wieviel Volt das Summensignal hat, das dein Sender ausgibt. Weil in der Spannung erwartet er auch das eingehende. Ich weiss nicht, ob das irgendwie standardisiert ist.
U. U. kannst du nicht vom Arduino direkt in den Sender

Dir ist schon bewusst, dass der Sketch an vielen Stellen floats nutzen möchte, du ihn aber auf int beschränkst? Des weiteren gibt es delay nicht mit einem float Übergabeparameter.

Ok nein das war mir nicht bewusst. Aber ich denke einen Versuch wars wert das selber zu programmieren. Dann bleib ich aber lieber was fertigem.
Ich habe jetzt weil ich im Netz absolut keine Pinbelgung von der Lehrer Buchse für meine Funke finde die Funke mal aufgemacht und bin direkt ans HF Modul gegangen. Sollte ja auch funktionieren oder?

Dann habe ich mal folgendes Skectch probiert:
https://code.google.com/p/generate-ppm-signal/downloads/list

Leider tut sich nix. Ich hab den Output Pin am Arduino am HF Modul an PPM-RX angeschlossen aber nichts passiert.
Noch was. Die FrameRate variert ja soweit ich weiß von jedem Hersteller. Weiß vielleicht jemand wie sie bei der FS-T6 ist?

ich würde da vorher mit einem Oszi messen, von wegen Pegel und so. Dann ggf. mit Pegelanpassung auf 5V das Signal der Funke mit einem LA ansehen und dann ansehen, was der Arduino so bringt.

Ohne das bist du fast wie ein Blinder in der Nacht.