Startseite
Schweden
Atmega Projekte
Elektronik Basteleien
CNC-Fräsmaschine
NIXIE Uhren
Dekatron A101
Kontakt
Inkrementalgeber

Schrittmotor als Inkrementalgeber

Wenn man sich intensiv mit Microcontrollerschaltungen beschäftigt, kommt man irgendwann an einen Punkt an dem der Einsatz von Tastern als Eingabeeinheit einfach zu umständlich wird. Besonders wenn man bei Werteeingaben mal große und mal feinfülig sehr kleine Sprünge machen will. Hier zwängen sich geradezu inkrementale Drehgeber auf. Deshalb habe ich mir mal einige Modelle z.B. von Alps und Panasonic genauer angesehen und musste feststellen das diese als Tastererstz für Microcontrollerschaltungen nur bedingt einsetzbar sind. Ein großes Problem stellt zum Beispiel das Kontaktprellen dar. Schaut man sich in einschlägigen Internetforen um, sieht man jede Menge an Beiträgen dieses lästige Prellen auszutrixen. Eine Möglichkeit ist es den Schaltkontakt mit Kondensatoren zu puffern. Dies bringt bei stark prellenden Kontakten allerdings wenig Erfolg. Ausserdem besteht natürlich auch die Möglichkeit mit Flip-Flops oder Monoflopps rumzuhantieren. Sicherlich funktioniert das, aber man braucht natürlich doch wieder einiges an externen Bauteilen. Des weiteren kann man sich natürlich trickreiche Programme einfallen lassen um im Pollingmodus stabile Zustände herauszufiltern. Das kostet aber zum einen aber einiges an Programmieraufwand, zum Anderen doch einiges an Rechenleistung. Richtig kritisch wird es wenn man um nicht pollen zu müssen die Prellenden Kontakte an einen Interrupt legt. Ratz faz kommt es dann zu unerklärlichem Programmverhalten durch Bufferoverflows oder gar zu Programmabstürzen. Da gibt es solche schlaumeierischen Vorschläge nach auslösen des Interrupts doch einfach den Interrupt zu deaktivieren und erst mal abzuwarten bis sich der Kontakt beruhigt hat. Das bedingt jedoch das man es schafft den Interrupt zu deaktivieren bevor das Impulsgewitter auf den armen Chip einprasselt. Und genau das schafft man gerade dann nicht wenn man den Microcontroller nur langsam taktet. Bei 1MHz Taktfrequenz braucht man schon ca. eine Mikrosekunde um den Interrupt abzuschalten und es hat sich gezeigt das das schon deutlich zu langsam sein kann.

Deshalb sann ich nach einer Lösung wirklich saubere Signale von einem Inkrementalen Drehgeber zu bekommen. Da auch ich das Rad nicht jedes mal neu erfinden möchte hab ich mich mal im www umgesehen und stieß zum einen auf die Lösung von Drehgebern mit Optischer Drehencodern (siehe gute alte Computermaus) oder aber einen ausgedienten kleinen Schrittmotor zweck zu entfremden.
Dabei stieß ich auf folgende Schaltung. Ich möchte mich nicht mit fremden Federn schmücken und würde auch gerne die Quelle angeben, aber ich finde die Seite einfach nicht wieder. Hier die Schaltung.

Einige aufmerksamme Leser haben die Seite wiedergefunden von der diese Schaltung stammt.

http://www.elektrik-trick.de/sminterf.htm

Diese habe ich dann mal mittels Sprintlayout in eine Platine umgesetzt,

zusammengelötet,

und an einem Atmega8 getestet. Und siehe da, Besser geht´s echt nicht. es ist mir trotz aller Bemühungen nicht gelungen den Microcontroller dazu zu bewegen falsch zu zählen, nicht mal der Einsatz eines Akkuschraubers an der Drehachse konnte das Kerlchen aus der Ruhe bringen und ausserdem ist es ein echt ein tolles Gefühl wenn man mit der Hand an der Achse des Motors dreht. Das macht schon einen sehr hochwertigen Eindruck. Einziger Wermutstropfen: Einen eigebauten Drucktaster bringt so ein Schrittmotor natürlich nicht mit...

Ermutigt durch das wirklich sensationelle Ergebnis habe ich das ganze dann noch mal in SMD umgesetzt. Ich baue ja schlißlich keine Microcontrollerschaltungen um dann das Gehäuse eines PC´s verwenden zu müssen damit alles reinpasst.

Hier das vorläufige Endergebnis:

Fazit: Ich kauf mir keine Inkrementalgeber mehr.......