Wenn die Geschwindigkeit beider Motoren selbst gesteuert wird, kann man das einfach machen, wie ich unter 1) beschrieben habe.
Es gibt zwei Möglichkeiten: man steuert selbst per Software direkt über Pin (damit hat man Einfluss auf jeden einzelnen Schritt, wie lang das LOW und HIGH am Ausgangspin sein soll) oder per PWM-Signal (hier muss man auch die Pulsweiten festlegen). In beiden Fällen ist es möglich, den Motor 10% bspw. langsamer drehen zu lassen, als den anderen. Die Endschalter liegen an einem Eingang des Kontrollers, wo man sie ständig abfragt oder einen Interrupt auslöst, wenn ein Schalter betätigt wird und invertiert dann einfach die Drehrichtung (aus HIGH am Direction-Eingang des Motortreibers wird LOW und umgekehrt).
Wenn man es direkt selbst kontrolliert, wie hier im Beispiel, sieht man, dass man mit der Variablen "i" die Zeit für das LOW- und HIGH-Signal steuert. Man könnte auch "i1" und "i2" nehmen, damit LOW und HIGH unterschiedlich lang sind:
Code:
int i=500;
for(int j=0; j<10000; j++){
digitalWrite(Step, HIGH);
delayMicroseconds(i);
digitalWrite(Step, LOW);
delayMicroseconds(i);
}
In diesem Fall wäre "i" mit 500 Microsekunden angesetzt und ist jederzeit änderbar.
Bei Pulsweitenmodulation wäre es ähnlich. Beim Arduino per analogWrite().
Hier gibt es ein Beispiel zur Verwendung: https://www.arduino.cc/reference/en/...o/analogwrite/
MfG
Lesezeichen