- Pulsbreddsmodulering:
- Material krävs
- Kretsschema
- Kod och förklaring
- Hastighetskontroll av DC-motor med Arduino
DC-motor är den mest använda motorn i robotik- och elektronikprojekt. För att styra hastigheten på likströmsmotorn har vi olika metoder, som att hastigheten kan styras automatiskt baserat på temperatur men i detta projekt kommer PWM-metoden att användas för att kontrollera hastigheten på likströmsmotorn. Här i detta Arduino Motor Speed Control-projekt kan hastigheten styras genom att vrida på potentiometern.
Pulsbreddsmodulering:
Vad är PWM? PWM är en teknik genom att vi kan styra spänningen eller effekten. För att förstå det enklare, om du använder 5 volt för att köra en motor kommer motorn att röra sig med en viss hastighet, om vi nu minskar den tillförda spänningen med 2 innebär att vi applicerar 3 volt på motorn minskar också motorhastigheten. Detta koncept används i projektet för att styra spänningen med PWM. Vi har förklarat PWM i detalj i den här artikeln. Kontrollera även denna krets där PWM används för att kontrollera ljusstyrkan på LED: 1 Watt LED Dimmer.
% Driftscykel = (TON / (TON + TOFF)) * 100 Var, T PÅ = HÖG tid för fyrkantvåg T AV = LÅG tid för fyrkantvåg
Nu om omkopplaren i figuren stängs kontinuerligt under en tidsperiod kommer motorn kontinuerligt att PÅ under den tiden. Om strömbrytaren är stängd i 8 ms och öppnas i 2 ms under en cykel på 10 ms, kommer motorn att vara PÅ endast under 8 ms-tiden. Nu är den genomsnittliga terminalen över en period på 10 ms = Turn ON time / (Turn ON time + Turn OFF time), detta kallas arbetscykel och är 80% (8 / (8 + 2)), så genomsnittet utspänningen kommer att vara 80% av batterispänningen. Nu kan mänskligt öga inte se att motorn är på i 8 ms och av i 2 ms, så det ser ut som DC-motor roterar med 80% hastighet.
I det andra fallet är omkopplaren stängd i 5 ms och öppnas i 5 ms under en period av 10 ms, så den genomsnittliga polspänningen vid utgången blir 50% av batterispänningen. Säg om batterispänningen är 5V och arbetscykeln är 50% och så blir den genomsnittliga polspänningen 2,5V.
I det tredje fallet är arbetscykeln 20% och den genomsnittliga polspänningen är 20% av batterispänningen.
Vi har använt PWM med Arduino i många av våra projekt:
- Arduino-baserad LED-dimmer med PWM
- Temperaturstyrd fläkt med Arduino
- DC-motorstyrning med Arduino
- AC-fläkthastighetsreglering med Arduino och TRIAC
Du kan lära dig mer om PWM genom att gå igenom olika projekt baserade på PWM.
Material krävs
- Arduino UNO
- likströmsmotor
- Transistor 2N2222
- Potentiometer 100k ohm
- Kondensator 0.1uF
- Bakbord
- Jumping Wires
Kretsschema
Kretsschema för Arduino DC Motor Speed Control med PWM anges nedan:
Kod och förklaring
Den kompletta koden för Arduino DC Motor Control med potentiometer ges i slutet.
I nedanstående kod har vi initierat variabeln c1 och c2 och tilldelat den analoga stift A0 för potentiometerutgången och 12: e stift för 'pwm'.
int pwmPin = 12; int pot = A0; int c1 = 0; int c2 = 0;
Nu, i nedanstående kod, ställer du in stift A0 som ingång och 12 (vilket är PWM-stift) som utgång.
ogiltig installation () { pinMode (pwmPin, OUTPUT); // förklarar pin 12 som output pinMode (pot, INPUT); // förklarar stift A0 som ingång }
Nu, i void loop (), läser vi det analoga värdet (från A0) med analogRead (pot) och sparar det till variabel c2. Därefter subtraherar c2-värdet från 1024 och sparar resultatet i c1. Sedan göra PWM tappen 12 : e av Arduino HIGH och sedan efter en fördröjning av värde c1 göra att stift LÅG. Återigen fortsätter slingan efter en fördröjning av värdet c2.
Anledningen till att subtrahera det analoga värdet från 1024 är att Arduino Uno ADC har 10-bitars upplösning (så heltalsvärdena från 0 - 2 ^ 10 = 1024 värden). Detta innebär att det kommer att mappa inspänningar mellan 0 och 5 volt i heltalsvärden mellan 0 och 1024. Så om vi multiplicera ingångs anlogValue till (5/1024), då får vi det digitala värdet för ingångsspänningen. Lär dig här hur du använder ADC-ingång i Arduino.
void loop () { c2 = analogRead (pot); c1 = 1024-c2; digitalWrite (pwmPin, HIGH); // ställer in pin 12 HIGH delayMicroseconds (c1); // väntar på c1 uS (high time) digitalWrite (pwmPin, LOW); // ställer in pin 12 LOW delayMicroseconds (c2); // väntar på c2 us (låg tid) }
Hastighetskontroll av DC-motor med Arduino
I den här kretsen, för att styra DC-motorns hastighet, använder vi en 100K ohm potentiometer för att ändra PWM-signalens arbetscykel. 100K ohm potentiometer är ansluten till den analoga ingångsstiften A0 på Arduino UNO och DC-motorn är ansluten till den 12: e stiften på Arduino (som är PWM-stiftet). Arduino-programmet fungerar mycket enkelt, eftersom det läser spänningen från den analoga stiftet A0. Spänningen vid analog stift varieras med hjälp av potentiometern. Efter att ha gjort en nödvändig beräkning justeras arbetscykeln enligt den.
Om vi till exempel matar 256-värdet till den analoga ingången kommer HIGH-tiden att vara 768ms (1024-256) och LOW-tiden kommer att vara 256ms. Därför betyder det helt enkelt att arbetscykeln är 75%. Våra ögon kan inte se sådan högfrekvent svängning och det ser ut som att motorn är kontinuerligt PÅ med 75% av hastigheten. Så det är så vi kan utföra motorhastighetskontroll med Arduino.