Quadraturencoder mit Gabellichtschranken und Zahnrad
Hallo,
da ich mich in der letzten Zeit etwas von den Modul 0,5 Zahrädern Richtung Modul 1 Zahnrädern bewegt habe, kam mir der Gedanke, ob man die relativ grossen Zähne / Zahnlücken nicht auch für einen Quadraturencoder als Encoderscheibe verwenden kann.
Bei Pollin ist mir eine Gabellichtschranke mit Schmitt-Triggerausgang aufgefallen, die mir - neben dem Preis - auch wegen des schmalen Strahls (0,5 mm ) gefiel: TCYS 5201.
Modul1 Kunststoffzahräder hatte ich noch einige mit 30 Zähnen und ca 31,5 mm Aussendurchmesser, einziger Nachteil war die Breite mit über 6mm, die ich mit Feilen/Schmirgeln auf unter 5 mm bringen musste, damit die Gabeln darüber passten.
Montiert hab ich das Rad zuerst provisorisch in einem Aluwinkel, hinterher hab ich der Messing-Achse Kugellager spendiert.
Die Befestigung der Gabellichtschranken ist recht kritisch, da die optische Achse etwa auf Zahnhöhenmitte liegen muss ( ca 50%Tastverhältnis), andrereseits der Abstand der Sensoren zueinander von 90° bzw. n x 360° + 90° betragen muss, d.h. um eine halbe Zahnbreite versetzt (bzw. nx(Zahn+Zahnlücke) + halbe Zahnbreite) montiert werden muss, um das mit Gray-Code auswerten zu können. Durch die Abmessung der Gabellichtschranken hab ich sie in einem Winkel von ca 39 ° (3 *12° + 3°(für halbe Zahnbreite)) zueinander angebracht.
Beim ersten Test hab ich sie an dem Seitenfläche eines Alu-U-Profils befestigt, bei der endgültigen Version hab ich Löcher in den Boden des Profils eingearbeitet, um dort die Schenkel der Gabellichtschranken einzulassen. Verklebt hab ich das dann mit 2-Komponenten-Kleber.
Das Programm dazu ist in meiner Programmierumgebung (ASURO V2.8.0)
entstanden, der spezif. C- Code stammt grossenteils von Peter Danneger ( mikrokontroller.net). An dem ATmega8 hängt noch über I2C der Beschleunigungssensor BMA020 und ein Mini-LCD von Pollin.
Ich benutze für den Decoder den Interrupt0 (8-Bit) und hab so noch Interrupt1 für PWM frei. Die Ausgänge der Gabellichtschranken, die TTL-Signal liefern, liegen an Pin12/PIN13 (PD6/7), die als Eingänge beschaltet sind.
Anbei noch ein paar Fotos vom Aufbau.
Ein Video ist fehlgeschlagen, man konnte die Ziffern auf dem Display leider nicht erkennen.
mittlerweile hab ich es doch geschaftt, ein - wenn auch qualitativ recht mieses - Video hochzuladen.
Auf dem Display wird das Quadraturencoderergebnis in der oberen Zeile links ausgegeben (der "natürlich" am schlechtesten erkennbare Wert). Die anderen Daten stammen noch von dem Beschleunigungssensor BMA020,
der oben rechts im Bild zu erkennen ist.
hab den Encoder noch etwas kompakter aufgebaut, mit einem Modul1 Kunsstoffzahnrad mit 20 Zähnen (von 6mm auf 4,2 mm Zahbreite gefeilt, um zwischen die Gabellichtschranken zu passen). Pro Umdrehung erhalte ich dann 80 Impulse, die auf dem LCD-Display links oben ausgegeben werden (auf dem Video besser erkennbar). Damit erhalte ich dann eine Positionierungsgenauigkeit von etwa +-0,84 mm.
Mit "sparsam" hast Du wohl recht, bei 25 Cent pro Gabellichtschranke
incl. Schmitttrigger.
Hab als Antrieb für das "Sensor"-Rad einen kleinen krächzenden Getribemotor angebaut und das ganze auf eine Zahnstange gesetzt.
Per Programm gesteuert fährt das Gebilde 80 Impulse (20 Zähne) nach rechts ,
um dann in die entgegegengesetzte Richtung zu fahren.
Das ganze muss ich noch etwas verfeinern (z.B. langsames abbremsen),
damit die gewünschte Position nicht überfahren wird.
Am einfachsten und sparsamsten ist, falls wegen nötigen Drehmoment möglich, die Versorgungsspannung für den Motor zu sinken, wenn du Glück hast, wird der Motor kostenlos leiser.
Das ist immer eindrucksvoll, wenn etwas dann wirklich funktioniert.
Das Geräusch ist noch nicht ganz so überzeugend. Wenn die Anlage komplexer wird und der Teil zuverlässig arbeiten soll, sollte man etwas nachjustieren.
die Drehzahl / Geschwindigkeit beeinflusse ich über PWM (OC1A Atmega8 , Timer1 (ähnlich wie beim ASURO), hab nur eine andere H-Brücke (TLE5205 von Inf.)). Die Quad-Encoder Gabel-LS ( hängen an PIN12/13 (PD6/7) ATmega8 ) werden über Timer0 ausgewertet (Overflow0).
Die Information , welche Position angefahren soll, kommt wohl demnächst ?
von Neigungs/Beschleunigungssensoren (analog MMA7260 an PIN27 (ADC4 / PC4 bzw. digtal BMA020 über I2C) und eventuell Gyro (ENC03).
Ausserdem ist angedacht, die Pos.-Werte auch von aussen vorzugeben
(IR-Schnittstelle mit TV-Fernbedienung über RC5). IR läuft ASURO-like über Timer2.
Im Video ist ein Teil der HW-Komponenten (Beschleunigungssensor BMA020, IR-Schnittstelle) zu sehen.
Das etwas ätzende Geräusch kommt von dem billigen ? Getriebemotor.
Ich weiss nicht, ob da justieren hilft, besser ist wohl : entsorgen.
Lesezeichen