Raspberry Pi is een op ARM-architectuur gebaseerde processor, ontworpen voor elektronische ingenieurs en hobbyisten. De PI is momenteel een van de meest vertrouwde platformen voor projectontwikkeling. Met een hogere processorsnelheid en 1 GB RAM kan de PI worden gebruikt voor veel spraakmakende projecten zoals beeldverwerking en internet der dingen.
Voor het doen van spraakmakende projecten moet men de basisfuncties van PI begrijpen. In deze tutorials behandelen we alle basisfunctionaliteiten van Raspberry Pi. In elke tutorial bespreken we een van de functies van PI. Aan het einde van deze Raspberry Pi Tutorial-serie kun je zelf spraakmakende projecten doen. Doorloop onderstaande tutorials:
- Aan de slag met Raspberry Pi
- Raspberry Pi-configuratie
- LED Blinky
- Raspberry Pi-knopinterface
- Raspberry Pi PWM-generatie
- Besturen van DC-motor met Raspberry Pi
In deze tutorial zullen we de snelheid van een stappenmotor regelen met behulp van Raspberry Pi. In Stepper Motor, zoals de naam zelf zegt, is de rotatie van de as in Step-vorm. Er zijn verschillende soorten stappenmotoren; hier zullen we de meest populaire gebruiken die de unipolaire stappenmotor is. In tegenstelling tot de DC-motor kunnen we de stappenmotor in een bepaalde hoek draaien door hem de juiste instructies te geven.
Om deze viertraps stappenmotor te laten draaien, leveren we stroompulsen door gebruik te maken van het stappenmotor-stuurcircuit. Het stuurcircuit ontvangt logische triggers van PI. Als we de logische triggers besturen, regelen we de vermogenspulsen en daarmee de snelheid van de stappenmotor.
Er zijn 40 GPIO-uitgangspennen in Raspberry Pi 2. Maar van de 40 kunnen slechts 26 GPIO-pinnen (GPIO2 tot GPIO27) worden geprogrammeerd. Sommige van deze pinnen hebben een aantal speciale functies. Met speciale GPIO opzij, hebben we nog maar 17 GPIO over. Elk van deze 17 GPIO-pinnen kan maximaal 15 mA stroom leveren. En de som van de stromen van alle GPIO-pinnen mag niet groter zijn dan 50mA. Ga voor meer informatie over GPIO-pinnen door: LED knippert met Raspberry Pi
Er zijn + 5V (Pin 2 & 4) en + 3.3V (Pin 1 & 17) uitgangspennen op het bord voor het aansluiten van andere modules en sensoren. Deze stroomrails kunnen niet worden gebruikt om de stappenmotor aan te drijven, omdat we meer kracht nodig hebben om hem te laten draaien. We moeten dus de stroom aan de stappenmotor leveren vanuit een andere stroombron. Mijn stappenmotor heeft een nominale spanning van 9V, dus ik gebruik een 9V-batterij als mijn tweede stroombron. Zoek het modelnummer van uw stappenmotor om de nominale spanning te kennen. Kies, afhankelijk van de classificatie, de juiste secundaire bron.
Zoals eerder vermeld, hebben we een stuurcircuit nodig om de stappenmotor aan te drijven. We zullen hier ook een Simple Transistor Driver Circuit ontwerpen.
Vereiste componenten:
Hier gebruiken we Raspberry Pi 2 Model B met Raspbian Jessie OS. Alle basisvereisten voor hardware en software zijn eerder besproken, u kunt het opzoeken in de Raspberry Pi-introductie, behalve dat we nodig hebben:
- Verbindende pinnen
- 220Ω of 1KΩ weerstand (3)
- Stappenmotor
- Knopen (2)
- 2N2222 transistor (4)
- 1N4007 Diode (4)
- Condensator - 1000uF
- Broodplank
Circuit uitleg:
Stappenmotor gebruikt 200 stappen om 360 graden rotatie te voltooien, wat betekent dat hij 1,8 graden per stap roteert. Omdat we een viertraps stappenmotor aandrijven, moeten we vier pulsen geven om een enkele logische cyclus te voltooien. Elke stap van deze motor voltooit 1,8 graden rotatie, dus om een cyclus te voltooien hebben we 200 pulsen nodig. Dus 200/4 = 50 logische cycli die nodig zijn om een enkele rotatie te voltooien. Bekijk dit voor meer informatie over stappenmotoren en de rijmodi.
We zullen elk van deze vier spoelen aansturen door een NPN-transistor (2N2222), deze NPN-transistor neemt de logische puls van PI en stuurt de bijbehorende spoel aan. Vier transistors nemen vier logica's van PI om vier fasen van de stappenmotor aan te drijven.
Het stuurcircuit van de transistor is een lastige opstelling; hier moeten we opletten dat het verkeerd aansluiten van de transistor het bord zwaar kan belasten en het kan beschadigen. Controleer dit om het stuurcircuit van de stappenmotor goed te begrijpen.
De motor is een inductie en dus ervaren we bij het schakelen van de motor inductieve spiking. Deze spiking zal de transistor sterk opwarmen, dus we zullen Diode (1N4007) gebruiken om de transistor te beschermen tegen inductieve spiking.
Om de spanningsschommelingen te verminderen, zullen we een condensator van 1000uF over de voeding aansluiten, zoals weergegeven in het schakelschema.
Werkende uitleg:
Zodra alles is aangesloten volgens het schakelschema, kunnen we de PI inschakelen om het programma in PYHTON te schrijven.
We zullen het hebben over enkele commando's die we gaan gebruiken in het PYHTON-programma, We gaan het GPIO-bestand uit de bibliotheek importeren, met onderstaande functie kunnen we GPIO-pinnen van PI programmeren. We hernoemen ook "GPIO" naar "IO", dus in het programma zullen we telkens wanneer we naar GPIO-pinnen willen verwijzen het woord 'IO' gebruiken.
importeer RPi.GPIO als IO
Soms, wanneer de GPIO-pinnen, die we proberen te gebruiken, andere functies uitvoeren. In dat geval zullen we waarschuwingen ontvangen tijdens het uitvoeren van het programma. Onderstaand commando vertelt de PI om de waarschuwingen te negeren en door te gaan met het programma.
IO.setwarnings (False)
We kunnen de GPIO-pinnen van PI verwijzen, hetzij op pincode aan boord, hetzij op functienummer. Net als 'PIN 35' op het bord is 'GPIO19'. Dus we vertellen hier of we de pin hier vertegenwoordigen met '35' of '19'.
IO.setmode (IO.BCM)
We stellen vier GPIO-pinnen in als uitgang voor het aandrijven van vier spoelen stappenmotor.
IO.setup (5, IO.OUT) IO.setup (17, IO.OUT) IO.setup (27, IO.OUT) IO.setup (22, IO.OUT)
We stellen GPIO26 en GPIO19 in als invoerpinnen. We detecteren het indrukken van een knop door deze pinnen.
IO.setup (19, IO.IN) IO.setup (26, IO.IN)
Als de voorwaarde tussen accolades waar is, worden de instructies in de lus één keer uitgevoerd. Dus als de GPIO-pin 26 laag wordt, worden de instructies in de IF-lus eenmaal uitgevoerd. Als de GPIO-pin 26 niet laag wordt, worden de instructies in de IF-lus niet uitgevoerd.
if (IO.input (26) == False):
Dit commando voert de lus 100 keer uit, waarbij x wordt verhoogd van 0 tot 99.
voor x in bereik (100):
Terwijl 1: wordt gebruikt voor oneindige lus. Met dit commando worden de instructies in deze lus continu uitgevoerd.
We hebben alle commando's die nodig zijn om hiermee de snelheidsregeling van de stappenmotor te bereiken.
Nadat je het programma hebt geschreven en uitgevoerd, hoef je alleen nog maar de besturing te bedienen. We hebben twee knoppen aangesloten op PI. Een voor het verhogen van de vertraging tussen de vier pulsen en een andere voor het verlagen van de vertraging tussen de vier pulsen. De vertraging zelf spreekt van snelheid; als de vertraging groter is, remt de motor tussen elke stap af, waardoor de rotatie langzaam gaat. Als de vertraging bijna nul is, draait de motor op maximale snelheid.
Onthoud hier dat er enige vertraging moet zijn tussen de pulsen. Na het geven van een puls, heeft de stappenmotor enkele milliseconden nodig om zijn laatste fase te bereiken. Als er geen vertraging is tussen de pulsen, zal de stappenmotor helemaal niet bewegen. Normaal gesproken is een vertraging van 50 ms prima tussen de pulsen. Raadpleeg het gegevensblad voor meer nauwkeurige informatie.
Dus met twee knoppen kunnen we de vertraging regelen, die op zijn beurt de snelheid van de stappenmotor bestuurt.