Ich versuche herauszufinden, wie man die Geschwindigkeit eines 12-V-Gleichstrommotors mit einem Arduino und einer 12-V-Batterie steuert.
Ich möchte die „Power“- und „Control“-Teile der Schaltung aufteilen, damit der Arduino und die Sensoren nur 5 V erhalten.
Bisher habe ich folgendes versucht:
Ich kann die Geschwindigkeit des Motors steuern, indem ich die PWM von Pin 3 auf dem Arduino ändere. Dies öffnet den NPN-Transistor ( BUF654 ).
Das Problem ist, dass sich die Drehzahl des Motors nicht genug ändert.
Von 0 % bis 50 % PWM an Pin 3 wird der Motor abgewürgt.
Über 50 % erreicht der Motor fast seine maximale Drehzahl.
Ich frage mich, ob ich eine lineare Variation haben könnte:
0% - 10% : very slow
10% - 20% : slow
20% - 50% : normal speed
50% - 80% : fast
80% - 100% : RELEASE THE KRAKEN!
Hier sind die Spannung und der Strom, den der Motor zieht, wenn nur eine Batterie oder die vorherige Schaltung verwendet wird:
+----------------------------+---------+--------+
| Directly on 12V battery | 12.7 V | 61 mA |
+----------------------------+---------+--------+
| Arduino circuit (100% PWM) | 12.47 V | 60 mA |
+----------------------------+---------+--------+
| Directly on 9V battery | 9 V | 54 mA |
+----------------------------+---------+--------+
| Arduino circuit (60% PWM) | 9 V | 52 mA |
+----------------------------+---------+--------+
Was habe ich falsch gemacht? Kann das Problem von meinem Motor kommen?
Ihre Diode befindet sich in der falschen Position - sie sollte über dem Motor liegen (blockieren!), Nicht über dem Transistor.
Der Zweck der Diode besteht darin, dass der in der Motorspule fließende Strom weiter in die gleiche Richtung fließen kann, wenn der Transistor abschaltet. Wenn der Transistor abschaltet, steigt die Spannung am Transistorkollektor an, da sie aus dem Motor geflossen ist. Aus Es steigt über die Versorgungsspannung und stoppt nur, wenn der Transistor durchbricht (oder wenn er mit parasitärer Kapazität zu klingeln beginnt). Indem Sie eine Diode vom Transistorkollektor zur +12-V-Schiene legen, verhindern Sie, dass die Spannung am Transistor 12 V überschreitet, und lassen den Motorstrom weiter fließen.
So wie Sie die Diode in Ihrem Bild haben, würde sie nur leiten, wenn die Spannung unter die Erde gehen würde. Das könnte nur passieren, wenn jemand den Motor mechanisch sehr schnell in die umgekehrte Richtung dreht (und Ihre Diode würde dazu führen, dass die Spannung auf der 12-V-Schiene dadurch ansteigt).
Obwohl sich die Diode in einer ungewöhnlichen Position befindet, funktioniert die Schaltung gut. Normalerweise wird die Diode über die induktive Last gelegt - dh über die Motorstifte - sehr nahe am Motor (wenn Sie lange Drähte verwenden, ist dies wichtig). Dies hilft, elektrische Spitzen zu unterdrücken, die vom Motor erzeugt werden, wenn Sie ihn stoppen, aber er dreht sich weiter und fungiert für einen sehr kurzen Bruchteil der Zeit als Generator.
Diese Spikes können Ihren Transistor töten. Die andere Lösung - was Sie getan haben - besteht darin, den Transistor selbst zu schützen.
Beachten Sie, dass es unmöglich ist, einen Gleichstrommotor sehr langsam drehen zu lassen. Dies ergibt sich aus dem mechanischen Aufbau des Motors. Wenn Sie einen Motor ohne Getriebeuntersetzung verwenden, werden Sie feststellen, dass 30%-100% pwm einen Unterschied machen, während 0..30% nichts bewirken. Bei einem Getriebemotor (die Zahnräder sind zusätzliche Last) müssen Sie möglicherweise auf 50 % gehen, um ihn zum Starten zu bringen.
Sie können ein paar Dinge tun:
Kann es Haftreibung sein? Was passiert, wenn Ihre Arduino-Skizze zuerst den Motor startet (maximale PWM) und dann über mehrere Sekunden langsam abnimmt?
Meine Erfahrung ist, dass es sehr schwierig ist, einen Gleichstrommotor langsam laufen zu lassen (es sei denn, Sie haben natürlich eine Positionsrückmeldung oder Zahnräder).
Benutzer28910
mimipc
maxi
mimipc
maxi
Ricardo