dar.
Es handelte sich bei der Schaltung um eine aus vier Transistoren aufgebaute H-Brücke, die es möglich machte,
ohne Relais die Drehrichtungsumkehr eines Gleichstrommotors zu realisieren. Die Ansteuerung der Transistoren erfolgte
mithilfe eines Schalters, der manuell betätigt werden musste.
In der neuen Schaltung, die jetzt folgt, wird dieser Schalter durch einen Mikrocontroller (Arduino Nano)mit zwei
Transistoren ersetzt. Mit zwei Ausgängen des Mikrocontrollers ist es jetzt möglich, via Software die Drehrichtung
des Motors zu ändern.
Die Einbindung der Transistoren an die vorhandene H-Brücke sieht wie folgt aus:
H-Brücke mit Steuertransistoren T5 und T6
Zusätzlich ist es jetzt möglich, mit einem PWM-Signal auch die Geschwindigkeit des Motors zu regeln.
Jeder der zwei neuen Transistoren bildet eine neue Verbindung zwischen den Basen der zwei bereits vorhandenen
Leistungstransistoren, die jeweils an der Bewegung des Motors in eine Richtung beteiligt sind. So verbindet der
Transistor T5 die Basen von T1 und T3, der Transistor T6 sorgt dagegen für die Verbindung der Basen von T2 und T3.
Durch Ansteuerung des Transistors T5 werden gleichzeitig die Transistoren T1 und T4 aktiviert und der Motor
dreht in eine Richtung. Wird der Transistor T6 angesteuert, werden die Transistoren T2 und T3 aktiviert. Der Motor
dreht in andere Richtung.
Durch Anwendung des PWM-Signals zur Ansteuerung der Transistoren T5 und T6 werden die Spannung und damit der
Motorstrom passend zu dem PWM-Signals getaktet. Bei sich verringernder Spannung dreht der Motor langsamer.
Das PWM-Signal wird mithilfe des Potentiometers P1 beeinflusst.
Auch hier gilt die Regel: die Transistoren T5 und T6 dürfen nicht gleichzeitig angesteuert werden. Es kommt
dann nämlich zu einem Kurzschluss, der die Zerstörung der Transistoren zu Folge haben
kann.
Gleichstrommotor JGB37
Der Motor, der hier getestet wird, hat eine nominale Spannung von 12 V. Bei voller Spannung beträgt seine
Drehzahl (hinter der Getriebe) 200 Umdrehungen pro Minute.
Zwei weitere Transistoren, die unsere H-Brücke bilden, sind PNP-Transistoren. Die hier eingesetzten BD136
können Ströme bis zu 1,5A durchschalten. Die Leistung der Transistoren muss stets an die Leistung des Motors
angepasst werden.
Die H-Brücke wird hier mit zwei Transistoren BC172 angesteuert. Die Transistoren vertragen einen Strom bis
zu 100mA. Es ist wichtig darauf zu achten, dass zu gleichem Zeitpunkt nur ein Transistor aktiviert wird. Die beiden
Transistoren werden direkt von dem Mikrocontroller angesprochen. Hierzu werden die Ausgänge D10 und D11 verwendet.
In der Schaltung treten die Transistoren T1 bis T4 als Leistungstransistoren, die den Motor direkt mit Strom
versorgen. T5 und T6 agieren in der Schaltung als Steuertransistoren.
Beim Schalten von induktiven Lasten wie Motoren oder Ventilen sind meist Schutzmaßnahmen erforderlich. Die
nicht selten sehr hohe Induktionsspannungen können die Steuerelektronik und andere elektronische Komponente beschädigen
oder derer Funktion negativ beeinflussen. In unserer Schaltung übernehmen die Schutzrolle die Dioden 1N4007. Die
Gleichrichter Diode 1N4007 ist sehr robust und findet Verwendung nicht nur in elektronischen Schaltungen im Hobby
Bereich. Sie ist sehr stark auch in industriellen Anlagen vertreten und leistet dort ausgezeichnete
Dienste.
Arduino Nano
Da nur wenige I/Os gebraucht werden, können die Schaltungsaufgaben problemlos von Arduino Nano erledigt werden.
Mit zwei digitalen Eingängen D2 und D3 werden die beiden Schalter S1 (Start / Stop) und S2 (Drehrichtungsumkehr)
abgefragt. Ein analoger Eingang A0 dient Abfrage des Potentiometers und ist für Geschwindigkeit zuständig. Schließlich
werden mit den Ausgängen D10 und D11 die Drehrichtung und Drehgeschwindigkeit direkt
beeinflusst.
Bei dem Baustein handelt es sich um einen festen Spannungsregler. Er arbeitet im Bereich bis zu 30V und liefert
am Ausgang eine feste Spannung von 8VDC. Diese Spannung dient in der Schaltung als Versorgungsspannung für den
Mikrocontroller Arduino Nano. Der Regler kann maximal einen Strom von 100mA
liefern.
In dem deaktivierten Zustand versucht der Strom innerhalb des Transistors T1 (PNP) vom Kollektor zur
Basis zu fließen. Er schafft es aber nicht, da der Transistor T5 noch gesperrt ist. Sobald er angesteuert ist, kann der
Strom fließen und gelangt über einen Begrenzungswiderstand zu der Basis des Transistors T4 (NPN). Damit werden beide
Transistoren T1 und T4 leitend und der Motor beginnt in eine Richtung zu drehen. Ähnliches Verhalten entsteht bei anderer
Drehrichtung. Der Transistor T6 wird angesteuert. Der Strom innerhalb des Transistors T2 (PNP) fließt von seinem
Kollektor zur Basis und gelangt ebenfalls über einen Begrenzungswiderstand zu der Basis des Transistors T3 (NPN).
Die Transistoren T2 und T3 werden leitend und der Motor dreht in andere Richtung.
Bei den Signalen zu den Transistoren T5 und T6, die von Arduino kommen, handelt es sich um PWM-Signale. Hier wird
die Spannung variierend unterbrochen, was dazu führt, dass man die Drehgeschwindigkeit beeinflussen kann. Sie wird mit
dem Potentiometer P1 eingestellt.
Die zwei Leuchtdioden zeigen, welche Richtung gerade vorgewählt wurde. Der Spannungsregler 78L08 stellt für
Arduino die Versorgungsspannung von 8V bereit. Die Dioden D1 bis D4 unterdrücken die Induktionsspannungen.
Das Programm (Sketch)
// ----------------------------------------------------------
// Drehrichtung- und Geschwindigkeitsregelung eines Gleichstrommotors
// mit H-Brücke und PWM
// Arduino Nano
// Arduino IDE 1.8.19
// ----------------------------------------------------------
int Schalter_Start = 2; // Schalter Start Pin D2
int Taster_Drehrichtungsumkehr = 3; // Taster Drehrichtung Pin D3
int Ausgang_Linkslauf = 10; // Ausgang Drehrichtung LINKS Pin D10
int Ausgang_Rechtslauf = 11; // Ausgang Drehrichtung RECHTS Pin D11
bool Drehrichtung; // Globale Variable Drehrichtung
void setup() {
pinMode (Schalter_Start, INPUT_PULLUP); // Pin D2, Eingang als PullUp
pinMode (Taster_Drehrichtungsumkehr, INPUT_PULLUP); // Pin D3, Eingang als PullUp
}
void loop() {
Drehrichtung = true;
if (digitalRead(Taster_Drehrichtungsumkehr) == LOW) { // Drehrichtung wechseln
Drehrichtung = false;
}
long Analog_Wert_Poti = analogRead(A0); // Poti Wert lesen
int Minimaler_PWM_Wert = 50; // Wert Min bei dem der Motor noch dreht
long Long_PWM_Soll = (Analog_Wert_Poti * 205) / 1023; // Poti Ausgabe skalieren (205=255-50)
int PWM_Soll = Long_PWM_Soll + Minimaler_PWM_Wert; // Geschwindigkeit bestimmen
if (digitalRead(Schalter_Start) == LOW) { // Programm Start
if (Drehrichtung == HIGH) {
analogWrite (Ausgang_Rechtslauf, 0); // Rechtslauf AUS
analogWrite (Ausgang_Linkslauf, PWM_Soll); // Linkslauf aktivieren
}
if (Drehrichtung == LOW) {
analogWrite (Ausgang_Rechtslauf, PWM_Soll); // Rechtslauf aktivieren
analogWrite (Ausgang_Linkslauf, 0); // Linkslauf AUS
}
} else {
analogWrite (Ausgang_Rechtslauf, 0); // Motor AUS
analogWrite (Ausgang_Linkslauf, 0);
}
}
// **************************************************************************************