Ich bin schon etwas verzweifelt:
Es sollen vier Schrittmotoren angesteuert werden, die möglichst synchron eine Hebebühne bilden sollen. Dazu verwende ich die MobaTools Library. Interessant wird auch der noch nicht gelöste Teil der Balance-Software für die vier Schrittmotoren und einem MPU6050 Gyrosensor. Hat auf einem MKS Gen 1.4 schon recht gut funktioniert --- bis ich die Platine mit einem herumhängenden Kabel zerstörte
Jetzt fange ich grad wieder neu an.....
Diesesmal versuche ich es auf einem Arduino Mega 2560 mit Huckepack CNC Shield und TMC2290 Treibern. Die Serielle Ansteuerung der TMC2290 habe ich mal auf ein anderes Projekt verschoben. Ich fahre quasi im A4988 Emulationsmodus (dir/step).
Die Motoren laufen zwar langsamer als mit A4988, aber das liegt wahrscheinlich an der Stepper-Auflösung. Schrittmotoren laufen sehr ruhig..
Mein (für mich Mega) Problem:
ich wollte zum Testen einfach die vier Motoren mit dem "Timerersatz" (if(millis() > oldTime + wtime ) ....) einfach hin und her bewegen.
Der Timerersatz geht partout nicht
Aktuell verwende ich diesen absolut kurzen Code ohne irgendwelche Ansteuerung der Motoren. Es geht nur um die Timerfunktion:
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
int direction = -1; // Initialrichtung der Schrittmotoren
unsigned long wtime = 1000; // jede Sekunde reicht auch
unsigned long oldTime=0; // Vergleichwert für millis
if(millis() > oldTime + wtime ) { // eine Sekunde vorbei ?
oldTime = millis();
direction = direction * -1; // Richtungswechsel der Motoren MobaTools
Serial.print("direction/oldtime/millis/time: ");
Serial.print(direction);
Serial.print("/");
Serial.print(oldTime);
Serial.print("/");
Serial.print(millis());
Serial.print("/");
Serial.println(wtime);
}
}
und das liefert die Konsole:
00:10:28.795 -> direction/oldtime/millis/time: 1/891151/891193/1000
00:10:28.861 -> direction/oldtime/millis/time: 1/891206/891248/1000
00:10:28.928 -> direction/oldtime/millis/time: 1/891261/891302/1000
00:10:28.961 -> direction/oldtime/millis/time: 1/891317/891358/1000
00:10:29.027 -> direction/oldtime/millis/time: 1/891372/891413/1000
00:10:29.094 -> direction/oldtime/millis/time: 1/891426/891468/1000
00:10:29.127 -> direction/oldtime/millis/time: 1/891482/891524/1000
00:10:29.193 -> direction/oldtime/millis/time: 1/891537/891579/1000
00:10:29.260 -> direction/oldtime/millis/time: 1/891592/891633/1000
usw.
Es wird als genau einmal die direction umgekehrt (von -1 auf 1), dann nie wieder ?? Warum?
Obwohl die If Bedingung nur alle 1000ms anspringen dürfte, durchläuft der Rechner jedesmal den Schleifenkörper..... ?? versteh ich nicht.
Ich vermute schon fast einen defekt meines MEGA, habe aber in meinem provisorischen Bastelraum keinen Ersatz, da ich dummerweise in Covid Quarantäne bin und nicht rausdarf.
Vielleicht springt grad ein Virus in mir hin und her und verblendet meine Sicht.
Kann mir wer von euch helfen??
danke im Voraus
Kris