- 3D-Druck Einstieg und Tipps         
Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 23

Thema: Motorgeschwindigkeit regulieren in Python programmieren

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

    Motorgeschwindigkeit regulieren in Python programmieren

    Anzeige

    Praxistest und DIY Projekte
    Hallo,

    mein Pinselbot kennt derzeit nur die Motorgeschwindigkeiten Vollgas und Stop und zwar mit diesem Python Code:
    Code:
    #Get the GPIO module
    import RPi.GPIO as GPIO
    
    #Get the time module
    import time
    
    #A routine to control a pair of pins
    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)
      #Just retur
      return
    
    ####Main body of code
    
    #Get rid of warnings
    GPIO.setwarnings(False)
    
    #Set the GPIO mode
    GPIO.setmode(GPIO.BOARD)
    #Set the pins to be outputs
    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)
    Nun würde ich gerne die Geschwindigkeit regulieren. Meine Programmierkenntnisse reichen hierzu leider nicht mehr aus. Kann mir bitte jemand dabei helfen das in Python zu programmieren?

  2. #2
    Moderator Begeisterter Techniker Avatar von tucow
    Registriert seit
    16.01.2006
    Ort
    Düsseldorf
    Alter
    39
    Beiträge
    269
    Hallo Pinsel,

    das ist ganz klar ein Fall für eine PWM, doof nur dass das Pi nur einen nativen hardware PWM Ausgang besitzt, also her mit der software PWM
    Ich habe dazu eine ganz einfache Library gefunden: https://github.com/aboudou/pizypwm

    Test der Lib mit LED:


    Test am DSO:




    Das sollte doch ganz gut in Deinen Code passen
    Geändert von tucow (02.02.2013 um 14:54 Uhr)
    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
    58
    Beiträge
    847
    ok,danke vielmals für die lib. reicht es, wenn ich pizypwm.py ins gleiche verzeichnis wie mein pythonprogramm kopiere? und wie binde ich die lib richtig ein?

    sorry, das sind vielleicht dumme fragen, aber das ist neuland für mich...

  4. #4
    Moderator Begeisterter Techniker Avatar von tucow
    Registriert seit
    16.01.2006
    Ort
    Düsseldorf
    Alter
    39
    Beiträge
    269
    Schau dir mal die example.py an, dort steht am Anfang was Du alles importieren musst, in der Zeile
    Code:
    frompizypwmimport*
    steht zu Anfang der Name der Lib (Dateiname wenn man so will) und danach was importiert werden soll, * == alles.

    Kurzum, es reicht wenn du das alles importierst und die Lib im selben Ordner liegt.
    Gruß
    Andreas




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

  5. #5
    Erfahrener Benutzer Roboter Genie Avatar von pinsel120866
    Registriert seit
    18.12.2007
    Ort
    Hohenems
    Alter
    58
    Beiträge
    847
    ok, danke das ist mir jetzt klar.

    noch eine frage: was ist die optimale PWM frequenz für meine motoren?

  6. #6
    Moderator Begeisterter Techniker Avatar von tucow
    Registriert seit
    16.01.2006
    Ort
    Düsseldorf
    Alter
    39
    Beiträge
    269
    Das kann ich Dir nicht sagen, versuch es einfach mal mit der, der LED aus der example.py. Also 100 Hz.
    Ich könnte mir vorstellen das sowas im Datenblatt der Motoren stehen könnte, falls nicht einfach probieren. Abrauchen werden sie schon nicht
    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
    100 hz sind zu wenig. ich habe mittlerweile herausgefunden dass der rp6 ( hat dasselbe chassis) eine pwm frequenz von 19048 hz verwendet. das werde ich nehmen.

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

    PiZyPWM ist nicht schlecht....nur wie beende ich ein Programm mit der PWM? ^.^
    Weil Ctrl + C funktioniert nicht und Ctrl + D auch nicht und das Ding blockiert die Konsole.
    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

  9. #9
    Moderator Begeisterter Techniker Avatar von tucow
    Registriert seit
    16.01.2006
    Ort
    Düsseldorf
    Alter
    39
    Beiträge
    269
    Bin gespannt ob's funktioniert, Pinsel

    Das ist logisch, Kampi. Für jede PWM startet die Lib einen Thread, den musst Du erst stoppen bevor Du das Programm beenden kannst, ansonsten würde der Thread ja in einer Endlosschleife das ganze System blockieren.
    Gruß
    Andreas




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

  10. #10
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    34
    Beiträge
    3.501
    Blog-Einträge
    9
    Ja das ist klar
    Nur wie beende ich es?
    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

Seite 1 von 3 123 LetzteLetzte

Ähnliche Themen

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

Berechtigungen

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

Solar Speicher und Akkus Tests