- Pulsbreddemodulation:
- Nødvendigt materiale
- Kredsløbsdiagram
- Kode og forklaring
- Hastighedskontrol af jævnstrømsmotor ved hjælp af Arduino
DC-motor er den mest anvendte motor i robot- og elektronikprojekter. Til styring af jævnstrømsmotorens hastighed har vi forskellige metoder, ligesom hastigheden kan styres automatisk baseret på temperatur, men i dette projekt vil PWM-metoden blive brugt til at kontrollere jævnstrømsmotorens hastighed. Her i dette Arduino Motor Speed Control-projekt kan hastigheden styres ved at dreje knappen på potentiometeret.
Pulsbreddemodulation:
Hvad er PWM? PWM er en teknik ved hjælp af vi kan styre spændingen eller effekten. For at forstå det mere simpelt, hvis du anvender 5 volt til at køre en motor, vil motoren bevæge sig med en vis hastighed, hvis vi nu reducerer den anvendte spænding med 2 betyder, at vi anvender 3 volt på motoren, falder også motorhastigheden. Dette koncept bruges i projektet til at kontrollere spændingen ved hjælp af PWM. Vi har forklaret PWM i detaljer i denne artikel. Kontroller også dette kredsløb, hvor PWM bruges til at kontrollere lysstyrken på LED: 1 Watt LED-dæmper.
% Driftscyklus = (TON / (TON + TOFF)) * 100 Hvor, T ON = HØJ tid for firkantbølgen T OFF = LAV tid for firkantbølge
Hvis kontakten i figuren nu er lukket kontinuerligt over en periode, vil motoren kontinuerligt være TIL i løbet af denne tid. Hvis kontakten er lukket i 8 ms og åbnet i 2 ms over en cyklus på 10 ms, vil motoren kun være TÆNDT i løbet af 8 ms. Nu er den gennemsnitlige terminal over hele en periode på 10 ms = Tænd tid / (Tænd tid + Sluk tid), dette kaldes driftscyklus og er på 80% (8 / (8 + 2)), så gennemsnittet udgangsspændingen vil være 80% af batterispændingen. Nu kan det menneskelige øje ikke se, at motoren er tændt i 8 ms og slukket i 2 ms, så det vil se ud som DC-motor roterer med 80% hastighed.
I det andet tilfælde lukkes kontakten i 5 ms og åbnes i 5 ms over en periode på 10 ms, så den gennemsnitlige terminalspænding ved udgangen vil være 50% af batterispændingen. Sig, om batterispændingen er 5V, og driftscyklussen er 50%, og så vil den gennemsnitlige terminalspænding være 2,5V.
I det tredje tilfælde er driftscyklussen 20%, og den gennemsnitlige terminalspænding er 20% af batterispændingen.
Vi har brugt PWM med Arduino i mange af vores projekter:
- Arduino-baseret LED-dæmper ved hjælp af PWM
- Temperaturstyret blæser ved hjælp af Arduino
- DC Motor Control ved hjælp af Arduino
- AC blæserhastighedskontrol ved hjælp af Arduino og TRIAC
Du kan lære mere om PWM ved at gennemgå forskellige projekter baseret på PWM.
Nødvendigt materiale
- Arduino UNO
- DC-motor
- Transistor 2N2222
- Potentiometer 100k ohm
- Kondensator 0,1 uF
- Brødbræt
- Jumping Wires
Kredsløbsdiagram
Kredsløbsdiagram for Arduino DC Motor Speed Control ved hjælp af PWM er angivet nedenfor:
Kode og forklaring
Den komplette kode til Arduino DC Motor Control ved hjælp af potentiometer er angivet i slutningen.
I nedenstående kode, har vi initialiseret variabel C1 og C2 og tildeles analog pin A0 til potentiometer output og 12 th Stift til 'PWM'.
int pwmPin = 12; int pot = A0; int c1 = 0; int c2 = 0;
Nu, i nedenstående kode, indstilling pin A0 som input og 12 (som er PWM pin) som output.
ugyldig opsætning () { pinMode (pwmPin, OUTPUT); // erklærer pin 12 som output pinMode (pot, INPUT); // erklærer pin A0 som input }
Nu, i ugyldig sløjfe (), læser vi den analoge værdi (fra A0) ved hjælp af analogRead (pot) og gemmer den til variabel c2. Træk derefter c2-værdien fra 1024, og gem resultatet i c1. Så gør PWM pin 12 th af Arduino HIGH og derefter efter en forsinkelse på værdi c1 gøre denne pin LOW. Igen fortsætter sløjfen efter en forsinkelse af værdien c2.
Årsagen til at trække den analoge værdi fra 1024 er, at Arduino Uno ADC har en 10-bit opløsning (så heltalets værdier fra 0 - 2 ^ 10 = 1024 værdier). Det betyder, at det vil kortlægge indgangsspændinger mellem 0 og 5 volt i heltalsværdier mellem 0 og 1024. Så hvis vi multiplicerer input anlogValue til (5/1024), så får vi den digitale værdi af indgangsspænding. Lær her, hvordan du bruger ADC-input i Arduino.
ugyldig sløjfe () { c2 = analogRead (pot); c1 = 1024-c2; digitalWrite (pwmPin, HIGH); // sætter pin 12 HIGH delayMicroseconds (c1); // venter på c1 uS (high time) digitalWrite (pwmPin, LOW); // sætter pin 12 LOW delayMicroseconds (c2); // venter på c2 us (lav tid) }
Hastighedskontrol af jævnstrømsmotor ved hjælp af Arduino
I dette kredsløb til styring af DC-motorens hastighed bruger vi et 100K ohm potentiometer til at ændre PWM-signalets driftscyklus. 100K ohm potentiometer er forbundet til den analoge indgang pin A0 af Arduino UNO og jævnstrømsmotoren er forbundet til 12 th pin af Arduino (som er PWM pin). Arbejdet med Arduino-programmet er meget simpelt, da det læser spændingen fra den analoge pin A0. Spændingen ved analog pin varieres ved hjælp af potentiometeret. Efter at have foretaget nogle nødvendige beregninger justeres toldcyklussen efter den.
For eksempel, hvis vi føder 256 værdi til den analoge indgang, vil HIGH-tiden være 768ms (1024-256), og LOW-tiden vil være 256ms. Derfor betyder det simpelthen, at arbejdscyklussen er 75%. Vores øjne kan ikke se sådan højfrekvent svingning, og det ser ud til, at motoren kontinuerligt er TIL med 75% af hastigheden. Så det er sådan, vi kan udføre Motor Speed Control ved hjælp af Arduino.