24V Universalmotoren mit UNO R3 und adafruit motor shield

Hallo Leute,

ich konnte bisher leider keine Lösung für mein Problem finden und hoffe nun auf eure Erfahrungen.

Ich sitze zur Zeit an meiner Projektarbeit für die Technikerschule. Grob eingekürzt möchte ich mit einer SPS und zwei arduino UNOs ingesamt sechs 24V Universalmotoren drehzahlgeregelt ansteuern. In der Theorie leicht gemacht. Auf der SPS laufen die Programme, die UNOs sollen lediglich die analogen 0-5V Signale der SPS auswerten und mit PWM auf die 24V Pumpen übertragen. Dafür nutze ich einen UNO mit einem PWM motor shield von adafruit um die externen 24V nutzen zu können. Da die shields nur mit 16V Kondensatoren geliefert wurden, habe ich diese durch 36V Kondensatoren getauscht. Nun funktioniert nach dem seriellen Monitor eigentlich auch alles wie es soll, ich bekomme jedoch keine Spannung aus dem shield. Zur Referenz habe ich das Beispiel Programm der arduino IDE “AnalogInOutSerial” verwendet.

Hat jemand Erfahrungen mit dem shield gesammelt? Den Jumper für die Spannung habe ich übrigens entfernt nachdem ich zuvor schon einen UNO aufgeraucht habe :wink:

Vielen Dank schon einmal.
Ein Bild des Shields und den Code hänge ich an.

Gruß,
Max

Hier mal mein Code:

// Variablendeklaration:
const int ai1 = A0;     // Stellsignal SPS Pumpe 1
const int ai2 = A2;     // Stellsignal SPS Pumpe 2
const int ai3 = A4;     // Stellsignal SPS Pumpe 3
const int ao1 = 11;     // Stellsignal Pumpe 1
const int ao2 = 3;      // Stellsignal Pumpe 2
const int ao3 = 5;      // Stellsignal Pumpe 3

int input1 = 0;         // Eingangswert 1               Wertebereich für die Eingangswerte: 0...1023,  
int input2 = 0;         // Eingangswert 2               was einem Stellsignal von 0...100% entspricht
int input3 = 0;         // Eingangswert 3
int output1 = 0;        // Ausgangswert 1 (für PWM)     Wertebereich für die Ausgangswerte: 0...255,
int output2 = 0;        // Ausgangswert 2 (für PWM)     was einem Stellsignal von 0...100% entspricht
int output3 = 0;        // Ausgangswert 3 (für PWM)

void setup() 
{
  // Initialisierung der seriellen Aufzeichnung:
  Serial.begin(9600);
}

void loop() 
{
  // Auswertung der analogen Stellsignale der SPS:
  input1 = analogRead(ai1);
  input2 = analogRead(ai2);
  input3 = analogRead(ai3);
  
  // Anpassung der Eingangsauflösung 
  // an die Ausgangsauflösung:
  output1 = map(input1, 0, 1023, 0, 255);
  output2 = map(input2, 0, 1023, 0, 255);
  output3 = map(input3, 0, 1023, 0, 255);
  
  // analoges Stellsignal ausgeben:
  analogWrite(ao1, output1);
  analogWrite(ao2, output2);
  analogWrite(ao3, output3);

  // Serielle Aufzeichnung:
  Serial.print("Eingang 1 = ");
  Serial.print(input1);
  Serial.print("\t Ausgang 1 = ");
  Serial.println(output1);
  Serial.print("\t Eingang 2 = ");
  Serial.print(input2);
  Serial.print("\t Ausgang 2 = ");
  Serial.println(output2);
  Serial.print("\t Eingang 3 = ");
  Serial.print(input3);
  Serial.print("\t Ausgang 3 = ");
  Serial.println(output3);

  delay(2);
}

Hallo nameless1989,

wenn das Motorshield schon einen UNO durch Überspannung zerlegt hat, ist eventuell auch das
Motorshield nicht mehr in Ordnung. Der SN74HC595 darf nur mit Spannungen bis 6V versorgt werden.
Wenn der UNO abraucht hat es den 595 eventuell auch zerlegt.

Sicher das die Halbbrücken Treiber L293D auch für die Pumpen reichen? Dauerstrom maximal 600mA
pro Ausgang und kurzzeitig bis 1,2A. Der Anlaufstrom von Motoren ist um einiges höher als der normale
Strom beim Betrieb.

Außerdem fehlt in Deinem Programm die Aktivierung der Ausgänge!
Diese werden über den 595 geschaltet.

Da meine Mittagspause jetzt mal wieder rum ist, schaue ich heute Abend wieder rein.

Gruß, Katsumi

Hey Katsumi, danke schon einmal für die Antwort.

Meine Motoren haben bei 24V knapp 10W, habe bei Leerlauf ohne Wasser 400mA gemessen. Wahrscheinlich werde ich die Motoren aber auch nicht mit vollen 24V betreiben.

Die sechs Pumpen sollen eine kleines Wasserspiel erzeugen, wo eventuell die halbe Kraft schon genügen könnte.

Einen Treiberdefekt kann ich eigentlich ausschließen, habe das selbe Programm auf einem neuen UNO mit neuem shield und ohne externe spannung getestet. Leider mit dem selben Ergebnis.

Muss man trotz analogwrite befehl die ausgänge initialieren? Da war ich mir nicht ganz sicher, hatte das einfach weg gelassen, da im Beispiel die Ausgänge auch nicht aktiviert wurden. Das teste ich sofort und schreibe dann nochmal.

Bis später

scheinbar hat der SN74HC595 wirklich einen mitbekommen. jedoch ist wie es aussieht der neue auch defekt. von vier IC habe ich jetzt einen der läuft.... vll doch lieber nicht die billigsten bei ebay bestellen.

Kann mir jemand kurz erklären wie das Motorshield arbeitet? Die Betriebsspannung für die IC's kommt dann normalerweise dann ja wohl vom arduino oder? Können die 595er schon kaputt gehen, wenn ich die arduinos mit 9V versorge? Momentan regle ich meine Arduino Versorgung von 24v über ein DC/DC Wandler auf 9v runter und speise damit beide UNOs. Die 24v dienen mir als externe Spannung für die Pumpen und als Versorgung für SPS etc.

24V/10W heist mindestens 0,4A Nennstrom. Anlauf also um die 4A. Weil die nunmal ca 10x soviel im Einschaltmoment ziehen. Definitiv zuviel und selbst wenn es kurz geht, weil die Treiber es thermisch aushalten. Auf dauer wird es eben nicht gehen. Chips bzw Transistoren zerlegen sich thermisch. Deswegen der Maximalstrom. Bei dem hält sich Wärmeabgabe und Erzeugung die Waage. Für eine Zeit X darf ein Überstrom drauf schlagen. Wobei die Zeit immer kürzer wird je höher der Aufschlag und nicht pauschal angegeben werden kann. Zuviel vom Design im Chip abhängig.

Zu Deutsch für dich: besorg dir Treiber die mindestens 1A aushalten an Dauerstrom. Kauf gleich Kühlkörper mit, die du da drauf kleben kannst. Mach zu anfang erstmal ein Satz LEDs dran mit Vorwiderstand, die ziehen wenig Strom und machen dir nichts kaputt. Erst wenn du sicher bist kommen die Motoren dran.

Vergess dann nicht eine Diode an den Motor zu löten, der Abschaltspannungen killen soll. Mach dich mal schlau diesbezüglich (Abschalten von Spulen). Diode muss entgegen der Betriebsspannung über die Anschlusskontakte des Motors. Diese Rückspannung kann dir ebenfalls die Treiber killen und im Worstcase auch auf den Arduino durchschlagen.

Motorshield heist nicht, das hier aall zu viel Schutz verbaut ist. Sondern nur das es rudimentär den Arduino schützen soll und dir etwas Kabelgewirr spart.

Da ich die Pumpen aber ja in jedem Fall von 0V an langsam hochregle, müssten sich die Anlaufströme doch in Grenzen halten oder? Sie laufen auch niemals lange mit Volllast.

Mein Problem mit einer Neudimensionierung der Hardware ist dem Zeitmangel bis zur Abgabe geschuldet. Lieber würde ich versuchen wollen die Belastung der IC's runter zu schrauben.

Vielen Dank für den Hinweis mit der Spulenabschaltung.

edit:
@chefin gibt es empfehlenswerte 1A Motorshields, mit denen ich 3 Motoren betreiben kann?
ich könnte statt dem 293D auch den 293B einsetzen, der hat 1A und 2A Spitze.

PWM regelt nicht von Null Volt sondern taktet die Speisespannung mit kurzen oder langen Impulsen, aber in jedemfall volle Spannung. Das ist ein bischen anders als ein Regeltrafo oder ein Linearregler.

Welche Treiber am Arduino nun genau an deine Bedürfnisse passt, weis ich nicht. Ich komme aus dem Industriebereich und da benutze ich ganz andere Bauteile. zB fertige Module die ich mit 0-10V ansteuer und die mir dann mein PWM intern generieren mit dem ganzen Schutz aussenrum, wie Freilaufdiode, Strombegrenzung, Kurzschlussschutz.

Aber ein 1A/2A treiber sollte die 10W Motoren treiben können, der dürfte genug Reserven haben. Und eventuell war es auch die fehlende Freilaufdiode, die deine Treiber gekillt hat und nicht die Last. Das lässt sich so aus der ferne nicht beurteilen.

Den Strom bekommst du runter, wenn du die Spannung reduzierst. Teste doch mal, ab welcher Spannung du die Motoren so zum laufen bekommst, das du das Projekt hinkriegst. Nimm dann diese Spannung und pulse die mit deinem PWM. Vieleicht reichen dir 12V, dann ziehen deine Motoren auch nur 200mA. Musst halt testen

habe gerade eben die 1A Treiber und Dioden bestellt. Vielen Dank für die Tipps, ich denke so sollte es laufen.

Normalerweise arbeiten wir auf der Arbeit ebenfalls mit FU's und deutlich kräftigeren Pumpen :wink:

Das Ziel war eine möglichst kostengünstige Pumpen Ansteuerung zu bauen, die Ströme und andere Details hatte ich dann doch unterschätzt. Wenn alles aufgebaut ist werde ich nochmal berichten.

Bis dahin danke ich euch schon einmal für die Anregungen.