Hallo.
Ich heiße Daniel, bin 49 Jahre alt und Feinwerkmechaniker.
Ich bin gerade dabei, einen kleinen Bohrautomat zu bauen. Es soll ein Kunststoffgehäuse eingelegt und ein Loch gesenkt werden. Auf Tastendruck fährt eine Bohrspindel im Eilgang ca. 50mm nach unten, schaltet in den Bearbeitungsvorschub und fährt noch mal ca.4mm weiter runter zum senken. Dort verweilt er für ca. 0,1 Sekunden und fährt im Eilgang wieder hoch auf Parkposition.
Vorhandenes Material:
Motor: Nema 23 5A/2Nm ClosedLoop mit 1000PPR
Treiber: CL57T-V41
Netzteil: 24V/400W
Arduino UNO R3
Taster, kapazitiver Sensor NPN, Not-Aus-Schalter
Vorhandene Programierkenntnisse:
KEINE
Mir fehlt leider die Zeit um mich richtig in die Materie einzuarbeiten deswegen bin ich auf eure Hilfe angewiesen. Meine Erste Vorrichtung habe ich auch mit Schrittmotoren gemacht, allerdings mit Relais und oberen und unteren Endschaltern. Jetzt brauch ich es viel genauer.
Ich bekomme den Motor zum schnellen runterfahren und umschalten in den Arbeitsvorschub und natürlich auch wieder hoch.
Was ich gar nicht hinbekomme ist folgendes: Der Automat soll beim Einschalten erst langsam nach oben fahren auf den berührungslosen Sensor und dann wieder eine Umdrehung nach unten. Das ist dann immer die definierte Nulllage der Spindel.
Hier soll der Arduino auf den Tastendruck warten um zu bohren.
/* Bohrzyklus mit Motor Nema23 5A-2Nm Closed Loop 1000PPR,
und Treiber CL57T-V41 mit 24V-400W Netzteil,
Arduino Uno R3.*/
// Deffinition Pins und Schritte pro Umdrehung:
#define dirPin 2
#define stepPin 3
#define stepsPerRevolution 1600
void setup() {
// Declare pins as output:
pinMode(stepPin, OUTPUT);
pinMode(dirPin, OUTPUT);
}
void loop() {
// Festlegen der Drehrichtung im Uhrzeigersinn:
digitalWrite(dirPin, HIGH);
// Bohrspindel Eilgang 10 Umdrehungen runter:
for (int i = 0; i < 10 * stepsPerRevolution; i++) {
// Nachfolgend 10 Umdrehungen runter:
digitalWrite(stepPin, HIGH);
delayMicroseconds(40);
digitalWrite(stepPin, LOW);
delayMicroseconds(40);
}
delay(10);
// Set the spinning direction clockwise:
digitalWrite(dirPin, HIGH);
// Bohrspindel Vorschub 2 Umdrehungen runter:
for (int i = 0; i < 1.5 * stepsPerRevolution; i++) {
// These four lines result in 1 step:
digitalWrite(stepPin, HIGH);
delayMicroseconds(800);
digitalWrite(stepPin, LOW);
delayMicroseconds(800);
}
// Verweilzeit am Bohrgrund:
delay(10);
// Set the spinning direction counterclockwise:
digitalWrite(dirPin, LOW);
// Bohren beendet:
// Bohrspindel Eilgang 11.5 Umdrehungen hoch:
for (int i = 0; i < 11.5 * stepsPerRevolution; i++) {
// These four lines result in 1 step:
digitalWrite(stepPin, HIGH);
delayMicroseconds(40);
digitalWrite(stepPin, LOW);
delayMicroseconds(40);
}
delay(2500);
}
Das ist nicht mein Code sondern zusammengesucht und auf meine Bedürfnisse zum Testen umgeschrieben. Ist mein erster Beitrag hier und ich hoffe, das ich nicht alles falsch gemacht habe. Vielen Dank schon im vorraus für die Hilfe und Unterstützung.