Raspberry Pi és una placa basada en processadors d'arquitectura ARM dissenyada per a enginyers electrònics i aficionats. El PI és ara una de les plataformes de desenvolupament de projectes amb més confiança. Amb una velocitat de processador més alta i 1 GB de RAM, el PI es pot utilitzar per a molts projectes de gran perfil com el processament d’imatges i Internet de les coses.
Per fer qualsevol projecte de gran perfil, cal entendre les funcions bàsiques de PI. Cobrirem totes les funcionalitats bàsiques de Raspberry Pi en aquests tutorials. A cada tutorial parlarem d'una de les funcions de PI. Al final d'aquesta sèrie de tutorials de Raspberry Pi, ja podreu fer projectes de gran perfil. Consulteu els tutorials següents:
- Introducció a Raspberry Pi
- Configuració de Raspberry Pi
- LED intermitent
- Interfície de botons Raspberry Pi
- Generació Raspberry Pi PWM
- Control del motor de corrent continu mitjançant Raspberry Pi
En aquest tutorial, controlarem la velocitat d’un motor pas a pas mitjançant Raspberry Pi. A Motor pas a pas, com diu el propi nom, la rotació de l’eix té forma de pas. Hi ha diferents tipus de motors pas a pas; aquí utilitzarem el més popular que és el motor pas a pas unipolar. A diferència del motor de corrent continu, podem girar el motor pas a pas a qualsevol angle particular donant-li les instruccions adequades.

Per girar aquest motor pas a pas de quatre etapes, lliurarem impulsos de potència mitjançant el circuit de control de motor pas a pas. El circuit del conductor pren desencadenants lògics de PI. Si controlem els disparadors lògics, controlem els impulsos de potència i, per tant, la velocitat del motor pas a pas.
Hi ha 40 pins de sortida GPIO al Raspberry Pi 2. Però de 40, només es poden programar 26 pins GPIO (GPIO2 a GPIO27). Alguns d’aquests pins realitzen algunes funcions especials. Amb GPIO especial deixat de banda, només ens queden 17 GPIO. Cadascun d'aquests 17 pins GPIO pot proporcionar un màxim de 15 mA de corrent. I la suma de corrents de tots els pins GPIO no pot superar els 50 mA. Per obtenir més informació sobre els pins GPIO, consulteu: LED parpellejant amb Raspberry Pi

Hi ha pins de sortida de potència de + 5V (pin 2 i 4) i + 3,3V (pin 1 i 17) a la placa per connectar altres mòduls i sensors. Aquests rails no es poden utilitzar per accionar el motor pas a pas, perquè necessitem més potència per girar-lo. Per tant, hem de subministrar l’energia al motor pas a pas des d’una altra font d’energia. El meu motor pas a pas té una tensió nominal de 9V, de manera que estic fent servir una bateria de 9v com a segona font d'alimentació. Cerqueu el número de model del motor pas a pas per conèixer la tensió. Depenent de la classificació, trieu adequadament la font secundària.
Com s’ha dit anteriorment, necessitem un circuit de controladors per accionar el motor pas a pas. Aquí també dissenyarem un circuit de controlador de transistor simple.
Components necessaris:
Aquí fem servir Raspberry Pi 2 Model B amb Raspbian Jessie OS. Tots els requisits bàsics de maquinari i programari s’han comentat prèviament. Podeu consultar-los a la introducció de Raspberry Pi, a part d’això que necessitem:
- Pins de connexió
- Resistència de 220 Ω o 1 K Ω (3)
- Motor pas a pas
- Botons (2)
- Transistor 2N2222 (4)
- 1N4007 díode (4)
- Condensador - 1000uF
- Taula de pa
Explicació del circuit:

El motor pas a pas utilitza 200 passos per completar la rotació de 360 graus, vol dir que gira 1,8 graus per pas. Com que conduïm un motor pas a pas de quatre etapes, hem de donar quatre impulsos per completar un cicle lògic únic. Cada pas d’aquest motor completa 1,8 graus de rotació, de manera que per completar un cicle necessitem 200 impulsos. Per tant, 200/4 = 50 cicles lògics necessaris per completar una sola rotació. Marqueu això per obtenir més informació sobre Steppers Motors i els seus modes de conducció.
Conduirem cadascuna d’aquestes quatre bobines mitjançant un transistor NPN (2N2222), aquest transistor NPN pren el pols lògic de PI i acciona la bobina corresponent. Quatre transistors prenen quatre lògiques de PI per conduir quatre etapes del motor pas a pas.
El circuit del controlador de transistors és una configuració complicada; aquí hauríem de prestar atenció que en connectar erròniament el transistor es podria carregar fortament la placa i danyar-la. Comproveu-ho per comprendre correctament el circuit del controlador del motor pas a pas.
El motor és una inducció i, per tant, en canviar el motor experimentem un pic inductiu. Aquesta pujada escalfarà el transistor molt, de manera que farem servir el díode (1N4007) per proporcionar protecció al transistor contra la pujada inductiva.
Per tal de reduir les fluctuacions de tensió, connectarem un condensador de 1000uF a través de la font d'alimentació, tal com es mostra al diagrama del circuit.
Explicació de treball:
Un cop tot estigui connectat segons el diagrama del circuit, podem activar el PI per escriure el programa en PYHTON.
Parlarem de poques ordres que farem servir al programa PYHTON, Importarem un fitxer GPIO de la biblioteca, la funció següent ens permet programar pins GPIO de PI. També estem canviant el nom de "GPIO" per "IO", de manera que al programa sempre que vulguem referir-nos als pins GPIO utilitzarem la paraula "IO".
importar RPi.GPIO com a IO
De vegades, quan els pins GPIO, que estem intentant utilitzar, poden estar fent algunes altres funcions. En aquest cas, rebrem avisos mentre executem el programa. L'ordre següent indica al PI que ignori les advertències i que continuï amb el programa.
IO.setwarnings (fals)
Podem referir els pins GPIO de PI, ja sigui pel número de pin a bord o pel seu número de funció. Igual que "PIN 35" al tauler és "GPIO19". Així doncs, aquí expliquem que aquí representarem el passador per "35" o "19".
IO.setmode (IO.BCM)
Estem configurant quatre pins GPIO com a sortida per accionar quatre bobines de motor pas a pas.
IO.setup (5, IO.OUT) IO.setup (17, IO.OUT) IO.setup (27, IO.OUT) IO.setup (22, IO.OUT)
Estem configurant GPIO26 i GPIO19 com a pins d'entrada. Detectarem el botó pressionat per aquests pins.
IO.setup (19, IO.IN) IO.setup (26, IO.IN)
En cas que la condició entre claus sigui certa, les sentències dins del bucle s'executaran una vegada. Per tant, si el pin 26 de GPIO baixa, les sentències del bucle IF s’executaran una vegada. Si el pin 26 de GPIO no baixa, les sentències del bucle IF no s'executaran.
if (IO.input (26) == False):
Aquesta ordre executa el bucle 100 vegades, x s'incrementa de 0 a 99.
per a x en el rang (100):
Mentre que 1: s'utilitza per al bucle infinit. Amb aquesta ordre, les sentències dins d'aquest bucle s'executaran contínuament.
Tenim totes les ordres necessàries per aconseguir el control de velocitat del motor pas a pas amb això.
Després d’escriure el programa i executar-lo, només queda operar el control. Tenim dos botons connectats a PI. Un per incrementar el retard entre els quatre impulsos i un altre per disminuir el retard entre els quatre impulsos. El retard en si mateix parla de velocitat; si el retard és més gran, el motor pren frens entre cada pas i, per tant, la rotació és lenta. Si el retard és proper a zero, el motor gira a la velocitat màxima.
Aquí s'ha de recordar que hi hauria d'haver un cert retard entre els impulsos. Després de donar un impuls, el motor pas a pas triga uns quants mil·lisegons de temps a arribar a la seva etapa final. Si no es produeix cap retard entre els impulsos, el motor pas a pas no es mourà gens. Normalment, el retard de 50 ms està bé entre els impulsos. Per obtenir informació més precisa, consulteu el full de dades.
Així doncs, amb dos botons podem controlar el retard, que per torns controla la velocitat del motor pas a pas.
