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 de tutorialseries kun je zelf spraakmakende projecten doen. Bekijk deze voor Aan de slag met Raspberry Pi en Raspberry Pi-configuratie.
We hebben LED Blinky, Button Interfacing en PWM-generatie besproken in eerdere tutorials. In deze tutorial zullen we de snelheid van een DC-motor regelen met behulp van Raspberry Pi en PWM-techniek. PWM (Pulse Width Modulation) is een methode die wordt gebruikt om variabele spanning uit een constante stroombron te halen. We hebben het in de vorige tutorial over PWM gehad.
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 gezet, hebben we 17 GPIO over. Ga voor meer informatie over GPIO-pinnen door: LED knippert met Raspberry Pi
Elk van deze 17 GPIO-pinnen kan maximaal 15mA leveren. En de som van de stromen van alle GPIO-pinnen mag niet groter zijn dan 50mA. We kunnen dus gemiddeld maximaal 3mA trekken uit elk van deze GPIO-pinnen. Men moet dus niet aan deze dingen knoeien, tenzij u weet wat u doet.
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 powerrail is parallel geschakeld met processorkracht. Dus het trekken van hoge stroom van deze stroomrail heeft invloed op de processor. Er zit een zekering op de PI-kaart die zal uitschakelen zodra u een hoge belasting toepast. U kunt veilig 100mA trekken van de + 3.3V- rail. We hebben het hier hier over omdat; we verbinden de DC-motor met + 3.3V. Met het oog op de vermogenslimiet kunnen we hier alleen een motor met een laag vermogen aansluiten. Als u een motor met een hoog vermogen wilt aandrijven, overweeg dan om deze via een aparte voedingsbron van stroom te voorzien.
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)
- Kleine gelijkstroommotor
- Knopen (2)
- 2N2222 Transistor
- 1N4007 Diode
- Condensator - 1000uF
- Broodplank
Circuit uitleg:
Zoals eerder gezegd, kunnen we niet meer dan 15mA van GPIO-pinnen trekken en DC-motor trekt meer dan 15mA, dus de PWM gegenereerd door Raspberry Pi kan niet rechtstreeks naar de DC-motor worden gevoerd. Dus als we de motor rechtstreeks op PI aansluiten voor snelheidsregeling, kan het bord permanent beschadigd raken.
We gaan dus een NPN-transistor (2N2222) gebruiken als schakelapparaat. Deze transistor drijft hier de krachtige DC-motor aan door het PWM-signaal van PI te nemen. Hierbij dient men er op te letten dat het verkeerd aansluiten van de transistor de printplaat zwaar kan belasten.
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 GPIO19 (of PIN35) in als uitvoerpin. We krijgen PWM-uitvoer van deze pin.
IO.setup (19, IO.IN)
Na het instellen van de pin als output moeten we de pin instellen als PWM output pin, p = IO.PWM (uitgangskanaal, frequentie van PWM-signaal)
Het bovenstaande commando is voor het instellen van het kanaal en ook voor het instellen van de frequentie van het PWM-signaal. 'p' hier is een variabele, het kan van alles zijn. We gebruiken GPIO19 als het PWM- uitvoerkanaal . ' frequentie van PWM-signaal ' is gekozen op 100, omdat we geen LED willen zien knipperen.
Het onderstaande commando wordt gebruikt om het genereren van PWM-signalen te starten, ' DUTYCYCLE ' is voor het instellen van de inschakelverhouding, 0 betekent dat de LED 0% van de tijd AAN is, 30 betekent dat de LED 30% van de tijd AAN is en 100 betekent volledig AAN.
p.start (DUTYCYCLE)
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):
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 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 Duty Cycle van het PWM-signaal en een andere voor het verlagen van de Duty Cycle van het PWM-signaal. Door op de ene knop te drukken, neemt de snelheid van de DC-motor toe en door op de andere knop te drukken, neemt de snelheid van de DC-motor af. Hiermee hebben we de DC Motor Speed Control van Raspberry Pi bereikt.
Controleer ook:
- DC-motor snelheidsregeling
- DC-motorbesturing met Arduino