Liebe Forum-Leser,
ich suche eine Lösung für die Auswertung von Impuls-Breiten. Um genauer
zu sein, repetetive Serien aus jeweils sieben Einzelimpulsen mit einer
(veränderlichen!) Länge von 1,5 - 2,2 ms, dazwischen etwa 30 ms Pause.
Erkannt werden soll, wenn sich ein oder mehrere Impulse um einen
bestimmten Betrag verändern.
Ich habe das ganze schon mal versucht, mit "diskreten" IC´s zu lösen,
bin aber schnell zu der Erkenntnis gelangt, dass das ganze das mit einem
µC wahrscheinlich viel einfacher wäre.
Leider habe ich von dieser Materie so gar keinen Plan, und auch nicht
die Zeit, mich in Programmiersprachen einzuarbeiten (auch wenn ich das
schrecklich gerne tun würde - seufz). Hat vielleicht in diesem Forum
jemand Zeit und Lust, gegen eine angemessene Aufwandsentschädigung eine
kleine Routine zu programmieren?
Daniel
Das scheint mir soch die Auswertung des PPM-Signals einer Fernsteuerung
zu werden. Häufig findet man Programme zum Auswerten eines Impulses für
einen Servo. Hier soll wohl die Impulsfolge für alle Kanäle per
Controller auseinandergepflückt werden.
Das ist eine Standardaufgabe für einen Timer. Bei der 8051-Familie nimmt
man dazu einen Timer im 16-Bit-Mode (Mode 1). Der kann insgesamt 65536
Takte zählen (bei 12MHz also 65,5ms, bei 11,0592MHZ sind es 71ms).
Der Timer wird jetzt mit Gate konfiguriert, so dass der Timer nur läuft,
wenn auf einem Portpin eine '1' anliegt (P3.2 für Timer 0 und P3.3 für
Timer 1). Die beiden Portpins können zusätzlich einen Interrupt
auslösen... sehr Praktisch hier!
Der Ablauf ist dann wie folgt: (für Timer 0)
Timer0 Mode 1 mit Gate Konfigurieren
Externer Interrupt 0 (P3.2) auf fallende Flanke konfigurieren
Timer auf 0000h rücksetzten und Starten (TR0=1). Der Timer läuft aber
erst, wenn zusätzlich der Pin P3.2 auf 1 liegt.
Jetzt kommt ein Impuls, der Timer beginnt zu laufen. Der Impuls ist zu
Ende, der Timer bleibt automatisch stehen und die fallende Flanke löst
damit einen Interrupt aus.
In der Interrupt-Routine liest man (ganz gemütlich, 30ms Pause sind ja
eine Ewigkeit) den Zählerstand aus (bei 12MHz entspricht jedes Bit genau
1µs) und setzt den Timer auf 0000h zurück. Jetzt kann der Zählerstand im
Hauptprogramm weiterverarbeitet werden, während sich der Timer parallel
um den nächsten Impuls kümmert.
tschuessle
Bernhard
Jau - es geht tatsächlich um eine Modellbau-Anwendung!
Ich möcht´ ein Lehrer-Schüler-Kabel bauen, das den Schüler-Sender sofort
abstellt, wenn ich als Lehrer "in die Tasten" greife. Heisst also, dass
der µC mein Ruhe-Impulsmuster lernt, und bei jeder Änderung meinen
HF-Teil an-, und den des Schülers ausschaltet.
Leider habe ich absolut Null Erfahrung mit µC´s (im Gegensatz zur
restlichen Digitalelektronik), und in den nächsten 25 Jahren wohl auch
nicht die Zeit, mich in die Materie einzuarbeiten. Die ersten 4 (!)
Bücher, die ich mir gekauft habe, sind didaktisch leider auch das Papier
nicht wert, auf dem sie gedruckt sind. Zumindestens für Leser, die wie
ich zwar wissen, dass es Timer, Interrupts und I/O-Ports gibt, aber eben
nicht, wie man all dieses benutzt.
Da Zeit meine mit Abstand knappste Ressource ist, war halt meine Idee,
ob nicht irgendjemand hier ein paar Dutzend Euros für ein so einfaches
Progrämmchen verdienen will. Auch wenn ich viel lieber selber Ahnung von
diesaer höchst interessanten Materie hätte, aber mich in diesesThema
einzulesen und einzuarbeiten, ist einfach nicht drin.
Trotzdem Danke für die Tipps!
Hallo Alex,
wieso sollen beide HF-Teile Aktiv sein?? Das wird im Zweifelsfall nur
Bruch geben. Entweder stören sie sich gegenseitig oder beim Umschalten
braucht das eingeschaltete HF-Teil etwas zu lange und das Modell
schmiert ab. Normalerweise hat doch nur der Lehrer ein HF-Modul drin und
der Schüler arbeitet ohne.
Wieso das Rad neu erfinden, wenn es da schon was fertiges gibt, das
zuverlässg funktioniert.
Übrigens erfolgt die Erzeugung der Impulsfolge aufgrund der
Widerstandsänderungen der Potis. Wenn da nur ein Poti kratzt, wird Deine
Schaltung dauernd den Schüler-Sender abschalten und dafür Deine
Neutralstellung senden. Ob das in jeder FLuglage sinnvoll ist, sollst
Du selber beurteilen.
tschuessle
Bernhard
Hi Bernhard,
das nicht beide Sender gleichzeitig senden können, ist klar. Die
kommerziell erhältlichen L-S-Kabel (zumindestens die mir bekannten, und
das sind viele) basieren aber nur darauf, dass fast alle Sender einen
Akku-Ausgang haben, der Spannung führt, wenn der Sender AUS ist. Diese
Spannung vom Lehrer versorgt den Schülersender extern, wenn der Lehrer
seinen Sennder abschaltet, und legt ihn lahm, wenn der Lehrer
einschaltet. Das setzt aber voraus, dass der Lehrer vor jedem Eingreifen
seinen Sender einschalten muss (und damit dem Schülersender die Spannung
abtrennt). Klingt theoretisch ganz gut, ist aber so, als müsste der
Fahrlehrer jedesmal erst einen Zündschlüssel einstecken und umdrehen,
wenn er auf die Bremse treten will, weil der Fahrschüler eine rote Ampel
übersieht. Das würde ziemlich häufig krachen... Das "Rad" scheint also
mitnichten bereits erfunden, das ist zumindestens meine Einnschätzung
aus ca. 25 Jahren RC-Modellbau.
Was hingegen äußerst zuverlässig funktioniert, ist die
HF-Stummmschaltung, die bei fast allen Sendern ebenfalls in der externen
5-Pol-Buchse realisiert ist: Kontakt auf Masse, und schon ist der Sender
Stumm. Ich hab´ mir mal auf dem Oszi angesehen, wie schnell die HF
wieder einsetzt, wenn man den Kontakt öffnet; die Verzögerung ist
(zumindestens mit meinem 50MHz-Oszi) nicht messbar. Offensichtlich
schwingt der Oszillator weiter, und nur die HF-Treiber / Endstufe werden
abgeschaltet. Also ideal für übergangsloses hin- und Herschalten, mit je
einem Transistor, die invertiert angesteuert werden.
Und wenn die Schaltung sich z.B. erst meldet, wenn z.B. über 4-5
Impulsreihen eine definitive Änderung des Musters erkannt wird, sollte
ein Kratzen auch nicht stören, zumal man im praktischen Flugbetrieb von
diesen (zweifelsohne vorhandenen) Artefakten auch nichts bemerkt.
Kennst Du denn L-S-Kabel, die automatisch umschalten, wenn der Lehrer
einen Steuerausschlag gibt?
LG,
Daniel
Multiplex hat(te) doch ein System, bei dem der Lehrer nur bestimmte
Funktionen an den Schüler "abtreten" kann.
Dabei wird der Lehrersender (So ein Monster mit Conputer drin) als
Sender benutzt, und der Schüler braucht nicht mal ein HF-Teil haben.
Futaba benutzt ja eine Mini-Klinke zwischen Lehrer und Schüler.
Eine Leitung für die Masse und eine fürs Signal.
http://data.robbe-online.net/robbe_pdf/P1122_1-F1574.pdf
Ich gehe davon aus, dass der Lehrer-Sender sich auf das Telegramm des
Schüler-Senders synchronisiert. Bei Multiplex wird der Schüler-Sender
soweit ich weiß vom Lehrer-Sender mit Strom versorgt - da er ohne
HF-Modul betrieben wird, braucht er auch noch so viel Strom.
Bei Futaba braucht der Schüler eine eigene Versorgung.
Der Schülersender erzeugt also das Telegramm entsprechend der
Knüppelstellung. Wenn der Lehrersender "abgeschaltet" ist - die
Kontrolle also an den Schüler abgegeben hat - sendet er einfach das
Telegramm des Schülers.
Sobald der Lehrer wieder aktiv ist, ignoriert er einfach das Telegramm
des Schülers und sendet sein eigenes.
Dank Computer-Sendern kann man dann auch noch auswählen, welche Teile
des Schüler-Telegramms überhaupt übertragen werden.
Das Problem ist also nicht als Schülersender zu merken, dass der Lehrer
eingreift, sondern der Sender muß es selber herausfinden.
HF-Teile ein- und auszuschalten halte ich für wenig sinnvoll, da das
immer zu Störungen beim Empfänger führen kann.
Übrigens habe ich bisher nur aus einem ersteigerten Sender eine
L-S-Buchse ausgebaut, weil ich den Platz für andere Module brauchte.
@ Rahul:
Bei den hypermodernen Sendern könnte es sein, dass die Dinger auch ein
externes Impulstelegramm auswerten und ggf. sogar Teile davon
integrieren und aussenden können. Sender mit herausnehmbaren HF-Modulen
gibt´s m.E. aber schon nicht mehr. Aber garantiert alle
"Mittelklasse"-Anlagen führen eben ihr Impulstelegramm sowie einen
Sender-Abschaltpin nach draussen, damit man sie z.B. an den PC
anschließen kann, ohne ständig HF abzustrahlen (und Strom zu
verbrauchen).
Diese Konstellation macht es so verlockend, einfach je nach Impulsmuster
des Lehrer-Senders je einen von den beiden Sendern zu aktivieren, aber
das halt automatisch, ohne erst einen Schalter umlegen zu müssen. Denn
auch schon ein paar hundert ms können zu lange sein :-)
Aber ich sehe schon, ich werde das Projekt wohl erstmal auf Eis legen -
schade, denn ich könnte mir vorstellen, dass es wirklich nicht schwer
wäre, so ein Programm für einen AVR zu schreiben...
Daniel