Hallo,
ich probiere mich gerade an Schrittmotoren, Arduino & Co. ein wenig aus.
Ich verwende einen Arduino-Uno mit einem CNC-Shield V3, DRV8825-Motortreibern und einem NEMA 17-Motor.
Die Geschwindigkeit regle ich über ein Potentiometer. Das ganze funktioniert auch sehr gut bis ich versuche einen EIN/AUS-Schalter einzubinden.
Ausschalten kann ich den Motor, beim Einschalten ruckt und zuckt er aber die ganze Zeit und dreht nicht gleichmäßig..egal welche Geschwindigkeit ich einstelle. Ich verwende den ENABLE-Anschluss des Motortreibers um den Motor an/auszuschalten !
Kommentiere ich den Code für Ein/Ausschalten aus und lade neu hoch dann läuft der Motor wieder 1A.
Wo könnte denn mein Fehler liegen ?
unten mein Code.
Vielen Dank
// Defines pins numbers
const int EN = 8;
const int stepPinX = 2;
const int dirPinX = 5;
int customDelay,customDelayMapped; // Defines variables
int Schalter = 9; // Ein/Aus-Schalter, liegt auf X-Endstop
void setup() {
pinMode(stepPinX,OUTPUT);
pinMode(dirPinX,OUTPUT);
pinMode(EN, OUTPUT);
pinMode(Schalter,INPUT); // Ein/Aus-Schalter
digitalWrite(dirPinX,LOW); //Ermöglicht es dem Motor, sich in eine bestimmte Richtung zu bewegen
digitalWrite(EN, LOW);
}
void loop() {
customDelayMapped = speedUP(); // Abrufen von benutzerdefinierten Verzögerungswerten aus der benutzerdefinierten speedUp-Funktion
// Erzeugt Pulse mit benutzerdefinierter Verzögerung, abhängig vom Potentiometer, von dem die Geschwindigkeit des Motors abhängt
if (digitalRead(Schalter)==HIGH){ // Motoren ein/aus
digitalWrite(EN, LOW);
} else {
digitalWrite(EN, HIGH);
}
digitalWrite(stepPinX, HIGH);
delayMicroseconds(customDelayMapped);
digitalWrite(stepPinX, LOW);
delayMicroseconds(customDelayMapped);
}
int speedUP() { // Funktion zum Ablesen des Potentiometers
int customDelay = analogRead(A5); // Liest das Potentiometer ab
int newCustom = map(customDelay, 0, 1023, 500, 6000); // Wandelt die abgelesenen Werte des Potentiometers von 0 bis 1023 in gewünschte Verzögerungswerte um (300 bis 4000)
return newCustom;
}