- 3D-Druck Einstieg und Tipps         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 18

Thema: Fernsteuerung für den RP6

  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    04.03.2010
    Beiträge
    205

    Fernsteuerung für den RP6

    Anzeige

    Powerstation Test
    Hallo alle zusasmmen!
    Nachdem ich bereits 2 Projekte erfolgreich vollendet habe, wollte ich jetzt etwas "Neues" anfangen. Ich weiß, dass zu dem Thema Fernsteuerungen + RP6 schon ein paar Themen existieren aber Ich konnte daraus nicht schlau werden. Mein Ziel ist es mit der 4-Kanal Fernsteueranlage von Conrad (Best.-Nr. : 2331736M) Funksignale zu senden und mit dem RP6 zu empfangen und und ihn darauf reagieren zu lassen. Was Ich wissen muss:
    1. Wo muss Ich welchen Pin anschließen? ( Ich benötige erstmal nur 2 Kanäle.)
    2. Wie kann ich das Empfängersignal mit dem RP6 auswerten? (Software)
    3. Habt ihr bessere Vorschläge welche Fernbedienung gut ist ?
    http://www.conrad.de/ce/de/product/2...HOP_AREA_19785 < Das ist der Link zu den wichtigsten Daten und Downloaddokus.
    Vielen Dank!
    Nichts existiert durch sich allein!
    Bild hier  

  2. #2
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    04.03.2010
    Beiträge
    205
    Ach ja nur um das klar zu stellen mir stehen alle Ports des RP6 zur Verfügung. Die Fernsteuerung werde Ich mir auch erst besorgen wenn ich weiß wie das Alles funktioniert und ein Programm habe.

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    08.02.2010
    Ort
    Unterfranken
    Alter
    25
    Beiträge
    34

    Frage

    Was willst du mit der Fernsteuerung alles fernsteuern? Und reicht es dir nicht aus, dass du über IRComm mit einer RC5 Fernbedienung (Radio, Fernseher,etc...) den RP6 steuern kannst?

  4. #4
    Erfahrener Benutzer Begeisterter Techniker Avatar von RobbyMartin
    Registriert seit
    31.12.2009
    Ort
    Leverkusen
    Alter
    31
    Beiträge
    206
    @ roboter14 die RC5 Fernbedienung kannst du nur bei Sichtkontakt benutzen und ausserdem nur auf geringe distanz über funk kann man ihn viel weiter fernsteuern

    LG
    martin

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    25.12.2009
    Beiträge
    9

    Anleitung

    @Mc Delta!
    Um den Empfänger mit den Ports zu verbinden, brauchst du erst einmal ein Kabel (z.B. vom großen C).Anschlussbelegung siehe hier. "Signal Puls" dann mit einem Eingangs-Port verbinden. Signale sind wie hier. Dein Robby wird dann wie ein Servo behandelt - abhängig von der Signallänge könntest du dann die Geschwindigkeit sowie den Radius steuern.
    karmic_koala

  6. #6
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    04.03.2010
    Beiträge
    205
    Hi
    Ich habe mir überlegt, dass man die Kanalausgänge an die beiden ADCs dranmacht und dann nur die Verschiedenen Eingangsspannungen auswertet. Allerdings bräuchte ich da sone art durchschnittswert funktion, damit die Schwankungen je Messung nicht so extrem sind und man mit den Werten was anfangen kann.
    Gingen eigentlich aucch die Ports SDA und SCL und wie könnte ich dann das Eingangsignal auswerten?
    Danke!
    Nichts existiert durch sich allein!
    Bild hier  

  7. #7
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    04.03.2010
    Beiträge
    205
    Gibt es eventuell eine Funktion in der lib mit der man überprüfen kann ob SCL und SDA (als Eingänge) high oder low sind?
    Nichts existiert durch sich allein!
    Bild hier  

  8. #8
    Benutzer Stammmitglied
    Registriert seit
    08.02.2010
    Ort
    Unterfranken
    Alter
    25
    Beiträge
    34

    Video

    Hi McDelta,
    ich habe auf YouTube ein Video entdeckt (von radbruch) :http://www.youtube.com/watch?v=A_GYUeFAgY8

    Kannst dazu auch mal radbruch eine PN schreiben wie er das gemacht hat.
    Hier der Originaltext von ihm:

    Anstelle der Linie kann man ja erst mal softwaremässig eine Route vorgeben nach der die Steine gesetzt werden. Oder man steuert den RP6 mit einer Modelbaufernbedienung:


    http://www.youtube.com/watch?v=lwq3RZguby0

    Blöderweise klemmt grad mal wieder der linke Antrieb, er fährt nicht zurück. Aber das hatte er schon immer. Ich mache noch ein schöneres Video, wenn er wieder richtig läuft.

    Das Auswerten der RC-Signale ist unglaublich einfach. Ich verwende dazu die selbe ISR wie beim Ansteuern der Servos (beides zusammen funktioniert übrigens auch prima). Wenn man die Aufrufe der ISR bei gesetztem RC-Eingangspin zählt, erhält man Werte die denen der Servosteuerung entsprechen. Der RP6 kann so sogar seine eigenen Servoimpulse zählen:


    Code:// RC-RP6 erster Versuch 18.11.07 mic

    #include "rblib.h"
    #include "rblib.c"

    uint8_t y, z;
    uint8_t rc_input_pwr, rc_input_dir;
    uint8_t rc_pwr, rc_dir;

    ISR(TIMER0_COMP_vect)
    {
    //static uint16_t count=0;
    static uint16_t rc_temp_pwr=0;
    static uint16_t rc_temp_dir=0;
    //if(count>x) PORTA &= ~16; else PORTA |= 16; // E_INT1 (Pin
    //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;
    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; }
    }
    void servo_init(void)
    {
    //DDRA |= 16; // E_INT1 als Ausgang
    //DDRC |= 3; // SCL und SDA als Ausgang

    TCCR0 = (0 << WGM00) | (1 << WGM01); // CTC-Mode
    TCCR0 |= (0 << COM00) | (0 << COM01); // ohne OCR-Pin
    TCCR0 |= (0 << CS02) | (1 << CS01) | (0 << CS00); // prescaler /8
    TIMSK = (1 << OCIE0); // Interrupt ein
    OCR0 = 9; // 100kHz?
    }
    int main(void)
    {
    rblib_init();
    servo_init();

    setLEDs(0b1001);
    setMotorDir(FWD,FWD);
    setMotorPWM(0,0);

    while(1)
    {
    rc_pwr=0;
    rc_dir=0;

    if (rc_input_dir<120) { rc_dir=150-rc_input_dir; setMotorDir(BWD,FWD); }
    if (rc_input_dir>140) { rc_dir=rc_input_dir-110; setMotorDir(FWD,BWD); }
    if (rc_input_pwr<120) { rc_pwr=150-rc_input_pwr; setMotorDir(FWD,FWD); }
    if (rc_input_pwr>140) { rc_pwr=rc_input_pwr-110; setMotorDir(BWD,BWD); }
    rc_pwr*=3;
    if (rc_pwr)
    {
    if (rc_input_dir<120) setMotorPWM(rc_pwr-rc_dir,rc_pwr+rc_dir);
    else if (rc_input_dir>140) setMotorPWM(rc_pwr+rc_dir,rc_pwr-rc_dir);
    else setMotorPWM(rc_pwr,rc_pwr);
    }
    else
    {
    setMotorPWM(rc_dir*3, rc_dir*3);
    }

    }

    return 0;
    }

    Beeper:BeeppipBeeeppiep
    Vogel:BeeppipBeeeppiep

  9. #9
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    Hallo

    Bitte, bitte, bitte keine PNs an mich! Persönliche Beratung lehne ich grundsätzlich ab.

    Inzwischen verwende ich bei Servoansteuerung mit geringer Auflösung die Timer1-Overflow-ISR. Sie wird von der Lib nicht genutzt und steht damit zur freien Verfügung:

    Bild hier  
    http://www.youtube.com/watch?v=fGHDkUlJuh0

    Libverträglich und mit wenig Aufwand einzubauen.

    Gruß

    mic
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  10. #10
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.03.2010
    Ort
    Hamburg
    Beiträge
    333
    könnte man nicht einfach ein RC Auto ausschlachten?

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen