Servo Motor
Diese Motoren erlauben die Kontrolle der Winkelposition und Drehgeschwindigkeit.
Man kann den Motor direkt an den Raspberry Pi anschliessen.
SERVO | RASPBERRY PI |
---|---|
Power | Pin 1 – 3.3V |
Control | Pin 11 – GPIO 17 |
Ground | Pin 6 – GROUND |
Mit einem Python Skript kann man den Motor betreiben. Dazu nutzt man PWM (Pulse Width Modulation) um Signale in gleichmäßigen Abständen zu senden. Ein Servo Motor kann sich im Winkel von 0∘ bis 180∘ bewegen wobei 90∘ die neutrale Position ist. Die Winkel Position richtet sich nach der Singallänge.
import time
import RPi.GPIO as GPIO
control = 11
freq = 50 #Hz
GPIO.setmode(GPIO.BOARD)
GPIO.setup(control, GPIO.OUT)
pwm = GPIO.PWM(control, freq)
pwm.start(7.5)
try:
while True:
pwm.ChangeDutyCycle(7.5)
time.sleep(1)
pwm.ChangeDutyCycle(12.5)
time.sleep(1)
pwm.ChangeDutyCycle(2.5)
time.sleep(1)
except KeyboardInterrupt:
print("KeyboardInterrupt")
GPIO.cleanup()
In den meisten Fällen, bei mehreren Motoren, wird man eine externe Stromwelle nutzen. Dann wird nur der Control Pin mit dem Raspberry Pi verbunden und an die Stromquelle kommen Power und Ground.
ServoBlaster
PiBits kann von Github geklont und ServoBlaster anschliessend installiert werden.
git clone https://github.com/richardghirst/PiBits.git
cd PiBits/ServoBlaster/user/
sudo make install
ls /dev/servoblaster
Der Daemon von ServoBlaster.
sudo servod
Starten und stoppen des Daemons.
sudo /etc/init.d/servoblaster start
sudo /etc/init.d/servoblaster stop
Den Servo 1 (GPIO-17) setzen.
echo 1=100% > /dev/servoblaster
echo 1=10% > /dev/servoblaster
SERVO | GPIO |
---|---|
0 | 4 |
1 | 17 |
2 | 18 |
3 | 21 |
4 | 22 |
5 | 23 |
6 | 24 |
7 | 25 |
Auch ServoBlaster kann man mit einem Python Skript nutzen.
import os
import time
while True:
os.system("echo 0=100% > /dev/servoblaster")
time.sleep(0.1)
os.system("echo 1=100% > /dev/servoblaster")
time.sleep(0.3)
os.system("echo 0=10% > /dev/servoblaster")
time.sleep(0.1)
os.system("echo 1=10% > /dev/servoblaster")
time.sleep(2)