-         

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 24

Thema: PWM für Servo

  1. #1
    Erfahrener Benutzer Roboter Genie Avatar von pinsel120866
    Registriert seit
    18.12.2007
    Ort
    Hohenems
    Alter
    51
    Beiträge
    847

    PWM für Servo

    Anzeige

    Hallo,

    ich wollte pizypwm.py, die erfolgreich die Motorgeschwindigkeit regelt für meinen Servo verwenden und das Zucken ausschalten:
    Code:
    import RPi.GPIO as GPIO
    
    import time
    import signal
    
    from pizypwm import *
    
    def endProcess(signalnum = None, handler = None):
        servo.stop()
    
        GPIO.cleanup()
        exit(0)
    
    signal.signal(signal.SIGTERM, endProcess)
    signal.signal(signal.SIGINT, endProcess)
    
    servo = PiZyPwm(50, 26, GPIO.BOARD)
    
    GPIO.setwarnings(False)
    
    GPIO.setmode(GPIO.BOARD)
    
    GPIO.setup(26,GPIO.OUT)
    
    while True:
        
        servo.start(5)
        print "Drehung nach links"
        time.sleep(1)
    
        servo.start(7.5)
        print "Drehung Mitte"
        time.sleep(1)
    
        servo.start(10)
        print "Drehung nach rechts"
        time.sleep(1)
    Das Problem ist, das der Servo unkontolliert herumschwenkt, obwohl ich 50 Hz (20ms) eingestellt habe und die 1ms 1,5ms und 2ms Impulse sende. Könnte bitte jemand meinen Code überprüfen?

    Wäre nett, danke.

  2. #2
    Moderator Begeisterter Techniker Avatar von tucow
    Registriert seit
    16.01.2006
    Ort
    Düsseldorf
    Alter
    32
    Beiträge
    269
    Ich benutze für die Servos meines Humanoiden, am RPi, den PCA9685 mit 60Hz.

    Das sie unkontolliert herumschwenkt hatte ich mal bei den Controllern die ich vor dem Pi entworfen habe, da habe ich vergessen GND vom ATmega mit dem GND von den Servos zu verbinden, kann das bei Dir der Fall sein? (Ich denke mal nicht das Du die Servos vom RPi aus versorgst.)
    Gruß
    Andreas




    Mein: Humanoide // nanoCopter Projekt
    Das Raspberry Pi als: Wifi Access Point // Wifi Router

  3. #3
    Erfahrener Benutzer Roboter Genie Avatar von pinsel120866
    Registriert seit
    18.12.2007
    Ort
    Hohenems
    Alter
    51
    Beiträge
    847
    Doch, ich versorge den Servo vom RPi. Funktioniert ohne PWM ganz gut. Möglicherweise habe ich Stromschwankungen, die das auslösen.

  4. #4
    Erfahrener Benutzer Roboter Genie Avatar von pinsel120866
    Registriert seit
    18.12.2007
    Ort
    Hohenems
    Alter
    51
    Beiträge
    847
    Nun habe ich den halben Nachmittag versucht, den Servo anzusteuern (die andere Hälfte des Nachmittags habe ich Schnee geschaufelt...)

    Ich kriege es nicht hin, auch nicht mit externer Stromquelle für den Servo. Ich gehe mal davon aus, dass pizypwm für Servos nicht geeignet ist.

  5. #5
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    27
    Beiträge
    3.517
    Blog-Einträge
    9
    Hey Pinsel,

    ich versuche gerade selber einen Servo mittels PizyPWM anzusteuern (Modelcraft ES-05).
    Der Code sieht so aus:

    Code:
    import RPi.GPIO as GPIO
    import time
    import os
    from pizypwm import *
    
    
    GPIO.setwarnings(False)
    GPIO.setmode(GPIO.BCM)
    GPIO.setup(9, GPIO.OUT)
    
    
    while True:
        
        Servo = PiZyPwm(50, 9, GPIO.BCM)
        
        user_input = raw_input("Bitte treffen Sie Ihre Wahl: ") 
        
        if(user_input == "l"):
            Servo.start(5)
            print "Drehung nach Links"
            time.sleep(1)
            Servo.stop()
            GPIO.cleanup()
        elif(user_input == "m"):
            Servo.start(8)
            print "Drehung in die Mitte"
            time.sleep(1)
            Servo.stop()
            GPIO.cleanup()
        elif(user_input == "r"):
            Servo.start(11)
            print "Drehung nach Rechts"
            time.sleep(1)
            Servo.stop()
            GPIO.cleanup()
        elif(user_input == "q"):
            Print "Programm wird beendet......"
            os._exit(1)
            Servo.stop()
            GPIO.cleanup()
        else:
            print "Ungueltige Eingabe!"
    Und bei mir zuckt der Servo nicht mal. Das Oszi zeigt einen Puls an (variabel von 1ms - 2ms). Den Servo habe ich direkt an die 5V vom Pi angeschlossen und den Signalanschluss direkt an das Pi, aber nichts tut sich....weißt du eine Lösung?

    Btw....die Lösung mit dem "Menü" ist klasse
    Danke @ tucow
    Schaut ruhig mal auf meiner Homepage vorbei :
    http://kampis-elektroecke.de

    Oder folge mir auf Google+:
    Daniel Kampert

    Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.

    Gruß
    Daniel

  6. #6
    Erfahrener Benutzer Roboter Genie Avatar von pinsel120866
    Registriert seit
    18.12.2007
    Ort
    Hohenems
    Alter
    51
    Beiträge
    847
    Hallo Kampi,

    versuchs mal damit:
    Code:
    import RPi.GPIO as GPIO
    import time
    import signal
    import os
    from pizypwm import *
    
    def endProcess(signalnum = None, handler = None):
        servo.stop()
    
        GPIO.cleanup()
        exit(0)
    
    signal.signal(signal.SIGTERM, endProcess)
    signal.signal(signal.SIGINT, endProcess)
    
    GPIO.setwarnings(False)
    GPIO.setmode(GPIO.BOARD)
    GPIO.setup(26, GPIO.OUT)
    
    
    while True:
        
        Servo = PiZyPwm(50, 26, GPIO.BOARD)
        
        user_input = raw_input("Bitte treffen Sie Ihre Wahl: ") 
        
        if(user_input == "l"):
            Servo.start(5)
            print "Drehung nach Links"
            time.sleep(1)
            Servo.stop()
            GPIO.cleanup()
        elif(user_input == "m"):
            Servo.start(8)
            print "Drehung in die Mitte"
            time.sleep(1)
            Servo.stop()
            GPIO.cleanup()
        elif(user_input == "r"):
            Servo.start(11)
            print "Drehung nach Rechts"
            time.sleep(1)
            Servo.stop()
            GPIO.cleanup()
        elif(user_input == "q"):
            print "Programm wird beendet......"
            os._exit(1)
            Servo.stop()
            GPIO.cleanup()
        else:
            print "Ungueltige Eingabe!"
    Du musst allerdings PIN 26 (BOARD) verwenden.

    - - - Aktualisiert - - -

    Halt, Stop - ich habs:
    Code:
    import RPi.GPIO as GPIO
    import time
    import signal
    import os
    from pizypwm import *
    
    def endProcess(signalnum = None, handler = None):
        servo.stop()
        GPIO.cleanup()
        exit(0)
    
    signal.signal(signal.SIGTERM, endProcess)
    signal.signal(signal.SIGINT, endProcess)
    
    GPIO.setwarnings(False)
    GPIO.setmode(GPIO.BOARD)
    GPIO.setup(26, GPIO.OUT)
    
    
    while True:
        
        Servo = PiZyPwm(500, 26, GPIO.BOARD)
        
        user_input = raw_input("Bitte treffen Sie Ihre Wahl: ") 
        
        if(user_input == "l"):
            Servo.start(95)
            print "Drehung nach Links"
            time.sleep(1)
            Servo.stop()
            GPIO.cleanup()
        elif(user_input == "m"):
            Servo.start(50)
            print "Drehung in die Mitte"
        time.sleep(1) 
            Servo.stop()
            GPIO.cleanup()
        elif(user_input == "r"):
            Servo.start(5)
            print "Drehung nach Rechts"
            time.sleep(1)
        Servo.stop()
            GPIO.cleanup()
        elif(user_input == "q"):
            print "Programm wird beendet......"
            os._exit(1)
            Servo.stop()
            GPIO.cleanup()
        else:
            print "Ungueltige Eingabe!"
    Ich weiss zwar nicht genau warum, aber so gehts

  7. #7
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    27
    Beiträge
    3.517
    Blog-Einträge
    9
    mmh klappt immer noch nicht
    Schaut ruhig mal auf meiner Homepage vorbei :
    http://kampis-elektroecke.de

    Oder folge mir auf Google+:
    Daniel Kampert

    Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.

    Gruß
    Daniel

  8. #8
    Erfahrener Benutzer Roboter Genie Avatar von pinsel120866
    Registriert seit
    18.12.2007
    Ort
    Hohenems
    Alter
    51
    Beiträge
    847
    Hast du meine Ergänzung im vorherigen Post gesehen? Damit schlägt mein Servo nach links und rechts voll aus.

  9. #9
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    27
    Beiträge
    3.517
    Blog-Einträge
    9
    Hey,

    ja ich habe den Code direkt raus kopiert.
    Schaut ruhig mal auf meiner Homepage vorbei :
    http://kampis-elektroecke.de

    Oder folge mir auf Google+:
    Daniel Kampert

    Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.

    Gruß
    Daniel

  10. #10
    Erfahrener Benutzer Roboter Genie Avatar von pinsel120866
    Registriert seit
    18.12.2007
    Ort
    Hohenems
    Alter
    51
    Beiträge
    847
    hmm, und auch pin 26? bei mir funktioniert das programm... läuft mein servotestprogramm ohne pwm bei dir?

Seite 1 von 3 123 LetzteLetzte

Ähnliche Themen

  1. Servo PWM
    Von manhunt im Forum Motoren
    Antworten: 8
    Letzter Beitrag: 09.12.2008, 11:29
  2. Ansteuerung Servo mit Servo Fkt. oder mit PWM?
    Von cosanostra im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 8
    Letzter Beitrag: 14.11.2007, 11:26
  3. PWM signal für servo "von hand" erzeugen ?
    Von PsiQ im Forum PIC Controller
    Antworten: 8
    Letzter Beitrag: 26.03.2007, 23:25
  4. PWM - Servo
    Von Greuth im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 15
    Letzter Beitrag: 02.02.2006, 23:52
  5. [ERLEDIGT] PWM für Servo mit eingebautem PWM gen. (Atmel 2313)
    Von Philipp_c im Forum AVR Hardwarethemen
    Antworten: 11
    Letzter Beitrag: 29.09.2004, 01:45

Berechtigungen

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