- Ротацијски енкодер и његове врсте
- КИ-040 Ротирајући кодер Пиноут и опис
- Како функционише ротациони кодер
- Компоненте потребне
- Дијаграм круга повезивања ротационог енкодера ПИЦ16Ф877А
- Објашњење кода
Ротари енкодер је улазни уређај који помаже корисницима да интеракцију са системом. Више личи на радио потенциометар, али емитује низ импулса што његову примену чини јединственом. Када се дугме кодера ротира, окреће се у облику малих корака, што му помаже да се користи за управљање корачним / серво мотором, кретање кроз секвенцу менија и повећање / смањење вредности броја и још много тога.
У овом чланку ћемо научити о различитим врстама ротационих кодера и како то функционише. Такође ћемо га повезати са ПИЦ микроконтролером ПИЦ16Ф877А и контролисати вредност целог броја окретањем кодера и приказати његову вредност на ЛЦД екрану 16 * 2. На крају овог водича биће вам угодно да користите ротациони кодер за своје пројекте. Па кренимо…
Ротацијски енкодер и његове врсте
Ротацијски кодер често се назива осовински кодер. То је електромеханички претварач, што значи да претвара механичке покрете у електронске импулсе или другим речима претвара угаони положај или кретање или положај осовине у дигитални или аналогни сигнал. Састоји се од дугмета који ће се при окретању кретати корак по корак и стварати низ импулсних склопова унапред дефинисане ширине за сваки корак.
На тржишту постоји много врста ротационих кодера које дизајнер може одабрати према својој примени. Најчешћи типови су наведени у наставку
- Инкрементални кодер
- Абсолуте Енцодер
- Магнетиц Енцодер
- Оптички кодер
- Ласерски кодер
Ови енкодери су класификовани на основу излазног сигнала и сензорске технологије, инкрементални енкодер и апсолутни енкодери су класификовани на основу излазног сигнала, а магнетни, оптички и ласерски енкодери су класификовани на основу сензорске технологије. Кодер се овде користи је тип Постепено енкодера.
Апсолутни кодер чува информације о положају чак и након уклањања напајања, а подаци о положају ће бити доступни када поново применимо напајање на њега.
Други основни тип, инкрементални кодер, даје податке када кодер промени свој положај. Није могао да ускладишти информације о положају.
КИ-040 Ротирајући кодер Пиноут и опис
Изводи пин -окретног кодера КИ-040 инкрементални су приказани доле. У овом пројекту повезаћемо овај ротациони кодер са популарним микроконтролером ПИЦ16Ф877А из микрочипа.
Прва два пина (уземљење и Вцц) користе се за напајање кодера, обично се користи напајање од + 5В. Осим што окреће дугме у смеру кретања казаљки на сату и у смеру супротном од кретања казаљке на сату, кодер има и прекидач (Ацтиве лов) који се може притиснути притиском на дугме изнутра. Сигнал са овог прекидача добија се преко пина 3 (СВ). Коначно, има два излазна пина (ДТ и ЦЛК) који производе таласне облике као што је већ објашњено у наставку. Претходно смо повезали овај ротациони кодер са Ардуином.
Како функционише ротациони кодер
Излаз у потпуности зависи од унутрашњих бакарних плочица које обезбеђују везу са ГНД и ВЦЦ са осовином.
Постоје два дела ротационог кодера. Точак осовине који је повезан са осовином и ротира се у смеру кретања казаљке на сату или у супротном смеру казаљке на сату у зависности од ротације осовине и основе на којој се врши електрично повезивање. База има прикључке или тачке који су повезани са ДТ или ЦЛК на такав начин да ће, када се точак вратила окреће, повезати основне тачке и пружити квадратни талас на ДТ и ЦЛК прикључку.
Излаз ће бити као кад се вратило окреће-
Два порта пружају квадратни талас, али постоји мала разлика у времену. Због тога, ако прихватамо излаз као 1 и 0, могу постојати само четири стања, 0 0, 1 0, 1 1, 0 1. Редослед бинарног излаза одређује окретање у смеру казаљке на сату или окретање у смеру супротном од казаљке на сату. Као, на пример, ако ротациони кодер даје 1 0 у стању мировања и пружа 1 1 након тога, то значи да кодер мења свој положај у једном кораку у смеру кретања казаљке на сату, али ако даје 0 0 након празног хода 1 0, значи да осовина једним кораком мења своје положаје у смеру кретања казаљке на сату.
Компоненте потребне
Време је да идентификујемо шта треба да повежемо ротациони кодер са ПИЦ микроконтролером,
- ПИЦ16Ф877А
- Отпорник 4.7к
- 1к отпорник
- 10к пот
- Кондензатор керамичког диска 33пФ - 2ком
- Кристал од 20 МХз
- Дисплеј 16к2
- Ротацијски енкодер
- 5В адаптер.
- Даска за хлеб
- Прикључне жице.
Дијаграм круга повезивања ротационог енкодера ПИЦ16Ф877А
Испод је слика коначног подешавања након повезивања компонената у складу са Цирцуит Диаграм:
Уместо потенциометра користили смо један отпор 1К за контраст ЛЦД-а. Такође, погледајте цео радни видео запис дат на крају.
Објашњење кода
Комплетни ПИЦ код дат је на крају овог пројекта са демонстрацијским видео записом, овде објашњавамо неколико важних делова кода. Ако сте нови у ПИЦ микроконтролеру, следите наше ПИЦ упутства од почетка.
Као што смо раније разговарали, морамо проверити излаз и разликовати бинарни излаз и за ДТ и за ЦЛК, па смо креирали иф-елсе део за операцију.
иф (Енцодер_ЦЛК! = позиција) { иф (Енцодер_ДТ! = позиција) { // лцд_цом (0к01); бројач ++; // Повећај бројач који ће се штампати на лцд лцд_цом (0кЦ0); лцд_путс (""); лцд_цом (0кЦ0); лцд_бцд (1, бројач); } елсе { // лцд_цом (0к01); лцд_цом (0кЦ0); цоунтер--; // смањивање бројача лцд_путс (""); лцд_цом (0кЦ0); лцд_бцд (1, бројач); // лцд_путс ("Лево"); } }
Такође морамо да сачувамо положај на сваком кораку. Да бисмо то урадили, користили смо променљиву „позиција“ која чува тренутну позицију.
поситион = Енцодер_ЦЛК; // Спреми положај сата кодера на променљиву. Може бити 0 или 1.
Осим ове опције постоји опција обавештавања о притиску прекидача на ЛЦД-у.
иф (Енцодер_СВ == 0) { св_делаимс (20); // одлагање кашњења иф (Енцодер_СВ == 0) { // лцд_цом (1); // лцд_цом (0кЦ0); лцд_путс ("прекидач притиснут"); // итоа (бројач, вредност, 10); // лцд_путс (вредност);
Систем_инит Функција се користи за иницијализацију пин И / О операције, ЛЦД и за чување позиције Ротари Енцодер.
воид систем_инит () { ТРИСБ = 0к00; // ПОРТ Б као излаз, овај порт се користи за ЛЦД ТРИСДбитс.ТРИСД2 = 1; ТРИСДбитс.ТРИСД3 = 1; ТРИСЦбитс.ТРИСЦ4 = 1; лцд_инит (); // Ово ће иницијализовати позицију ЛЦД- а = Енцодер_ЦЛК; // Сотровали смо ЦЛК позицију на системском покретању, пре почетка вхиле петље. }
ЛЦД функција је записана на библиотеци лцд.ц и лцд.х где су декларисани лцд_путс (), лцд_цмд ().
За декларацију променљиве, конфигурационе битове и друге исечке кода, у наставку пронађите цео код.