Sonntag, 28. September 2014

3D Drucker Augen zu und kapazitiv testen

Im Rahmen einer kleinen Umbauaktion des Druckers habe ich auch den optischen Sensor gegen einen kapazitiven Nährungesschalter getauscht. Das ging nicht so leicht wie erwartet. Der optische Näherungsschalter wird zum Einstellen der X- und Z-Achse verwendet. Diese Konfiguration kann mit einem kapazitiven Sensor nicht durchgeführt werden, da der Sensor wesentlich größer ist als die kleine Platine des optischen Sensors.
Druckkopf mit vorläufig angebrachtem kapazitiven Sensor zur Druckbettbestimmung
Im Hintergrund der Abbildung kann man den neuen Endschalter der X-Achse erkennen. Der wird, wie der Endschalter der Y-Achse am Duet Board an den Pins neben dem Z-Motor. Dabei wird der Schalter wie der Y-Endschalter angeschlossen. Die LED auf dem Duet Board soll nun leuchten, wenn der Endschalter nicht betätigt wird. Die Löcher zur Montage des Tasters sind im X-Achstenträger schon vorhanden und müssen nicht neu angebracht werden.

Der schwierigste Teil ist es den Endtaster jetzt als Quelle für den Nullpunkt zu etablieren. Dazu muss die Firmware geändert werden. Dank 3D-ES gibt es aber ein script, mit dem man sich das git Repository von dc42 herunterladen kann. Dort muss in der Auswahl allerdings der dev tree und nicht der duet tree aus.

   - git clone -b duet ${FW_REPO}/${FIRMWARE} ${FIRMWARE}
   + git clone -b dev ${FW_REPO}/${FIRMWARE} ${FIRMWARE}

Nachdem das Repository heruntergeladen wurde kann mit 

   ./make.sh && ./make.sh install

Der Code kompiliert und installiert werden. Die zu ändernden Werte befinden sich in der Datei "Platform.h" bei Zeile 120

   - #define Z_PROBE_AXES {true, false, true}
   + #define Z_PROBE_AXES {false, false, true}

Damit wird der Firmware gesagt, dass nur noch die Z-Achse mit Hilfe des Z-Sensors genullt werden soll. Alle anderen Achsen haben eigene Endstops.

Bei der Einstellung des Z-Nullpunkts kann wie in der Anleitung beschrieben vorgegangen werden, nur dass man jetzt einen definierten Schaltpunkt hat und daher der Wert keine Rolle spielt. Ich habe mich langsam an den Nullpunkt herangetastet und dann 1,5mm nach oben gefahren. Der Schaltpunkt des Sensors habe ich dann so eingestellt, dass er gerade an diesem Punkt schaltet. Dann den Punkt noch einmal angefahren und der neue Wert für M31 stand fest.

   M31 Z1.66 P600

Wobei der Wert bei P wie oben schon beschrieben relativ egal ist, da der Sensor einen Schaltpunkt hat ab dem er dann von 0V auf einen festen Wert springt. Dieser Wert ist meistens die Betriebsspannung des Sensors. In unserem Fall ist das aber ehr hinderlich, da der Sensor mit 12V betrieben werden muss. Also ein Spannugnsteiler zwischen Signal und Masse, sodass ein ca. 3V starkes Signal am ADC Eingang anliegt. Den Sensor, wie den Taster für die X-Achse, als einfacher Enschalter zu verwenden scheitert, da der Sensor auf Versorgungsspannung schaltet und nicht auf GND, wie es von den Endschaltern getan ist. Hier kann man eventuell noch etwas verbessern.

Alle Änderungen in der Firmware des Ormerod werden in meinem github Repository eingespielt und stehen zur Verwendung zur Vefügung.