INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Schrittmotor bewegt sich nicht
18.11.2020, 16:46 (Dieser Beitrag wurde zuletzt bearbeitet: 18.11.2020 16:59 von DerMaschbaustudent.)
Beitrag #41
RE: Schrittmotor bewegt sich nicht
Ich habe jetzt mal ein kleines Beispiel programmiert:

Code:
#include <MobaTools.h>

const byte dirPin       = 9;
const byte stepPin      = 10;
const byte enaPin       = 11;
int rpm10;
long angle;

MoToStepper myStepper( 200, STEPDIR);// 200 Schritte/Umdrehung


void setup()
{
  myStepper.attachEnable( enaPin, 11, LOW );  // Enable Pin aktivieren ( LOW=aktiv )
  myStepper.setSpeed(80); //8 U/min
  myStepper.setZero();
  myStepper.write(180);
}

void loop() {}

Nach meinem Verständnis müsste sich der Motor mit 8 U/min um 180° (eine halbe Umdrehung) drehen.
Das tut er auch. Wenn ich aber jetzt den Winkel ändere (z. Bsp. auf 90°) und dann das Skript hochlade, ändert sich nichts, sondern er verfährt weiter um 180°?! Huh


Liebe Grüße,

Maxi
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
18.11.2020, 17:15 (Dieser Beitrag wurde zuletzt bearbeitet: 18.11.2020 17:16 von MicroBahner.)
Beitrag #42
RE: Schrittmotor bewegt sich nicht
Der Sketch kann gar nicht funktionieren, da das attach(stepPin,dirPin) für den Motor fehlt. MoToStepper weis also gar nicht wo der Treiber angeschlossen ist.
Wenn man das noch einfügt, funktioniert das bei mir.

Gruß, Franz-Peter
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.11.2020, 13:32
Beitrag #43
RE: Schrittmotor bewegt sich nicht
(18.11.2020 17:15)MicroBahner schrieb:  Der Sketch kann gar nicht funktionieren, da das attach(stepPin,dirPin) für den Motor fehlt. MoToStepper weis also gar nicht wo der Treiber angeschlossen ist.
Wenn man das noch einfügt, funktioniert das bei mir.

Hallo Microbahner Smile
Ich finde es sehr cool, was du auf die Beine gestellt hast Smile

Wenn ich das oben gezeigt Skript verfahren lasse (iclusive der Einbindung von step und dir durch mystepper.attach(...); ) verfährt mein Motor eine halbe Umdrehung mit langsamer Geschwindigkeit (schätzungsweise die angegebene) und verfährt dann noch eine komplette Umdrehung mich schnellerer Geschwindigkeit (cirka 60U/min). Des Weiteren verfährt er nicht nicht sofort in die angegebene Richtung, sondern verfährt erst ein Stück rückwärts.
Wie kann das sein? LAngsam habe ich den Schrittmotor im Verdacht, dass der vielleicht einen Schaden hat, auch wenn ich mich frage, wodurch das kommen soll. Meine Schaltung ist komplett unverändert.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.11.2020, 14:04
Beitrag #44
RE: Schrittmotor bewegt sich nicht
Hallo Maxi,
leider kann ich das Verhalten nicht nachvollziehen.
Zeig doch nochmal den kompletten Sketch und ein aussagefähiges Bild von deinem Aufbau.

Gruß, Franz-Peter
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.11.2020, 14:20
Beitrag #45
RE: Schrittmotor bewegt sich nicht
Das ist mein komplettes Skript mit dem MoBa-Tools:
Code:
#include <MobaTools.h>

const byte dirPin       = 9;
const byte stepPin      = 10;
const byte enaPin       = 11;
byte mode;
int rpm10;
long angle;


MoToStepper myStepper(200, FULLSTEP);// 200 Schritte/Umdrehung


void setup()
{ myStepper.attach(stepPin, dirPin);
  myStepper.attachEnable( enaPin, 10, LOW );  // Enable Pin aktivieren ( LOW=aktiv )
  myStepper.setSpeed(400);
  myStepper.setZero();
  myStepper.write(360);
}

void loop() {}

Im Anhang sind Bilder meines Aufbaus
           




Mit dem Code (ohne MoBa-Tools)
Code:
int stepCounter;
int steps = 200;

void setup()
{
pinMode(11, OUTPUT); // Enable
pinMode(10, OUTPUT); // Step
pinMode(9, OUTPUT); // Richtung

digitalWrite(11,LOW);
digitalWrite(9,HIGH); // im Uhrzeigersinn

for(stepCounter = 0; stepCounter < steps; stepCounter++)
{
digitalWrite(10,HIGH);
delay(20);
digitalWrite(10,LOW);
delay(20);
}
delay(1000);

digitalWrite(9,LOW); // gegen den Uhrzeigersinn

for(stepCounter = 0; stepCounter < steps; stepCounter++)
{
digitalWrite(10,HIGH);
delay(20);
digitalWrite(10,LOW);
delay(20);
}}

void loop(){}

läuft er interessanterweise einwandfrei. Er dreht sich eine Umdrehung in die eine Richtung und danach eine Umdrehnung in die andere.


Mit freundlichen Grüßen,

Maxi
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.11.2020, 14:59 (Dieser Beitrag wurde zuletzt bearbeitet: 19.11.2020 15:10 von MicroBahner.)
Beitrag #46
RE: Schrittmotor bewegt sich nicht
(19.11.2020 14:20)DerMaschbaustudent schrieb:  
Code:
MoToStepper myStepper(200, FULLSTEP);// 200 Schritte/Umdrehung
Warum schreibst Du jetzt auf einmal FULLSTEP als Mode? Das passt doch nicht zu deinem Stepper - da muss STEPDIR hin. Das hatten wir doch schon.
Wenn es vergleichbar zu deinem anderen Sketch sein soll, darfst Du auch das attachEnable nicht verwenden, sondern musst den Enable Pin fest auf LOW setzen. setZero brauchst Du im setup auch nicht. Nach Reset ist die aktuelle Position immer der Nullpunkt.

Edit: das sollte das gleiche machen wie dein Sketch ohne MobaTools:
Code:
#include <MobaTools.h>

const byte dirPin       = 9;
const byte stepPin      = 10;
const byte enaPin       = 11;
byte mode;
int rpm10;
long angle;


MoToStepper myStepper(200, STEPDIR);// 200 Schritte/Umdrehung


void setup()
{ myStepper.attach(stepPin, dirPin);
  pinMode(enaPin,OUTPUT);
  digitalWrite(enaPin, LOW );
  myStepper.setSpeed(400);
  myStepper.write(360);
  while( myStepper.moving() );
  delay(1000);
  myStepper.write(0);
  
}

void loop() {}

Gruß, Franz-Peter
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
23.11.2020, 14:36
Beitrag #47
RE: Schrittmotor bewegt sich nicht
@Microbahner

Hallo Franz-Peter, danke für deine Hilfe. Smile Jetzt läuft er genau so wie er soll. Ist der Winkel im mystepper.write BEfehl abhängig vom eingestellten Stepmodus. also müsste ich bei einem Microstepping mit 400 Schritten pro Umdrehung softawreseitig um 720° verfahren für eine komplette Umdrehung?


Des weiteren möchte ich einen Kraftaufnehmer in Form eines Analogsensors einbinden, welcher per if-Schleife zu einem Zurückfahren des Lnearantribes führt, wenn eine Maximalkraft erreicht ist, damit keine Schrittfehler auftauchen. Da die Maximalkraft ja jederzeit auftauchen kann würde ich gerne die Schleife so aufziehen, dass der Motor den Linearantrieb zurückfahrt, sobald an Sensor ein Kraftabfall zu verzeichnen ist, welcher länger als eine Sekunde dauert.


Edit: Besteht die Möglichkeit eine Verzögerung (delay) einzurichten, ohne delay zu benutzen? Delay pausiert ja leider das komplette Programm, wodurch momentan der Motor in der Aufnahmetaktung des Senspors verfährt. Er bleibt also jedes mal stehen, wenn eine Snesorabfrage kommt.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
23.11.2020, 15:37
Beitrag #48
RE: Schrittmotor bewegt sich nicht
(23.11.2020 14:36)DerMaschbaustudent schrieb:  Ist der Winkel im mystepper.write BEfehl abhängig vom eingestellten Stepmodus. also müsste ich bei einem Microstepping mit 400 Schritten pro Umdrehung softawreseitig um 720° verfahren für eine komplette Umdrehung?
Du musst ihm beim Anlegen des Objektes sagen wieviele Schritte der Motor für eine Umdrehung braucht. Bei 400 Schritten also:
Code:
MoToStepper myStepper(400, STEPDIR);// 400 Schritte/Umdrehung
Dann sind 360° wieder eine Umdrehung.

(23.11.2020 14:36)DerMaschbaustudent schrieb:  Des weiteren möchte ich einen Kraftaufnehmer in Form eines Analogsensors einbinden, welcher per if-Schleife zu einem Zurückfahren des Lnearantribes führt, wenn eine Maximalkraft erreicht ist, damit keine Schrittfehler auftauchen.
Es gibt keine if-Schleifen. 'if' ist eine einfache Abfrage.


(23.11.2020 14:36)DerMaschbaustudent schrieb:  Da die Maximalkraft ja jederzeit auftauchen kann würde ich gerne die Schleife so aufziehen, dass der Motor den Linearantrieb zurückfahrt, sobald an Sensor ein Kraftabfall zu verzeichnen ist, welcher länger als eine Sekunde dauert.
Wichtig ist, dass Du blockadefrei programmierst, also keine delay verwendest. Nur dann kann er jederzeit auf deinen Sensor regieren.


(23.11.2020 14:36)DerMaschbaustudent schrieb:  Edit: Besteht die Möglichkeit eine Verzögerung (delay) einzurichten, ohne delay zu benutzen? Delay pausiert ja leider das komplette Programm, wodurch momentan der Motor in der Aufnahmetaktung des Senspors verfährt. Er bleibt also jedes mal stehen, wenn eine Snesorabfrage kommt.
Wie schon geschrieben darfst Du delay() nicht verwenden. Die MobaTools enthalten auch Timerfunktionen um Zeitabfragen und Verzögerungen ohne delay realiseren zu können. Schau dir halt mal die Beispiele dazu an. Wenn Du dazu dann noch Fragen hast, können wir das gerne hier klären.

Grundsätzlich solltest Du dich mit dem Thema 'endlicher Automat' oder 'Zustandsautomat' beschäftigen. Mit dieser Programmiertechnik kann man solche Automatisierungsaufgaben sehr elegant und effizient lösen.

Gruß, Franz-Peter
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Neopixel - LEDS leuchten obwohl sie es nicht sollten Mauser 42 1.049 Heute 08:34
Letzter Beitrag: alspeed
  Seltsames Zackenmuster, wenn Poti nicht bewegt wird. . Guekard 9 331 Gestern 08:40
Letzter Beitrag: hotsystems
Sad Schrittmotor Richtung ändern - erster Schritt Davidheg 9 9.114 29.10.2020 18:36
Letzter Beitrag: Chopp
  Spannungsversorgung Wemos 5V über Regler oder nicht?? DO3GE 23 3.358 21.10.2020 06:02
Letzter Beitrag: DO3GE
Question [ATmega168PA]Programmierung bisher nicht gelungen ManniP 32 3.332 24.09.2020 17:39
Letzter Beitrag: Chopp
  analoge Eingänge funktionieren nicht als digital Input oder Outpt Jenser 9 1.164 17.09.2020 20:30
Letzter Beitrag: hotsystems
  12V Schrittmotor mit Arduino ansteuern niggo 9 7.813 24.07.2020 11:49
Letzter Beitrag: Bitklopfer
  Arduino Mega will nicht Lumplux 13 2.719 15.07.2020 17:09
Letzter Beitrag: hotsystems
  Arduino Nano Funktioniert nicht? acca500 7 2.157 10.05.2020 10:22
Letzter Beitrag: hotsystems
  Anfänger braucht Hilfe...Fehlermeldung, Funduino läuft noch nicht auf dem Mac... capri1968 5 1.837 09.04.2020 11:28
Letzter Beitrag: Tommy56

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste