Der Nema 17 Schrittmotor dreht sich zwar wie gewollt, jedoch vibriert er dabei sehr stark. Man kann den Motor nicht auf eine Fläche legen, ohne das es sehr laute Geräusche macht.
#define EN 8
// Pins für den Motortreiber Step pin und Direction pin
#define STEP_PIN 2
#define X_DIR 5
// Pins für Schritteinstellung (Vollschritt / Viertelschritt usw.)
const int MS1_PIN = 8;
const int MS2_PIN = 9;
const int MS3_PIN = 10;
// Schrittmotor A4988 Parameter
#define STEPS_PER_REVOLUTION 200
#define SPEED 1 //Umdrehungen pro Sekunde
void step(boolean dir, byte dirPin, byte stepperPin)
{
digitalWrite(dirPin, dir);
digitalWrite(stepperPin, HIGH);
delayMicroseconds(250); // Haltezeit für den Schritt
digitalWrite(stepperPin, LOW);
delayMicroseconds(250); // Haltezeit zwischen den Schritten
}
void setup()
{
// Setzen der Pins als Ausgänge
pinMode(STEP_PIN, OUTPUT);
pinMode(X_DIR, OUTPUT);
pinMode(EN, OUTPUT);
digitalWrite(EN, LOW);
pinMode(MS1_PIN, OUTPUT);
pinMode(MS2_PIN, OUTPUT);
pinMode(MS3_PIN, OUTPUT);
digitalWrite(MS1_PIN, LOW);
digitalWrite(MS2_PIN, HIGH);
digitalWrite(MS3_PIN, LOW);
}
void loop()
{
for (int i = 0; i < STEPS_PER_REVOLUTION * 1; i++)
{
step(false, X_DIR, STEP_PIN);
delay(500 / (STEPS_PER_REVOLUTION * SPEED)); // Berechnung der Verzögerung basierend auf der gewünschten Geschwindigkeit
}
}
Ist normal, wenn Du den Motor Im Vollschritt / im Quarter Step betreibst.
Vieleicht ist die Motrversorgungsspannung zu niedrig und darum funktioniert das Microstepping nicht richtig.
Wenn Du einen Silent Stick mit einem TMC2208 /TMC2209 oder anderen TMC Treiber nimmst, wird der Motor wesentlich leiser.
Eigentlich ist es nicht notwendig im Betrieb die Einstellung der Microschritte zu ändern. Darum werden diese normalerweise per Jumper oder dip-Schalter auf der Trägerplatine (Breakout) eingestellt.