Skip to main content

Servo

Een servo-motor kan naar een precieze hoek draaien (tussen 0 en 180 graden). Handig voor een grijper, een wijzer of een sweepende sensor.

Materiaal​

  • Nano op het shieldArduino Nano RP2040 Connect op het Leaphy Murphy ShieldHet Leaphy Murphy Shield, de groene printplaat waar de Nano in past
  • Servo-motorDraait 180 gradenEen kleine servo-motor (MG90) met een bruine, rode en oranje kabel

De servo heeft drie kabels:

  • Bruin (of zwart): GND
  • Rood: VCC, de plus
  • Oranje (of geel): stuursignaal
Controlevraag

Welke kleur kabel gaat naar 3.3V?

Antwoord

De rode kabel. De bruine/zwarte kabel gaat naar GND en de oranje/gele kabel naar een digitale pin.

Aansluiten​

Aansluitschema: de stekker van de servo op het rijtje van D6 van het shield

Op het shield heeft elke pin van de Nano een eigen rijtje van drie pinnen. De binnenste, naast de Nano, is de pin zelf (bijvoorbeeld D7). De middelste is 3V3 en de buitenste is GND. Sluit een onderdeel aan op het rijtje van zijn pin: dan zitten signaal, 3V3 en GND naast elkaar, en past er een stekker van drie pinnen op. In het schema zegt de legenda welke draad op welke pin komt.

De stekker van de servo past precies op het rijtje van D6:

  • Bruin (GND) op de buitenste rij, GND
  • Rood (VCC) in het midden, 3V3
  • Oranje (stuursignaal) op de binnenste rij, naast de Nano: de pin D6
3,3 V is aan de lage kant

Een MG90 of SG90 is gemaakt voor 4,8 tot 6 V. Op 3,3 V draait hij wel, maar zwakker: met een zware grijper kan hij haperen of halverwege blijven staan. Start het bord opnieuw op zodra de servo beweegt? Dan trekt hij meer stroom dan het bord kan leveren. Vraag je docent dan om een aparte voeding van 5 V voor de servo, met de GND van die voeding aan de GND van het bord.

Code​

from leaphymicropython.actuators.servo import set_servo_angle
from time import sleep

set_servo_angle("D6", 0)
sleep(1)
set_servo_angle("D6", 90)
sleep(1)
set_servo_angle("D6", 180)

De servo draait nu naar 0, dan 90 en dan 180 graden.

Uitleg van set_servo_angle​

set_servo_angle(pin_name, angle)
  • pin_name: naam van de pin als tekst, met een D ervoor: "D6", "D7", ...
  • angle: een getal tussen 0 en 180 graden.
Opdracht: heen en weer zwaaien

Laat de servo continu heen en weer zwaaien tussen 0 en 180 graden, met 1 seconde tussen elke stand.

Oplossing
from leaphymicropython.actuators.servo import set_servo_angle
from time import sleep

while True:
set_servo_angle("D6", 0)
sleep(1)
set_servo_angle("D6", 180)
sleep(1)