Digitale
uitlezing voor een Draaibank

Een leuk AVR projektje is de bouw van een digitale uitlezing voor een
draaibankje. Er stonden twee mooie incrementele positie
opnemers met een resolutie van 0.01mm ter beschikking. De
opnemers werken op 5 volt en geven het gebruikelijke A/B kwadratuur
signaal af. De software
is geschreven in assembler en draait op een AVR Tiny2313.. Ik
gebruik AVR studio en PonyProg om de code
in de AVR te 'branden'.
Het programma is vrij simpel. Een
van de timers wordt gebruikt om een interrupt routine te
starten. De interruptroutine kijkt naar de status van elke
encoder en past indien nodig de opgeslagen posities aan. Na initialisatie van het display, RAM datagebied, timers en interrupt belandt het
hoofdprogramma in een lus, waarin o.a.de knopjes in de gaten worden
gehouden. Is er een knopje ingedrukt, dan wordt de opgeslagen positie
voor de bijbehorende as op nul gezet. Verder wordt in de lus
de (als binair getal) opgeslagen positie omgezet naar een rijtje
cijfers die op het display worden weergegeven. De omzetting
wordt natuurlijk vaak onderbroken door de interrupts, maar dat geeft
niet. Het doorlopen van de lus gaat vrij snel (enkele
milliseconden) dus de uitlezing loopt hoogstens enkele miliseconden
achter op werkelijkheid.
Er is
ook
een mogelijkheid om de assen te configureren door bij het opstarten de
beide 'ZERO' knopjes ingedrukt te houden. Er verschijnt dan
steeds een menuregeltje waarbij je een parameter kunt
instellen. Je kunt kiezen uit: uitlezing normaal /
geinverteerd en 1x / 2x , (radius/diameter). De configuratie
waarden zijn opgeslagen in de interne EEPROM en worden bij het starten
van het programma opgehaald.
De hardware is ook niet echt ingewikkeld te noemen. Het schema
wat je hier vindt is met Eagle gemaakt. Een afdruk ervan vind
je
.
De plaatjes herbij geven een indruk van de binnenkant van het kastje.


Zoals je misschien kunt zien is de AVR gewoon vastgesoldeerd en zit er
geen ISP (programmeeer) aansluiting op de print. De software is
ontwikkeld (en gebrand) op een ontwikkelboardje dat ik ooit
gemaakt heb. Op dat board zitten een paaar ledjes,
schakelaartjes, potmeters en een LCD aansluiting die met jumpertjes op
de verschillende processor pennen kunnen worden aangsloten.
Makkelijk om e.e.a. uit te testen, en als het dan werkt gewoon de
configuratie nabouwen in de definitieve versie. In dit geval
werkte die meteen de eerste keer!