Raspberry Pi – Servo’s aansturen (SGXX) via GPIO

Hardware

Servo SG90

BESTEL NU!

Deze mini servo’s kunnen 180 graden draaien (als je de beveiliging eruit haalt 360 graden), de servo wordt veelal gebruikt in vliegtuig modelbouw, andere toepassingen zijn uiteraard ook mogeli

Specificaties:

  • Modulatie: Analoog
  • Krachtkoppel: 1.80 kg-cm (op 4.8 volt)
  • Snelheid: 0.10 sec/60° (op 4.8 volt)
  • Motor Type: 3-polig
  • Tandwiel Type: Plastic
  • Maximale draairichting: 180°
  • Pulse breedte: 500-2400 µs

Pinout

Draadkleur:Functie:
Rood+5v
BruinGND
OranjeData (stuur signaal)

Hoe werkt het?

Deze mini servo werkt met PWM (Pulse Width Modulation), volgens de documentatie:

– ca. 2.5 ms puls voor positie naar rechts.
– 1.5 ms puls voor het midden.
– ca. 0.5 ms puls voor positie naar links.

Als je PWM gebruikt, kun je deze op 50 Hz zetten, dan heb je pulsjes van 1 sec / 50 Hz = 20 ms

Veelal is de duty-cycle in te stellen van 0% t/m 100%, dat geeft voor:

– rechts (2.5 ms) > duty-cycle = 100 / (20ms  / 2.5 ms) = 12.5%
– midden (1.5 ms) > duty-cycle = 100 / (20ms  / 1.5 ms) = 7.5%
– links (0.5 ms) > duty-cycle = 100 / (20ms  / 0.5 ms) = 2.5%

Let op: De waarden hierboven zijn theoretisch, voor mij werken deze waarden:

– rechts = duty-cycle van 11%
– midden = duty-cycle van 6%
– links = duty-cycle van 2.5%

Wat heb je nodig?

1) Python RPi.GPIO bibliotheek (standaard geinstalleerd op de wheezy image)

Aansluiten op de Raspberry Pi

Sluit de SG-90 servo aan zoals aangegeven op onderstaand schema:

raspberry pi mini servo sg-90 schema

Raspberry Pi pin:Draadkleur SG-90:
Pin 1 (+ 3.3V)Rood
Pin 6 (GND)Bruin
Pin 7Oranje

Script

Onderstaand script laat de servo tussen de 3 standen draaien 0, 90, 0, -90, etc.

Maak een bestand aan, bijvoorbeeld /usr/src/servo.py (evt onder root, en vergeet niet chmod te gebruiken om het bestand uit te kunnen voeren), voeg deze inhoud daar in toe:

Start het script met:  sudo python /usr/src/servo.py , druk op CTRL+C om het script te stoppen!

Bron: pickupapi.com


Commandolijn gebruiken

Het volgende stuk laat zien hoe je een hoek van 0-180 graden kan instellen via een commandolijn parameter: sudo python draai.py [hoek]

Het kleine nadeel van dit script is dat wanneer het script eindigdt de servo “los” gelaten word, en je deze dus weer kan draaien met bijvoorbeeld de hand.


Commandolijn met achtergrond script (daemon)

Het volgende script is een “control” script, deze stuurt een ander python script aan die op de achtergrond actief blijft om de PWM op de pin te blijven aansturen!

Commando: sudo python paintc.py [hoek]

Je hebt dus 2 bestanden in de home folder:
– scriptc.py (control script)
– scriptd.py (daemon script)


Meer info over: GPIO PWM