- 12V Akku mit 280 Ah bauen         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 15 von 15

Thema: servo am Pro-Bot 128

  1. #11
    Benutzer Stammmitglied
    Registriert seit
    04.02.2010
    Ort
    Jülich
    Alter
    30
    Beiträge
    92
    Anzeige

    Praxistest und DIY Projekte
    Hallo Roland,

    das Board ist ja der Hammer 21 Servos gleichzeigt steuern.
    Vielen Dank für den Tipp

    Vieleicht kaufe ich mir auch sofort das RN-Control dazu, das habe ich jetzt schon öfter bei guten Projekten gesehen, aber ich glaube ich experimentiere erst noch etwas mit meinem Pro-Bot.

    Michael

  2. #12
    Bei dem von mir verwendeten Top-Line Standard Servo war
    rot= 5V+
    braun = Masse
    orange = Steuerleitung
    Also wenn das Servo an der selben Batterie wie der Pro-Bot mit Spannung versorgt wird, genügt es die Steuerleitung an OC1A oder OC1B (PWM-Ports) anzuschließen.
    Bei getrennten Spannungsquellen müssen die Masse Leitungen (wie im Schaubild) verbunden werden.

    Danke für den Hinweis, werde den Blogpost auch ergänzen.
    Gruß Frank

  3. #13
    Benutzer Stammmitglied
    Registriert seit
    04.02.2010
    Ort
    Jülich
    Alter
    30
    Beiträge
    92
    okay, so funktioniert es jetzt einwandfrei bei mir (:

    nochmals viel Dank für deine Hilfe :P

    Michael

  4. #14
    Erfahrener Benutzer Fleißiges Mitglied Avatar von Robotniks
    Registriert seit
    13.10.2007
    Beiträge
    175
    Hi,

    schaut euch doch mal die Hilfe der IDE genauer an...
    Du benötigst keinen extra Controller für die Servos, es gibt bei der
    CC Pro einen Servo Befehl damit kannst du problemlos 18 Servos ansteuern!

    Code:
    // Ansteuerung von 3 Servos und beenden nach 10 Sek.
    
    void main(void)
    {
    
        byte servo_var[30]; // Servo interne Variablen
    
        // Max. 10 Servos, 20ms Intervall, Timer 3
    
        Servo_Init(10, 1, servo_var, 1); 
    
    
        Servo_Set(7, 2000);  // Servo Portbit 7   2000µs
        Servo_Set(6, 1800);  // Servo Portbit 6   1800µs
        Servo_Set(5, 1600);  // Servo Portbit 5   1600µs
    
        AbsDelay(5000);
    
        Servo_Set(7, 1000);  // Servo Portbit 7   1000µs
    
        AbsDelay(5000);
    
        Servo_Set(7, 0);     // alle Servos aus
        Servo_Set(6, 0);
        Servo_Set(5, 0);
    }

    void Servo_Init(byte servo_cnt, byte servo_interval, byte ramaddr[], byte timer);

    Sub Servo_Init(servo_cnt As Byte, servo_interval As Byte, ByRef ramaddr As Byte, timer As Byte)

    Beschreibung

    Initialisiert die Servoroutinen. Der Parameter servo_cnt gibt an wieviele Servos gleichzeitig betrieben werden. Die Periodenlänge (10 oder 20ms) wird mit servo_interval gesetzt, der Parameter timer bestimmt, welcher 16-Bit Timer eingesetzt wird. Timer 3 steht allerdings nur bei dem Mega128 zur Verfügung. Der Anwender muß den Servoroutinen Speicher zur Verfügung stellen. Die Größe beträgt servo_cnt * 3. Möchte man also 10 Servos betreiben, so sollte man ein byte Array von 30 Bytes reservieren.

    Für die Servoansteuerung wird ein 16-Bit Timer benötigt. Dies ist entweder Timer 1 oder Timer 3 (bei Mega12. Wird der Timer abgeschaltet oder für andere Timerfunktionen genutzt, so wird die Servoansteuerung nicht arbeiten.

    Parameter

    servo_cnt Anzahl der möglichen Servos (maximal 20)
    servo_interval Periodenlänge (0=10ms, 1=20ms)
    ramaddr Adresse des Speicherblocks

    timer Für die Servosteuerung benutzter 16-Bit Timer (0=Timer 1, 1=Timer 3 nur Mega12


    Syntax

    void Servo_Set(byte portbit, word pos);

    Sub Serial_Init(portbit As Byte, pos As Word)

    Beschreibung

    Setzt die Pulslänge zur Steuerung des Servoarms. Der Ausgangsport wird über den portbit Parameter angegeben. (Für die Abbildung zwischen Portbits und den Pins des Atmel Mega Chips siehe Pinzuordnung von M32 und M12.

    Alle Pulslängen der gestellten Servos dürfen als Summe nicht die Periodenlänge (servo_interval Parameter) überschreiten, da sonst ein erratisches Verhalten auftritt. Man kann daher z.B. 8 Servos auf 2500µs Pulslänge bei einer Periodenlänge von 20ms setzen. Zur Sicherheit sollte man allerdings ein wenig unter der Periodenlänge bleiben.

    Parameter

    portbit Bitnummer des Ports (siehe Tabelle)
    pos Pulslänge zur Steuerung des Servoarms in µsec (500 - 2500)


    Um eine schöne Liniare Bewegung zu erreichen, kannst du die Routinen von einer 10mS Timer Routine aus refreshen...


    Grüße

  5. #15
    Benutzer Stammmitglied
    Registriert seit
    04.02.2010
    Ort
    Jülich
    Alter
    30
    Beiträge
    92
    okay, ich probiere in den nächsten tagen mal alles aus (:

    und danke für deine Arbeit Robotniks

    Michael

Seite 2 von 2 ErsteErste 12

Berechtigungen

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

12V Akku bauen