- Pulsbreddemodulering:
- Nødvendig materiale
- Kretsdiagram
- Kode og forklaring
- Hastighetskontroll av DC-motor ved hjelp av Arduino
DC-motor er den mest brukte motoren i robotikk- og elektronikkprosjekter. For å kontrollere hastigheten på likestrømsmotoren har vi forskjellige metoder, som hastigheten kan automatisk kontrolleres basert på temperatur, men i dette prosjektet vil PWM-metoden bli brukt til å kontrollere hastigheten på likestrømsmotoren. Her i dette Arduino Motor Speed Control-prosjektet kan hastigheten styres ved å dreie på potensiometeret.
Pulsbreddemodulering:
Hva er PWM? PWM er en teknikk ved å bruke vi kan kontrollere spenningen eller kraften. For å forstå det enklere, hvis du bruker 5 volt for å kjøre en motor, vil motoren bevege seg med litt hastighet. Nå hvis vi reduserer den påførte spenningen med 2 betyr at vi bruker 3 volt på motoren, reduseres også motorhastigheten. Dette konseptet brukes i prosjektet for å kontrollere spenningen ved hjelp av PWM. Vi har forklart PWM i detalj i denne artikkelen. Sjekk også denne kretsen der PWM brukes til å kontrollere lysstyrken på LED: 1 Watt LED Dimmer.
% Driftssyklus = (TON / (TON + TOFF)) * 100 Hvor, T PÅ = HØY tid for firkantbølgen T AV = LAV tid for firkantbølge
Nå hvis bryteren i figuren er stengt kontinuerlig over en periode, vil motoren kontinuerlig PÅ i løpet av den tiden. Hvis bryteren er lukket i 8 ms og åpnet i 2 ms over en syklus på 10 ms, vil motoren bare være PÅ om 8 ms-tiden. Nå er den gjennomsnittlige terminalen over en periode på 10ms = Slå PÅ tid / (Slå PÅ tid + Slå AV tid), dette kalles driftssyklus og er på 80% (8 / (8 + 2)), så gjennomsnittet utgangsspenningen vil være 80% av batterispenningen. Nå kan menneskets øye ikke se at motoren er på i 8 ms og av i 2 ms, så det vil se ut som DC-motor roterer med 80% hastighet.
I det andre tilfellet er bryteren lukket i 5 ms og åpnet i 5 ms over en periode på 10 ms, så den gjennomsnittlige terminalspenningen på utgangen vil være 50% av batterispenningen. Si om batterispenningen er 5V og driftssyklusen er 50%, og så vil den gjennomsnittlige terminalspenningen være 2,5V.
I det tredje tilfellet er driftssyklusen 20% og den gjennomsnittlige terminalspenningen er 20% av batterispenningen.
Vi har brukt PWM med Arduino i mange av våre prosjekter:
- Arduino-basert LED-dimmer ved bruk av PWM
- Temperaturstyrt vifte ved hjelp av Arduino
- DC Motor Control ved hjelp av Arduino
- AC viftehastighetskontroll ved hjelp av Arduino og TRIAC
Du kan lære mer om PWM ved å gå gjennom forskjellige prosjekter basert på PWM.
Nødvendig materiale
- Arduino UNO
- DC-motor
- Transistor 2N2222
- Potensiometer 100k ohm
- Kondensator 0.1uF
- Brettbrett
- Jumping Wires
Kretsdiagram
Kretsskjema for Arduino DC Motor Speed Control ved bruk av PWM er gitt nedenfor:
Kode og forklaring
Den komplette koden for Arduino DC Motor Control ved bruk av potensiometer er gitt på slutten.
I den nedenfor koden, har vi initialisert den variable c1 og c2, og er tilordnet analog tapp A0 for potensiometereffekten og 12 th Pin for 'PWM'.
int pwmPin = 12; int pot = A0; int c1 = 0; int c2 = 0;
Nå, i koden nedenfor, setter du pin A0 som inngang og 12 (som er PWM-pin) som utgang.
ugyldig oppsett () { pinMode (pwmPin, OUTPUT); // erklærer pin 12 som output pinMode (pot, INPUT); // erklærer pin A0 som input }
Nå, i ugyldig sløyfe (), leser vi den analoge verdien (fra A0) ved hjelp av analogRead (pot), og lagrer den til variabel c2. Deretter trekker du c2-verdien fra 1024 og lagrer resultatet i c1. Deretter gjør PWM tappen 12 th av Arduino HØY og deretter etter en forsinkelse på verdi C1 gjør at tappen LAV. Igjen, etter en forsinkelse av verdien c2, fortsetter sløyfen.
Årsaken til å trekke analog verdi fra 1024 er at Arduino Uno ADC har 10-biters oppløsning (så heltallverdiene fra 0 - 2 ^ 10 = 1024 verdier). Dette betyr at det vil kartlegge en inngangsspenning på mellom 0 og 5 volt til heltallige verdier mellom 0 og 1024. Så hvis vi multiplisere inngangs anlogValue til (5/1024), så vi får den digitale verdi av inngangsspenningen. Lær her hvordan du bruker ADC-innganger i Arduino.
ugyldig sløyfe () { c2 = analogRead (pot); c1 = 1024-c2; digitalWrite (pwmPin, HIGH); // setter pin 12 HIGH delayMicroseconds (c1); // venter på c1 uS (high time) digitalWrite (pwmPin, LOW); // setter pin 12 LOW delayMicroseconds (c2); // venter på c2 us (lav tid) }
Hastighetskontroll av DC-motor ved hjelp av Arduino
I denne kretsen, for å kontrollere hastigheten til DC-motoren, bruker vi et 100K ohm potensiometer for å endre driftssyklusen til PWM-signalet. 100K ohm potensiometer er koblet til det analoge inngangskontaktstift A0 av Arduino UNO og likestrømsmotoren er koplet til den 12 th pin av Arduino (som er den PWM pin). Arbeidet med Arduino-programmet er veldig enkelt, da det leser spenningen fra den analoge pinnen A0. Spenningen ved analog pin varieres ved å bruke potensiometeret. Etter å ha gjort noen nødvendige beregninger justeres driftssyklusen i henhold til den.
For eksempel, hvis vi mater 256-verdien til den analoge inngangen, vil HIGH-tiden være 768ms (1024-256) og LOW-tiden vil være 256ms. Derfor betyr det ganske enkelt at driftssyklusen er 75%. Øynene våre kan ikke se så høyfrekvent svingning, og det ser ut til at motoren er kontinuerlig PÅ med 75% av hastigheten. Så det er slik vi kan utføre motorhastighetskontroll ved hjelp av Arduino.