mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Programm zur Impulsbreiten-Auswertung gesucht


Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: JojoS (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hört sich sehr nach Modellbau an, da gibbet sicher schon was...

Autor: B.Spitzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Alex Trusk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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!

Autor: Bernhard Spitzer (b_spitzer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: irgendein Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: irgendein Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Beitrag "Modelbau"

Und da hatte ich noch einen Link irgendwo gepostet...(oder noch ein 
anderer Rahul..;-)

Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.