
Мазмұны:
2025 Автор: John Day | [email protected]. Соңғы өзгертілген: 2025-01-23 14:51

Айналмалы кодерлер - бұл электронды жобалар үшін бұрылатын басқару тұтқалары, көбінесе Arduino отбасының микроконтроллерлерінде қолданылады. Олар параметрлерді дәл баптауға, мәзірлерді шарлауға, объектілерді экранда жылжытуға, кез келген түрдегі мәндерді орнатуға болады. Олар потенциометрлерді жиі алмастырады, өйткені оларды дәл және шексіз бұруға болады, олар бір уақытта бір дискретті мәнді көбейтеді немесе азайтады, және көбінесе таңдау функциялары үшін итермелі қосқышпен біріктіріледі. Олар әр түрлі пішіндер мен өлшемдерде келеді, бірақ төменде түсіндірілгендей, ең төменгі баға диапазонын қолдану қиын.
Ротари -кодерлердің жұмысының егжей -тегжейлері мен пайдалану режимдері туралы көптеген мақалалар бар, және оларды пайдалану туралы көптеген үлгі кодтары мен кітапханалары бар. Жалғыз мәселе - олардың ешқайсысы қытайлық айналмалы модульдердің ең төменгі бағасымен 100% дәл жұмыс істемейді.
1 -қадам: Ішкі айналмалы кодерлер



Кодердің айналмалы бөлігінде үш түйреуіш бар (және қосқыштың қосымша бөлігі үшін тағы екі). Бірі - жалпыға ортақ жер (қара GND), екіншісі - тұтқа бұрылған кезде бағытты анықтауға арналған (олар көбінесе көк CLK және қызыл DT деп аталады). Бұл екеуі де микроконтроллердің PULLUP кіріс штырына бекітілген, бұл ЖОҒАРЫ деңгей олардың әдепкі көрсеткіші болып табылады. Тұтқаны алға (немесе сағат тілімен) бұрған кезде алдымен көк CLK төмен деңгейге түседі, содан кейін қызыл DT келеді. Әрі қарай бұрылғанда, көк CLK қайтадан жоғарыға көтеріледі, содан кейін GND ортақ патч қосылу түйреуішінің екеуінен де кететіндіктен, қызыл DT де жоғарыға көтеріледі. Осылайша FWD (немесе сағат тілімен) бір толық белгісін толтырыңыз. BWD басқа бағытта да (немесе сағат тіліне қарсы) жүреді, бірақ қазір қызыл түс бірінші болып түседі, ал көк түс сәйкесінше екі деңгейлі суретте көрсетілгендей артқа көтеріледі.
2 -қадам: Көптеген адамдар үшін нағыз ауыртпалық тудыратын бақытсыздық



Ардуино әуесқойлары үшін жиі кездесетін мәселе - арзан айналмалы кодтаушы модульдер шығыс деңгейіндегі қосымша өзгерістерді көтереді, бұл бағытты санаудың қосымша және қате көрсеткіштерін тудырады. Бұл ақаусыз санауды болдырмайды және бұл модульдерді дәл айналмалы жобаларға біріктіруді мүмкін етпейді. Бұл қосымша соққылар қосқыш түйреуіштердегі патчтардың механикалық қозғалыстарынан туындайды, тіпті қосымша конденсаторларды қолдану оларды толығымен жоя алмайды. Секіру толық кене циклінің кез келген жерінде пайда болуы мүмкін және суреттердегі нақты өмір сценарийлерімен бейнеленген.
3 -қадам: Ақырлы күй машинасы (FSM) шешімі

Кескін екі түйреуіштің (көк CLK және қызыл DT) ықтимал деңгейінің өзгеруінің толық күй кеңістігін көрсетеді. Осы мемлекеттік машинаның негізінде әрқашан 100% дәл жұмыс істейтін толық шешімді бағдарламалауға болады. Бұл шешімде сүзуді кешіктірудің қажеті жоқ болғандықтан, бұл ең жылдам. Түйреуіштердің күй кеңістігін жұмыс режимінен бөлудің тағы бір артықшылығы - сұрау немесе үзіліс режимін өз қалауы бойынша қолдануға болады. Дауыс беру немесе үзіліс түйреуіштердегі деңгейдің өзгеруін анықтай алады, ал жеке тәртіп жаңа күйді ағымдағы күйге және деңгей өзгерістерінің нақты оқиғаларына негізделген есептейді.
4 -қадам: Arduino коды

Төмендегі код сериялық монитордағы FWD және BWD белгілерін есептейді, сонымен қатар қосудың қосымша функциясын біріктіреді.
// Питер Цургай 2019-04-10
// Ардуино порттарына айналдырылған түйреуіштер
#анықта БҚ 21 #анықта CLK 22 #анықта ДТ 23
// Айналмалы реттегіштің ағымдағы және алдыңғы мәні
int curVal = 0; int prevVal = 0;
// FSM -дің жеті күйі (ақырлы күй машинасы)
#анықтау IDLE_11 0 #анықтау SCLK_01 1 #SCLK_00 анықтау #SCLK_10 3 #анықтау SDT_10 4 #анықтау SDT_00 5 #SDT_01 анықтау 6 int күй = IDLE_11;
жарамсыз орнату () {
Serial.begin (250000); Serial.println («Бастау …»); // HIGH деңгейі барлық түйреуіштер үшін әдепкі болады pinMode (SW, INPUT_PULLUP); pinMode (CLK, INPUT_PULLUP); pinMode (DT, INPUT_PULLUP); // CLK де, DT де барлық деңгейдегі өзгерістерге үзіліс қосады attachInterrupt (digitalPinToInterrupt (CLK), rotaryCLK, CHANGE); attachInterrupt (digitalPinToInterrupt (DT), rotaryDT, CHANGE); }
void loop () {
// Кейбір айналмалы кодерлерге қосылған қосымша қосқышты басқару, егер (digitalRead (SW) == LOW) {Serial.println («Басылған»); while (! digitalRead (SW)); } // Есептегіш мәнінің кез келген өзгерісі, егер (curVal! = PrevVal) {Serial.println (curVal); prevVal = curVal; }}
// CLK деңгейінің өзгеруіне арналған мемлекеттік машинаның ауысуы
void rotaryCLK () {if (digitalRead (CLK) == LOW) {if (state == IDLE_11) state = SCLK_01; else if (state == SCLK_10) state = SCLK_00; әйтпесе (күй == SDT_10) күй = SDT_00; } else {if (state == SCLK_01) state = IDLE_11; else if (state == SCLK_00) state = SCLK_10; әйтпесе (күй == SDT_00) күй = SDT_10; әйтпесе (күй == SDT_01) {күй = IDLE_11; curVal--; }}}
// DT деңгейінің өзгеруіне арналған мемлекеттік машинаның ауысуы
жарамсыз rotaryDT () {if (digitalRead (DT) == LOW) {if (state == IDLE_11) state = SDT_10; әйтпесе (күй == SDT_01) күй = SDT_00; else if (state == SCLK_01) state = SCLK_00; } else {if (state == SDT_10) state = IDLE_11; else if (state == SDT_00) state = SDT_01; else if (state == SCLK_00) state = SCLK_01; else if (state == SCLK_10) {state = IDLE_11; curVal ++; }}}
5 -қадам: мінсіз интеграция

Қосымша бейнематериалда FSM шешімі әр түрлі кездейсоқ секіру әсерлері бар төмен диапазондағы айналмалы кодерлер болған жағдайда да дәл және жылдам жұмыс істейтінін тексере аласыз.
Ұсынылған:
Жарықты ластау шешімі - Артемида: 14 қадам

Жарық ластануының шешімі - Артемида: Жарықтың ластануы - бұл бүкіл әлем бойынша бәрімізге әсер ететін нәрсе. Лампочка ойлап табылғаннан бері жарық әлдеқайда танымал болды және Нью -Йорк пен Чикаго сияқты үлкен қалаларда арнайы қолданылды. Бұл жарықтың бәрі әсер етуі мүмкін
SASSIE: ыңғайсыз үнсіздік шешімі мен өзара әрекеттестікті күшейту жүйесі: 5 қадам

SASSIE: Ыңғайсыз үнсіздіктің шешімі мен өзара әрекеттестікті күшейту жүйесі: SASSIE - бұл бәріміз өз өмірімізде ыңғайсыз үнсіздік кезінде: «Мен келесі сөйлеймін бе?» Деген сұраққа жауап. Енді сізге алаңдамаудың қажеті жоқ, өйткені SASSIE ыңғайсыз тыныштықты тануға арналған
Ортақ велосипедке арналған IOT шешімі: 6 қадам

Ортақ велосипедке арналған IOT шешімі: ортақ велосипед Қытайда қазіргі уақытта өте танымал. Нарықта велосипедті бөлісетін 10 -нан астам брендтер бар және “ mobike ” ең әйгілі, оның 100 миллионнан астам қолданушысы тіркелген және басқа қалаларға таралған
Arduino жобасы: GPS қадағалау шешімі үшін RF1276 LoRa модулінің сынақ диапазоны: 9 қадам (суреттермен)

Arduino жобасы: GPS қадағалауға арналған RF1276 сынақ диапазоны LoRa модулі Шешім: Байланыс: USB - SerialNeed: Chrome браузері қажет: 1 X Arduino Mega қажеттілігі: 1 X GPS қажет: 1 X SD картасы қажет: 2 X LoRa модем RF1276 Функция: Arduino GPS мәнін жіберу негізгі базаға - Dataino Server Lora модуліндегі деректердің негізгі базасы: Ультра ұзақ қашықтық
Arduino негізіндегі роботтық қолмен қолжетімді баға шешімі: 19 қадам (суреттермен)

Arduino негізіндегі роботтық қолмен қол жетімді көзқарас шешімі: Біз машинаны көру туралы айтатын болсақ, ол бізге әрқашан қол жетімсіз болып көрінеді. Біз ашық көзбен демонстрация жасадық, оны бәріне оңай жасауға болады. Бұл бейнеде OpenMV камерасы бар, қызыл текше қай жерде болмасын, робот