Motor Geschwindigkeitssteuerung mit L293DNE
|
05.01.2016, 16:05
Beitrag #1
|
|||
|
|||
Motor Geschwindigkeitssteuerung mit L293DNE
Hallo an alle!
Ich lese hier seit einiger Zeit immer wieder rund um den Arduino und jetzt ist es Zeit für mein erstes eigenes Projekt ![]() Ich möchte hierzu einen Motor (http://www.produktinfo.conrad.com/datenb...yp_33G.pdf) per L293DNE (http://www.ti.com/lit/ds/symlink/l293d.pdf) ansteuern und diesen mit einer bestimmten Geschwindigkeit vorwärts und rückwärts laufen lassen (vorwärts mit einer bestimmten Geschwindigkeit, stop, rückwärts mit bestimmten Geschwindigkeit) Der Aufbau meiner Schaltung sieht so (http://farm6.static.flickr.com/5103/5670...01f2_b.jpg) aus. Hierbei habe ich statt Pin 4 und 5 die Pins 5 und 6 belegt. Beim Benutzen des Motors ohne Netzteil läuft der Motor schön langsam, aber wenn ich das Netzteil an den Arduino anschließe, dann dreht er sich leider viel zu schnell, deshalb möchte ich die Geschwindigkeit anpassen. Ich habe über die Suchfunktion diesen Code (http://www.arduinoforum.de/arduino-Threa...windigkeit) vom 22.09. versucht abzuändern, jedoch leider ohne Erfolg. Der veränderte Code hierbei sieht so aus: int E1=5; int M1=6; void setup() { pinMode(M1,OUTPUT); pinMode(E1,OUTPUT); } void loop() { //Vor digitalWrite(M1,HIGH); analogWrite(E1,60); delay(100); //Linksdrehung digitalWrite(M1,LOW); analogWrite(E1,60); delay(100); } Des weiteren habe ich noch diesen Code getestet: int motor_forward = 5; int motor_reverse = 6; // the setup routine runs once when you press reset: void setup() { // initialize the digital pin as an output. pinMode(motor_forward, OUTPUT); pinMode(motor_reverse, OUTPUT); } // the loop routine runs over and over again forever: void loop() { digitalWrite(motor_forward,1); //terminal D1 will be HIGH digitalWrite(motor_reverse,0); //terminal D2 will be LOW delay(5000); //creates a 5 seconds delay //Motor will rotate in forward direction for 5 seconds digitalWrite(motor_forward,0); //terminal D1 will be LOW digitalWrite(motor_reverse,1); //terminal D2 will be HIGH delay(5000); //creates a 5 seconds delay //Motor will rotate in reverse direction for 5 seconds } Hier konnte ich durch einfügen einer for-Funktion den Motor langsam schneller werden lassen, jedoch nicht mit einer kontstanten Geschwindigkeit. Habe auch das Programmierhandbuch von Stefan durchgelesen http://www.arduinoforum.de/arduino-Threa...erhandbuch und denke, dass mein Vorhaben nicht mit einer for-Funktion realisiert wird, sondern durch den analogwrite-Befehl. Leider weiss ich nicht wie ich diesen einbauen bzw anpassen kann, damit mein kleiner Motor schön langsam vor und zurück läuft. Kann mir hierzu irgendjemand helfen? Ich danke im Voraus für jegliche Hilfe ![]() PS: Sorry, falls der Text zu lang wurde, ich wollte es nur möglichst genau beschreiben, damit es einfacher zum Verstehen ist |
|||
05.01.2016, 16:34
Beitrag #2
|
|||
|
|||
RE: Motor Geschwindigkeitssteuerung mit L293DNE
Vielen Dank erstmal für die Antwort.
Ich konnte wie gesagt bei dem zweiten Code bereits die Geschwindigkeit abändern, indem ich die Werte bei der Funktion for (int i=0; i<255; i++) abgeändert habe. Dies brachte den Motor dazu stetig schneller zu werden, jedeoch möchte ich eine kontstante Geschwindigkeit. Ich habe den Motor an ein Modellauto angeschlossen und möchte dieses erstmal dazu bringen mit einer bestimmten Geschwindikeit vorwärts und rückwärts zu fahren. Das war als mein Einstieg in die Arduinowelt gedacht, jedoch ist die Realisierung doch nicht so einfach wie gedacht für mich als Anfänger. Vielleicht gibt es auch einen fertigen Code den ich anpassen kann, jedoch habe ich viele versucht und keinen gefunden mit dem es so lief wie gewünscht. Die zwei oben genannten sind nur Beispiele gewesen. Deshalb frage ich hier, weil ich schon seit zwei Tagen versuche den Wagen langsam vorwärts- und rückwärts laufen zu lassen ![]() PS: Danke auch für den Tipp mit dem Tag |
|||
05.01.2016, 16:53
Beitrag #3
|
|||
|
|||
RE: Motor Geschwindigkeitssteuerung mit L293DNE
(05.01.2016 16:41)Lötzinnerhitzer schrieb: einen für Deine Anwendung fix und fertigen Code wirst Du kaum finden - und hier wird wohl auch niemand sein, der Dir einen Code schreibt Das hatte ich natürlich nicht erwartet, nur eine Hilfestellung zu den bisher geposteten Codes. Selbstgekochtes schmeckt auch besser ![]() ![]() |
|||
05.01.2016, 17:07
(Dieser Beitrag wurde zuletzt bearbeitet: 05.01.2016 17:17 von arduinofan.)
Beitrag #4
|
|||
|
|||
RE: Motor Geschwindigkeitssteuerung mit L293DNE
Hmm.., ich steuere meinen Motor mit den L293D an mit folgende Code:
Musst die Pinbelegung bei dir anpassen. Ich habe das UNO-Board. Code: #define ENA_PIN 5 // ENA of DC motor driver module attach to pin5 Gruss |
|||
06.01.2016, 16:12
(Dieser Beitrag wurde zuletzt bearbeitet: 06.01.2016 17:29 von ArduinoFanX.)
Beitrag #5
|
|||
|
|||
RE: Motor Geschwindigkeitssteuerung mit L293DNE
Danke Arduinofan!
Werde deinen Code gleich mal testen. Hoffe es klappt diesmal ![]() So, jetzt habe ich etwas mit deinem Code verbracht und es versucht anzupassen. Ich konnte erkennen, dass du zwei Motoren verwendest. Da ich nur einen verwende habe ich den Code etwas angepasst. Er sieht jetzt so aus: Code: Code: Jetzt stellt sich bei mir noch eine Frage: Welche Pins vom L293D verbindest du mit deinem Pin 8 und 9 beim Arduino? ![]() Bei mir sieht die Verbindung von L293D zu Arduino so aus (L293D -> Arduino) : Pin 1 Enable -> 5V Pin 2 Input -> Pin 5 Pin 3 Output -> Motor - Pin 4 Gnd -> Gnd Pin 5 Gnd -> Gnd Pin 6 Output -> Motor + Pin 7 Output -> Pin 6 Pin 8 Vs -> Vin |
|||
06.01.2016, 18:08
(Dieser Beitrag wurde zuletzt bearbeitet: 06.01.2016 21:55 von arduinofan.)
Beitrag #6
|
|||
|
|||
RE: Motor Geschwindigkeitssteuerung mit L293DNE
Das ist Input1 und Input2 :
ENA 5 INT1 8 INT2 9 INT3 10 INT4 11 ENB 6 Gruss |
|||
06.01.2016, 21:31
Beitrag #7
|
|||
|
|||
RE: Motor Geschwindigkeitssteuerung mit L293DNE
Danke sehr! Wenn ich auf den Code schaue, dann frage ich mich was bei dir dann Pin 5 und 6 ist. Hast du vielleicht einen Link zum Aufbau deiner Schaltung?
Sieht so aus als habe ich nur zwei Optionen. Entweder passe ich den Code an meinen bestehenden Aufbau an oder ich passe den Aufbau deinem Code an. Ich habe mich schon gefreut als der Motor vor und zurück lief und ich dachte ich füge noch ein oder zwei Zeilen Code ein um (per PWM?/analogWrite?etc..) die Geschwindigkeit zu drosseln, aber es scheint wohl doch nicht so einfach zu sein wie gedacht. Aber ich sehe das hier als Lernprozess und freue mich über jede Nachricht die mir hilft dazuzulernen : ) PS: Vielleicht kennt jemand auch einen Link mit einer Lösung um einen Motor vorwärts-/rückwärts laufen zu lassen mit einer bestimmten Geschwindigkeit. Dann kann ich so versuchen zu verstehen wie es aufgebaut ist und wie der Code auf einzelne Pins zugreift. Ich bin für alle Links, Schlagworte, Ratschläge, etc. offen. Danke : ) |
|||
06.01.2016, 21:54
(Dieser Beitrag wurde zuletzt bearbeitet: 06.01.2016 21:55 von Binatone.)
Beitrag #8
|
|||
|
|||
RE: Motor Geschwindigkeitssteuerung mit L293DNE
Jetzt mal ganz abgesehen von Pinbelegung, Schaltung etc.
Ein Gleichstrommotor hat die blöde Eigenschaft, das er viel "Schlupf" zulässt. Mit der Spannung steuerst Du das Drehmoment, mehr nicht. Der Motor braucht eine gewisse Losreißkraft beim Anlaufen. Ohne Belastung fängt der vielleicht bei 20% Spannung zu drehen an. Mit Getriebe oder gar unter Last kommt vielleicht erst bei 80% etwas. Nimmt man (ohne Belastung) die Spannung zurück, sieht es umgekehrt aus. Da kann der unter Umständen bei 5% Spannung noch langsam rotieren. Es hilft nur eins: Rückmeldung der Drehzahl und permanenter Vergleich (Reedkontakt, Hallgeber, Gabellichtschranke...) Drehzahl zu hoch -> Spannung senken Drehzahl zu klein -> Spannung erhöhen. Und das die ganze Zeit, also sind delays "verboten" Beim Schrittmotor ist das anders: Hier kriegt der Motor die ganze Zeit volles Drehmoment. Über die Frequenz und die Polung wird die Drehzahl eingestellt. Binatone PS: Reedkontakte verschleissen recht schnell und prellen, aber zum ausprobieren gehts...) |
|||
|
|
|
Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste