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

Thema: Motorgeschwindigkeit regulieren in Python programmieren

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Moderator Begeisterter Techniker Avatar von tucow
    Registriert seit
    15.01.2006
    Ort
    Düsseldorf
    Alter
    39
    Beiträge
    269
    Steht doch in der ReadMe

    pwm.stop()
    Gruß
    Andreas




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

  2. #2
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    35
    Beiträge
    3.501
    Blog-Einträge
    9
    Geht das nur darüber?
    Weil die Ausführung eines "normalen" Programms kannst du ja z.B. mit Strg + C beenden
    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

  3. #3
    Moderator Begeisterter Techniker Avatar von tucow
    Registriert seit
    15.01.2006
    Ort
    Düsseldorf
    Alter
    39
    Beiträge
    269
    Das ist kein Beenden, das ist ein Unterbrechen wenn man es ganz genau nimmt
    Ein "ordentliches" Beenden wäre z.B. os._exit(1) das über eine Benutzereingabe ausgeführt wird.

    Ich baue mir z.B. immer ein Menü:
    Code:
    while(True):
      user_input = raw_input('Bitte treffen Sie Ihre Wahl: ') 
    if user_input == "m":
     menu()
    ...
    elif user_input == "q":
      os._exit(1)
    Gruß
    Andreas




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

  4. #4
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    35
    Beiträge
    3.501
    Blog-Einträge
    9
    Haarspalterei :P
    Aber gut danke für die Info
    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

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

    Ich habe mir nun folgendes Programm erstellt:
    PWM Frequenz 19048 Hz, 50%
    Code:
    import RPi.GPIO as GPIO
    
    import time
    import signal
    
    from pizypwm import *
    
    def endProcess(signalnum = None, handler = None):
        first.stop()
        second.stop()
        third.stop()
        fourth.stop()
    
        GPIO.cleanup()
        exit(0)
    
    signal.signal(signal.SIGTERM, endProcess)
    signal.signal(signal.SIGINT, endProcess)
    
    first = PiZyPwm(19048, 19, GPIO.BOARD)
    second = PiZyPwm(19048, 21, GPIO.BOARD)
    third = PiZyPwm(19048, 23, GPIO.BOARD)
    fourth = PiZyPwm(19048, 24, GPIO.BOARD)
    
    first.start(50)
    second.start(50)
    third.start(50)
    fourth.start(50)
    
    def ControlAPairOfPins(FirstPin,FirstState,SecondPin,SecondState):
      if FirstState == "1":
        GPIO.output(int(FirstPin),True)
      else:
        GPIO.output(int(FirstPin),False)
    
      if SecondState == "1":
        GPIO.output(int(SecondPin),True)
      else:
        GPIO.output(int(SecondPin),False)
      return
    
    GPIO.setwarnings(False)
    
    GPIO.setmode(GPIO.BOARD)
    
    GPIO.setup(19,GPIO.OUT)
    GPIO.setup(21,GPIO.OUT)
    GPIO.setup(23,GPIO.OUT)
    GPIO.setup(24,GPIO.OUT)
    
    while True:
    
        ControlAPairOfPins("19","1","21","0")
        ControlAPairOfPins("23","1","24","0")
        print "Drehung nach rechts"
        time.sleep(1)
    
        ControlAPairOfPins("19","0","21","0")
        ControlAPairOfPins("23","0","24","0")
        print "Stop"
        time.sleep(1)
    
        ControlAPairOfPins("19","0","21","1")
        ControlAPairOfPins("23","0","24","1")
        print "Drehung nach Links"
        time.sleep(1)
    
        ControlAPairOfPins("19","0","21","0")
        ControlAPairOfPins("23","0","24","0")
        print "Stop"
        time.sleep(1)
    
        ControlAPairOfPins("19","1","21","0")
        ControlAPairOfPins("23","0","24","1")
        print "Geradeaus vorwaerts"
        time.sleep(1)  
    
        ControlAPairOfPins("19","0","21","0")
        ControlAPairOfPins("23","0","24","0")
        print "Stop"
        time.sleep(1)
    
        ControlAPairOfPins("19","0","21","1")
        ControlAPairOfPins("23","1","24","0")
        print "Geradeaus rueckwaerts"
        time.sleep(1)
    
        ControlAPairOfPins("19","0","21","0")
        ControlAPairOfPins("23","0","24","0")
        print "Stop"
        time.sleep(1)
    Das Programm läuft zwar ab, der Bot zittert aber wie wild.
    Ist das Programm so in Ordnung?
    Kannst du das bitte überprüfen?

  6. #6
    Moderator Begeisterter Techniker Avatar von tucow
    Registriert seit
    15.01.2006
    Ort
    Düsseldorf
    Alter
    39
    Beiträge
    269
    Naja, oben startest Du direkt die PWM auf allen Pins
    Code:
    first.start(50)second.start(50)
    third.start(50)
    fourth.start(50)
    Wenn ich das richtig interpretiere wollen Deine Motoren nun gleichzeitig nach vorne und nach hinten drehen => geht nicht => Zittern.
    Und unten in der while Schleife sagst Du den Motoren das sie voll aufdrehen sollen, oder? Das führt zu noch heftigerem Zittern weil es die PWM beeinträchtigt.
    Gruß
    Andreas




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

  7. #7
    Erfahrener Benutzer Roboter Genie Avatar von pinsel120866
    Registriert seit
    18.12.2007
    Ort
    Hohenems
    Alter
    58
    Beiträge
    847
    Vielen herzlichen Dank, tucow - nun habe ich es:
    Code:
    import RPi.GPIO as GPIO
    
    import time
    import signal
    
    from pizypwm import *
    
    def endProcess(signalnum = None, handler = None):
        first.stop()
        second.stop()
        third.stop()
        fourth.stop()
    
        GPIO.cleanup()
        exit(0)
    
    signal.signal(signal.SIGTERM, endProcess)
    signal.signal(signal.SIGINT, endProcess)
    
    first = PiZyPwm(20000, 19, GPIO.BOARD)
    second = PiZyPwm(20000, 21, GPIO.BOARD)
    third = PiZyPwm(20000, 23, GPIO.BOARD)
    fourth = PiZyPwm(20000, 24, GPIO.BOARD)
    
    GPIO.setwarnings(False)
    
    GPIO.setmode(GPIO.BOARD)
    
    GPIO.setup(19,GPIO.OUT)
    GPIO.setup(21,GPIO.OUT)
    GPIO.setup(23,GPIO.OUT)
    GPIO.setup(24,GPIO.OUT)
    
    while True:
        
        first.start(50)
        second.start(0)
        third.start(50)
        fourth.start(0)
        print "Drehung nach rechts"
        time.sleep(1)
    
        first.start(0)
        second.start(0)
        third.start(0)
        fourth.start(0)
        print "Stop"
        time.sleep(1)
        
        first.start(0)
        second.start(50)
        third.start(0)
        fourth.start(50)
        print "Drehung nach Links"
        time.sleep(1)
    
        first.start(0)
        second.start(0)
        third.start(0)
        fourth.start(0)
        print "Stop"
        time.sleep(1)
    
        first.start(50)
        second.start(0)
        third.start(0)
        fourth.start(50)
        print "Geradeaus vorwaerts"
        time.sleep(1)
        
        first.start(0)
        second.start(0)
        third.start(0)
        fourth.start(0)
        print "Stop"
        time.sleep(1)
    
        first.start(0)
        second.start(50)
        third.start(50)
        fourth.start(0)
        print "Geradeaus rueckwaerts"
        time.sleep(1)
    
        first.start(0)
        second.start(0)
        third.start(0)
        fourth.start(0)
        print "Stop"
        time.sleep(1)
    Damit drehen die Motoren nur mit 50% Leistung, dank Software - PWM
    Geändert von pinsel120866 (09.02.2013 um 15:18 Uhr)

Ähnliche Themen

  1. [ERLEDIGT] Frage zu Python
    Von pinsel120866 im Forum Raspberry Pi
    Antworten: 5
    Letzter Beitrag: 19.01.2013, 14:25
  2. Motorgeschwindigkeit auslesen
    Von Tausendacht im Forum Asuro
    Antworten: 7
    Letzter Beitrag: 17.08.2011, 14:33
  3. Motorgeschwindigkeit mit 2 Taster ändern
    Von Christopher1 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 8
    Letzter Beitrag: 26.08.2007, 22:33
  4. Antworten: 7
    Letzter Beitrag: 26.06.2007, 10:34
  5. Antworten: 9
    Letzter Beitrag: 17.11.2006, 12:35

Berechtigungen

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

12V Akku bauen