Arduino Motor Drehrichtung ändern?

4 Antworten

Es ist besser wenn man einen Motortreiber verwendet. Der Motortreiber wird mit an ein separates 24V Netzteil angeschlossen und an den Motorausgang des Motortreibers der 24V Motor. Zum Beispiel diesen: https://www.conrad.de/de/p/motortreiber-motor-driver-board-1525437.html?WT.mc_id=google_pla&WT.srch=1&ef_id=Cj0KCQiAxrbwBRCoARIsABEc9shWKKqApaGuSPJP6AG8HIBLZO-0XB8Ijl5MD5ozpkjMxqWlp4CqWYwaAknaEALw_wcB:G:s&gclid=Cj0KCQiAxrbwBRCoARIsABEc9shWKKqApaGuSPJP6AG8HIBLZO-0XB8Ijl5MD5ozpkjMxqWlp4CqWYwaAknaEALw_wcB&hk=SEM&s_kwcid=AL!222!3!367270211499!!!g!! Er ist für maximal 2 Gleichstromotoren oder einem Schrittmotor im Bereich von 5 bis 35V geeignet. Belastbar bis maximal 2A.

Die Steuereingänge des Motortreibers werden dann mit den Ausgängen des Arduino verbunden. Über Steuersignale kann man dann z.B. die Drehrichtung ändern oder auch ein PWM-Signal einspeisen für die Drehzahländerung. Das kann man dann im Programm festlegen.

Die Steuereingänge des Motortreibers sind über Optokoppler geschützt. Dadurch ist auch der Arduino geschützt.

Also ich würde an deiner Stelle einen Motortreiber nehmen. Die sind halt speziell dafür optimiert, etwa was Leerlaufströme (Induktionsspannung) angeht, Geschwindigkeitsregelung, Leerlauf/Bremsen, höhere Spannung, Überlastschutz...

Ein Beispiel wäre: https://www.conrad.de/de/p/motortreiber-motor-driver-board-1525437.html?WT.mc_id=google_pla&WT.srch=1&ef_id=EAIaIQobChMI5_rE7oGn5gIVDuR3Ch0EWQdoEAYYCCABEgJrPPD_BwE:G:s&gclid=EAIaIQobChMI5_rE7oGn5gIVDuR3Ch0EWQdoEAYYCCABEgJrPPD_BwE&hk=SEM&s_kwcid=AL!222!3!367270211499!!!g!!

ein anderes: https://wiki.ctbot.de/index.php/L293D

bekommst du aber sicher bei ebay auch günstiger. Mit den üblichen Arduino-Bibliotheken auch sehr einfach zu verwenden.

Mit Relais geht auch, mit 2 poligem Wechselrelais kann man eine Spannungsumschaltung bauen, mit einem weiteren einfachen Relais den Motor an- und ausschalten. Ist aber nicht wirklich "zeitgemäß" und die Relais brauchen auch wieder Transistoren.

Hallo Diesel775

Bei einem Gleichstrommotor ändert man die Drehrichtung indem man die beiden Anschlüsse vertauscht.

HobbyTfz

Um einen DC-Motor in zwei Richtungen mit Relais anzusteuern, brauchst Du i.d.R. 2 Relais. Üblicherweise (und zur Vermeidung kurzzeitiger Kurzschlüsse) verwendet man ein 2-poliges Wechselrelais zum Umschalten der Drehrichtung und ein 1- oder 2-poliges Relais zum Ein-/Ausschalten. Es können auch zwei 2-polige Einschaltrelais verwendet werden, aber dann muss die Software dafür Sorge tragen, dass kein Kurzschluss entstehen kann, also nicht beide Relais gleichzeitig angesteuert werden. Zur Not kannst Du auch zwei 1-polige Relais verwenden, musst dann aber eine Versorgungsspannung von +/-12V zur Verfügung stellen (eine Motorseite an 0V, und je nachdem, ob Du die +12V oder -12V an die andere Seite legst, hast Du die gewünschte Drehrichtung) - und natürlich auch einen möglichen Kurzschluß verhindern. Besser und i.d.R. billiger wird es mit einem H-Bridge Motortreiber.

ABER: Bei einem DC-Motor wird es wohl erforderlich, die Position des Aufzugs in jeder(!) Etage durch einen eigenen Sensor o.ä. zu erfassen, so dass er an der richtigen Stelle zum Halten kommt, also stromlos geschaltet wird (oder besser: kurzgeschlossen wird, weil größeres Haltemoment), denn per einfacher Zeitsteuerung wird der Aufzug früher oder später irgendwo halten - aber nicht mehr exakt dort, wo er halten soll. Dies bedingt nicht nur zusätzlichen Aufwand für die Sensoren, sondern birgt auch die Gefahr, dass das Haltemoment des Motors im stromlosen Zustand nicht ausreicht, den Aufzug davon abzuhalten (je nach Gewicht und Übersetzung), langsam herunterzugleiten. Beachten: Ein DC-Motordriver mit Drehrichtungswahl muss immer eine H-Bridge enthalten und um ihn im Aus-Zustand kurzzuschließen, wird weitere Elektronik (oder ein zusätzliches Relais) benötigt. Es geht - aber es geht auch einfacher und besser:

Mein Vorschlag: Benutze einen Schrittmotor. Hier ist die Drehrichtung kein Problem (ein zusätzlicher Ausgangs-Pin beim Arduino an vorhandenen Eingangs-Pin in der Schrittmotorsteuerung bzw. einfach softwareseitig zu lösen, wenn der Arduino die Ansteuerung der Motorspulen per einfachem Treiber selbst übernimmt), es wird nur ein(!) Sensor für die Nulllage benötigt und das Haltemoment ist i.d.R. deutlich größer.

Gruß Jogi

P.S.: Ein Mega 2560 ist für so eine einfache Aufgabe sicherlich deutlich überdimensioniert ;-)

Woher ich das weiß:Studium / Ausbildung – Studium der Elektrotechnik
Diesel775 
Fragesteller
 09.12.2019, 16:58

Kann ich des Schrittmotor auch mit eine Zeit versehen? Das heisst wenn er im Erdgeschoss ist und ich rufe ihn auf 1 Etage dann fährt er nach oben aber es läuft eine Zeit ich sage mal 3 Sek bis Stoppt und da anhält wo er halten soll theoretisch würde doch sowas funktionieren wenn ich jeden Taster mit einer Zeit versehe. geht das?

0
Jogi1111  02.01.2020, 12:34
@Diesel775

Bei einem Schrittmotor geht man nicht über die Zeit, sondern über die Anzahl der benötigten Schritte. So kannst Du z.B. auf den 1/10mm genau einstellen, wo Dein Aufzug stoppen soll.

Genauer: Wenn die Schrittfrequenz des Schrittmotors konstant wäre, wäre die Zeit, wie lange der Schrittmotor laufen würde äquivalent zur Schrittzahl - das ist schon richtig. In aller Regel lässt man einen Schrittmotor aber nicht gleichmäßig fahren, sondern läßt ihn langsam anfahren, fährt eine Weile mit einer bestimmten Geschwindigkeit (=Schrittzahl pro Zeit) und "bremst" (=reduziert die Schrittfrequenz allmählich) dann wieder langsam bis zum Stillstand ab. So kann man sicherstellen, dass während des Starts keine Schritte verloren gehen und kann letztlich so am schnellsten von A nach B kommen. Für solche Rampenverläufe der Schrittmotoransteuerung gibt es Beispiele im Netz (Arduino) zu finden. Da kannst Du alles Einstellen und Deine perfekte Aufzugssteuerung entwickeln.

Gruß Jogi1111

0