PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : RC-Fernsteuerung + RN Control



florian1991
07.12.2008, 20: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

Willa
07.12.2008, 20:16
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, 22: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

Willa
07.12.2008, 22:30
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...

Willa
07.12.2008, 22:35
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, 07: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

hunni
14.12.2008, 10:26
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

Willa
14.12.2008, 10:43
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.

hunni
15.12.2008, 14:56
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, 17: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?

hunni
15.12.2008, 17:54
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, 21:25
was ist denn bei deinem code input? bzw. was wird ans rn control angeschlossen? das pwm signal vom empfänger?

gruss florian