Kann ich bei der Arbeit mit einem Sensor und einem Motor beide verwenden oder sollte ich einen Motorschutz verwenden?

11

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).

Om23
quelle
Sie sollten weiterhin in der Lage sein, Ihre anderen Stifte zu verwenden. Dieser Motorschild wirkt wie ein mächtiger Bruder und hört zu, was der Stift sagt, und tut genau das. Natürlich ist er mit viel Kraft der größere Bruder! Könnten Sie Ihre Frage so bearbeiten, dass Sie genauer wissen, wie viele AA-Batterien Sie verwenden werden?
Abdullah Kahraman
Okay, ich habe die Anzahl der Batterien aktualisiert. Glaubst du, ein Schrittmotor wäre ein besserer Ersatz, da ich gehört habe, dass sie mit Arduinos sehr gut funktionieren?
Om23
@ Om23 Die Wahl zwischen Schritt-, Servo-, gebürstetem Gleichstrom oder bürstenlosem Gleichstrom hängt vom Zweck ab, den der Motor erfüllen muss, und (z. B. für BLDC-Motoren) von der verfügbaren Hardware zur Steuerung des Motors. Dies könnte zu einer interessanten neuen Frage führen, um festzustellen, welcher Motor für welchen von mehreren möglichen Zwecken am besten geeignet ist. Ich bin mir nicht sicher, ob eine solche Frage für die Arduino-Site ideal ist. Vielleicht kann sich jemand anderes darauf einlassen.
Anindo Ghosh

Antworten:

12

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:

  • Laststrom , insbesondere bei Motorstart und Stillstand. Wie in der Frage zu Recht ausgeführt, sind die Arduino-Pins möglicherweise einfach nicht für eine ausreichende Stromversorgung ausgelegt. Der Arduino kann sich erwärmen oder sogar durch anhaltend hohe Stromaufnahme beschädigt werden.
    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 vom Motor, sowohl während des Ausschaltens des Motors als auch möglicherweise während der Motorkommutierung - Wenn sich ein Gleichstrommotor dreht, "kommutieren" die Kontaktbürsten zwischen Spaltringen, zumindest bei den herkömmlichen Typen gebürsteter Gleichstrommotoren, und erzeugen winzig wenig Funken jedes Mal.
    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.
  • Daher wird eine Art Isolation zwischen dem Arduino und dem Motorantrieb dringend empfohlen. Zur Vereinfachung der Implementierung wäre dies eine Motorabschirmung.
    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

  • Ja, der Beschleunigungsmesser kann mit angebrachtem Motorschild vom Arduino aus gesteuert und abgelesen werden, indem sichergestellt wird, dass die für den Zugriff auf den Beschleunigungsmesser ausgewählten Stifte nicht vom Motorschild verwendet werden. Sie würden alle mit der Abschirmung verbunden sein, jedoch ohne interne Funktion oder Verbindung innerhalb der Abschirmung. Die Dokumentation für das ausgewählte Schild enthält normalerweise diese Informationen.
    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

  • Das Problem bei der vorgeschlagenen 6 x AA-Anordnung (maximal 9 Volt) besteht darin, dass sie zwar eine ausreichende Spannung für die an vielen Arduinos verfügbare DC-Eingangsbuchse liefert (normalerweise für einen Eingang von 7 bis 12 Volt ausgelegt), für den Motor jedoch zu hoch ist direkt davon gefahren werden.
  • Es gibt jedoch mehrere Motorabschirmungen, die eine direkte Leistungsaufnahme (z. B. 7 bis 25 Volt) akzeptieren und dann dem Arduino, an das sie angeschlossen sind, gut geregelte 5 Volt liefern. Der Arduino muss also überhaupt nicht separat mit Strom versorgt werden und sollte es auch nicht sein. Dies ist absolut die einzige Art von Motorschutz, die man kaufen sollte .
  • Zu den Kludgier-Alternativen gehört das Antippen von 4 der 6 AA-Zellen zur Stromversorgung des Motors und aller 6 Zellen zur Stromversorgung der DC-Buchse (PWRIN) des Arduino oder die Verwendung eines separaten 6-Volt-Buck-Reglers für die Motorleistung, während die 9 Volt gespeist werden direkt an die Arduino DC-Buchse.
  • Der Versuch, den Arduino mit dem Akkupack und dann den Motor über den Vin-Pin des Arduino mit Strom zu versorgen, ist eine schlechte Idee, weil
    • Die M7-Diode zwischen DC-Buchse und Vin-Pin bei mehreren Arduino-Referenzdesigns ist für 1 Ampere ausgelegt, der Motor könnte möglicherweise zumindest vorübergehend mehr ziehen
    • Alle vom Motor erzeugten elektromagnetischen Störungen, Kommutierungsgeräusche und Rücklauftransienten, werden in die Arduino-Platine zurückgespeist, sofern keine sehr steife Entkopplung implementiert ist. Dies ist keine einfache Sache. Dieses EMI-Feedback führt zu zeitweiligen, schwer zu debuggenden Problemen mit dem Betrieb des Arduino.
Anindo Ghosh
quelle
10

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:

Geben Sie hier die Bildbeschreibung ein

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.

Manishearth
quelle