Am besten gehts wenn du einen Empfänger benutzt der ein Summensignal ausgibt:
http://www.mikrokopter.de/ucwiki/RC-Empf%C3%A4nger
Der wird am ATmega an einen Interrupt angeschlossen und ausgewertet. Ich kann dir meinen Code geben wenn du willst.
Guten Abend allerseits
Ich hab da so ein Problem. Zwar wollte ich meinen Roboter über eine RC-Fernsteuerung fernsteuern, da ich aber nicht nur die Steuerung benutzen werde, mache ich die Ansteuerung der Motoren über ein RN-Control. Ich möchte nun aber trotzdem mein RC-system einbinden. Meine Frage diesbezüglich: wie bewerkstelligt man am einfachsten die Verbindung von RC-Empfänger und RN-Control? geht das über PWM?
Besten Dank für alle Antworten
lg flo
Am besten gehts wenn du einen Empfänger benutzt der ein Summensignal ausgibt:
http://www.mikrokopter.de/ucwiki/RC-Empf%C3%A4nger
Der wird am ATmega an einen Interrupt angeschlossen und ausgewertet. Ich kann dir meinen Code geben wenn du willst.
Viele Grüße, William
-> http://william.thielicke.org/
Danke für die Antwort.
Für Code wäre ich sicherlich froh (senkt die Fehlerquote =)). Sache ist, das ich den Empfänger schon habe --> diesen auch gerne weiterverwenden würde. Wie findet man nun heraus ob dieser Empfänger passend ist oder nicht? (vielleicht kennt ihn ja jemand: http://tinyurl.com/5kkeaz --> nummer5 ).
lg flo
Das wird schwierig bei diesem nicht sehr gängigen Empfänger ein Summensignal zu bekommen... Schieß dir doch bei Ebay einfach einen Graupner C16/C17/C19, das kostet kaum was...
Viele Grüße, William
-> http://william.thielicke.org/
der code:
TIMER0
TIMER1Code:$baud = 9600 $crystal = 16000000 $regfile "m32def.dat" $framesize = 32 $swstack = 32 $hwstack = 64 Config Timer0 = Timer , Prescale = 256 , Capture Edge = Falling , Noise Cancel = 1 Enable Timer0 On Timer0 Pausenerkennung Config Int1 = Falling Enable Interrupts Enable Int1 On Int1 Summensignalmessung Dim Empf(6) As Word Dim Channel As Byte Sound Portd.7 , 200 , 300 Do Print Empf(1) ; " CH1" Print Empf(2) ; " CH2" Print Empf(3) ; " CH3" Print Empf(4) ; " CH4" Print Empf(5) ; " CH5" Print Empf(6) ; " CH6" Print " " Waitms 500 Loop Summensignalmessung: Select Case Channel Case 1 : Empf(1) = Timer0 Case 2 : Empf(2) = Timer0 Case 3 : Empf(3) = Timer0 Case 4: Empf(4) = Timer0 Case 5: Empf(5) = Timer0 Case 6: Empf(6) = Timer0 End Select Timer0 = 6 Incr Channel Return Pausenerkennung: Channel = 0 Return End
Code:$baud = 9600 $crystal = 16000000 $regfile "m32def.dat" $framesize = 32 $swstack = 32 $hwstack = 64 Config Timer1 = Timer , Prescale = 8 , , Capture Edge = Falling , Noise Cancel = 1 Enable Timer1 On Timer1 Pausenerkennung Config Int1 = Falling Enable Interrupts Enable Int1 On Int1 Summensignalmessung Dim Empf(6) As Word Dim Rc(6) As Integer Dim Channel As Byte Sound Portd.7 , 200 , 300 Do Rc(1) = Empf(1) - 60543 Rc(2) = Empf(2) - 60543 Rc(3) = Empf(3) - 60543 Rc(4) = Empf(4) - 60543 Rc(5) = Empf(5) - 60543 Rc(6) = Empf(6) - 60543 Rc(1) = Rc(1) / 10 Rc(2) = Rc(2) / 10 Rc(3) = Rc(3) / 10 Rc(4) = Rc(4) / 10 Rc(5) = Rc(5) / 10 Rc(6) = Rc(6) / 10 Print Rc(1) Print Rc(2) Print Rc(3) Print Rc(4) Print Rc(5) Print Rc(6) Waitms 500 Loop Summensignalmessung: Select Case Channel Case 1 : Empf(1) = Timer1 Case 2 : Empf(2) = Timer1 Case 3 : Empf(3) = Timer1 Case 4: Empf(4) = Timer1 Case 5: Empf(5) = Timer1 Case 6: Empf(6) = Timer1 End Select Timer1 = 57536 Incr Channel Return Pausenerkennung: Channel = 0 Return End
Viele Grüße, William
-> http://william.thielicke.org/
Danke für die Antworten. Am Bieten bin ich schon, den Code muss ich aber zuerst noch gründlich studieren damit ich die Logik dahinter auch verstehe. Trotzdem vielen DANK.
lg flo
versuche es doch einfach mal hiermit, so kannste auch nen normalen Empfänger anschließen. Das Progis jetzt nur zur bestimmung des Timerwertes bei einer bestimmten Knüppelstellung. Musste noch n bisschen ändern.
HunniCode:$crystal = 5000000 $regfile "attiny2313.dat" Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = Portb.3 , E = Portb.5 , Rs = Portb.4 Config Lcdbus = 4 Config Int1 = Change 'ISR bei jedem Flankenwechsel On Int1 Sprung Enable Int1 Enable Interrupts Dim Flag As Byte ' "Habe-fertig"-Flag Dim A As Word Config Timer1 = Timer , Prescale = 1 Do If Flag = 1 Then Flag = 0 A = Timer1 Timer1 = 0 End If Loop Sprung: If Pind.3 = 0 Then 'Fallende Flanke: Impulsbeginn Start Timer1 Else 'Steigende Flanke: Impulsende Stop Timer1 Flag = 1 End If Return
Aber nur einen Kanal auslesen, oder? Dafür ist ja das Summensignal da.... da bekommt man alle Kanäle hintereinander.so kannste auch nen normalen Empfänger anschließen.
Viele Grüße, William
-> http://william.thielicke.org/
richtig, aber ich will auch nur einen kanal auslesen, da meine schaltung auis zwei unabhängig arbeitetenden attinys besteht. dies is für die sicherheit , aber für n Roboter is deins vollkommen ausreichend und auch geeigneter als meins.
ich frag mich, ob dies nicht ein wenig kompliziert ist. im grunde genommen muss das ganze nicht einmal proportional sein --> wird der knüppel auch nur ein bisschen, sprich es kommt ein kontakt zustande fährt der roboter zum beispiel eine sekunde vorwärts. würde das nicht mit einem normalen input funktionieren?
Lesezeichen