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
  2 I2C-Devices nicht zusammen wonk 34 957 01.03.2021 20:04
Letzter Beitrag: Bitklopfer
  Schieberegister funktioniert nicht richtig flint74 9 569 21.02.2021 13:35
Letzter Beitrag: flint74
  Stromversorgung: Schrittmotor + Arduino nano e69-fan 12 1.635 07.02.2021 11:26
Letzter Beitrag: Franz54
  Warum sind mehrere Attiny´s nicht Synchron ? Chris_Arduino 6 2.112 02.02.2021 11:46
Letzter Beitrag: Harry
  Arduino Uno will nicht mehr wonk 35 5.773 21.01.2021 17:33
Letzter Beitrag: Tommy56
  RFID keine Daten / wird nicht erkannt Wochenendprogrammierer 79 7.210 27.12.2020 19:20
Letzter Beitrag: Wochenendprogrammierer
  Ausgabe LCD-Display funktioniert nicht wonk 6 1.092 23.12.2020 21:15
Letzter Beitrag: hotsystems
  Neopixel - LEDS leuchten obwohl sie es nicht sollten Mauser 72 7.177 01.12.2020 10:00
Letzter Beitrag: hotsystems
  Seltsames Zackenmuster, wenn Poti nicht bewegt wird. . Guekard 9 2.178 26.11.2020 08:40
Letzter Beitrag: hotsystems
Sad Schrittmotor Richtung ändern - erster Schritt Davidheg 9 10.308 29.10.2020 18:36
Letzter Beitrag: Chopp

Gehe zu:


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