Update: Ich ändere gerade ein paar Dinge mit dem Projekt. Ich habe einige von Ihnen beraten. Ich habe von einem Schrittmotor zu einem RC-Servo (über PWM gesteuert) gewechselt. Wenn ich auf Probleme stoße und diese nicht herausfinden kann, werde ich fragen. Danke für die Hilfe!
Ich arbeite mit einem Freund an einem Projekt und benutze zum ersten Mal ein Arduino. Wir verwenden ein Arduino, um Daten von einem Sensor (Beschleunigungsmesser) zu erfassen und dann den Motor (6 V, DC) einzuschalten.
Ich habe ein bisschen gegraben und es scheint, als würde der Strom aus dem Arduino nicht gleichzeitig für Motor und Sensor ausreichen. Vielleicht könnte eine Art Verzögerung funktionieren (wäre das möglich?).
Ich denke darüber nach, ein Motorschild zu verwenden . Kann ich den Beschleunigungsmesser weiterhin zusammen mit dem Motor steuern?
Ich versuche, eine einzelne externe Stromquelle zu verwenden (max.: 6 AA-Batterien; ich versuche, die Anzahl der Batterien zu begrenzen, da wir versuchen, sie tragbar zu halten) Arduino und Motorschild benötigen zwei verschiedene Netzteile (nach meinem Verständnis).
Antworten:
Problem 1 : Fahren eines Motors direkt von einem Arduino
Das Fahren eines Motors direkt von den Arduino-Stiften ist aus mehreren Gründen nicht ratsam:
Während jeder Arduino-Pin für ATmega-basierte Arduinos für 40 mA ausgelegt ist, ziehe ich es persönlich vor, eine anhaltende Belastung auf unter 30 mA zu halten, Ihr Risikoappetit kann jedoch unterschiedlich sein. Ohne das Datenblatt des betreffenden Motors zu sehen, kann nicht vermutet werden, wie viel Strom der Motor benötigt
Gegen-EMK ist im Grunde genommen eine Sperrspannung, die von den Motorspulen (oder einer induktiven Last beim Ausschalten) erzeugt wird, Transienten (Spitzen), die vorübergehend den akzeptablen Spannungsbereich, den die Mikrocontroller-Pins tolerieren können, weit überschreiten können.
Die Gegen-EMK bleibt ein Risiko, wenn auch verringert, selbst wenn eine schnelle Diode in Sperrrichtung über die Motorleitungen angeschlossen wird. Dies wird dringend empfohlen.
Wenn Sie mit der Grundelektronik vertraut sind, können Sie dies auch erreichen, indem Sie einen geeigneten Motortreiber-IC und Flyback-Dioden direkt verkabeln. ( Bearbeiten : Dies wird in der Antwort von Manishearth hervorragend beschrieben. )
Der Motortreiber, unabhängig davon, ob es sich um eine Abschirmung oder einen IC handelt, sollte unabhängig vom Arduino mit Strom versorgt werden, wobei jedoch die beiden Erdungsleitungen der Stromquelle miteinander verbunden sind. Siehe weiter unten.
Problem 2 : Beschleunigungsmesser und Motorschild gleichzeitig steuern
Suchen Sie zur Vereinfachung nach einem Motorschild mit stapelbaren Headern, dh mit den auf dem Motorschild nachgebildeten Arduino-Header-Pins zum Anbringen zusätzlicher Hardware, in Ihrem Fall des Beschleunigungsmessers. Nicht alle Schilde bieten stapelbare Header. Dies erschwert die Verwendung der Stifte, die nicht von der Abschirmung verwendet werden, und erfordert das Löten von Drähten an die entsprechenden Header-Pads auf der Leiterplatte oder eine solche Anordnung.
Wenn die von Ihnen ausgewählte Motorabschirmung nicht alle GPIO-Pins verbraucht, wie dies bei Abschirmungen zum Antrieb mehrerer Motoren der Fall sein kann, liegt möglicherweise ein Problem vor. Da nur 1 Motor angetrieben werden soll, vermeiden Sie mehrmotorige Abschirmungen, bei denen nicht genügend unbenutzte GPIO-Pins verbleiben.
Problem 3 : Stromverteilung zwischen Arduino und Motorschild
quelle
Die meisten Schilde nehmen ein paar Stifte auf und überlassen den Rest Ihnen (deshalb haben viele eine Nachbildung des Arduino-Stiftsystems mit stapelbaren Headern darauf). Sie sind so konzipiert, dass sie so problemlos wie möglich sind. Daher ist es am einfachsten, einen Schild zu bekommen, um dies zu umgehen.
Ich persönlich treibe Motoren nicht direkt vom Board an. Stattdessen benutze ich dafür Motortreiber wie den L293D. Die Pins eignen sich nicht wirklich zum Abziehen von Strom, und im Allgemeinen ist es besser, Sensoren direkt als über die Arduino-Pins mit Strom zu versorgen. Denken Sie daran, dass die Stifte eine Strombegrenzung haben. Wenn Sie sie überlasten, brennen sie aus.
Die Verwendung eines L293D ist einfach:
Verbinden Sie die Pins 1,9,16 mit Ihrer Vcc-Quelle (positiver Anschluss der 5-V-Quelle, mit der Sie den Arduino versorgen. Für mich ist es im Allgemeinen eine Leitung, die von einem LM7805 gezogen wird). Verbinden Sie nun die Pins 4,5,13,12 mit Ihrem GND (Minuspol). Verbinden Sie nun Pin 8 mit einer Hochspannungsquelle (6 V, 12 V oder was auch immer Sie Ihren Motoren zuführen möchten). Beachten Sie, dass die negativen Anschlüsse aller Spannungsquellen mit GND kurzgeschlossen werden müssen.
Verbinden Sie nun Ihren Motor über die beiden Ausgangspins an einer Stelle (3,4 links). Verbinden Sie die Eingangspins (2,7) mit zwei verschiedenen Pins am Arduino. Wenn Sie beiden Pins das gleiche Signal (HIGH oder LOW) geben, hält der Motor an. Wenn Sie an einem Pin HIGH und am anderen LOW geben, läuft der Motor im oder gegen den Uhrzeigersinn, je nachdem, welcher Pin welches Signal erhalten hat.
Wenn Sie einen unidirektionalen Motor wünschen und Stifte speichern möchten, schließen Sie einen der Eingangsstifte an GND kurz. Wenn der andere Eingangspin auf LOW steht, ist der Motor ausgeschaltet, und wenn er auf HIGH steht, ist der Motor eingeschaltet.
Wenn Sie möchten, können Sie einen anderen Motor auf die gleiche Weise am gegenüberliegenden Ende des Chips anbringen.
Der L293D zieht eine winzige Strommenge aus dem Arduino und versorgt den Motor mit Strom, der über Pin 8 gezogen wird. Dies ist normalerweise ideal für solche Situationen.
quelle