Potmeter stuurt servo aan (Pico)

Met een analoge potentiometer de hoek van een servomotor besturen leek me een leuke uitdaging om als tutorial te doen. Het is een toepassing die je veel tegenkomt zonder dat je het realiseert. Denk aan robots, lichtbesturing in theaters, vliegtuigen en schepen die de besturing 'by wire' doen.

Daar gaan we!

Servomotor
In deze tutorial heb ik de SG90 servomotor gebruikt. Deze servomotor kan van 0 tot 180 graden draaien. De servomotor heeft 5 V nodig waarbij de spanning met een PWM-signaal naar de gewenste graden worden gedraaid. De SG90 is al voor enkele euro’s te koop.

SG-90 Servomotor

Potentiometer
Ik wil de invoer regelen met een analoge potentiometer, ook wel potmeter genoemd. Je hebt ze in verschillende uitvoeringen. Eenmaal aangesloten op de analoge ingang van de Raspberry Pi Pico krijgen we een stappenwaarde die ligt tussen 0 en 65535. Wil je een project doen waarbij de zuiverheid van de potmeter van belang is, neem dan een precizie- of meerslagen potmeter.

Potmeters (enkelslag)

PWM
PWM wordt simpelweg Pulse Width Modulation genoemd. In het Raspberry Pi Pico board ligt die waarde tussen 0 en 0-65535, respectievelijke verdeling van 0v tot 3,3v. We gebruiken hiervoor pin 21 (GP16) van de Pico.

Wil je even nakijken hoe PWM werkt, klik dan hier en volg de waardevolle les van mijn docent Paul McWhorter om te snappen hoe je PWM gebruikt.

Het PWM principe

Wat heb je nodig

  • Raspberry Pi Pico of Pico W
  • Servomotor – SG90
  • Potentiometer (100kΩ)
  • Breadbord
  • Jumperdraden
  • IDE (Thonny)

Aansluitschema
Sluit de onderdelen als volgt op elkaar aan.

Bedradingsschema
Aansluitschema

Sluit nu de Pico aan op de PC of Raspberry Pi waar de IDE Thonny draait.

Thonny – Het script
Ik ga er van uit dat je weet hoe Thonny werkt en hoe je de Raspberry Pi Pico ermee verbind. Weet je het niet of twijfel je? Kijk dan hier waar ik uitleg hoe je het moet doen.

potservo.py
Kopieer onderstaande code en plak deze in een nieuw Thonny bestand (potservo.py).

# Laad de bibliotheken
from machine import Pin,PWM,ADC
from time import sleep

servo = PWM(Pin(16))    # De servomotor pin
potentiometer = ADC(28) # De potentiometer pin
servo.freq(50)          # Frequentie instelling

# PWM min en max waarde
in_min = 0
in_max = 65535
# Servomotor min en max graden
out_min = 1000
out_max = 9000

while True:
    #Lees de potmeter waardes
    value = potentiometer.read_u16()
    #Zet de PWM waardes van 0 tot 180
    Servo = (value - in_min) * (out_max - out_min) / (in_max - in_min) + out_min
    #Laat de servomotor draaien
    servo.duty_u16(int(Servo))

Draaien maar…
Druk in Thonny op de ‘uitvoer’-knop of [F5]. Als alles goed gegaan is, kun je nu de potmeter verdraaien en zie je de servomotor synchroon zijn hoek aanpassen.

Pico opstarten met script
Mocht je de Pico standaard met het script willen opstarten, hernoem dan het betreffende script naar: main.py

Have A Nice Day!

Geef als eerste een reactie

Laat een reactie achter

Het e-mailadres wordt niet gepubliceerd.


*