-         

Seite 1 von 9 123 ... LetzteLetzte
Ergebnis 1 bis 10 von 83

Thema: RP6 - 3 poliger Servo anschließen

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    07.05.2011
    Beiträge
    81

    RP6 - 3 poliger Servo anschließen

    Anzeige

    Hallo,

    Versuche einen Servo (Leitungen: Orange, Rot, Braun) an die erweiterungs Platine zu hängen und anzusteuern.
    Folgendes habe ich soweit gemacht:
    An die Ausgänge:
    VDD :: Braun
    GND :: Rot
    ADC3 :: Orange

    Habe das mit einer Steckverbindung gelöst (siehe Bild)

    Jetzt stellt sich mir nur noch die Frage:
    Wie steuere ich den Servo jetzt genau an?
    Kann mir da bitte wer weiterhelfen? - Danke
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken IMAG0427.jpg  

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    07.05.2011
    Beiträge
    81
    EDIT:

    Hab da natürlich noch Infos vergessen
    Hab versucht aus den Beispiels-Scripten die RP6CONTROL_09_MOVE.hex auf den RP6 zu spielen.
    Klappt auch soweit, aber wenn ich dann "Upload + Start!" im Loader sage, biepst der RP6 kurz auf und im RP6 Loader - Terminal bekomme ich:
    RP6 CONTROL M32 I2C Master Example Program!

    Moving...

    I2C ERROR - TWI STATE: 0x20

    I2C ERROR - TWI STATE: 0x20

    I2C ERROR - TWI STATE: 0x20
    und dann passiert leider nichts mehr :/

    Kann mir wer weiterhelfen?

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.791
    @roboterx:

    Servos an der RP6 Control M32 Platine kannst du z.B. mit dieser Lib ansteuern:
    http://www.roboternetz.de/community/...y-für-8-Servos

    Das RP6Control_09_Move.c Programm gehört in die Control M32 Platine.
    Auf der RP6Base must du dann RP6Base_I2CSlave.c laden.
    Dann müßte es klappen.
    Das hat aber nichts mit der Servo-Ansteuerung zu tun.
    Gruß
    Dirk

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    07.05.2011
    Beiträge
    81
    Zitat Zitat von Dirk Beitrag anzeigen
    @roboterx:

    Servos an der RP6 Control M32 Platine kannst du z.B. mit dieser Lib ansteuern:
    http://www.roboternetz.de/community/...y-für-8-Servos

    Das RP6Control_09_Move.c Programm gehört in die Control M32 Platine.
    Auf der RP6Base must du dann RP6Base_I2CSlave.c laden.
    Dann müßte es klappen.
    Das hat aber nichts mit der Servo-Ansteuerung zu tun.
    Danke für die ganzen Infos
    Werd mir jetzt mal deine Library anschauen und hoffen dass es klappt

    lg

  5. #5
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.791
    Habe noch übersehen, dass VDD eher an Rot vom Servo gehört und GND an Braun!
    Gruß
    Dirk

  6. #6
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.01.2006
    Beiträge
    4.556
    Zitat Zitat von roboterx Beitrag anzeigen
    Hallo,

    Versuche einen Servo (Leitungen: Orange, Rot, Braun) an die erweiterungs Platine zu hängen und anzusteuern.
    Folgendes habe ich soweit gemacht:
    An die Ausgänge:
    VDD :: Braun
    GND :: Rot
    ADC3 :: Orange

    Habe das mit einer Steckverbindung gelöst (siehe Bild)

    Jetzt stellt sich mir nur noch die Frage:
    Wie steuere ich den Servo jetzt genau an?
    Kann mir da bitte wer weiterhelfen? - Danke
    Du solltest besser die Farbbelegung noch einmal genau überprüfen! In der Regel wird Rot als +, braun als gnd
    verwendet. Das (kann) bei Deinem Servo natürlich auch anders sein.....

    Gruß Richard

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    07.05.2011
    Beiträge
    81
    Zitat Zitat von Dirk Beitrag anzeigen
    Habe noch übersehen, dass VDD eher an Rot vom Servo gehört und GND an Braun!
    Hallo,

    War mein Fehler. Hab den Servo schon umgepolt...
    (sieht man auf dem Bild) da wo ich zur Not die Drähte umgepolt habe und mit Klebband isoliert. (temporär)

    Aber danke für die Hilfen, habs jetzt selber überlesen

  8. #8
    Benutzer Stammmitglied
    Registriert seit
    07.05.2011
    Beiträge
    81
    So, hab jetzt mal alles so gemacht, wies hoffentlich gehört:
    Code:
    #include "../m32servolib/RP6ControlServoLib.h"
    
    uint16_t pos = 0;
    
    int main(void)
    {  
    	initRP6Control();
    
    	initLCD();
    
    	showScreenLCD("################", "################");
    	mSleep(1500);
    	showScreenLCD("<<RP6  Control>>", "<<LC2 - DISPLAY>>");
    	mSleep(2500); 
    	showScreenLCD(" Servo - Test 1 ", "  Version 1.00  ");
    	mSleep(2500);
    	clearLCD();
    
    	setLEDs(0b111111);
    	mSleep(500);
    	setLEDs(0b000000);
    	
    	initSERVO(SERVO3 | SERVO4);
    
    	startStopwatch2();
    	
    	while(true)  
    	{
    
    		if (getStopwatch2() > 48) {
    			servo1_position = pos;
    			servo2_position = pos;
    			setCursorPosLCD(0, 0);
    			writeStringLCD_P("Servopos.: ");
    			writeIntegerLCD(pos, DEC);
    			writeStringLCD_P("   ");
    
    			pos++;
    			if (pos > RIGHT_TOUCH) {pos = 0;}
    			setStopwatch2(0);
    		}
    
    		task_SERVO();
    
    		mSleep(3);
    	}
    	return 0;
    }
    Kompiliert einwandfrei durch. Nur wenn ich das hex File auf den RP6 spiele, passiert mit dem Servo nichts...
    Beim LCD Display läuft alles durch: "Servopos: 1,2,3,4... usw". Doch der Servo bewegt sich keinen Millimeter.
    Wie vorher erwähnt, hängt er auf ADC3, rot auf + und braun auf ground.

    Was übersehe ich?
    Danke für die Hilfen!

  9. #9
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.791
    Nur wenn ich das hex File auf den RP6 spiele, passiert mit dem Servo nichts...
    Die Lib kann 8 Servos an PC2 bis PC7 und PD5, PD6 ansteuern. ADC3 ist nicht vorgesehen.

    Wenn du doch ADC3 für SERVO1 nehmen willst:
    1. Änderungen in der RP6ControlServoLib.h:
    a) Im Abschnitt // Servo ports:
    Die 2 Zeilen:
    #define SERVO1_PULSE_ON (PORTC |= IO_PC2) // PC2
    #define SERVO1_PULSE_OFF (PORTC &= ~IO_PC2)
    ... auskommentieren oder löschen.
    b) Dafür einfügen:
    #define SERVO1_PULSE_ON (PORTA |= ADC3) // PA3
    #define SERVO1_PULSE_OFF (PORTA &= ~ADC3)

    2. Änderungen in der RP6ControlServoLib.c:
    a) In der Funktion initSERVO() die Zeile:
    if (servos & SERVO1) {DDRC |= IO_PC2; PORTC &= ~IO_PC2;}
    ... auskommentieren oder löschen.
    b) Stattdessen einfügen:
    if (servos & SERVO1) {DDRA |= ADC3; PORTA &= ~ADC3;}

    Du kannst dann dein Servo als SERVO1 ansteuern, also die Initialisierung sieht so aus:
    initSERVO(SERVO1);

    ... und die Positionsänderungen erfolgen mit der Variable: servo1_position (in deiner Demo ist das schon so!)
    Gruß
    Dirk

  10. #10
    Benutzer Stammmitglied
    Registriert seit
    07.05.2011
    Beiträge
    81
    Soweit ich weiß sind die PD5 und PD6 Pins auf den IO/Ports.
    Das heißt ich schließe das orange Kabel (Datenkabel) des Servos an PD5 oder PD6 an.
    Rot verbinde ich mit +
    und braun mit GRND

    Wenn ich das Script dann ausführe, bewegt sich der Servo, weil PD5 bzw. PD6 angeschlossen ist.
    Stimmt das so?

    Danke..

Seite 1 von 9 123 ... LetzteLetzte

Ähnliche Themen

  1. RN-Mega2560 Modul - Servo anschließen
    Von Blaner im Forum AVR Hardwarethemen
    Antworten: 2
    Letzter Beitrag: 15.09.2008, 18:12
  2. Antworten: 2
    Letzter Beitrag: 09.02.2008, 15:53
  3. 37-Poliger Sub-D-Stecker
    Von trafo89 im Forum PC-, Pocket PC, Tablet PC, Smartphone oder Notebook
    Antworten: 5
    Letzter Beitrag: 14.11.2007, 13:36
  4. Servo Motor richtig anschließen
    Von jawo3 im Forum Motoren
    Antworten: 1
    Letzter Beitrag: 04.11.2007, 19:00
  5. servo direkt an einen Port anschließen?
    Von Zeroeightfifteen im Forum Motoren
    Antworten: 9
    Letzter Beitrag: 18.05.2005, 22:29

Berechtigungen

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