Мазмұны:
Бейне: Қарапайым айналмалы декодер: 4 қадам
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:25
Бұл нұсқаулық Arduino Uno R3 көмегімен реттік айналмалы кодерді декодтаудың қарапайым әдісін сипаттайды.
Шағын бағдарламалық қамтамасыз ету процедуралары ауысулар санын санау, контактілерден секіруді жою және айналу бағытын анықтау үшін қолданылады. Қосымша компоненттер мен іздеу кестелері қажет емес.
Кодтың үзіліссіз және үзіліссіз нұсқалары берілген.
Кодтың үзіліс нұсқасы тек бір үзу түйреуішін қажет етеді.
Суреттер:
- Ашылатын фотода жиналған кодер көрсетілген.
- Скриншот үзіліс нұсқасының кодын және кодер білігі сағат тілімен және сағат тіліне қарсы бұрылған кездегі санды көрсетеді.
- Бейне жылдам айналу кезіндегі санауды көрсетеді.
1 -қадам: схема
Кодердің қосылу схемасы 1 суретте көрсетілген.
Өткізгіш сымдар тікелей кодер түйреуіштеріне дәнекерленген.
Егер санау бағыты кері болса, екі көк сымды ауыстырыңыз.
2 -қадам: бөлшектер тізімі
Келесі бөліктер https://www.aliexpress.com/ сайтынан алынды.
- USB кабелі бар тек 1 Arduino UNO R3.
- 1 коммутатормен тек реттік айналмалы кодер (EC11 немесе эквиваленті).
- Білікке сәйкес келетін 1 ғана тұтқа.
- 3 Arduino еркек-еркек қосқыш сымдары.
3 -қадам: Теория
Реттік айналмалы кодерлер екі шаршы толқын жасайды, олардың әрқайсысы 1-суретте көрсетілгендей 90 градусқа ығысады.
Білік 1 -ден 6 -позицияға қарай сағат тілінің бағытымен (CW) және сағат тіліне қарсы (CCW) айналғанда A контактісіндегі және В контактісіндегі логикалық үлгілер әр түрлі болады.
Айналу бағытын анықтаудың жалпы әдістеріне мыналар жатады:
- аппараттық құрал
- егіз үзулер
- үлгіні іздеу кестелері
Бұл жоба іздеу кестелерін қажет етпейтін бағдарламалық қамтамасыз ету әдісін қолданады. [1]
Бағыт
Контакт A мен В контактілерінің шығыс үлгілерін қараудың орнына А контактісіне назар аударайық.
Егер біз әр контакті ауысудан кейін В контактісінің үлгісін алсақ, мынаны ескереміз:
- А контактісі мен В контактісінің кодер CW айналған кезде қарама -қарсы логикалық күйлері бар
- А контактісі мен В контактісінің кодтаушы CCW айналған кезде бірдей логикалық күйі болады
Нақты код:
// ----- Ауысуларды санау
CurrentStateA = stateContactA (); if (CurrentStateA! = LastStateA) {CurrentStateB = digitalRead (ContactB); if (CurrentStateA == CurrentStateB) Count ++; if (CurrentStateA! = CurrentStateB) Count--; LastStateA = CurrentStateA; }
Бұл әдіс келесі артықшылықтарды ұсынады:
- іздеу кестелері қажет емес
- тек бір үзіліс жолы қажет
Шығу
Барлық механикалық кодерлер «контактілі секіруден» зардап шегеді.
Егер коммутатор контактісі таза болмаса/үзілмесе, оның логикалық күйі коммутатор контактісі орныққанша жоғарыдан төменге дейін тез ауытқиды. Бұл жалған есептеулерге әкеледі.
Байланыстың секірілуін басудың бір әдісі - әрбір қосқыш контактісіне кішкене конденсаторды қосу. Конденсатор мен ілеспе тартқыш резистор жоғары жиілікті тиімді түрде қысқартатын және ажыратқыш кернеуінің керемет көтерілуіне/төмендеуіне мүмкіндік беретін интеграторды құрайды.
Бұл тәсілдің кемшілігі - егер кодер білігі жылдам айналса, өтулерді жіберіп алу мүмкін.
Бағдарламалық жасақтаманы жою
Бұл әдіс нөлге орнатылған екі есептегішті (Ашық, Жабық) қолданады. [2]
A контактісінде ауысу анықталғаннан кейін:
- Үздіксіз сауалнама A.
- А контактісі жоғары болса, Ашық есептегішті көбейтіңіз және жабық есептегішті қалпына келтіріңіз.
- Жабық есептегішті көбейтіңіз және А контактісі ТӨМЕН болған кезде Ашық есептегішті қалпына келтіріңіз.
- Есептегіштердің бірі алдын ала белгіленген санға жеткенде циклден шығыңыз. Біз кез келген байланыс үзілісінен кейін тұрақты күй кезеңін тиімді түрде іздейміз.
Нақты код:
// ----- Байланысты жою A
while (1) {if (digitalRead (ContactA)) {// ----- ContactA ашық жабық = 0; // Бос қарама -қарсы интегратор Open ++; // Егер біріктіру (Open> MaxCount) HIGH қайтарса; } else {// ----- ContactA жабық ашық = 0; // Бос қарама -қарсы интегратор Жабық ++; // Егер біріктіру (Жабық> MaxCount) LOW қайтарса; }}
В контактісінен бас тартудың қажеті жоқ, себебі контакт А мен контакт В ауысуы сәйкес келмейді.
Санау
Механикалық «ұстау» сіздің есептеулеріңізді екі есе арттырады, себебі екі рет басу арасында есептеледі (1 суретті қараңыз).
«Кідіртілгендердің» санын төменде көрсетілгендей модуль 2 арифметикасының көмегімен анықтауға болады.
Нақты код:
// ----- «ұсталғандардың» саны
if (Count % 2 == 0) {Serial.print («Count:»); Serial.println (Count / 2); }
Әдебиеттер
Қосымша ақпаратты мына жерден алуға болады:
[1]
howtomechatronics.com/tutorials/arduino/ro…
[2]
newbiehack.com/ButtonorSwitchDebounceinSof…
4 -қадам: Бағдарламалық қамтамасыз ету
Бұл жобаға https://www.arduino.cc/kz/main/software сайтынан қол жетімді Ardino Uno R3 IDE (интеграцияланған әзірлеу ортасы) соңғы нұсқасы қажет.
Келесі екі Arduino эскизінің әрқайсысын жүктеңіз (қоса берілген)
- rotary_encoder_1.ino (сұрау нұсқасы)
- rotary_encoder_2.no (үзіліс нұсқасы)
Сізге ұнайтын нұсқаны екі рет нұқыңыз және экрандағы нұсқауларды орындаңыз.
Ләззат алыңыз…
Менің басқа нұсқауларды көру үшін мына жерді басыңыз.
Ұсынылған:
COVID-19 бақылау тақтасы (қарапайым және қарапайым): 4 қадам
COVID-19 бақылау тақтасы (қарапайым және қарапайым): барлық жерде жаңа COVID-19 вирусының өршуі байқалады. Елдегі COVID-19 сценарийін қадағалау қажет болды. Сонымен, мен үйде отырып, бұл туралы ойладым: " Ақпараттық бақылау тақтасы " - Да
Қарапайым және қарапайым өрмекші адам: 12 қадам
Қарапайым және қарапайым Өрмекші-Адам: Сіз Өрмекші-Адам фильмін көрдіңіз бе? Өрмекші-адам комиксі? Өрмекші-Адамға қатысты бірдеңе жоқ па? Өрмекші адам барлық жерде сияқты. Неге қарапайым веб-атқыш жасамасқа? Біршама жаттығудан кейін мен үй материалдарынан жасауға болатын дизайн жасадым
Құлыптау экранын 6 қарапайым қадаммен өзгертудің жылдам және қарапайым әдісі (Windows 8-10): 7 қадам
Құлыптау экранын 6 қарапайым қадаммен өзгертудің жылдам және қарапайым әдісі (Windows 8-10): Ноутбукте немесе компьютерде жағдайды өзгерткіңіз келе ме? Сіздің атмосфераңыздың өзгеруін қалайсыз ба? Компьютердің құлыптау экранын сәтті жекелендіру үшін мына жылдам және қарапайым қадамдарды орындаңыз
ПХД дизайны қарапайым және қарапайым қадамдармен: 30 қадам (суреттермен)
ПХД дизайны қарапайым және қарапайым қадамдармен: СӘЛЕМ ДОСТАР ПХД дизайнын үйренгісі келетіндер үшін өте пайдалы және қарапайым оқулық басталады
Ноутбуктің қарапайым және қарапайым тірегі: 4 қадам
Ноутбуктің қарапайым және қарапайым тірегі: Мен ноутбукке ауа ағынын алатын ноутбукке арналған көптеген дүкендерді қарадым, бірақ мен оны тіземде қолдануға болатын орын. Мен қалағанымдай ештеңе таппадым, сондықтан мен өз қолыммен жасауға шешім қабылдадым