Top

Servo Motor

Diese Motoren erlauben die Kontrolle der Winkelposition und Drehgeschwindigkeit.

ServoMotor

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

ServoMotor

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)

ServoMotor