Raspberry Pi – Stappenmotor (28BYJ-48) via game stuur (USB)

Hardware

game-wheel-iconplus icon blauwStappenmotor 28BYJ-48

Met dit voorbeeld laat ik zien hoe je met apparatuur via de USB poort (bijvoorbeeld een game stuur) de GPIO pinnen aanstuurt (bijvoorbeeld een stappenmotor (28BYJ-48) op de Raspberry Pi in een python script.raspberry pi logo

We combineren hier eigenlijk 2 scripts:
1) Raspberry Pi – Joystick of controller uitlezen USB (python)
2) Raspberry Pi – Stappenmotor (28BYJ-48)  via GPIO (python)

Hoe werkt het?

We lezen de AS (y) van het gaspedaal (of joystick, controller) uit met de python bibliotheek PyGame, dit is een (float) getal van -1 tot 1 (verschil is 2), de servo is aan te sturen doormiddel van 4 GPIO pinnen op een bepaalde volgorde aan te sturen met de python bibliotheek Rpi.GPIO.

Met een handige functie

Stappen volgorde van stappenmotor 28BYJ-48:
Stappenmotor 28BYJ-48 stap volgorde

Pinout

Draadkleur:
BlauwSpoel 01A
RozeSpoel 02A
GeelSpoel 01B
OranjeSpoel 02B
RoodSpoelen GND

Wat heb je nodig?

1) Python RPi.GPIO bibliotheek (standaard geïnstalleerd op de wheezy image)
1) Python PyGame bibliotheek (standaard geïnstalleerd op de wheezy image)

Aansluiten op de Raspberry Pi

Sluit de 28BYJ-48 via de ULN2003A driver board aan op de Raspberry Pi zoals aangegeven op onderstaand schema (de kruising in de kabel is al met de standaard connector toegepast):

28BYJ-48 via de ULN2003A op Raspberry Pi schema

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

Script

Onderstaand script laat de stappenmotor draaien aan de hand van hoever het gaspedaal is ingedrukt, er zijn commentaarregels toegevoegd om e.e.a. toe te lichten.

Maak een bestand aan, bijvoorbeeld /usr/src/gaspedaal.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/gaspedaal.py , druk op CTRL+C om het script te stoppen!

LET OP: Zodra je het script start staan de GPIO poorten allemaal aan, voor lange tijd is dit niet goed voor de motor, het pedaal zal zsm ingetrapt moeten worden om de timer te starten.

De stappenmotor zal nu sneller draaien wanneer je het gaspedaal verder intrapt, dit is de output van de console:

28BYJ-48 via een game stuur console ouput

Meten is weten

de GPIO poorten worden aangestuurd in een tijd van 1/ tijdwaarde, de tijdwaarde is variabel van 4 t/m 1900, het is even spelen met de juiste maximale waarde om de meeste rotaties per minuut te krijgen, met een stopwatch zijn deze waarden gemeten:

– Tijdwaarde max. 1300 = 1 rotatie in ca. 4,80 seconden.
– Tijdwaarde max. 1400 = 1 rotatie in ca. 4,70 seconden.
– Tijdwaarde max. 1500 = 1 rotatie in ca. 4,40 seconden.
– Tijdwaarde max. 1700 = 1 rotatie in ca. 4,20 seconden.
– Tijdwaarde max. 1900 = 1 rotatie in ca. 4,00 seconden.

Theoretische snelheid van een wiel met een doorsnede van 26 CM =

– Dimeter = 26 cm x 3.14 (pi) = ca. 82 cm per rotatie.
– Met een tijdwaarde van 1900 wordt een snelheid gehaald van ca. 4 seconden per rotatie,
Per uur zijn dat 3600 / 4 = 900 rotaties per uur.
– In een uur wordt dan een afstand afgelegd van 900 rotaties x 82 cm = 73800 cm per uur = ca. 740 m/h = 0,74 km/h.

LET OP: Bij maximale rotatie van de motor is het koppel (kracht) ook minder!

Dit zijn de knoppen en assen vanuit PyGame:

PC-SideWinder-Force-Feedback-Wheel pygame

 

Bron: raspberrypi-spy.co.uk