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 en Button-interface met Raspberry Pi besproken in eerdere tutorials. In deze Raspberry Pi PWM-tutorial zullen we het hebben over het verkrijgen van PWM-uitvoer met Raspberry Pi. PWM staat voor ' Pulse Width Modulation '. PWM is een methode die wordt gebruikt om een variabele spanning uit een constante stroomvoorziening te halen. We zullen een PWM-signaal genereren van Raspberry PI en de PWM demonstreren door de helderheid van een LED, verbonden met Pi, te variëren.
Pulsbreedtemodulatie:
We hebben het al vaker over PWM gehad in: Pulsbreedtemodulatie met ATmega32, PWM met Arduino Uno, PWM met 555 timer IC en PWM met Arduino Due.
Als in de bovenstaande afbeelding de schakelaar gedurende een bepaalde tijd continu wordt gesloten, zal de LED gedurende deze tijd continu 'AAN' zijn. Als de schakelaar een halve seconde is gesloten en de volgende halve seconde wordt geopend, brandt de LED alleen in de eerste halve seconde. Nu wordt de verhouding waarin de LED over de totale tijd AAN is de Duty Cycle genoemd en kan als volgt worden berekend:
Duty Cycle = Inschakeltijd / (Inschakeltijd + Uitschakeltijd)
Inschakelduur = (0,5 / (0,5 + 0,5)) = 50%
De gemiddelde uitgangsspanning is dus 50% van de accuspanning.
Dit is het geval gedurende één seconde en we kunnen zien dat de LED een halve seconde UIT is en de andere halve seconde AAN. Als de frequentie van AAN- en UIT-tijden is verhoogd van '1 per seconde' naar '50 per seconde '. Het menselijk oog kan deze frequentie niet vastleggen. Voor een normaal oog zal de LED worden gezien als gloeiend met de helft van de helderheid. Dus met een verdere vermindering van de AAN-tijd lijkt de LED veel lichter.
We zullen de PI programmeren om een PWM te krijgen en een LED aansluiten om de werking ervan te laten zien.
Er zijn 40 GPIO-outputpinnen in Raspberry Pi. Maar van de 40 kunnen slechts 26 GPIO-pinnen (GPIO2 tot GPIO27) worden geprogrammeerd. Om meer te weten over GPIO-pinnen, ga door: LED Knippert met Raspberry Pi
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
- LED
- Broodplank
Circuit uitleg:
Zoals weergegeven in het schakelschema gaan we een LED verbinden tussen PIN35 (GPIO19) en PIN39 (aarde). Zoals eerder gezegd, kunnen we niet meer dan 15mA uit een van deze pinnen halen, dus om de stroom te beperken, verbinden we een 220Ω of 1KΩ weerstand in serie met de LED.
Werkende uitleg:
Zodra alles is aangesloten, kunnen we de Raspberry Pi AAN zetten om het programma in PYHTON te schrijven en het uit te voeren.
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. In het pin-diagram ziet u '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)
Dit commando voert de lus 50 keer uit, waarbij x wordt verhoogd van 0 tot 49.
voor x in bereik (50):
Terwijl 1: wordt gebruikt voor oneindige lus. Met dit commando worden de instructies in deze lus continu uitgevoerd.
Terwijl het programma wordt uitgevoerd, neemt de duty-cycle van het PWM-signaal toe. En neemt vervolgens af na het bereiken van 100%. Met een LED die aan deze pincode is bevestigd, neemt de helderheid van de LED eerst toe en vervolgens af.