В този урок ще свържем въртящ се енкодер с микроконтролера ATmega8. ATmega8 е серията микроконтролери на Atmel, предназначена за вградени приложения. Ротационният енкодер се използва за познаване на позицията на движение и ъглово движение на мотор или ос. Обикновено това е три терминала, с мощност и заземяване, броят на изводите е до пет. Модул с въртящ се енкодер е показан по-долу.
Пиновете на ротационен енкодер са:
- Земя.
- Положително свързано към + 5V
- Изходен сигнал A щифт
- Изходен сигнал B щифт
- Часовник или общ щифт.
ЕНКОДЕРЪТ осигурява импулси, представящи промяната в положението на вала, за да могат системите да разберат. Помислете, че РОТАЦИОНЕН ЕНДОДЪР е включен и валът е преместен.
Както е показано в горната таблица, помислете, че валът е преместен по посока на часовниковата стрелка. С това ще има Falling Edge на терминал А, след това на терминал В.
Помислете, че валът е преместен в посока против часовниковата стрелка. С това ще има Falling Edge на терминал B, след това на терминал A.
Този ръб ще се появи веднъж за 360/20 = 18 градуса (Това е за енкодер с 20 позиции, това се променя от тип на тип, колкото по-голям е броят, толкова по-голяма е точността).
И при двете горепосочени условия можем да получим посока и степен на въртене. По този начин получаваме необходимите параметри за получаване на положението на вала.
Компоненти
Хардуер: ATMEGA8, свързващи щифтове, AVR-ISP PROGRAMMER, резистор 220Ω, LED (осем парчета), резистор 1KΩ, резистор 220Ω (2бр.), Кондензатор 100nF (2 броя), дъска за хляб.
Софтуер: Atmel studio 6.1, progisp или flash magic.
Електрическа схема и работно обяснение
Кондензаторите тук са за неутрализиране на ефекта на подскачащ контакт в ENCODER. Без тези кондензатори ще има някои сериозни проблеми при отчитане на положението.
Когато валът бъде преместен, ще има разлика във времето между изходните два изходни щифта. ATMEGA8 ще разпознае тази разлика във времето по посока на часовниковата стрелка на въртене срещу часовниковата стрелка.
Ако въртенето е по посока на часовниковата стрелка, двоичното броене се увеличава с едно и това броене се показва в LED порта, както е показано на фигурата.
Ако въртенето е против часовниковата стрелка, двоичното броене се намалява с едно и двоичното броене се показва в светодиоден байт.
Не забравяйте, че тук не задаваме никакви битове на предпазители на atmega8, така че контролерът ще работи на 1Mhz вътрешен кристал по подразбиране.
Работата на взаимодействащия ротационен енкодер с микроконтролера ATmega8 е обяснена в кода по-долу.