- Pulsweitenmodulation:
- Erforderliches Material
- Schaltplan
- Code und Erklärung
- Drehzahlregelung des Gleichstrommotors mit Arduino
Gleichstrommotor ist der am häufigsten verwendete Motor in Robotik- und Elektronikprojekten. Zur Steuerung der Drehzahl des Gleichstrommotors gibt es verschiedene Methoden, z. B. kann die Drehzahl automatisch anhand der Temperatur gesteuert werden. In diesem Projekt wird jedoch die PWM-Methode zur Steuerung der Drehzahl des Gleichstrommotors verwendet. Hier in diesem Arduino Motor Speed Control-Projekt kann die Geschwindigkeit durch Drehen des Potentiometerknopfs gesteuert werden.
Pulsweitenmodulation:
Was ist PWM? PWM ist eine Technik, mit der wir die Spannung oder Leistung steuern können. Um es einfacher zu verstehen: Wenn Sie 5 Volt zum Antreiben eines Motors anlegen, bewegt sich der Motor mit einer gewissen Drehzahl. Wenn wir nun die angelegte Spannung um 2 reduzieren, bedeutet dies, dass wir 3 Volt an den Motor anlegen, verringert sich auch die Motordrehzahl. Dieses Konzept wird im Projekt verwendet, um die Spannung mit PWM zu steuern. Wir haben PWM in diesem Artikel ausführlich erklärt. Überprüfen Sie auch diese Schaltung, in der PWM zur Steuerung der LED-Helligkeit verwendet wird: 1 Watt LED-Dimmer.
% Arbeitszyklus = (TON / (TON + TOFF)) * 100 Wobei T ON = HIGH-Zeit der Rechteckwelle T OFF = LOW-Zeit der Rechteckwelle
Wenn nun der Schalter in der Abbildung über einen bestimmten Zeitraum kontinuierlich geschlossen ist, wird der Motor während dieser Zeit kontinuierlich eingeschaltet. Wenn der Schalter 8 ms lang geschlossen und über einen Zyklus von 10 ms 2 ms lang geöffnet ist, ist der Motor nur in der Zeit von 8 ms eingeschaltet. Jetzt ist das durchschnittliche Terminal über einen Zeitraum von 10 ms = Einschaltzeit / (Einschaltzeit + Ausschaltzeit), dies wird als Arbeitszyklus bezeichnet und beträgt 80% (8 / (8 + 2)), also der Durchschnitt Die Ausgangsspannung beträgt 80% der Batteriespannung. Jetzt kann das menschliche Auge nicht sehen, dass der Motor 8 ms lang eingeschaltet und 2 ms lang ausgeschaltet ist. Es sieht also so aus, als würde sich der Gleichstrommotor mit 80% Geschwindigkeit drehen.
Im zweiten Fall wird der Schalter für 5 ms geschlossen und über einen Zeitraum von 10 ms für 5 ms geöffnet, sodass die durchschnittliche Klemmenspannung am Ausgang 50% der Batteriespannung beträgt. Angenommen, die Batteriespannung beträgt 5 V und das Tastverhältnis beträgt 50%, sodass die durchschnittliche Klemmenspannung 2,5 V beträgt.
Im dritten Fall beträgt das Tastverhältnis 20% und die durchschnittliche Klemmenspannung 20% der Batteriespannung.
Wir haben PWM mit Arduino in vielen unserer Projekte verwendet:
- Arduino-basierter LED-Dimmer mit PWM
- Temperaturgesteuerter Lüfter mit Arduino
- Gleichstrommotorsteuerung mit Arduino
- AC-Lüfterdrehzahlregelung mit Arduino und TRIAC
Sie können mehr über PWM erfahren, indem Sie verschiedene Projekte durchlaufen, die auf PWM basieren.
Erforderliches Material
- Arduino UNO
- Gleichspannungs Motor
- Transistor 2N2222
- Potentiometer 100 kOhm
- Kondensator 0,1 uF
- Steckbrett
- Springende Drähte
Schaltplan
Der Schaltplan für die Drehzahlregelung des Arduino-Gleichstrommotors mit PWM ist nachstehend aufgeführt:
Code und Erklärung
Der vollständige Code für die Arduino DC-Motorsteuerung mit Potentiometer ist am Ende angegeben.
In dem folgenden Code haben wir die Variable c1 und c2 und zugewiesenen Analog Stift A0 für den Potentiometerausgang und 12 initialisiert th Pin für ‚pwm‘.
int pwmPin = 12; int pot = A0; int c1 = 0; int c2 = 0;
Stellen Sie nun im folgenden Code Pin A0 als Eingang und 12 (PWM-Pin) als Ausgang ein.
void setup () { pinMode (pwmPin, OUTPUT); // deklariert Pin 12 als Ausgangs- PinMode (Pot, INPUT); // deklariert Pin A0 als Eingang }
In void loop () lesen wir nun den Analogwert ( von A0) mit analogRead (pot) und speichern ihn in der Variablen c2. Subtrahieren Sie dann den Wert c2 von 1024 und speichern Sie das Ergebnis in c1. Dann machen die PWM - Pin 12 th von Arduino HIGH und dann nach einer Verzögerung von Wert c1, daß der Stift LOW machen. Wiederum wird nach einer Verzögerung des Wertes c2 die Schleife fortgesetzt.
Der Grund für das Subtrahieren des Analogwerts von 1024 ist, dass der Arduino Uno ADC eine Auflösung von 10 Bit hat (also die ganzzahligen Werte von 0 - 2 ^ 10 = 1024 Werte). Dies bedeutet, dass Eingangsspannungen zwischen 0 und 5 Volt auf ganzzahlige Werte zwischen 0 und 1024 abgebildet werden . Wenn wir also den anlogValue- Wert mit (5/1024) multiplizieren, erhalten wir den digitalen Wert der Eingangsspannung. Erfahren Sie hier, wie Sie ADC-Eingaben in Arduino verwenden.
void loop () { c2 = analogRead (pot); c1 = 1024-c2; digitalWrite (pwmPin, HIGH); // setzt Pin 12 HIGH delayMicroseconds (c1); // wartet auf c1 uS (High Time) digitalWrite (pwmPin, LOW); // setzt Pin 12 LOW delayMicroseconds (c2); // wartet auf c2 uS (niedrige Zeit) }
Drehzahlregelung des Gleichstrommotors mit Arduino
In dieser Schaltung verwenden wir zur Steuerung der Drehzahl des Gleichstrommotors ein 100-K-Ohm-Potentiometer, um das Tastverhältnis des PWM-Signals zu ändern. 100K ohm Potentiometers ist mit dem Analogeingangsanschluß A0 der Arduino UNO verbunden ist und den Gleichstrommotor ist mit dem 12 verbunden th Stift des Arduino (die der PWM - Pin ist). Die Arbeitsweise des Arduino-Programms ist sehr einfach, da es die Spannung vom analogen Pin A0 liest. Die Spannung am analogen Pin wird mit dem Potentiometer variiert. Nach einigen notwendigen Berechnungen wird das Tastverhältnis entsprechend angepasst.
Wenn wir beispielsweise dem Analogeingang einen Wert von 256 zuführen, beträgt die HIGH-Zeit 768 ms (1024-256) und die LOW-Zeit 256 ms. Daher bedeutet dies einfach, dass das Tastverhältnis 75% beträgt. Unsere Augen können solche hochfrequenten Schwingungen nicht sehen und es sieht so aus, als ob der Motor mit 75% der Drehzahl ständig eingeschaltet ist. So können wir die Motordrehzahlregelung mit Arduino durchführen.