Агуулгын хүснэгт:
Видео: Энгийн Ротари декодер: 4 алхам
2024 Зохиолч: John Day | [email protected]. Хамгийн сүүлд өөрчлөгдсөн: 2024-01-30 11:03
Энэхүү зааварчилгаа нь Arduino Uno R3 ашиглан дараалсан эргэлддэг кодлогчийг тайлах энгийн аргыг тайлбарласан болно.
Компакт програм хангамжийн горимыг шилжилтийн тоог тоолох, холбоо барих үсрэлтийг арилгах, эргэлтийн чиглэлийг тодорхойлоход ашигладаг. Нэмэлт бүрэлдэхүүн хэсгүүд болон хайлтын хүснэгт шаардлагагүй.
Кодын тасалдал болон тасалдалгүй хувилбаруудыг оруулсан болно.
Кодын тасалдлын хувилбарт зөвхөн нэг таслах зүү шаардлагатай.
Зураг:
- Нээлтийн зураг дээр угсарсан кодлогч харагдаж байна.
- Дэлгэцийн зураг нь тасалдаг хувилбарын код болон кодлогчийн босоо амыг цагийн зүүний дагуу, цагийн зүүний эсрэг эргүүлэх үеийн тооллогыг харуулна.
- Видео нь хурдан эргүүлэх үед тооллогыг харуулав.
Алхам 1: Хэлхээ диаграм
Кодлогчын холболтын диаграммыг зурагт үзүүлэв.
Холбогч утаснууд нь кодлогч тээглүүрт шууд гагнагддаг.
Хэрэв тоолох чиглэл өөрчлөгдсөн бол хоёр цэнхэр утсыг солино уу.
Алхам 2: эд ангиудын жагсаалт
Дараах хэсгүүдийг https://www.aliexpress.com/ дээрээс авсан болно.
- USB кабель бүхий зөвхөн 1 Arduino UNO R3.
- 1 нь зөвхөн шилжүүлэгчтэй дараалсан эргэлддэг кодлогч (EC11 эсвэл түүнтэй адилтгах).
- Босоо аманд тохирсон 1 товчлуур.
- 3 зөвхөн Arduino эрэгтэй-эрэгтэй холбогч утас.
Алхам 3: Онол
Дараалсан эргэлддэг кодлогч нь 2 квадрат долгион үүсгэдэг бөгөөд тус бүрийг 1-р зурагт үзүүлсэн шиг 90 градусаар нүүлгэн шилжүүлдэг.
Босоо амыг цагийн зүүний дагуу (CW), цагийн зүүний эсрэг (CCW) 1 -ээс 6 -р байрлалд эргүүлэх үед A ба B контактын логик загварууд өөр өөр байдаг.
Эргэлтийн чиглэлийг тодорхойлох нийтлэг аргуудад дараахь зүйлс орно.
- техник хангамж
- ихэр тасалдаг
- загвар хайх хүснэгтүүд
Энэ төсөл нь хайлтын хүснэгт шаарддаггүй програм хангамжийн аргыг ашигладаг. [1]
Чиглэл
Contact A ба Contact B -ийн гаралтын загварыг харахын оронд А холбоо барихад анхаарлаа хандуулцгаая.
Хэрэв бид Холбоо барих A шилжилт бүрийн дараа В контактийг түүвэрлэн авч үзвэл дараахь зүйлийг анхаарна уу.
- Контактын А ба Контактын В нь кодлогчыг CW эргүүлэх үед эсрэг логик төлөвтэй байдаг
- Кодлогчийг CCW эргүүлэх үед А холбоо ба В холбоо нь ижил логик төлөвтэй байна
Бодит код:
// ----- Шилжилтийг тоолох
CurrentStateA = stateContactA (); if (CurrentStateA! = LastStateA) {CurrentStateB = digitalRead (ContactB); if (CurrentStateA == CurrentStateB) Count ++; if (CurrentStateA! = CurrentStateB) Count--; LastStateA = CurrentStateA; }
Энэ арга нь дараахь давуу талуудыг санал болгодог.
- хайлтын хүснэгт шаардлагагүй
- зөвхөн нэг тасалдлын шугам шаардлагатай
Татгалзах
Бүх механик кодлогч нь "холбоо барих үсрэлт" -ээс болж зовдог.
Хэрэв унтраалгын контакт цэвэрхэн хийгдэхгүй/эвдэрч чадахгүй байвал түүний логик төлөв нь шилжих контакт суух хүртэл HIGH -аас LOW хүртэл хурдан хэлбэлзэх болно. Үүний үр дүнд хуурамч тооллого хийдэг.
Холбоо барих үсрэлтийг дарах нэг арга бол шилжүүлэгч контакт бүрт жижиг конденсатор нэмэх явдал юм. Конденсатор ба түүнтэй холбоотой татах эсэргүүцэл нь өндөр давтамжийг үр дүнтэй богиносгодог интеграторыг бүрдүүлдэг бөгөөд унтраалгын хүчдэлийг аятайхан өсгөж/бууруулдаг.
Энэхүү аргын сул тал нь кодлогч босоо амыг хурдан эргүүлэх тохиолдолд шилжилтийг орхигдуулж болзошгүй юм.
Програм хангамжийн дебютээ хийх
Энэ арга нь тэг гэж тохируулсан хоёр тоолуур (Нээлттэй, Хаалттай) ашигладаг. [2]
Холбоо барих А дээр шилжилт илэрсэн бол:
- А -тай холбоо бариарай.
- Нээлттэй тоолуурыг нэмэгдүүлж, А контакт өндөр байх үед Хаалттай тоолуурыг дахин тохируулна уу.
- Хаалттай тоолуурыг нэмэгдүүлж, А контактын хэмжээ бага байх үед Нээлттэй тоолуурыг дахин тохируулна уу.
- Тоолуурын аль нэг нь урьдчилан тогтоосон тоонд хүрэх үед давталтаас гарна уу. Бид ямар ч холбоо барих үсрэлтийн дараах тогтвортой байдлын хугацааг үр дүнтэй хайж байна.
Бодит код:
// ----- Холбоо барихыг хасах А.
while (1) {if (digitalRead (ContactA)) {// ----- ContactA is Open Closed = 0; // Хоосон эсрэг интегратор Нээлттэй ++; // Хэрэв (Нээлттэй> MaxCount) HIGH буцаах бол нэгтгэх; } else {// ----- ContactA хаалттай байна = 0; // Хоосон эсрэг интегратор Хаалттай ++; // Хэрэв (Closed> 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/en/main/software дээрээс авах боломжтой Ardino Uno R3 IDE (хөгжлийн нэгдсэн орчин) сүүлийн үеийн хувилбар шаардлагатай.
Дараах хоёр Arduino ноорог тус бүрийг татаж авна уу (хавсаргасан болно)
- rotary_encoder_1.ino (санал асуулгын хувилбар)
- rotary_encoder_2. үгүй (тасалдсан хувилбар)
Өөрт таалагдсан хувилбар дээрээ давхар товшоод дэлгэц дээрх зааврыг дагана уу.
Сайхан амраарай…
Миний бусад зааварчилгааг үзэх бол энд дарна уу.
Зөвлөмж болгож буй:
LabDroid: Морз кодын кодлогч/декодер: 4 алхам
LabDroid: Морз кодын кодлогч/декодер: Анхаарна уу: Энэхүү зааврыг LabDroid -ийн хамгийн сүүлийн хувилбарт 1: 1 -ээр хэрэгжүүлэх боломжгүй. Энэхүү төсөл нь LabDroid дээр юу хийж болохыг харуулах болно. Сайн уу Ертөнцийг ихэвчлэн текст, гэрэл эсвэл дуунд үндэслэдэг тул LabDr -ийн талаар бодож үзсэн
Хоёртын мод Морзын декодер: 7 алхам (зурагтай)
Хоёртын мод Морзын декодер: a.articles {font-size: 110.0%; фонтын жин: тод; фонтын хэв маяг: налуу; текст чимэглэл: байхгүй; background-color: red;} a.articles: hover {background-color: black;} Энэхүү зааварчилгаа нь Arduino Uno R3.T ашиглан Морзын кодыг хэрхэн тайлах талаар тайлбарласан болно
Номын сангүй RC5 алсын удирдлагатай протокол декодер: 4 алхам
Номын сангүй RC5 алсын удирдлагатай протоколын декодер: rc5 -ийг декодлохын өмнө эхлээд rc5 тушаал гэж юу болох, түүний бүтэц юу болохыг ярилцана. Телевиз, cd тоглуулагч, d2h, гэрийн театрын систем гэх мэт алсын удирдлагад ашигладаг rc5 команд нь үндсэндээ 13 эсвэл 14 битээр тоноглогдсон байдаг
Arduino ашиглан IR алсын удирдлагатай декодер: 7 алхам
Arduino ашиглан IR алсын удирдлагатай декодер: Сайн байна уу, энэ бол дурын IR алсын удирдлагыг хэрхэн тайлах талаархи бүрэн заавар юм. Доорх миний алхамуудыг дагана уу
Arduino RF мэдрэгч декодер: 5 алхам
Arduino RF Sensor Decoder: Миний өмнөх байшинд хаалганы мэдрэгч, хөдөлгөөн мэдрэгч, хяналтын самбар бүхий хамгаалалтын систем суурилуулсан. Бүх зүйлийг шүүгээний том электрон хайрцагт хатуу холбосон бөгөөд суурин утсыг автоматаар холбох заавар байсан