Raspberry Pi är ett ARM-arkitekturbaserat kort designat för elektroniska ingenjörer och hobbyister. PI är en av de mest betrodda projektutvecklingsplattformarna där ute nu. Med högre processorhastighet och 1 GB RAM kan PI användas för många högprofilerade projekt som bildbehandling och Internet of Things.
För att göra något av högprofilerade projekt måste man förstå de grundläggande funktionerna i PI. Vi kommer att täcka alla grundläggande funktioner i Raspberry Pi i dessa handledning. I varje handledning kommer vi att diskutera en av funktionerna i PI. I slutet av handledningsserien kommer du att kunna göra högprofilerade projekt själv. Kontrollera dessa för att komma igång med Raspberry Pi och Raspberry Pi Configuration.
Vi har diskuterat LED Blinky, Button Interfacing och PWM generation i tidigare tutorials. I denna handledning kommer vi att styra hastigheten på en likströmsmotor med Raspberry Pi och PWM-teknik. PWM (Pulse Width Modulation) är en metod som används för att få variabel spänning från konstant strömkälla. Vi har diskuterat om PWM i föregående handledning.
Det finns 40 GPIO-utgångsstift i Raspberry Pi 2. Men av 40 kan endast 26 GPIO-stift (GPIO2 till GPIO27) programmeras. Några av dessa stift utför vissa speciella funktioner. Med särskild GPIO avsatt har vi 17 GPIO kvar. Om du vill veta mer om GPIO-stift går du igenom: LED blinkar med Raspberry Pi
Var och en av dessa 17 GPIO-stift kan leverera maximalt 15 mA. Och summan av strömmar från alla GPIO-stift kan inte överstiga 50 mA. Så vi kan dra högst 3 mA i genomsnitt från var och en av dessa GPIO-stift. Så man bör inte manipulera med dessa saker om du inte vet vad du gör.
Det finns + 5V (Pin 2 & 4) och + 3.3V (Pin 1 & 17) utgångsstift på kortet för att ansluta andra moduler och sensorer. Denna power rail är ansluten parallellt med processorkraft. Så att dra hög ström från denna motorväg påverkar processorn. Det finns en säkring på PI-kortet som kommer att lösa ut när du använder hög belastning. Du kan dra 100mA säkert från + 3.3V- skenan. Vi pratar om detta här för; vi ansluter DC-motorn till + 3,3V. Med tanke på effektgränsen kan vi bara ansluta lågeffektmotor här, om du vill köra motor med hög effekt, överväg att driva den från en separat strömkälla.
Komponenter som krävs:
Här använder vi Raspberry Pi 2 Model B med Raspbian Jessie OS. Alla grundläggande hårdvaru- och mjukvarukrav har tidigare diskuterats, du kan slå upp det i Raspberry Pi Introduktion, annat än vad vi behöver:
- Anslutningsstift
- 220Ω eller 1KΩ motstånd (3)
- Liten likströmsmotor
- Knappar (2)
- 2N2222 Transistor
- 1N4007 Diod
- Kondensator - 1000uF
- Brödbräda
Kretsförklaring:
Som sagt tidigare kan vi inte dra mer än 15mA från några GPIO-stift och DC-motor drar mer än 15mA, så PWM som genereras av Raspberry Pi kan inte matas direkt till DC-motorn. Så om vi ansluter motorn direkt till PI för hastighetskontroll kan kortet skadas permanent.
Så vi ska använda en NPN-transistor (2N2222) som en omkopplingsenhet. Denna transistor driver här likströmsmotorn med hög effekt genom att ta PWM-signal från PI. Här bör man vara uppmärksam på att felaktig anslutning av transistorn kan ladda kortet kraftigt.
Motorn är en induktion och så när vi byter motor upplever vi induktiv spikning. Denna spikning kommer att värma upp transistorn kraftigt, så vi kommer att använda dioden (1N4007) för att ge transistorn skydd mot induktiv spikning.
För att minska spänningsfluktuationerna ansluter vi en 1000uF kondensator över strömförsörjningen som visas i kretsschemat.
Arbetsförklaring:
När allt är anslutet enligt kretsschemat, kan vi sätta PÅ PI för att skriva programmet i PYHTON.
Vi kommer att prata om några kommandon som vi ska använda i PYHTON-programmet.
Vi ska importera GPIO-filer från biblioteket, nedanstående funktion gör att vi kan programmera GPIO-stift av PI. Vi döper också om "GPIO" till "IO", så i programmet när vi vill hänvisa till GPIO-stift kommer vi att använda ordet "IO".
importera RPi.GPIO som IO
Ibland, när GPIO-stiften, som vi försöker använda, kan göra några andra funktioner. I så fall får vi varningar när vi kör programmet. Kommandot nedan ber PI att ignorera varningarna och fortsätta med programmet.
IO.setwarnings (False)
Vi kan hänvisa GPIO-stift på PI, antingen med stiftnummer ombord eller med deras funktionsnummer. Som "PIN 35" på tavlan är "GPIO19". Så vi berättar här antingen att vi kommer att representera nålen här med '35' eller '19'.
IO.setmode (IO.BCM)
Vi ställer in GPIO19 (eller PIN35) som utgångsstift. Vi kommer att få PWM-utdata från denna stift.
IO.setup (19, IO.IN)
Efter att ha ställt in stiftet som utgång måste vi ställa in stiftet som PWM-utgångsstift, p = IO.PWM (utgångskanal, PWM-signalfrekvens)
Ovanstående kommando är för att ställa in kanalen och även för att ställa in frekvensen för PWM-signalen. 'p' här är en variabel det kan vara vad som helst. Vi använder GPIO19 som PWM- utgångskanal . ' frekvens av PWM-signal ' har valts 100, eftersom vi inte vill att lysdioden ska blinka.
Nedanstående kommando används för att starta PWM-signalgenerering, ' DUTYCYCLE ' är för att ställa in Turn On-förhållandet, 0 betyder att LED kommer att vara PÅ i 0% av tiden, 30 betyder LED kommer att vara PÅ i 30% av tiden och 100 betyder helt PÅ.
p.start (DUTYCYCLE)
Om villkoret i hängslen är sant kommer uttalandena inuti slingan att utföras en gång. Så om GPIO-stiftet 26 blir lågt kommer uttalandena i IF-slingan att köras en gång. Om GPIO-stiftet 26 inte blir lågt kommer inte uttalandena i IF-slingan att utföras.
if (IO.input (26) == False):
Medan 1: används för infinity loop. Med detta kommando kommer uttalandena i den här slingan att köras kontinuerligt.
Vi har alla kommandon som behövs för att uppnå hastighetskontroll med detta.
Efter att ha skrivit programmet och kört det är allt som finns kvar att styra kontrollen. Vi har två knappar anslutna till PI; en för att öka PWM-signalens arbetscykel och en annan för att minska PWM-signalens arbetscykel. Genom att trycka på en knapp ökar hastigheten på likströmsmotorn och genom att trycka på den andra knappen minskar hastigheten på likströmsmotorn. Med detta har vi uppnått DC Motor Speed Control av Raspberry Pi.
Kontrollera även:
- DC-motorhastighetskontroll
- DC-motorstyrning med Arduino