Go Down

Topic: Motor und Pumpe gleichzeitig betreiben (Read 731 times) previous topic - next topic

Wizard91

Hallo zusammen,

Ich möchte ein kleines Projekt realisieren, bei dem ich einen Schrittmotor und eine Minipumpe bei Tastendruck mit dem Arduino Uno betreiben möchte. Dabei habe ich ein paar Verständnisfragen zur Stromversorgung und hoffe hier Antwort zu finden.  :)

Zum Ansteuern des Schrittmotors möchte ich den Adafruit Motor Shield v2.3 nutzen und ein externes 12V Netzteil.

Der Schrittmotor ist ein Nema 17 (12V, 1.5A) und die Pumpe (Link, 12V, 0.4A).

Meine erste Frage ist, ob ich den Motor Shield zum Ansteuern beider Geräte nutzen kann, also z.B. die Pumpe über den 12V Anschluss für DC Motoren nutzen kann.

Die zweite Frage ist, ob ich die gesamte Konstruktion über ein DC Netzteil am Arduino Jack-Port mit z. B. 2.5A mit Strom versorgen kann oder ob ich mir dann alles durchbrutzel. Alternativ habe ich an eine extra Versorgung des Arduino mittels 9V Block gedacht.

Das Ziel ist im Grunde nur ein externes Netzteil zu verwenden und wenn nötig eine zusätzliche Batterie.

Vielen Dank im voraus  :)

gregorss

Ich würde mir das mit dem Schrittmotor gut überlegen. So ein Ding zieht elendsmäßig Energie, wenn es sich bewegen soll (oder eben nicht). Das Haltemoment im energielosen Zustand ist lächerlich.

Ein DC-Getriebemotor mit Getriebe und Dreh-Encoder ist hinsichtlich Energiebedarf und Positioniergenauigkeit oft deutlich besser geeignet.

Gruß

Gregor
„Ich glaube, ich leg' mich noch mal hin", sagte das Bit.

uwefed

Quote
Meine erste Frage ist, ob ich den Motor Shield zum Ansteuern beider Geräte nutzen kann, also z.B. die Pumpe über den 12V Anschluss für DC Motoren nutzen kann.
Prinzipiell ja; im konkreten hab ich meine Zweifel.
Bitte gib uns das genaue Modell des Schrittmotors oder einen Link zum Angebot. Ich befürchte daß der Motor nicht für das Shield geeignet ist.

Quote
Die zweite Frage ist, ob ich die gesamte Konstruktion über ein DC Netzteil am Arduino Jack-Port mit z. B. 2.5A mit Strom versorgen kann oder ob ich mir dann alles durchbrutzel. Alternativ habe ich an eine extra Versorgung des Arduino mittels 9V Block gedacht.
Nein. Da ist eine 1A Diode drin, die Du kaputt machst. Du kannst den Strom für die Motoren nicht über den Arduino führen. Du kannst aber die 12 V sowohl für Arduino als auch für die Motoren verwenden (2 getrennte Anschlüsse. Oder das Shield mit 12V versorgen und den Power Jumper setzen und Arduino versorgen.
https://learn.adafruit.com/adafruit-motor-shield-v2-for-arduino/powering-motors

Grüße Uwe

Wizard91

Vielen Dank für die schnellen Antworten!

Als Motor hatte ich beispielsweise diesen angedacht.

Damit möchte ich eine Gewindestange drehen und ein Objekt von etwa 200g Gewicht gleichmäßig vorschieben. Ich hatte den Motor in Betracht gezogen, weil ich ihn in einigen Anleitungen für 3D Drucker gesehen hatte und dieser offensichtlich genug Power für meine Anwendung hat.

Den Motor möchte ich nur drehen lassen während ich einen Taster drücke und mit einem zweiten zurück fahren lassen.


@Uwe: meinst du den 2-Pol Anschluss am Shield für die Stromversorgung? Also könnte ich den Arduino mit gesetztem Jumper darüber betreiben?


postmaster-ino

Hi
Quote from: von der Seite
【Geräuscharm】: Der Innenrotor unseres Schrittmotors wurde in deutscher Handarbeit hergestellt und es gibt einen Rotorgummi, der den Rotor abdeckt, um das Geräusch effektiv zu reduzieren.
Also deutsche Handarbeit am Innenrotor ... da kommen in mir doch geringfügige Zweifen auf :o

Weiter ist Das ein stromgesteuerter Motor - zu der Nennspannung fand ich aber Nichts, die 1,5A deuten aber auch Strom hin.
Diesen wirst Du mit dem Motorshield, meinem Verständnis nach, NICHT steuern können, da das Shield sturr die 12V (oder was Du anlegst) an den Motor legt - dabei wird Der einen viel höheren Strom aufnehmen und schnell defekt sein.
Wenn das Shield 4 Motoren ansteuern kann, gehen auch 2 Stepper - dann kannst Du mit dem Shield sowohl DC-Motor und Stepper gleichzeitig betreiben - der Stepper und der DC-Motor muß dann aber zu der Spannung passen.

Was Du für den verlinkten Motor brauchst, ist aber unterhalb auch abgebildet, für diese Art von Motor brauchst Du Motortreiber, wie einen A4988 (Einen pro Motor).
Der lässt sich auf den Motorstrom einstellen und lässt dann auch nur so viel zum Motor durch.

Ob ein Stepper für Dich Sinn macht?
Eine Spindel kannst Du mit einem normalem DC-Motor ebenfalls 'bedienen' - und Dieser braucht im Stand keinen Strom (... sofern die Steigung der Spindel nicht zu steil ist, damit das Ganze selbst hemmend bleibt).

MfG
anscheinend ist Es nicht erwünscht, einen Foren-internen Link als 'Homepage' einzubinden, damit JEDER nur einen Klick von combie's Liste zum Thema State-Maschine entfernt ist.
... dann eben nicht ...

uwefed

#5
Jan 01, 2019, 01:06 am Last Edit: Jan 01, 2019, 01:08 am by uwefed


Das ist ein Motor für Stromsteuerung ( 1,5A bei 3,6V und 2,4Ohm) Den kannst Du nicht mit dem Motorshield benutzen Das ist für Spannungssteuerung. Für diesen Motor brauchst Du einen Stromtreiber wie den A4988 oder ähnliche.

Quote
@Uwe: meinst du den 2-Pol Anschluss am Shield für die Stromversorgung? Also könnte ich den Arduino mit gesetztem Jumper darüber betreiben?
Ja.Ja. aber mit einem anderen Schrittmotor.

Grüße Uwe


agmue

Für diesen Motor brauchst Du einen Stromtreiber wie den A4988 oder ähnliche.
"oder ähnliche" könnte der DRV8825 sein.
Wahnsinn und Verstand trennt nur eine dünne Wand. (Daniel Düsentrieb)

Wizard91

Frohes Neues  :)

Ok, wenn ich das Ganze richtig verstehe, dann verkompliziert ein Schrittmotor mein Vorhaben also unnötig. :o

Tut mir Leid, wenn ich dumme Fragen stellen sollte, ich komme eher aus der Software Ecke ;)

Ich möchte definitiv den 12V Anschluss am Shield benutzen und über den gesetzten Jumper den Arduino mit 5V versorgen.

Ich hab jetzt mal einen DC Motor rausgesucht, der bei 12V und 0.7-0.8 A betrieben wird und von der Leistung für meine Anwendung durchaus ausreichen sollte.

Laut der Spezifikationen des Motor Shields soll er 1.2 A pro Channel ausgeben können mit einem Peak von 3 A.

Wenn ich für den Arduino etwa 250 mA annehme, könnte ich also mit einem Netzteil z.B. 12V/1.2A an den Shield anlegen und darüber direkt den Motor plus Arduino versorgen oder ist dieser Stromtreiber auch für den DC Motor notwendig? Ich hab mir die Anleitung vom Adafruit Motor Shield angeschaut und für die Beispiele mit DC Motor keinen Stromtreiber entdeckt.

Viele Grüße

postmaster-ino

Hi

Ein 12V DC Motor läuft bei 12V.
Ein 12V Stepper läuft ebenfalls bei 12V, hat aber dann auch einen recht hohen Spulenwiderstand.
Diese Art Stepper sind nicht sonderlich 'agil', sobald etwas Drehzahl kommt, bricht der Strom zusammen und damit die Kraft.

So wie ich Dich aber verstanden hatte, willst Du zwei Motoren betreiben - Da könnte Dein Netzteil schon etwas schwach sein.

Die H-Brücke auf den Motorshield kann 1,2A - mit der entsprechenden Kühlung auch dauerhaft!
Die 3A sind das absolute Maximum, Welches die Brücke 'gerade so' überleben wird.
Ohne (ausreichende) Kühlung wird Das aber dann auch nicht lange halten.
Dein Motor DARF NIE >3A ziehen, auch nicht im Anlauf!! Da sonst die Brücke defekt geht.

MfG
anscheinend ist Es nicht erwünscht, einen Foren-internen Link als 'Homepage' einzubinden, damit JEDER nur einen Klick von combie's Liste zum Thema State-Maschine entfernt ist.
... dann eben nicht ...

Wizard91

Genau darum geht es mir, ich bin mir nicht ganz sicher, ob ich meinen arduino rösten würde, wenn ich ein 12V/2A Netzteil an den Motor Shield packe.

Die Belastung durch Wärme sollte ok sein, da der Motor nur kurz für etwa 20 Sekunden betrieben werden soll und das auch nur 2-3 mal hintereinander.

agmue

#10
Jan 01, 2019, 06:41 pm Last Edit: Jan 01, 2019, 06:44 pm by agmue
Mir ist nicht klar, was eigentlich Deine Frage ist. Hast Du das Shield und suchst den passenden Motor oder hast Du den Motor und suchst die passende Elektronik?
  • Du hast das Shield: Verwende einen geeigneten Schrittmotor wie den Nema 17 (bipolar, 200 Schritte, 12 V DC, 0,4 A) für Spannungssteuerung.
  • Du hast den Motor: Kein Shield, dafür DRV8825 oder A4988; StepDown 12V auf 5V für den Arduino. Alternativ 24V Netzteil und zweiter StepDown auf 12V für den DC-Motor.

Den DC-Motor steuerst Du mittels Logic-Level-FET wie IRLZ44N, zwei Widerständen und einer Diode an.
Wahnsinn und Verstand trennt nur eine dünne Wand. (Daniel Düsentrieb)

Wizard91

Danke agmue für die Ausführung :)

Im Grunde habe ich das folgende Szenario, welches ich umsetzen möchte:





Den Arduino Uno und den Shield, sowie das Netzteil habe ich hier.
Da die Membranpumpen in der Baugröße alle 12V nutzen, würde ich die 12V über die Powerbuchse des Shields zur Verfügung stellen wollen und über den gesetzten Jumper gleichzeitig den Arduino befeuern.

Die Pumpe würde während des gesamten Betriebs laufen (ca. 5 min maximal) und der Motor nur 3-4 Mal für 30 s.

Dazu sollte ich vielleicht sagen, dass die Appatur später in einem Labor unter eingeschränkten Bedingungen genutzt werden soll und dabei auch eine stark begrenzte Anzahl an Steckdosen zur Verfügung steht, weshalb ich das ganze, falls möglich, nur über eine realisieren möchte.

Viele Grüße :)

postmaster-ino

Hi

Die Motoren werden im Anlauf, wenn Sie etwas arbeiten müssen, wenn Sie blockieren, wesentlich mehr als den Nenn-Strom ziehen.
Wenn Das die H-Brücke ab kann (3A Peak, 1.2A max), muß nur noch Dein Netzteil mitspielen - wobei es genügend 12V-Netzteile direkt mit 5,5mm Hohlstecker gibt, Die auch Mal ein Ampere mehr liefern können.

Akut sehe ich keine größeren Probleme.
Etwas umfangreicher wirst Du auf Dein Vorhaben aber wohl noch eingehen müssen, da sonst alle Restarbeiten bei Dir bleiben ;)
(aber keine Angst: das Groh wollte ich Dir eh überlassen)

MfG
anscheinend ist Es nicht erwünscht, einen Foren-internen Link als 'Homepage' einzubinden, damit JEDER nur einen Klick von combie's Liste zum Thema State-Maschine entfernt ist.
... dann eben nicht ...

uwefed

Da das Shield 2 Leistungsstufen besitzt ist es besser den einen Motor am einen Treiber (links) und den anderen Motor am anderen Treiber (rechts) anzuschließen. Dadurch wird die Verlustwärme der Endstufen auf 2 ICs verteilt werden.
Grüße Uwe

Wizard91

#14
Jan 05, 2019, 02:12 pm Last Edit: Jan 05, 2019, 03:28 pm by uwefed
Danke für die hilfreichen Tipps :)

Ich hab jetzt auch die Pumpe erhalten und das ganze mal jeweils nur mit einem "Motor" ausprobiert und es funktioniert mit dem Motor Shield einwandfrei. Die Pumpe lässt sich ebenfalls in ihrer Intensität regulieren.

Jetzt habe ich angefangen einen Sketch zu schreiben, bei dem zunächst nur der Motor gesteuert werden soll. Dabei sind die digitalen Ports 2 und 3 mit jeweils einem Taster verbunden und der Motor soll während die Taste gedrückt ist, jeweils in die entsprechende Richtung fahren und ansonsten ruhen.


Code: [Select]

#include <Wire.h>
#include <Adafruit_MotorShield.h>
#include "utility/Adafruit_MS_PWMServoDriver.h"

Adafruit_MotorShield AFMS = Adafruit_MotorShield();
Adafruit_DCMotor *myMotor = AFMS.getMotor(1); // Motor
//Adafruit_DCMotor *myPump = AFMS.getMotor(4); // Membrane Pump

void setup() {
  // put your setup code here, to run once:
  pinMode(2, INPUT_PULLUP); // Motor forwards
  pinMode(3, INPUT_PULLUP); // Motor backwards
  AFMS.begin();
  myMotor->setSpeed(100);
  myMotor->run(RELEASE);
}

void loop() {
  // put your main code here, to run repeatedly:
  int sensorFWD = digitalRead(2);
  int sensorRWD = digitalRead(3);

  if ( sensorFWD or sensorRWD == LOW)
    {
      while (sensorFWD == LOW){
          myMotor->setSpeed(100);
          myMotor->run(FORWARD);
          }

      while (sensorRWD == LOW){
          myMotor->setSpeed(50);
          myMotor->run(BACKWARD);
          }
    }
    else (myMotor->run(RELEASE));
}


Ist der Sketch so in Ordnung? Denn wenn ich das ganze auf meinen Uno hochlade und ausführe, dann passiert beim drücken der forward-taste gar nichts und bei der backward-taste fängt der Motor an und hört nicht mehr auf zu drehen bis ich dem Board den Saft nehme ;)

Viele Grüße

Go Up