Wie kann ich die Geschwindigkeit eines DC Motors bei Arduino ohne Potentionmeter regeln?
Hallo zusammen,
in der Schule (10. Klasse, Technik) haben wir gerade Mikrochip-Programmierung mit dem Arduino. Nun sollen wir selbständig ein kleines Projekt auf die Beine stellen. Da habe ich an ein selbstfahrendes Auto gedacht.
Wir haben bereits die Geschwindigkeitsregelung eines Elektromotors mithilfe eines Potentionmeters durchgenommen. Jedoch soll die die Geschwindigkeit eben nicht mit einem Potentiometer gesteuert, sondern direkt im Code eingegeben werden.
Nun meine Frage: Ist es möglich, die Drehzahl im Code einzugeben, also den Motor zu drosseln? Die Stromzufuhr des Motors erfolgt über die L 293 D H-Brücke.
Ich freue mich über Antworten
2 Antworten
Ich will übrigens die Geschwindigkeit des Motors mit dem Arduino steuern um mir einen teuren ESC (Electronic Speed Controller) zu sparen. Also die eigentliche Frage lautet: Kann man mit dem Arduino dasselbe Ergebnis erzielen wie mit einem ESC?
die motoren sind zu schnell. eher 1000 Kv nehmen, und trotzdem ein Getriebe nötig.
einen Brushless-Regler auf einem Arduino programmieren, das klappt so einfach nicht. man benötigt dann mehrere Ausgänge, die aber auch die Induktionseffekte des Motors messen können. man muss eine Pwm programmieren und ein rotierendes Feld für die Drehung selbst. eher eine Doktorarbeit 😀 kauf einen Motor mit geringer KV und einen Brushlessregler.
Es handelt sich übrigens um folgenden Motor:
Wie ich das verstanden habe, brauche ich also doch einen ESC und komme mit der Puls-Weiten-Modulation nicht weiter.
Am besten frag ich aber einfach in einem RC-Laden nach. Das ist vielleicht weniger kompliziert. Aber trotzdem danke für deine Hilfe.
Das Zauberwort für die Motorregelung heisst PWM (Puls-Weiten-Modulation). Der Motor bekommt, wenn er langsamer laufen soll, nicht ständig die volle Spannung, sondern eine Frequenz (z.B. 5000Hz) als Rechteckimpuls. Der Rechteckimpuls hat einen Part, wo er Spannung hat, und einen Part, wo er keien Spannung hat. Durch Verschiebung dieses Impulses zu wenig Spannung und viel ohne Spannung läuft der Motor langsamer.
Beispiel:
___----___----___---- : Motor dreht mit halber Geschwindigkeit
________________ : Motor dreht gar nicht
------------------------- : Motor dreht mit voller Geschwindigkeit
_____-_____-_____- : Motor dreht ganz langsam
Aber dreht sich der Motor dann noch gleichmäßig oder wird er, wenn er ganz langsam dreht nicht etwas ruckartig? Also wird sich der Motor gleich verhalten, wie wenn ich die Geschwindigkeit mit einem Potentiometer steuere?
Und wie programmiere ich das dann? Soll ich den Motor immer in gewissen Abständen an und aus stellen? Also:
void loop() {
digitalWrite(2, HIGH);
delay(x);
digitalWrite(2, LOW);
delay(y);
}
Der Motor dreht sich auch ruhig, wenn er ganz langsam drehen soll. Allerdings hat das ganze Grenzen. Das Ganze hat aber vor allem einen gewaltigen Vorteil: Es wird keine Leistung über das Potentiometer verbraten, es wird also Energie eingespart. Im Falle des Potentiometers wird die überflüssige Spannung am Potentiometer mit dem Strom, den der Motor zieht, in Wärme verwandelt.
Das Problem ist: Wir wissen nicht, welchen Strom der Motor ziehen wird. Du wirst je nach dem eine Schaltstufe mit einem Transistor benötigen (die eigentlich auf jeden Fall). Es ist möglich, dass der ESC (das muss einer für Kollektor-Motoren sein) günstiger ist, wenn man ihn z.B. bei Hobbyking kauft.