Elektronik_Header_3Lüftersteuerung mit ESP-01

 

3DTouch Sensor

Alternative Firmware fĂŒr den 3DTouch Autolevelling Sensor

Die alternative Firmware wird von mir fĂŒr den Eigengebrauch des Anwenders zur VerfĂŒgung gestellt, die Hardware muss weiterhin vom Hersteller bezogen werden. Die ursprĂŒngliche Funktion des Sensors (Ansteuerung per Servo-Signal) geht bei Aufspielen der Alternativ-Firmware unwiderruflich verloren!!!

Die alternative Firmware aufzuspielen ist kein Kinderspiel, bitte nur in Angriff nehmen, wenn "SMD", "0402" und "Feinleitertechnik" fĂŒr den geneigten Nachbauer keine böhmischen Dörfer sind.

Anwendung auf eigene Gefahr
 

3DTouch Sensor

Der 3DTouch Sensor, funktional und optisch sehr an das Original BLTouch des koreanischen Startupunternehmens ANTCLABS angelehnt, ist dafĂŒr gedacht, die Bodenplatte eines 3D-Druckers auszumessen um eine eventuelle Schieflage der Platte per Höhenkorrektur beim Drucken auszugleichen. Der Hersteller bzw. ANTCLABS bietet Anleitungen fĂŒr die Adaption des Sensors an verschiedene 3D-Drucker sowie Patch-Anleitungen um die 3D-Drucker-Software fĂŒr den Gebrauch des Sensors zu aktualisieren.

GRBL V1.x in der Standardversion fĂŒr CNC FrĂ€sen bietet leider keine UnterstĂŒtzung fĂŒr den 3DTouch Sensor. Um dennoch nichtleitende OberflĂ€chen auch mit einer durch GRBL befeuerten CNC FrĂ€se abtasten zu können, habe ich die Schaltung analysiert und eine alternative Firmware erstellt, die ohne das Servosignal zur Ansteuerung den gewĂŒnschten Effekt bietet – Abtastung einer nichtleitenden OberflĂ€che mit der CNC-FrĂ€se.

(Das Schaltbild des von mir untersuchten 3DTouch Sensor habe ich auf Wunsch der Erfinderin des original BLTouch, Paris Kyung-yeon Lee, entfernt)

Im Wesentlichen reduziert sich der Einsatz des 3DTouch fĂŒr GRBL auf das Abtasten ĂŒber den eingebauten Hall-Effekt-Sensor und die Erzeugung des "Probe"-Impulses bei BerĂŒhrung der OberflĂ€che. Die Ansteuerung des Sensors ĂŒber das Servo-Signal, wie das bei den 3D-Druckern realisiert ist, entfĂ€llt komplett, der Taststift wird abhĂ€ngig vom Probe -Signal zurĂŒckgezogen oder ausgefahren. Das Ganze erfolgt in der neuen Firmware zeitgesteuert.

Nach Erkennen einer BerĂŒhrung am Taststift wird dieser sofort eingezogen, die LED blitzt kurz auf, zeitgleich wird das ZPROBE-Signal Richtung GRBL fĂŒr 200 ms aktiviert. Nach etwa 500 ms wird der Taststift wieder ausgefahren und kann den nĂ€chsten Kontakt melden. Die Abtastbewegung des FrĂ€skopfes darf nicht zu schnell sein, sie muss an diese Zeiten angepasst werden. Langsamer abtasten ist problemlos möglich.

Der initiale Selbsttest des originalen 3DTouch wurde nachempfunden, nach PowerOn wird der Stift mehrfach ausgefahren und eingezogen. Bei Erkennen eines Fehlers (der Taststift ist blockiert und bewegt sich nicht wie erwartet), blinkt die rote LED am Sensor. Tritt dieser Fall ein, wird durch BetĂ€tigen des Taststiftes mit der Hand ein erneuter Selbsttestdurchgang angestoßen. Erst wenn bei jeder durch den Selbsttest implizierten Bewegung des Taststiftes der Hall-Sensor einen Impuls erzeugt, wird die Funktion freigegeben, die LED leuchtet zweimal kurz auf und der Taststift bewegt sich in die untere Position, bereit mit der Abtastung zu beginnen.


Die alternative Firmware wird von mir fĂŒr den Eigengebrauch des Anwenders zur VerfĂŒgung gestellt
Die Hardware muss weiterhin vom Hersteller bezogen werden
Die ursprĂŒngliche Funktion des Sensors geht beim Aufspielen der Alternativ-Firmware unwiderruflich verloren!!! (der originale Code kann nicht ausgelesen werden)
Verwendung auf eigene Gefahr

Der Weg zur alternativen Firmware

Um die Firmware des 3DTouch zu Ă€ndern bzw. neu aufzuspielen, muss der AtTiny13, der auf dem 3DTouch (in der mir vorliegenden Version) aufgelötet ist, zuerst dazu ĂŒberredet werden, sich programmieren zu lassen.

Hierbei ist es nicht ausreichend, einen HVSP-Programmer zur Hand zu haben, es muss zusĂ€tzlich vorher das Lockbit des AtTiny rĂŒckgesetzt werden, denn mit gesetztem Lockbit lassen sich die Fuses mit einem HV Serial Programmer zwar auslesen, aber nicht Ă€ndern.

Hinweis: “Lockbit zurĂŒcksetzen” impliziert vollstĂ€ndiges Löschen des Flashinhalts.

Die Hardware fĂŒr die HV-Programmierung eines AtTiny13 ist recht ĂŒbersichtlich aufgebaut, es existieren mehrere Beschreibungen im Netz.

Ich bin mit der Anleitung von Wayne Holder ins Rennen gegangen, zu finden auf Wayne's Tinkering Page.

Waynes Fuse-Resetter Schaltbild

    Schaltung von Waynes Fuse Resetter

Als Programmer-Arduino habe ich einen Arduino Nano V3 Nachbau verwendet, diesen auf ein kleines Steckbrett gesetzt und lediglich einen BC109C als Schalttransistor fĂŒr die 12V Spannung sowie zwei WiderstĂ€nde (R5 und R6) mit je 1k zusĂ€tzlich spendiert, wie von Wayne vorgeschlagen. Die anderen Datenleitungen habe ich ohne SerienwiderstĂ€nde verbunden.

HV-Programming AtTiny13 - Pinzuordnung         (Click auf das Bild fĂŒr grĂ¶ĂŸere Darstellung)

Das Programm zum Löschen des Lockbit stammt ursprĂŒnglich von Krzysztof Adamski, zu finden auf „electronics.stackexchange“ (writing-fuse-bits-with-hv-programmer-doesnt-work). Es muss leicht angepasst werden, die verwendeten Pins sind gegenĂŒber der Schaltung von Wayne vertauscht, aber das ist marginal, man darf es nur nicht vergessen.

Update
Ich habe die Fuse Werte an meine WĂŒnsche angepasst und die Pinzuweisung passend geĂ€ndert. Diese geĂ€nderte Version des Programms stelle ich zur VerfĂŒgung.


Nachdem das Lockbit rĂŒckgesetzt war, können mit der Software von Wayne die gewĂŒnschten Fuses gesetzt werden. Ein normaler ISP-Programmer – ich verwende hierfĂŒr den „mySmartUSB light“ – funktioniert nach Löschen des Lockbit ebenfalls wieder wie gewohnt.

Probleme

Die LED des 3DTouch ist am zum normalen IO-Port degradierten RESET-Pin (Pin 1) angeschlossen. Die Verwendung des RESET-Pin als IO-Port funktioniert nur, wenn das Fuse Bit „RSTDISBL“ gesetzt ist. Ist dieses Bit aber gesetzt, kann kein ISP-Programmer verwendet werden, denn der verwendet den RESET-Pin um den AtTiny in den Programmiermodus zu versetzen.

Die LED muss also zum Umprogrammieren des AtTiny an einem anderen Pin angeschlossen werden. HierfĂŒr bietet sich der freigewordene Pin 5 an, wo ursprĂŒnglich das jetzt nicht mehr benötigte Servo-Signal an den 3DTouch gefĂŒhrt wird. Die Leitung von Pin 1 zur LED liegt gut zugĂ€nglich am Rand der Leiterplatte, kann also leicht mit einem Cutter getrennt werden (siehe Bild, rote Markierungen). Eine dĂŒnne Kupferlack-Leitung von der LED zu Pin 5 ist ebenfalls leicht anzulöten (siehe Bild, gelbe Markierung).

3DTouch  Oberseite

Dieser Draht darf nicht zu dick sein und muss möglichst knapp am AtTiny entlang gefĂŒhrt werden, um nicht mit dem GehĂ€useteil fĂŒr die Schraube zu tangieren, das die Einbuchtung der Platine komplett ausfĂŒllt. Über die Oberseite des AtTiny kann der Draht nicht gefĂŒhrt werden, da hier die FĂŒhrung des Taststiftes fast anliegt.

Der Anschluss „Servo“ (mit „S“ auf der Leiterplatte gekennzeichnet) wird nicht mehr nach außen gefĂŒhrt, der Signalausgang ZERO („Z“) Richtung GRBL-Controller wird stattdessen auf der dritten Leitung des ehemaligen Servo-Kabels gefĂŒhrt, das zweipolige Kabel kann entfallen.

3DTouch Unterseite

Ebenfalls Probleme machen offenbar die SpannungseinbrĂŒche, die durch das Schalten der Spule impliziert werden, die H-BrĂŒcke aus MOSFETs wird von den Signalen des Programmierers angesteuert. Die Spule muss also von der Schaltung mindestens einpolig getrennt werden, damit der Programmieradapter den Chip erkennt.

Update
Im Nachhinein ist das eine FehleinschÀtzung meinerseits, denn nachdem ich, wie weiter unten beschrieben, die Möglichkeit geschaffen habe, den ”C auch im geschlossenen GehÀuse zu programmieren, hat sich herausgestellt, dass das Problem beim Programmieren offenbar durch den Ausgang des Halleffekt-Sensors impliziert wurde. Wird darauf geachtet, dass der Taststift wÀhrend des Programmiervorgangs ausgefahren bleibt, lÀuft alles wie erwartet und problemfrei.

Es ist durchaus kein Fehler, den Sensor beim Programmieren mit einer zusÀtzlichen Spannungsversorgung auszustatten.

Da sich die Möglichkeiten fĂŒr Feedback am 3DTouch auf die einzelne LED und den von der Spule bewegten Tastpin beschrĂ€nken, diese beiden Elemente aber zum Programmieren unter UmstĂ€nden nicht angeschlossen sein dĂŒrfen (siehe weiter oben), habe ich die Programmentwicklung auf einem Arduino Nano V3 durchgefĂŒhrt und erst als alles wunschgemĂ€ĂŸ implementiert war, einen einmaligen Test auf dem 3DTouch durchgefĂŒhrt.

Als das funktionierte, wurden alle zusÀtzlich angelöteten Leitungen entfernt, die LED final mit Pin 5 verbunden und das GehÀuse wieder geschlossen.

Bei der Hantierung am geöffneten 3DTouch muss mit Ă€ußerster Vorsicht zu Werke gegangen werden, denn die beiden AnschlĂŒsse der Spule brechen leicht ab. Beim außenliegenden Anschluss der Spule ist das nicht so schlimm, da könnte man einfach eine Windung abwickeln aber wenn der innenliegende Anschluss abreißt, muss die Spule neu gewickelt werden. Das musste ich zum GlĂŒck nicht ausprobieren.


Der erste Wurf in Sachen alternative Firmware hat zwar funktioniert, mich aber nicht vollkommen ĂŒberzeugt. Die weitere Programmentwicklung auf dem Arduino Nano verlief dann etwas schleppend, da die direkte Interaktion des ĂŒber die Spule bewegten Taststiftes mit dem Hall-Sensor fehlte.

Weitere Änderungen an der Firmware mĂŒssen also auf der Zielhardware durchgefĂŒhrt werden.

Ich habe deshalb fĂŒr die weitere Programmentwicklung die kurzen Enden des Kupferlackdrahtes der Spule mit zwei VerlĂ€ngerungen aus HF-Litze versehen. Die Verbindungen zwischen CuL-Draht und Litze sind mit Schrumpfschlauch ĂŒberzogen, der sich prima nach unten ins GehĂ€use zwischen die dort sichtbaren Streben klemmen lĂ€sst. Mechanische EinflĂŒsse auf die empfindlichen SpulenanschlĂŒsse sind somit nicht mehr zu befĂŒrchten und die Platine lĂ€sst sich jetzt sehr einfach und unkompliziert vom GehĂ€use abheben, die Litzen wurden entsprechend lang ausgefĂŒhrt.

Spule mit HF-Litze angeschlossen

Der im Bild sichtbare Orange  Draht an Pin 2 des AtTiny ist ein zusĂ€tzlicher Anschluss fĂŒr die HV-Programmierung. Diesen Draht habe ich durch eine Kerbe im GehĂ€use nach außen gefĂŒhrt, fĂŒr eine weitere Durchkontaktierung war kein Platz mehr zu finden. Im weiteren Verlauf der Programmentwicklung wurde er nicht mehr benötigt und entfernt.

Hier ein Blick auf die festgeklemmten Schrumpfschlauch-Verbindungen bei abgehobener Platine:

SchrumpfschlÀuche am GehÀuse eingeklemmt

Damit das Feedback des Taststiftes ĂŒber den Hall-Sensor funktioniert, muss die Platine normal eingebaut, also plan und passend auf das GehĂ€useunterteil aufgelegt sein.

Um auch bei auf das GehĂ€useunterteil aufgelegter Platine die Firmware aufspielen zu können, habe ich an einer passenden Stelle auf der Ober- und Unterseite der Platine zwei KupferflĂ€chen freigestellt und mit einem 0,6 mm Bohrer eine neue Durchkontaktierung erzeugt. Der RESET-Anschluss des AtTiny13A wird hiermit auf die Unterseite der Platine gefĂŒhrt. Die Verbindung der freigestellten KupferflĂ€che mit Pin 1 des ”C erfolgt durch einen Klecks Lötzinn.

Tipp: Wer keinen 0,6 mm dĂŒnnen Draht zur Hand hat, nimmt ein ReststĂŒck eines Widerstands und streckt dieses StĂŒck Draht mittels zweier Zangen. Durch Strecken wird der Draht exakt gerade und vor allem dĂŒnner. Gegebenenfalls muss zwei oder mehrfach gestreckt werden. - Strecken: Man nimmt den Draht mit je einer Zange am linken und rechten Ende und zieht feste, ggf. so lange, bis eine Seite des Drahtes abreißt.

Reset-Durchkontaktierung - Oberseite

Im Bild oben ist die Durchkontaktierung ROT markiert, GELB zeigt den Umriss der Verbindung zwischen Reset-Anschluss des AtTiny und dem neuen Via.
Unten die Durchkontaktierung auf der Unterseite:

Reset-Durchkontaktierung - Unterseite

Alle anderen fĂŒr das ICSP notwendigen Signale des AtTiny sind ohnehin auf der Platinenunterseite zugĂ€nglich, teilweise ĂŒber den Stecker fĂŒr GRBL, teilweise an jetzt freien Pins und im Fall von MISO am Pin 1 des Halleffekt-Sensors. Somit kann die Firmware im Wechsel neu programmiert und sofort - ohne Änderungen am Aufbau - getestet werden. Dabei muss unbedingt darauf geachtet werden, dass der Taststift in der unteren Stellung, also herausgefahren, steht, damit der OpenCollector-Ausgang des Hall-Sensors auf HIGH-Potential liegt und der hier angeschlossene Eingang des AtTiny vom Programmer bedient werden kann.

Die Sourcen der alternativen Firmware fĂŒr den 3DTouch Sensor stelle ich zum Download als ZIP-Datei zur VerfĂŒgung.

Hinweis
Die fĂŒr die Programmierung des AtTiny13 notwendige Erweiterung der Arduino IDE ist der von James Sleeman entwickelte Core, der sich einfach ĂŒber den in der IDE integrierten Boardverwalter installieren lĂ€sst.

James Sleeman - AtTiny13-Core


FĂŒr den angedachten Einsatzfall - Abtasten einer nicht leitenden OberflĂ€che zum Ausgleich von Unebenheiten mit einer CNC-FrĂ€se - empfiehlt es sich, den Sensor, nicht wie bei den 3D-Druckern ĂŒblich, irgendwo seitlich der DruckdĂŒse, sondern genau im Zentrum der FrĂ€sspindel zu platzieren. Dazu ist ein passender Adapter zu finden, der das Einspannen im Spannfutter der FrĂ€se ermöglicht.

FĂŒr einen ersten Test mit der neuen Firmware an der FrĂ€se habe ich eine M3 Schraube durch eines der am Sensor vorhandenen Löcher gesteckt, verschraubt und mit einem Schrumpfschlauch ĂŒberzogen, damit sie in das 3,14 mm Futter an meiner Spindel passt.

3DTouch an der FrÀse

Alsdann wurde eine ziemlich schief abgesÀgte Scheibe Kirschholz unter dem Sensor platziert und OpenCNCPilot angeworfen, eine Heightmap 20 x 20 mm erzeugt und das Probing gestartet.

Zuerst eine kurze Sequenz vom Einschalten. Die LED wird eingeschaltet, der Taststift wird zweimal hoch und runter bewegt, die LED blitzt zweimal kurz auf, dann ist der Sensor einsatzbereit.

3DTouch - Einschalt-Sequenz

    3DTouch - Einschalt-Sequenz (Click auf das Bild fĂŒhrt zu Vimeo)

Hier noch der zweimillionste Film ĂŒber den 3DTouch im Einsatz, diesmal aber beim Kontur abtasten auf einer CNC-FrĂ€se, deren Controller mit der ungepatchten Standard-Generierung von GRBL 1.1 arbeitet.

3DTouch - Abtastung

    3DTouch - Abtastung (Click auf das Bild fĂŒhrt zu Vimeo)

Die OberflĂ€che der Holzscheibe ist ziemlich schrĂ€g, aber immer noch fast glatt. Man sieht jedoch schon hier, dass nach dem Tasten der Stift recht schnell wieder in der unteren Position ankommt (eine halbe Sekunde ist nicht wirklich lang) und zu diesem Zeitpunkt der Sensor fast schon die OberflĂ€che der Holzscheibe berĂŒhrt. Das passiert, weil durch die SchrĂ€ge der OberflĂ€che der Abstand beim ”bergauf” fahren kleiner wird.

WĂŒrde man mit diesen Einstellungen beispielsweise eine stĂ€rker konvex oder konkav gekrĂŒmmte OberflĂ€che abtasten, wĂŒrde der Taststift unweigerlich schon beim horizontalen Verfahren zum nĂ€chsten Tastpunkt die OberflĂ€che berĂŒhren, was zu falschen Messungen fĂŒhrt.

Abhilfe bringt entweder eine prinzipiell deutlich grĂ¶ĂŸere Ausgangshöhe bevor mit dem Absenken begonnen wird, oder eine adaptive Ausgangshöhe, die sich beispielsweise der Tendenz der letzten beiden (oder mehr) Tastpunkte anpasst.


Mit diesem Setup habe ich einige Zeit problemlos meine nichtleitenden OberflĂ€chen abtasten können. Irgendwann habe ich aber nicht aufgepasst, vergessen die Probe-Leitung Richtung GRBL anzuschließen und der Taststift ist unsanft ins WerkstĂŒck gefahren. Dabei ist offenbar der Magnet am oberen Ende des Taststiftes zerbröselt, denn der Stift muss jetzt in eine bestimmte Richtung gedreht werden, damit das Probesignal korrekt und zuverlĂ€ssig gemeldet wird.

Ich habe also einen zweiten 3DTouch umgebaut.

 


Besucherzaehler

Besucher seit
25.11.2000

>