Go Down

Topic: Erfahrungen und Tipps zur Steuerung von einigen Gleichstrommotoren (Seilwinden) (Read 1 time) previous topic - next topic

Simba21


postmaster-ino

Hi

Die Signale für die Schrittmotore kannst Du auch per Port-Expander (Schieberegister) bereit stellen.
Die 28BYJ-48 haben ein stark untersetzendes Getriebe - da verläuft Dir der Behang nicht von selber.
Geräusche: ja, aber bei dem Motörchen hält sich Das in starken Grenzen - trotzdem würde ich Das erst mit Einem probieren, bevor ich das ganze Konvolut kaufe und dann doch mit Vibrationen zu kämpfen bekomme - der Chinese liefert halt leider etwas langsam.

Endschalter - müsste man überdenken, ob man Diese (bei einem Model) unbedingt braucht - oder ob es reicht, wenn ich dem Arduino sage 'Motor 3 ist in oberer Endposition' - ein Tastbetrieb zum Verfahren ist wohl eh vorgesehen, da die Behänge ja verfahrbar sein sollen - oder denkst Du auch an automatische Wechsel nach?

Encoder ist noch eine ganze Menge übertriebener als Endschalter, aber wenn's doch ein Mars-Roboter werden können soll ... ;)

Mein Vorgehen: Referenzieren (Jedem Motor bekannt geben, WO Dieser gerade steht), den Rest macht der Arduino mit den eingetragenen Soft-Limits (klar, Die müssen eingemessen werden oder anders in den Arduino kommen - DAS kann man sich mit Endschaltern sparen).

MfG

Simba21

Vielen Dank, das hört sich an wie ein sehr guter Plan!

Ich habe mir einen 28BYJ-48 mit Treiber (so ein grüner) bestellt, der angeblich morgen geliefert werden soll... Da bin ich ja mal gespannt.

Quote
Endschalter - müsste man überdenken, ob man Diese (bei einem Model) unbedingt braucht
Da könntest Du Recht haben; auf jeden Fall würde es schwierig werden, so etwas in meiner Modellgröße zu konstruieren (und vielleicht zu fehleranfällig bzw. labberig). Die Idee mit der Referenzierung finde ich super. Vielleicht wäre es das Einfachste, nach jedem Neustart der Software jeden Behang einmal ganz hochzuziehen und dem Arduino dann zu signalisieren, dass nun alles "auf Null" hängt.

Zur Benutzerinteraktion: Das ganze Theater steuere ich (bzw. steuert man) über eine (selbstgeschriebene) Windows-Forms-Desktop-Anwendung. Die enthält zur Zeit insbesondere das Lichtstellpult und wird dann demnächst ein neues Fenster für die Bühnentechnik bekommen, das ähnlich aufgebaut sein könnte: Mit Optionen zur manuellen Steuerung aller Behänge (nach dem Motto "solange man gedrückt hält, bewegt sich der Motor"), aber auch mit der Möglichkeit, Übergänge (Szenen) zu speichern. Das sollte dann ja auch kein Problem sein, vorausgesetzt, man kalibriert die Teile nach jedem Neustart neu.
Eventuell könnte die Software ja auch alle Verfahr-Operationen während der Laufzeit speichern, auf diese Weise immer die aktuelle Position eines Behanges kennen und beim "regulären Herunterfahren" alle Behänge wieder nach oben ziehen. Dann müsste man die Positionen nur nach einem unvorhergesehenen Neustart / Ausfall neu per Hand einstellen. Sind die Motoren dafür präzise genug? Oder habe ich da einen Denkfehler?

Tommy56

Die Motoren sind bei richtiger Ansteuerung präzise genug. Aber auch Deine Mechanik muss diese Präzission (keinen Schlupf) haben.

Gruß Tommy
"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)

postmaster-ino

Hi

Schlupf - denke ich, werden wir Da Keinen rein bekommen - die Welle ist beidseitig flach geschliffen - wenn, bekommen wir einen Winkelfehler, was aber nicht stören sollte.

Präzision: Naja, bei jedem Step macht der Kleine ca. 1/2048tel Umdrehung.
Siehe:es-geht-doch-schrittmotor-28byj-48 (mit Beispiel-Sketch ... zumindest ein ZIP)
(ca., da das Untersetzungsverhältnis nicht gerade ist, am Bestimmungsort des Motor, war glaube eine Lüftungsklappe, scheint Das aber kein Problem zu sein - schwieriger wird's erst, wenn man 'genau' 7 Umdrehungen fahren will)

Je nach Dicke Deiner aufgewickelten Behänge, kannst Du Diese schon recht smoothig verfahren (Umfang:2048).
Spätestens nach einem Vollschritt (beide Wicklungen bestromt) sollte der Stepper am Rastpunkt angekommen sein.

MfG


Rentner

Hi,

da gabs doch letzte Woche schon mal so was ähnliches , da wollte jemand einen Luftballon auf einer Messe rauf und runter fahren.

Gruß

Simba21

Quote
da gabs doch letzte Woche schon mal so was ähnliches , da wollte jemand einen Luftballon auf einer Messe rauf und runter fahren.
Ja, das habe ich gelesen. Meine Anwendung erfordert aber einen erheblich geringeren Maßstab und hohe Präzision, dafür wirken aber keine großen Kräfte auf die Motoren. Deshalb gehe ich mal davon aus, dass ich mit den Steppermotoren mit ULN2003-Treibern einen vielversprechenden Lösungsansatz habe. Den ich dann umgehend ausprobieren werde.

Also vielen Dank schon mal!

uwefed

Die Motoren beherrschen keine Telepathie!
Auch fehlen dir noch die Endschalter bei der Zählung.

Servos brauchen nur 1 Pin. (plus Endschalter)
Einen Servo auf Dauerlauf umzubauen ist das gleiche wie einen bereits gezeigten Motor mit Getriebe zu benutzen (ok die Ansteuerung ist anders aber ansonsten sind sie ähnlich in der Funktion; sie drehen sich solange man sie in einer bestimmten Weise ansteuert).
Meines erachtens brauchen normale Servos keinen Endschalter. SeilwindenServos verbieten sich wegen dem Preis und der Größe.

Ein 180° Standart Servo hat sicher einen zu kleinen Drehwinkel um Kulissen zu bewegen. Man kann das Feedback-Potentiometer des Servos ausbauen und gegen ein 10 Gang austauschen. So kann er weit mehr drehen als Orginal. Das ist wieder ein Umbau der sich im vermehrten Platzbedaf niederschlägt.

Bezüglich Geräuschkulisse weiß ich nicht wer besser davonkommt: Billigservo, Motor mit Getriebe wie oben verlinkt, oder genannter Schrittmotor mit Getriebe.


Präzision: Naja, bei jedem Step macht der Kleine ca. 1/2048tel Umdrehung.
Hat dieser Motor nicht eine Umdrehungsschrittzahl von fast 4096 Schritten? Bei Halbschritten verdoppelt sich die Schrittanzahl.

Grüße Uwe

agmue

Hat dieser Motor nicht eine Umdrehungsschrittzahl von fast 4096 Schritten?
Wenn ich es mit AccelStepper und FULL4WIRE probiere, dreht er sich bei 2048 Schritten eine Umdrehung.

@Simba21: Wegen des sanften Anlaufs empfehle ich Dir die Verwendung von AccelStepper als Programmbibliothek.

Testsketch für Schrittmotor-Set S-SPSM-5V mit Motor 28BYJ-48:

Code: [Select]
#include <AccelStepper.h>

const int stepsPerRevolution = 2048;  // here go the 2048 steps
// for your motor

// initialize the stepper library on pins 8 through 11 -> IN1, IN2, IN3, IN4
// as shown above, we need to exchange wire 2&3, which we do in the constructor
AccelStepper myStepper(AccelStepper::FULL4WIRE, 8, 10, 9, 11);

void setup()
{
  // initialize the serial port:
  Serial.begin(9600);
  myStepper.setMaxSpeed(800.0);
  myStepper.setAcceleration(1000.0);
  myStepper.moveTo(stepsPerRevolution);
}

void loop()
{
  // Change direction at the limits
  if (myStepper.distanceToGo() == 0) {
    myStepper.moveTo(-myStepper.currentPosition());
    delay(200);
  }
  myStepper.run();
}

Da der Motor von +2048 nach -2048 und zurück dreht, bewegt er sich zwei Umdrehungen!

Simba21

Ich habe es nun mit einem 28BYJ-48 probiert. Es funktioniert tadellos.

Quote
Wenn ich es mit AccelStepper und FULL4WIRE probiere, dreht er sich bei 2048 Schritten eine Umdrehung.
Das kann ich bestätigen.

Die AccelStepper-Bibliothek gefällt mir sehr gut und scheint sich hervorragend für meine Zwecke zu eignen.
Die Ansteuerung über USB klappt auch sehr gut.
Ich habe an den Motor noch eine Übersetzung drangehängt, sodass die Winde fünfmal so schnell dreht, weil der Motor sonst für das Verfahren von Kulissen zu langsam wäre. Trotzdem ist er noch stark genug, was mich sehr freut, und leise noch dazu... ;)

Vielen Dank für eure Empfehlungen!!!

Als Nächstes werde ich dann eine größere Zahl von Motoren auf einmal probieren (10 Stück). Gibt es da noch etwas, was ich beachten muss? Ich will ja den Mega nicht überfordern... :smiley-confuse:

agmue

Es funktioniert tadellos.
Sehr gut :)

Als Nächstes werde ich dann eine größere Zahl von Motoren auf einmal probieren (10 Stück). Gibt es da noch etwas, was ich beachten muss? Ich will ja den Mega nicht überfordern... :smiley-confuse:
Kennst Du Dich mit endlichen Automaten, Feldern und Strukturen (struct) aus? Wenn ja, leg' los, sonst kannst Du hier fragen :)

In einem anderen Thema habe ich gerade ein kleines Beispiel Feld aus Strukturen gezeigt.

Simba21

Quote
Kennst Du Dich mit endlichen Automaten, Feldern und Strukturen (struct) aus?
Ich muss gestehen, nicht wirklich. Ich habe Dein Beispiel und die zugehörige Diskussion durchgelesen und könnte damit wohl umgehen, nur sehe ich jetzt (vielleicht den Wald vor lauter Bäumen) nicht, wie mir diese Konzepte für meine paar Motoren nützen können... :smiley-confuse:

Quote
sonst kannst Du hier fragen
Also, ich wäre sehr dankbar für eine Erläuterung! :D

combie

Quote
wie mir diese Konzepte für meine paar Motoren nützen können... :smiley-confuse:
Deine Motoren sollen auch mal laufen!
Richtig?

Bedienelemente/Eingabedaten wollen verarbeitet werden.

Dabei ist ein geplanter Ablauf/Reihenfolge einzuhalten.
Oder?
z.B. "laufe bis Endschalter erreicht"

Dazu wirst du eine Ablaufsteuerung bauen müssen.
Und "Ablaufsteuerung" gehört zum Bereich "Schrittkette" oder "Endlicher Automat"

Übrigens:
Nahezu jedes(99,99xx%) funktionierende Arduino Programm, welches was sinnvolles macht, ist ein endlicher Automat. Meist eine Kombination aus etlichen endlichen Automaten.
Auch wenn der Programmierer das Wort "Endlicher Automat" noch nie gehört hat, und auch nicht beabsichtigt hat einen solchen zu bauen.
Wer es kann, der tut es.
Wer es nicht kann, unterrichtet es.
Und, wer gar keine Ahnung hat, bestimmt wo es lang geht.

agmue

Also, ich wäre sehr dankbar für eine Erläuterung! :D
Wenn Du hier im Forum nach "agmue anleitung" suchst, findest Du Text zum Thema von mir und Links zu anderen Erklärungen. Suche Dir diejenigen raus, die Dir sympathisch sind.

Dann fange mit einem Motor an, damit wir sehen können, was Du vorhast. Derzeit habe ich viel zu wenige Informationen. Welche Taster für welchen Zweck, welche Sensoren für Referenz- und/oder Endlage, welche Anzeigen usw.

Du hast auch noch einen PC erwähnt, dessen Funktion ist derzeit gänzlich im Dunkeln.

Bitte bedenke, wir können (und wollen) nicht auf Deinen Schreibtisch schauen.

Rentner

Hi,

ich hab jetzt hier mal ne Weile hier mitgelesen. Ich glaube das mit den Steppermotoren wird so gehen. Bleibt nur das Problem das man die mal referenzieren muss. oben oder unten. Oben kann man das mit einer Lichtschranke gut machen jedesmal . z.B wenn der Vorhang oben ist kann die Lichtschranke den Vorhang nicht sehen und unten druch sehen.

Wenn beim Einschalten die Lichtschranke belegt ist  bist Du nicht oben dann hoch fahren bis sie belegt ist.  Wenn beim Einschalten die Lichtschranke frei ist bist Du schon oben alles ok.


Eigendlich ist das mit einer Schrittkette zu aufwendig, es gibt ja nur einen Schritt. Schließlich willst Du doch über den PC die Antriebe fahren

bis oben->Lichtschranke -> stop
oder bis unten 5000 steps  -> stop.

Also brauchst Du für jeden Antrieb eine Info vom PC rauf oder runter, vermutlich je einen Button. Setzten -> senden und nach 1-2 s zurück setzen.

 

Go Up