Свързване на енкодер към микроконтролер, програмиране на PIC микроконтролери

енкодер

Инкрементният енкодер е механично устройство (сензор), което преобразува ъгъла на въртене на вал (дръжка) в електрически сигнали. Кодерът има три изхода или пет в зависимост от наличието на вграден бутон. Тук разглеждам най-често срещаните енкодери, които са вградени в потребителското оборудване, например за регулиране на силата на звука, навигация в менюто и т.н. За разлика от променливия резистор, позицията на копчето на кодера се променя дискретно, чрез „щраквания“, докато се случват няколко комутации, чиято последователност зависи от посоката на въртене. Един пълен оборот на копчето може да има различен брой дискретни позиции (12, 20, 24), в зависимост от модела на енкодера.

Фигурата по-долу показва функционална схема, обясняваща принципа на действие на енкодера.

микроконтролери

Както можете да видите от времевите диаграми, когато завъртите една дискретна позиция (едно „щракване“), на клемите A и B се образуват отрицателни импулси (полярността на импулсите зависи от схемата на свързване), извън фаза с всеки други. Фазовото изместване зависи от посоката на въртене. Четири състояния могат да бъдат разграничени от времевата диаграма, която съставлява периода на една дискретна промяна („щракване“), продължителността на периода варира от около 2 ms до 4 ms.

Следващата фигура показва схемата на свързване на енкодера с микроконтролера:

предишното състояние

Пиновете A и B на енкодера трябва да бъдат изтеглени до захранващата линия + 5V с помощта на резистори, също така е необходимо да се инсталират кондензатори C1 и C2, които намаляват ефекта на отскока на контакта.

Състоянието на кодера може да се определи чрез прекъсвания за промяна на сигнала на щифтовете на микроконтролера или чрез периодично анкетиране на равни интервали, като се сравнява текущото състояние с предишната запаметена стойност. Първо, помислете за възможността за периодично анкетиране.

По-долу е даден кодът на програмата, в който се реализира периодичното анкетиране на състоянието на изходите на енкодера. Разпит на състоянията на щифтове A и B на кодера се извършва в рутинната програма за прекъсване, която периодично се извиква от препълването на TMR0 таймера (вж. Таймери. Организация на закъснението във времето). В моята версия таймерът прелива след около 1 ms, тоест енкодерът се анкетира всяка милисекунда.