Nun hatte ich endlich wieder Zeit, an der Steuerung weiterzubauen.
Bin mit euren Vorschlägen systematisch an die Sache ran und habe die ganze Verkabelung getestet, vielleicht ist da ja eine Lötstelle schlecht. Alles geprüft, alles i.O.
Also habe ich ein kleines Programm geschrieben, mit dem ich nur die Servos und nur in bestimmten Werten ansteuere. Das Programm läuft direkt auf dem RPi. So kann ich zumindest mal Übertragungsprobleme aus dem WLAN ausschliessen.
Zum Testen habe ich ebenfalls die Last von den Servos genommen. Unter Last läuft einer nicht, ohne Last laufen alle drei. Akku evtl. zu schwach?
Anbei die gewünschten Bilder des Lenkungsaufbaus, der Verkabelung und des Akkus.
Auf dem Video wäre zu sehen, dass die Servos auch ohne Last zittern. Daher gehe ich eher davon aus, dass irgendwo was mit dem PWM-Signal nicht passt.
Wie kann ich das hier einfügen, ohne einen Google- oder Facebook-Account erstellen zu müssen?
Hier der Code, mit dem ich die Steuerung prüfe:
Code:import sys import time import socket import RPi.GPIO as gpio from decimal import Decimal print "Setting up board" #General board settings gpio.setmode(gpio.BCM) print "Setting pins" #Pin settings for X axis gpio.setup(16, gpio.OUT) gpio.setup(20, gpio.OUT) gpio.setup(21, gpio.OUT) #Check LED on pwmServo Pin #gpio.output(16, True) #gpio.output(20, True) #gpio.output(21, True) #time.sleep(3) #gpio.output(16, False) #gpio.output(20, False) #gpio.output(21, False) #time.sleep(1) #Set pwmServo Pins as PWM pwmServo1 = gpio.PWM(16, 50) pwmServo2 = gpio.PWM(20, 50) pwmServo3 = gpio.PWM(21, 50) #Pin settings for blinker #gpio.setup(19, gpio.OUT) #gpio.setup(26, gpio.OUT) #Blinkers off #gpio.output(19, False) #gpio.output(26, False) time.sleep(1) #************************************************************************************************ #Change from left to right fltCounter = float(7.5) pwmServo1.start(fltCounter) pwmServo2.start(fltCounter) pwmServo3.start(fltCounter) while fltCounter < 10.0: #12.5: print "Angle % 0.2f" % fltCounter pwmServo1.ChangeDutyCycle(fltCounter) pwmServo2.ChangeDutyCycle(fltCounter) pwmServo3.ChangeDutyCycle(fltCounter) time.sleep(0.1) fltCounter = float(fltCounter + 0.1) #************************************************************************************************ #Change from right to left fltCounter = float(10) #float(12.5) while fltCounter > 5: print "Angle % 0.2f" % fltCounter pwmServo1.ChangeDutyCycle(fltCounter) pwmServo2.ChangeDutyCycle(fltCounter) pwmServo3.ChangeDutyCycle(fltCounter) time.sleep(0.1) fltCounter = float(fltCounter - 0.1) #************************************************************************************************ #Reset pins, turn off print "Stop" fltCounter = float(7.5) pwmServo1.ChangeDutyCycle(fltCounter) pwmServo2.ChangeDutyCycle(fltCounter) pwmServo3.ChangeDutyCycle(fltCounter) time.sleep(1) #X axis stop pwmServo1.stop() pwmServo2.stop() pwmServo3.stop() gpio.output(16, False) gpio.output(20, False) gpio.output(21, False) #Right and left blinker off #gpio.output(19, False) #gpio.output(26, False) gpio.cleanup() print "Exiting"







Zitieren


Lesezeichen