- Pulsbreedtemodulatie:
- Materiaal vereist
- Schakelschema
- Code en uitleg
- Snelheidsregeling van DC-motor met Arduino
DC-motor is de meest gebruikte motor in robotica- en elektronicaprojecten. Voor het regelen van de snelheid van de DC-motor hebben we verschillende methoden, zoals de snelheid kan automatisch worden geregeld op basis van temperatuur, maar in dit project wordt de PWM-methode gebruikt om de snelheid van de DC-motor te regelen. Hier in dit Arduino Motor Speed Control-project kan de snelheid worden geregeld door de knop van de potentiometer te draaien.
Pulsbreedtemodulatie:
Wat is PWM? PWM is een techniek waarbij we de spanning of het vermogen kunnen regelen. Om het eenvoudiger te begrijpen, als u 5 volt toepast om een motor aan te drijven, zal de motor met enige snelheid bewegen, nu als we de aangelegde spanning met 2 verlagen, passen we 3 volt toe op de motor, dan neemt het motortoerental ook af. Dit concept wordt in het project gebruikt om de spanning te regelen met behulp van PWM. In dit artikel hebben we PWM uitgebreid uitgelegd. Controleer ook dit circuit waar PWM wordt gebruikt om de helderheid van LED te regelen: 1 Watt LED Dimmer.
% Duty cycle = (TON / (TON + TOFF)) * 100 Waar, T ON = HOGE tijd van de blokgolf T UIT = LAGE tijd van de blokgolf
Als nu de schakelaar in de afbeelding gedurende een bepaalde tijd continu wordt gesloten, zal de motor gedurende die tijd continu AAN staan. Als de schakelaar gedurende 8 ms gesloten is en gedurende 2 ms gedurende een cyclus van 10 ms geopend is, dan zal de motor pas na 8 ms AAN staan. Nu is de gemiddelde terminal over een periode van 10ms = inschakeltijd / (inschakeltijd + uitschakeltijd), dit wordt de werkcyclus genoemd en is 80% (8 / (8 + 2)), dus het gemiddelde uitgangsspanning is 80% van de accuspanning. Nu kan het menselijk oog niet zien dat de motor 8 ms aan staat en 2 ms uit, dus het zal lijken alsof de gelijkstroommotor met 80% snelheid draait.
In het tweede geval wordt de schakelaar 5 ms gesloten en gedurende 10 ms gedurende 5 ms geopend, dus de gemiddelde klemspanning aan de uitgang is 50% van de accuspanning. Stel dat de accuspanning 5V is en de inschakelduur 50% en de gemiddelde klemspanning dus 2,5V is.
In het derde geval is de duty-cycle 20% en is de gemiddelde klemspanning 20% van de accuspanning.
We hebben PWM met Arduino gebruikt in veel van onze projecten:
- Arduino-gebaseerde LED-dimmer met PWM
- Temperatuurgestuurde ventilator met Arduino
- DC-motorbesturing met Arduino
- AC Fan Speed Control met Arduino en TRIAC
U kunt meer te weten komen over PWM door verschillende projecten te doorlopen op basis van PWM.
Materiaal vereist
- Arduino UNO
- Gelijkstroommotor
- Transistor 2N2222
- Potentiometer 100k ohm
- Condensator 0.1uF
- Breadboard
- Springende draden
Schakelschema
Het schakelschema voor Arduino DC Motor Speed Control met behulp van PWM wordt hieronder weergegeven:
Code en uitleg
De volledige code voor Arduino DC Motor Control met behulp van een potentiometer wordt aan het einde gegeven.
In de onderstaande code, hebben wij de variabele c1 en c2 en toegewezen analoge pin A0 de potentiometer output en 12 geïnitialiseerd th Pin voor 'PWM'.
int pwmPin = 12; int pot = A0; int c1 = 0; int c2 = 0;
Stel nu in de onderstaande code pin A0 in als invoer en 12 (wat PWM-pin is) als uitvoer.
void setup () { pinMode (pwmPin, OUTPUT); // declareert pin 12 als output pinMode (pot, INPUT); // declareert pin A0 als invoer }
Nu lezen we in void loop () de analoge waarde (van A0) met analogRead (pot) en slaan deze op in variabele c2. Trek vervolgens de waarde van c2 af van 1024 en sla het resultaat op in c1. Maak dan de PWM pin 12 th van Arduino HIGH en vervolgens na een vertraging van waarde c1 maken dat pin LOW. Nogmaals, na een vertraging van waarde c2 gaat de lus verder.
De reden voor het aftrekken van de analoge waarde van 1024 is dat de Arduino Uno ADC een 10-bits resolutie heeft (dus de gehele waarden van 0 - 2 ^ 10 = 1024 waarden). Dit betekent dat het ingangsspanningen tussen 0 en 5 volt zal omzetten in gehele waarden tussen 0 en 1024. Dus als we input anlogValue vermenigvuldigen met (5/1024), dan krijgen we de digitale waarde van de ingangsspanning. Leer hier hoe u ADC-invoer in Arduino gebruikt.
void loop () { c2 = analogRead (pot); c1 = 1024-c2; digitalWrite (pwmPin, HIGH); // stelt pin 12 HIGH delayMicroseconds (c1) in; // wacht op c1 uS (hoog tijd) digitalWrite (pwmPin, LOW); // stelt pin 12 LOW delayMicroseconds (c2) in; // wacht op c2 uS (lage tijd) }
Snelheidsregeling van DC-motor met Arduino
In dit circuit gebruiken we voor het regelen van de snelheid van de DC-motor een 100K ohm-potentiometer om de duty-cycle van het PWM-signaal te wijzigen. 100 kOhm potentiometer is verbonden met de analoge ingang pin A0 van de Arduino UNO en de gelijkstroommotor is verbonden met de 12 ste pin van de Arduino (die de PWM pin). De werking van het Arduino-programma is heel eenvoudig, omdat het de spanning van de analoge pin A0 leest. De spanning op de analoge pin wordt gevarieerd met behulp van de potentiometer. Na het uitvoeren van de nodige berekeningen, wordt de duty-cycle eraan aangepast.
Als we bijvoorbeeld 256 waarden naar de analoge ingang sturen, is de HIGH-tijd 768ms (1024-256) en de LAGE-tijd 256ms. Daarom betekent dit simpelweg dat de inschakelduur 75% is. Onze ogen kunnen zo'n hoogfrequente oscillatie niet zien en het lijkt erop dat de motor continu AAN staat met 75% van de snelheid. Dus dat is hoe we Motor Speed Control kunnen uitvoeren met Arduino.