- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 10 von 83

Thema: RP6 - 3 poliger Servo anschließen

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    62
    Beiträge
    5.799
    Blog-Einträge
    8
    Also irgendwo im Verlaufe des Threads habe ich jetzt den Faden verloren. Was klappt denn immer noch nicht? Servo an +, - und Signal angeschlossen? Welcher Steuerpin? Welches Programm? Vielleicht wäre mal eine kleine Zusammenfassung hilfreich.
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    07.05.2011
    Beiträge
    81
    Zitat Zitat von radbruch Beitrag anzeigen
    Also irgendwo im Verlaufe des Threads habe ich jetzt den Faden verloren. Was klappt denn immer noch nicht? Servo an +, - und Signal angeschlossen? Welcher Steuerpin? Welches Programm? Vielleicht wäre mal eine kleine Zusammenfassung hilfreich.
    Alles klar!
    Am Anfang hatte ich probiert Micro Servos, welche ich geschenkt bekommen habe mit Dirks-Servo-Library anzusteuern. Da bewegte sich jedoch nichts. Da Dirks Servo Library jedoch bei vielen eingesetzt wird, kann ich davon ausgehen dass das Programm so stimmt. Haben dann auch den Code noch angesehen, laut Dirk und meiner Meinung passt da auch alles!

    Also haben wir eine LED angebaut (wie vorher beschrieben angeschlossen) und Signale über ADC3 gegeben. Die LED fing an zu blinken. Scheint also als ob die Anschlüsse alle in Ordnung sind. DA die Servos geschenkt waren, und auch schon in nem Projekt verbaut waren, dachten wir uns dass die Defekt sind.

    Also habe ich einen komplett neuen Servo gekauft, diesen richtig angeschlossen (+ und - an der Basis des RP6 angeschlossen) und auf ADC3 der Erweiterungsplatine angeklemmt. Dirks Programm laufen lassen doch es bewegt sich immer noch ncihts! Und dieser Servo ist aber komplett neu!...

    Da stehe ich jetzt leider

  3. #3
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    62
    Beiträge
    5.799
    Blog-Einträge
    8
    Vielleicht solltest du testweise mal einen anderen Ansatz verfolgen:
    Code:
    #include "RP6RobotBaseLib.h" 
    
    int main(void) 
    { 
       initRobotBase();   
       DDRA |= 1;         // ADC0 auf Ausgang 
       while(1)        
       { 
          PORTA |= 1;    
          sleep(10); 
          PORTA &= ~1;     
          sleep(200-10);  
    	  
       } 
       
       
       return(0); 
    }
    Sleep(10); erzeugt Impulse von ca. 1ms Länge. Das Programm sollte nach entsptechender Anpassung auch auf dem m32 mit ADC3 funktionieren. Ein richtig angeschlossenes und funktionierendes Servo sollte damit eine Position anfahren und halten.
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    07.05.2011
    Beiträge
    81
    Hallo,

    Dein Programm funktioniert einwandfrei. Der Servo wird bis zum Anschlag gedreht und hält seine Position dort....
    Habs auf der Base gemach tmit ADC0

    ...
    Kannst du mir eventuell sagen was beim Ansatz von Dirk dann nicht stimmt?

    EDIT:
    Wie müsste ich jetzt das Programm umschreiben wenn sich der Servo erst nach rechts und dann nach links drehen soll?
    Kann ich auch Winkelangaben machen?

    Danke

  5. #5
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    62
    Beiträge
    5.799
    Blog-Einträge
    8
    Der Servo wird bis zum Anschlag gedreht und hält seine Position dort.
    Je nach Doku benötigen Servos Impulslängen zwischen ca. 0,5 und 2,5ms. Wenn du den Wert beim Aufruf der sleep()-Funktion änderst sollte das Servo eine andere Position anfahren (z.B. sleep(20);). Servopositionen nahe oder gar auf dem Endpunkt sind kritisch.

    Habs auf der Base gemach mit ADC0 ... Kannst du mir eventuell sagen was beim Ansatz von Dirk dann nicht stimmt?
    Sind auch wirklich alle GNDs (von Base, m32 und Servo) miteinander verbunden? Die Spannungsversorgung für das Servo sollte vom Base oder einem externen Akkupack kommen, weil inzwischen mehrfach darüber berichtet wurde, dass Servos direkt am m32 nicht funktionieren.

    Die Servoansteuerung von Dirk erzeugt die Impulslängen in zwei Schritten. Zuerst wird die Länge des kürzesten Impuls definiert (Anschlag eine Seite) und zu diesem wird die dem gewünschten Drehwinkel entsprechende Impulsdauer hinzuaddiert (bis maximal Anschlag andere Seite). Kritisch ist hierbei die Streuung der Servos (Hersteller, Model, ...) bezüglich der Impulslängen für die Endanschlagpositionen. Wenn der kürzeste Impuls nicht genau stimmt verfälschen sich auch alle anderen Positionen. Das kann sogar dazu führen, dass die verwendeten Impulslängen Positionen außerhalb des Drehbereichs anwählen! Allererster Schritt aller Servoansteuerungen sollte deshalb die Ermittlung der für die Endpositionen nötigen Impulslängen sein.

    Da die ServoLib über das Tasksystem eingebunden wird, sollten im Programm keine blockierenden Funktionen verwendet werden. Da ich immer nur meine eigenen Ansteuerungen verwende kann ich zur Servolib sonst nicht viel mehr sagen.

    Vielleicht noch zwei allgemeine Hinweise: Nach dem Editieren immer Speichern vor dem Kompilieren und nach Änderungen in der ServoLib immer ein Clean/Make all ausführen.

    Beispiele für mehrere Servopositionen mit sleep():
    https://www.roboternetz.de/community...l=1#post484891
    https://www.roboternetz.de/community...l=1#post507080
    https://www.roboternetz.de/community...l=1#post420023
    Geändert von radbruch (29.05.2011 um 20:06 Uhr) Grund: Links angefügt
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    07.05.2011
    Beiträge
    81
    danke hat wunderbar funktioniert!

  7. #7
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    62
    Beiträge
    5.799
    Blog-Einträge
    8
    Prima.

    Etwas mehr Details wären nett :)
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

Ähnliche Themen

  1. RN-Mega2560 Modul - Servo anschließen
    Von Blaner im Forum AVR Hardwarethemen
    Antworten: 2
    Letzter Beitrag: 15.09.2008, 17:12
  2. Antworten: 2
    Letzter Beitrag: 09.02.2008, 14: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, 12:36
  4. Servo Motor richtig anschließen
    Von jawo3 im Forum Motoren
    Antworten: 1
    Letzter Beitrag: 04.11.2007, 18:00
  5. servo direkt an einen Port anschließen?
    Von Zeroeightfifteen im Forum Motoren
    Antworten: 9
    Letzter Beitrag: 18.05.2005, 21:29

Berechtigungen

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

12V Akku bauen