PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : RC-Empfaenger an RN-Control



Biboxx
26.01.2009, 07:19
Hallo Freunde,

ich habe alles durchgesucht und nichts einfaches gefunden.
Ich moechte einen AR6200-Empfaenger, das ist ein normaler RC-Empfaenger an den RN-Controller anschliessen
4 Kanal auslesen ohne Summensiganl bilden zu muessen, also einfach anstelle des servos oder des fahrtreglers an den controller

Wie mach ich das? knann mir jemand helfen?

Gruss

Biboxx

Hubert.G
26.01.2009, 11:31
Du hast an deinem Empfänger die Buchsen an die du die Servo ansteckst. An einem dieser Pin kommt das Servosignal heraus. Wenn der Empfänger die gleiche Stromversorgung hat wie RN-Control kannst du das Signal direkt verwenden.

radbruch
26.01.2009, 14:11
Hallo Biboxx,

ich vermute, dein "Wie mache ich das?" bezog sich eher auf die Auswertung als auf den Anschluß. Wenn du schon Servos ansteuern kannst und dazu eine ISR verwendest (wie im Beispiel im RN-Wissen: Servo) ist die Auswertung eines RC-Empfängersignals sehr einfach: Man zählt einfach die ISR-Aufrufe mit gesetztem RC-Eingang. Ein Beispiel (mit einem 8MHz-Mega32 und einem Timer im CTC-Mode):

ISR(TIMER0_COMP_vect)
{
static uint16_t rc_temp_pwr=0;
static uint16_t rc_temp_dir=0;

// Ab hier werden Impulse für Servos erzeugt
//static uint16_t count=0;
//if(count>x) PORTA &= ~16; else PORTA |= 16; // E_INT1 (Pin8)
//if(count>y) PORTC &= ~1; else PORTC |= 1; // SCL (Pin10)
//if(count>z) PORTC &= ~2; else PORTC |= 2; // SDA (Pin12)
//if(count<1000)count++; else count=0;

// Ab hier werden RC-Signale vom Empfänger ausgewertet
if (PINC & 1) rc_temp_dir++; else
if (rc_temp_dir) { rc_input_dir=rc_temp_dir-1; rc_temp_dir=0; }
if (PINC & 2) rc_temp_pwr++; else
if (rc_temp_pwr) { rc_input_pwr=rc_temp_pwr-1; rc_temp_pwr=0; }
}(Aus:https://www.roboternetz.de/phpBB2/zeigebeitrag.php?p=328824#328824)

Die Signale werden hier an PC0 und 1 eingespeist, die Ergebnisse stehen in rc_input_dir und rc_input_pwr. Standardmäßig werden solche ISR mit 100kHz aufgerufen, dann ergeben sich die für Servos üblichen Werte von 100-200. Man kann aber auch einen anderen Takt verwenden. Wenn man schon einen Timer mit halbwegs schneller Frequenz im Einsatz hat (PWM, IR-Trägerfrequenz...) kann man auch diesen verwenden. Die Werte haben dann zwar eine andere Auflösung, dafür ist der Aufwand noch geringer als wenn man extra noch einen Timer einsetzt. ;)

Gruß

mic