Archiv verlassen und diese Seite im Standarddesign anzeigen : 4 Servosignale vom Empfänger einlesen?
Moin !
Was ist die einfachste Möglichkeit 4-5 Servosignale von einem RC Empfänger einzulesen ?
Hat da jemand etwas Code für zufällig? Oder bietet da Bascom fertige Funktionen für ?
Sauerbruch
02.11.2007, 14:45
Moin auch!
Servo-Impulse auszuwerten hab´ ich schon für mehrere RC-Anwendungen gemacht. Erstmal habe ich noch ein paar Fragen:
- meinst Du mit "einlesen" die Impulslänge zu messen?
- Die Impulse sind positiv, nehme ich an?
- heißt "4-5", dass die Anzahl der ausgewerteten Impulse variieren kann (d.h. der Code müsste für 4 und 5 funktionieren)?
-Was für einen Controller wolltest Du denn verwenden?
Gruß,
Daniel
Moin !
meinst Du mit "einlesen" die Impulslänge zu messen?
Ja. Es sollte halt ein Wert für die Impulslänge rauskommen.
Die Impulse sind positiv, nehme ich an?
Jup.
heißt "4-5", dass die Anzahl der ausgewerteten Impulse variieren kann (d.h. der Code müsste für 4 und 5 funktionieren)?
Nuja, im prinzip käme ich auch mit 3 Kanälen aus. Aber ich hätte da einen 5 Kanal Empfänger und es wäre gut wenn ich die einlesen könnte (muss aber nicht).
Sagen wir mal so. Es müssten min. 3 sein. Mehr wäre schön muss aber nicht.
Was für einen Controller wolltest Du denn verwenden?
Naja er muss sonst nur noch 2 PWM Ausgänge haben. Und evtl. serielle Schnittstelle und ne LED.
Also nix wildes eigentlich. Insofern sollten da ne ganze Menge an Typen gehen. Vielleicht nen Mega 8 (SMD) oder nen Mega 88 (SMD).
Sauerbruch
02.11.2007, 15:27
o.k.,
und die Impulslängen sollen wahrscheinlich als unterschiedliche Variablen abgespeichert werden, z.B. Impuls1, Impuls2 usw., oder?
Ich muss jetzt noch ´n paar Balsabretter und Harz besorgen, damit ich über´s Wochenende komme O:) , hab´ aber schon eine ziemlich konkrete Lösung vor Augen. Melde mich in 1-2 Stunden nochmal!
Daniel
Moin !
Genau. Das wäre die Lösung meiner Probleme :-)
Wenn ich dann noch den Timer mit den PWM Ausgängen frei hätte wäre ich glucklitsch !!!
Sauerbruch
02.11.2007, 17:26
Eeeeleieein habbich noch =P~ :
Würde Dir die 8-bit-Auflösung reichen?
Das hieße z.B. bei einem Takt von 1 MHZ (geht notfalls auch ohne Quarz) und Verwendung von Timer0 (dann bleibt Timer1 für PWM frei), dass die maximal detektierbare Impulslänge 2ms und die Auflösung 0,8µs wären.
Meine Empränger-Impulse waren eigentlich noch nie länger als 2ms...
Sauerbruch
02.11.2007, 18:01
Probier´s mal so:
$regfile = M8ref.dat
$crystal = 1000000
Config Int0 = Rising 'Interrupt bei Impulsbeginn
On Int0 Impuls_start
Enable Int0
Config Int1 = Falling 'Interrupt bei Impulsende
On Int1 Impuls_stop
Enable Int1
Enable Interrupts
Config Timer0 = Timer , Prescale = 8
Dim Kanal As Byte 'Kanal = Zählvariable'
Dim Impuls(5) As Word 'Array für bis zu 5 Impulswerte
Do 'Hier ist Platz für´s Hauptprogramm :-)
Loop
Impuls_start: 'Irgendein Impuls beginnt:
Start Timer0 'Timer beginnt zu zählen
Kanal = Pinc 'An welchem Port ist der Impuls?
Kanal = Kanal And &B00011111 'Sicherheitshalber Löschen der Bits 7, 6 und 5
Select Case Kanal
Case 4 : Kanal = 3 'd.h. PortC war 00000100
Case 8 : Kanal = 4 'd.h. PortC war 00001000
Case 16 : Kanal = 5 'd.h. PortC war 00010000
Case Else
End Select
Return
Impuls_stop: 'Ende des Impulses:
Stop Timer0 'Timer anhalten,
Impuls(kanal) = Timer0 'Wert retten und Array-Variabler zuweisen,
Timer0 = 0 'und Timer rücksetzen.
Impuls(kanal) = Impuls(kanal) * 8 'Umrechnung in µS
Return
Als Ergebnis stehen Dir dann Impuls(1) bus Impuls(5) zur Verfügung.
Gruß,
Daniel
Sauerbruch
02.11.2007, 18:10
Zur "Hardware" sollt´ ich vielleicht auch noch was schreiben... ](*,)
Die 5 Eingänge kommen an die Ports C.0 bis C.4 (dann bleibt Dir C.5 noch als ADC frei, falls Du den brauchst). Pulldown-Widerstände, falls Du einen Eingang mal nicht an den RX anschließt!
Alls 5 Eingänge mit je einer Diode (=Oder-verknüpft) auf die zusammengeschalteten Interrupt-Eingänge 0 und 1. Auch hier einen externen PullDown-Widerstand spendieren.
That´s it.
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.