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"
Lesezeichen