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 de la sèrie de tutorials, podreu fer projectes de gran perfil vosaltres mateixos. Consulteu aquestes instruccions per començar amb la configuració de Raspberry Pi i Raspberry Pi.
Hem comentat LED Blinky, Button Interfacing i la generació de PWM en tutorials anteriors. En aquest tutorial controlarem la velocitat d’un motor de corrent continu mitjançant la tècnica Raspberry Pi i PWM. PWM (Pulse Width Modulation) és un mètode utilitzat per treure voltatge variable d’una font d’energia constant. Hem parlat sobre PWM al tutorial anterior.
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, ens queden 17 GPIO. Per obtenir més informació sobre els pins GPIO, consulteu: LED parpellejant amb Raspberry Pi

Cadascun d’aquests 17 pins GPIO pot proporcionar un màxim de 15 mA. I la suma de corrents de tots els pins GPIO no pot superar els 50 mA. Per tant, podem treure un màxim de 3 mA de mitjana de cadascun d’aquests pins GPIO. Per tant, no s’ha de manipular aquestes coses tret que sàpiga el que està fent.
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. Aquest rail de connexió està connectat en paral·lel a l'alimentació del processador. Per tant, treure un corrent elevat d’aquest rail de potència afecta el processador. Hi ha un fusible a la placa PI que es dispararà una vegada que apliqueu una càrrega elevada. Podeu extreure 100 mA de forma segura des del carril + 3,3 V. Estem parlant d'això aquí perquè; estem connectant el motor de corrent continu a + 3.3V. Tenint en compte el límit de potència, aquí només podem connectar un motor de baixa potència, si voleu conduir un motor d’alta potència, penseu en alimentar-lo des d’una font d’energia independent.
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)
- Petit motor de corrent continu
- Botons (2)
- 2N2222 Transistor
- 1N4007 Diodo
- Condensador - 1000uF
- Taula de pa
Explicació del circuit:

Com s’ha dit anteriorment, no podem treure més de 15 mA de cap pin GPIO i el motor de CC treu més de 15 mA, de manera que el PWM generat per Raspberry Pi no es pot alimentar directament al motor de CC. Per tant, si connectem el motor directament a PI per controlar la velocitat, és possible que la placa es faci malbé permanentment.
Per tant, utilitzarem un transistor NPN (2N2222) com a dispositiu de commutació. Aquí aquest transistor acciona el motor de corrent continu d’alta potència prenent el senyal PWM de PI. Aquí s'hauria de prestar atenció que si connecteu erròniament el transistor es podria carregar fortament la placa.
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 GPIO19 (o PIN35) com a pin de sortida. Obtenirem la sortida PWM d’aquest pin.
IO.setup (19, IO.IN)
Després de configurar el pin com a sortida, hem de configurar el pin com a pin de sortida PWM, p = IO.PWM (canal de sortida, freqüència del senyal PWM)
L'ordre anterior és per configurar el canal i també per configurar la freqüència del senyal PWM. 'p' aquí és una variable que pot ser qualsevol cosa. Estem utilitzant GPIO19 com a canal de sortida PWM. s'ha escollit la " freqüència del senyal PWM " 100, ja que no volem que el LED parpellegi.
L'ordre següent s'utilitza per iniciar la generació de senyals PWM, " DUTYCYCLE " serveix per establir la relació d'encès, 0 significa que el LED estarà encès el 0% del temps, 30 significa que el LED estarà encès el 30% del temps i 100 significa que està completament engegat..
p.start (DUTICLE)
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):
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 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 cicle de treball del senyal PWM i un altre per disminuir el cicle de treball del senyal PWM. En prémer un botó, la velocitat del motor de corrent continu augmenta i en prémer l’altre botó, disminueix la velocitat del motor de corrent continu. Amb això hem aconseguit el control de velocitat del motor CC per Raspberry Pi.
Comproveu també:
- Control de velocitat del motor CC
- Control del motor de CC mitjançant Arduino
