Hallo, ich habe folgendes Problem: Ich möchte 2 Modellbau Fernsteuerungen im sogenannten Lehrer-Schüler Modus betreiben. Dabei werden die Sender mit einem Kabel verbunden. Der Lehrer-Sender ist an und steuert das (Flug)modell. Der Schüler Sender ist an, sendet aber keine Signale an den Emfäger im Modell (Quarz wurde dem Sender entnommen). Der Lehrer Sender hat einen Taster, und sobald dieser gedrückt wird hat der Schüler die kontrolle über das Modell. Dazu wird dann über das Kabel vom Schüler aus das Schüler PWM Signal an den Lehrer-Sender geleitet und dort anstatt des Lehrer PWM vom sogenannten HF-Modul an den Empfänger gesendet. (Wer das nich verstanden hat kann mal hier gucken http://www.rc-network.de/magazin/artikel_03/art_03-0069/art_03-0069-00.html) Das alles funktioniert auch schön und gut, wenn die Hersteller der beiden Sender das gleiche PWM benutzen. Es gibt unterschiede zwischen PWM positiv und PWM negativ. Dieses Problem kann man aber mit nem Transistor und und ein paar wiederständen aus der Welt schaffen. Das viel größere Problem ist, dass die Kanalzuordnung nicht passt. So hat zum Beispiel Graupner Gas auf Kanal 1 und Sanwa Höhenruder auf Kanal 1. Um diese beiden Sender jetzt im Lehrer-Schüler Modus zu betreiben müsste der Schüler also entweder mit dem Gasknüppel das Höhenruder betätigen oder man versucht, das PWM Signal zu verändern. Das PWM fuktioniert so: (siehe Anhang 1) Ein "Packet" besteht aus 8 einsen. Der Abstand der ersten 1 zur zweiten definiert den ersten Kanal, er beträgt wie bei der Servoansteuerung 1-2ms (1,5ms heißt, das der Knüppel an der Fernsteuerung neutral ist.) Der Abstand von der zweiten zur dritten 1 definiert Kanal 2... Diese "Packete" werden ca alle 10ms gesendet. Bewegn mann nun den Knüppel des Kanal 1, verädert sich der Abstand zwischen der ersten und der zweiten 1 (siehe Anhang 2+3). Um jetzt das Problem mit der Kanalzuordnung zu beheben müsste man also zum Beispiel Kanal 1 mit vier(Höhenruder und Gas) in dem Signal auszutauschen. Das heißt, man müsste den Abstand zwischen der ersten und der zweiten 1 mit dem Abstand zwischen der vierten und der fünften 1 austauschen. Nun meine Frage: ist es mit einem Microcontroller (AVR am liebsten Mega-Serie) möglich dieses Signal auszulesen, es wie beschrieben umzuändern und es dann wieder auszugeben? MfG Jan
Hier das zweite Bild; Der Kanal 1(Höhenruder) wurde wurde nach oben gelenkt
Bild 3; Der Kanal 1(Höhenruder) wurde wurde nach unten gelenk.
Hi! Ich denke mal das sollte mit fast allen uC's gehen die einen Timergeführten Ausgang haben(OC1A..). In Echtzeit wird das zwar nichts, aber mit 10ms Versatz sollte das kein Probl. sein. Was ich meine ist: alle 8 Zeiten mit ICP einlesen und dann je nach Zuordnung über OC.. ausgeben. Wenn es komfortabel sein soll dann Displ. drann und Zuordnug variabel gestalten. zb. CH1=CH4 CH2=CH2 CH3=CH3 CH4=CH1 Viel Erfolg, Uwe
Hi, danke für die Antwort! Also sollte es mit nem Mega8 gehn. >In Echtzeit wird das zwar nichts, >aber mit 10ms Versatz sollte das kein Probl. sein. Was meinst du damit genau? Eine Zeitspanne von 1-2ms müsste ja relativ genau machbar sein. Ich wollte es ohne Display machen; es geht ja in erster lienie um die ersten 4 Kanäle(Höhe, Seite Gas, Quer) 2hoch4 sind dann 16 verschieden möglichkeiten. Zur konfiguration muss dann entsprechen oft z.B. ein Taster gedrückt werden. Hat jemand ne idee wie ich das Programm aufbauen soll? Ich hab mir das so vorgestellt: Eine Schleife die ca. 10ms zum durchlaufen braucht. In der Schleife wird zuerst mit ICP?(hab noch nie damit gearbeitet) nacheinander? die Pausen der einzelnen Kanäle ermittelt und in einer Variabel gespeichert. Anschließend werden je nach Modus die Werte nacheinander über OC1A ausgegeben. Und dann alles wieder von vorne. Da ich noch nicht allzuzviel erfahrungen mit Controllern habe, wäre ich für ein paar Tipps sehr Dankbar. In welcher Sprache soll ich das Prog schreiben? In C oder Assembler? Oder reicht Bascom auch?(Da hab ich Haupsächlich Erfahrung) MfG Jan
Hi, bin auf was gestoßen: http://www.rclineforum.de/forum/thread.php?threadid=82401&sid=&hilight=ppjoy&hilightuser=0 Da wird mit Bascom immerhin schon ein entsprechendes Signal erzeug. Muß jetzt nurnoch :) durchsteigen und es schaffen, ein signal auszulesen. Das ändern der Reihenfolge wird ja auch nicht so schwer werden... MfG Jan
Hi!
Spät, aber immerhin,
<Also sollte es mit nem Mega8 gehn.
Ja.
<In Echtzeit wird das zwar nichts,
>aber mit 10ms Versatz sollte das kein Probl. sein.
<Was meinst du damit genau?
Nunja, du kannst Kanal 8 nicht eher ausgeben wie du ihn empfangen hast.
Übrigens, ich zähle nur 7 auswertbare (fallende)Flanken? Nochmal oben
gelesen, aja du schreibst ja 8 1sen und nicht Kanäle.
Wie würde ich das machen? Ämmm ICP auf fallende Flanke, Timer CLK so
einstellen das bei 16 Bit Auflösung nach 2,5 ms OVL eintritt(0,5ms
Reserve) Im OVL-Int eine "Kein Signal"-Variable setzen damit du den
Paketbeginn feststellen kannst. Irgendwann kommt dein 1.ICP-Int,
1. Timer auf 0 setzen,
2. ist Kein Signal=1 dann
2a.Zeit verwerfen,"kein Signal" auf 0,und Variablenzeiger auf 1.
Zeit
2b.sonst Zeit in Variable ablegen und Zeiger(Variable)+1
Im HP Zeiger(Variable) auf 7 (fallende Flanken)prüfen.
Wenn OK, die eingelesenen Zeiten in der gewünschten Reihenfolge über
OC1A ausgeben. Gefahr sehe ich eigentlich nur wenn die Pause zwischen
den Paketen kürzer ist als das Paket selbst. Dann musst du den Timer
durchlaufen lassen und die Zeiten unter Beachtung des Überlaufes
errechnen.
<In welcher Sprache soll ich das Prog schreiben? In C oder Assembler?
<Oder reicht Bascom auch?(Da hab ich Haupsächlich Erfahrung)
Das sollte in allen Sprachen machbar sein, am realsten wird es in ASM.
Viel Erfolg, Uwe
Ich bin robbe-Benutzer, und bei deren Fernsteuerungen kann man durch simples Kanal-Umstecken (im Sender) das Fernsteuer-Telegramm (Reihenfolge der Kanäle) verändern... Viel besser wäre es aber doch, einen alten Sender zu "schlachten" (ebay und dergl lassen grüssen), und dann per Mega8 (oder grösser) das Telegramm des Schüler-Senders selber herzustellen (Knüppel-Werte vom ADC einlesen, verarbeiten und dann per Telegramm ausgeben). Dann hätte man halt einen reinen Schüler-"Sender". Übrigens zum Thema Echtzeit: Das bedeutet nicht weiter, als dass das Ergebnis innerhalb einer bestimmten Zeit auftritt, nicht sofort. Ein Echtzeit-System ist deterministisch...
> Viel besser wäre es aber doch, einen alten Sender zu "schlachten" > (ebay und dergl lassen grüssen), und dann per Mega8 (oder grösser) > das Telegramm des Schüler-Senders selber herzustellen > (Knüppel-Werte vom ADC einlesen, verarbeiten und dann per > Telegramm ausgeben). Es gibt auch diesen "Gamebird". Praktisch ein Joystick für den PC in Senderform mit 4 Achsen. Siehe http://www.gamebird.de Da könnte man einen µC anschließen, der das Impulstelegramm baut. Da braucht man aber keinen Mega8, da reicht auch ein Tiny26 locker aus. Im Prinzip reicht sogar ein Tiny13 (4 Analog-Eingänge, ein Digital-Ausgang). > Übrigens zum Thema Echtzeit: Das bedeutet nicht weiter, als dass > das Ergebnis innerhalb einer bestimmten Zeit auftritt, nicht > sofort. Ein Echtzeit-System ist deterministisch... Richtig. Und wie groß diese bestimmte Zeit ist, hängt davon ab, womit das System interagiert. So ist die maximale erlaubte Reaktionszeit für den Auslöser eines Airbags sicherlich kürzer als die einer Speicherheizung. Dennoch ist beides "Echtzeit". Noch was zum Lehrer/Schüler-Betrieb: Achte auf die Versicherung (daß Modellflugzeuge generell Versicherungspflichtig sind, ist hoffentlich bekannt). So deckt z.B. die Haftpflichtversicherung des DMFV den Lehrer/Schülerbetrieb ausßerhalb eines Fluggeländes nicht ab.
Hi, erstmal Danke für eure Antworten! @Use: Danke für deine ausführliche Beschreibung! >Gefahr sehe ich eigentlich nur wenn die Pause zwischen >den Paketen kürzer ist als das Paket selbst. Dann musst du den Timer >durchlaufen lassen und die Zeiten unter Beachtung des Überlaufes >errechnen. Das könnte durchaus ein Problem werden. Wenn alle Kanäle auf max sind haben wir 7x 2ms Pausen =14ms... Die Pause ist glaube ich immer ca 10ms. Werd gleich nochmal den Sender ans Oscilloscop hängen und gucken, ob die Pause länger wird, wenn das Packet länger ist. @Rahul: >Ich bin robbe-Benutzer, und bei deren Fernsteuerungen kann man durch >simples Kanal-Umstecken (im Sender) das Fernsteuer-Telegramm >(Reihenfolge der Kanäle) verändern... Normalerweise würde das auch gehn, aber wenn man zumbeispiel ein Delta mit speziellen mischer fliegen will würde das auch alles nich stimmen. Oder wenn man ein Motor flieger mit Throttel-Cut hat(Taste am Sender auf die man drückt um einen Glühzünder aus zu machen, Vergaser wird dann ganz geschlossen) würde man diese funktion auch nicht nutzen. Natürlich könnte man irgendeinen Sender "ausschlachten", aber halt ohne Mischer ect... @Rolf: Nach dem neuen Gesetz muss jedes Flugobjekt versichert sein. Theoretisch auch ein Papierflieger. Ich flieg immer fernab von allem was lebt. Aber versichert bin ich trotzdem. MfG Jan
Mischer etc kann man entweder übernehmen (sofern die Dinger nur aus ein paar Potis bestehen), oder mit dem Mikrocontroller nachbilden. Schalter mit einem Mikrocontroller abfragen ist ja nun auch nicht wirklich anstrengend. Mit Ausschlachten meinte ich, dass sich ausser den Kreuzknüppeln (und ein paar Schaltern / Hühnerfutter) nichts mehr im Sender befindet.
Hi, die Mischer müssten schon mit dem Controller gemacht werden, da mit nem Poti da nichts zu machen ist. Das ganze Projekt wollte ich hinterher eigentlich veröffentlichen, deswegen möchte ich nicht extra nen Sender Umbauen. Es soll ne Elektronik werden, die man einfach ins Lehrer/Schüler Kabel hängt. Das Projekt sollte auch von weniger begabten Leuten(müssten schon das Prog auf den Controller überspielt kriegen) durchfürbar sein. Aber ich werde wahrscheinlich ziemlich viele Probleme habe, weil die Pause zwischen den Packeten nicht lang genug ist... MfG Jan
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.