So, also den ursprünglichen Arduino haben wir auf den Endschalterpins scheinbar gegrillt. Die 3 Pins sind bei dem tot.
Nachdem ich dann eben was länger mit dem Oszilloskop und nem neuen Arduino rumgespielt hatte, hab ichs dann geschafft, die Endschalter mit nem neu kompilierten GRBL so hin zu bekommen, dass es funktioniert - aufm Breadboard.
Auch kann ich den Arduino problemlos an die CNC-Maschine anschließen und alles mit Universal-GCode-Sernder steuern und die Auslösung der Endschalter problemlos testen - solange ich die L298er nicht mit Strom versorge, also solange nur die Logik- nicht aber die Leistungsspannung anliegt.
Sobald ich das 40V-Netzteil einschalte, meint der Arduino, dass die Endschalter aktiviert wurden.
Woran könnte das liegen?
Der Aufbau ist nun:
Arduino - Schalter - Ground
An Ground sind Arduino (der über USB mit Strom versorgt wird), das Logiknetzteil (ein kleines 4,75V Netzteil der Größenordnung Handyladegerät) und das Meanwell 40V/3A-Netzteil zusammengeführt.
Sollte ich mal versuchen, nen Widerstandand zwischen Schalter und Masse zu klemmen? Oder nen Kondensator um eventuelle Schwingungen auszugleichen?
- - - Aktualisiert - - -
So, mein erster Versuch war nun ein Elko zwischen 5V und Ground - nahe an den Endschalterpins. Ergebnis: Es dauerte ne Weile (vermutlich bis der Elko sich geladen hatte), bis die Endschalter nun wieder automatisch (ohne Kontakt) ausgeführt wurden.
- - - Aktualisiert - - -
L297-Seite : Arduino-Seite
Step : Pin2/3/4 (x/y/z)
Direction : Pin 5/6/7 (x/y/z)
Reset : liegt fest an 5V des Arduino
Enable : Pin 8
Das sind die Steuer-Pins des Arduinos zu den Schrittmotorkarten. Alle Treiberkarten teilen sich den Enable-Pin und die 5V-Spannung für den Reset-Eingang.
Alles weitere siehe Bild:
Bild hier
Das Problem ist, dass die Endschalter bei meiner Version Öffner sind, jedoch GRBL gerne Schließer hätte.
Im Quellcode des GRBL kann man in der config.h die Zeile
Code:
// #define LIMIT_SWITCHES_ACTIVE_HIGH
(Zeile 178 unter https://github.com/grbl/grbl/blob/master/config.h) auskommentieren, um statt Schließer Öffner zu verwenden.
Der Code und das Kompilieren des Codes zu einer flashbaren Hex-Datei funktioniert soweit auch.
Auch ein Test des Arduinos auf meinem Breadboard funktioniert fehlerfrei.
Wenn der Arduino nun vollkommen an der CNC-Maschine angeschlossen ist, funktioniert alles wie gewünscht, solange lediglich USB und die Logikversorgung angeschlossen sind.
Schalte ich nun das Leistungsnetzteil (im Bild rot) ein, geht der Arduino von einem ausgelösten Endschalter aus und die Achsen stoppen, Universal-GCode-Sender, den ich zum Steuern des Arduinos nutze, gibt dann aus:
Code:
ALARM: Hard limit. MPo
Bild hier
Ich habe testweise einen 220µF-Kondensator zwischen Gnd und 5V geklemmt, augenscheinlich scheint sich die Zeit, bis sich der Limit-Schalter automatisch aktiviert, zu verlängern.
Bis auf die fehlausgelösten Endschalter funktioniert alles wie es soll. In der kurzen Zeit, in der der Arduino verfährt, konnte ich auch durch manuelles Auslösen der Endschalter verifizieren, dass diese auch richtig auslösen. Nur machen sie das eben auch ungewollt und ohne Einfluß.
Lesezeichen