Archiv verlassen und diese Seite im Standarddesign anzeigen : RC-Fernsteuerung + RN Control
florian1991
07.12.2008, 21:04
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.
florian1991
07.12.2008, 23:03
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...
der code:
TIMER0
$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
TIMER1
$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
florian1991
08.12.2008, 08:20
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.
$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
Hunni
so kannste auch nen normalen Empfänger anschließen.
Aber nur einen Kanal auslesen, oder? Dafür ist ja das Summensignal da.... da bekommt man alle Kanäle hintereinander.
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.
florian1991
15.12.2008, 18:28
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?
ja das kann schon sein, aba du musst ja erstmal den grundtakt wissen. wenn du zum beispiel sagst, das er bei 50000 losfahren soll, aber du garnich weist wo diese knüppelstellung is, dann is das ja auch für n popo. ausserdem is es doch viel schönr das gas auch regeln zu können
florian1991
15.12.2008, 22:25
was ist denn bei deinem code input? bzw. was wird ans rn control angeschlossen? das pwm signal vom empfänger?
gruss florian
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.