Mundarija:

Bir nechta MCU pinli ko'plab kalitlarni qanday o'qish kerak: 4 qadam
Bir nechta MCU pinli ko'plab kalitlarni qanday o'qish kerak: 4 qadam

Video: Bir nechta MCU pinli ko'plab kalitlarni qanday o'qish kerak: 4 qadam

Video: Bir nechta MCU pinli ko'plab kalitlarni qanday o'qish kerak: 4 qadam
Video: Eng kerakli 10 ta siz bilmagan shortcutlar. 10 amazing shortcuts. 10 лучшие горячие клавиши.. 2024, Noyabr
Anonim
Bir nechta MCU pinli ko'plab kalitlarni qanday o'qish kerak
Bir nechta MCU pinli ko'plab kalitlarni qanday o'qish kerak

Siz hech qachon biron bir loyihani (loyihalarni) chetlab o'tganmisiz va loyiha o'sib boraveradi, siz esa unga ko'proq narsalarni qo'shasiz (biz buni Feaping Creaturism deb ataymiz)? Yaqinda o'tkazilgan loyihada men chastota o'lchagichini qurardim va beshta funktsiyali signal generatori/chastota sintezatorini qo'shdim. Men tez orada menda qolgan pinlarimdan ko'ra ko'proq kalitlarga ega bo'ldim, shuning uchun yigit nima qilishi kerak?

Biroq, tez orada menda Funbox -da yana etti kalit bor edi (ha, men buni funktsiya generatorim deb ataganman … bilaman, menda ijodkorlik yo'q) va bu erda sizga qanday qilib buni qilishingiz mumkinligini ko'rsatib beradi. Bu smenali registrlarni yoki maxsus ICni talab qilmaydi. Aslida, agar siz yarimo'tkazgichlar aylanayotgan bo'lsa, u mikrokontrollerni talab qilmaydi. AVR -da (yoki boshqa mikrokontrollerda … AVR -dan boshqa mikrokontrollerlar borligini eshitganman, lekin men tasavvur qila olmayman) bir nechta kalitlarni o'qish/boshqarishning bir usuli.:)

1 -qadam: Essentials (aslida emas)

Buni amalga oshirish uchun sizga bir nechta komponentlar kerak bo'ladi. Bu siz boshqarishingiz kerak bo'lgan ko'p sonli kalitlarga ega bo'lishga yordam beradi. Bundan tashqari, sizga ba'zi rezistorlar yoki ADC (analogdan raqamli konvertatsiya) bo'lgan mikrokontroller yoki kalit yoqilganligini va u qaysi kalit ekanligini ko'rsatishni xohlaysiz.

Agar xohlasangiz, buni bildirish uchun voltaj boshqariladigan osilatordan foydalanishingiz mumkin, ehtimol miltillovchi chiroqlar bilan, yoki ovoz bilan. Bu kitobda men AVRdan foydalanayapmiz deb o'ylayman, lekin sizning dunyomizda sizni baxtli qiladigan narsaga o'xshaysiz. Bob Rossni sog'indim.

2 -qadam: kuchlanish bo'luvchi

Voltaj bo'linishi
Voltaj bo'linishi
Voltaj bo'linishi
Voltaj bo'linishi

Asosan, biz buni kuch taqsimlagich deb ataladigan texnika va sxemadan foydalanishimiz kerak. Voltaj bo'linuvchilari, siz taxmin qilganingizdek, V,, in, kuchlanishini siz belgilagan qiymatga bo'linadi. Siz kuchlanishni kondensatorlar va induktorlarni o'z ichiga olgan bir nechta komponentlarga bo'lishingiz mumkin, lekin bu erda men buni yaxshi qarshilik bilan qilaman. Biz qilayotgan g'oya - bu ikkita komponentni ketma -ket joylashtirish, ularning har biri alohida -alohida, kuchlanishning pasayishiga olib keladi. Agar mantiqiy bo'lmasa, birinchi rasmga qarang. Temir yo'ldan temir yo'lgacha 9V potentsial farq mavjud. 9V va 0V o'rtasida ketma -ket ikkita qarshilik mavjud. Bularning har biri qarshilikka qarab o'z -o'zidan kuchlanish pasayishiga duch keladi, ehtimol siz V = IR dan eslaysiz. Agar siz ikkita rezistor o'rtasida kuchlanish o'lchovini olsangiz, siz birinchi rezistorda qancha kuchlanish tushib ketganiga va 2V qarshiligidan qancha tushishiga qolganiga qarab, 9V dan 0V gacha bo'lgan qiymatga ega bo'lasiz. Bunday vaziyatda qarshilik qarshiligidagi kuchlanish pasayishini hisoblashning oddiy formulasi mavjud va u shunday ko'rinadi. Rezistor 1 (R1) ustidagi kuchlanish V1 va qarshilik 2 (R2) ustidagi kuchlanish V2 bo'lsin. Men endi formatlashni ishlata olmasligim uchun, formulani quyida keltirilgan 2 -rasmga qarang … Shunday qilib, bizning rezistiv bo'linishimizda Vout kuchlanishini V2 formulamiz bilan aniqlash mumkin (chunki biz GNDni 0V ga yo'naltiramiz). Buning bir pimdan bir nechta kalitlarni aniqlashga nima aloqasi bor? Xo'sh, sahifani aylantiring, men sizga ko'rsataman!

3 -qadam: kuchlanish bo'linadigan narvon

Voltajni ajratuvchi narvon
Voltajni ajratuvchi narvon

Faraz qilaylik, bizda hamma kalitlar, ehtimol olti yoki sakkiz yoki o'n oltitasi, rezistorlar orqali ulangan, ularning har biri kuchlanish bo'luvchi vazifasini bajaradi, shuning uchun kalit pimi holati o'zgarganda, kuchlanish o'qiladi va kuchlanish darajasiga qarab, biz qaysi kalit hozirgina faollashtirilganligini bilishi mumkin. Pastga qarang. Quyidagi rasmda men ikkita blokli kalitni uladim. Eng yuqori blokda ikkita kalit, eng pastda esa beshta kalit mavjud. Xuddi shu tarzda siz alohida o'tish, bir zumlik, teginish va hk kalitlarini ulashingiz mumkin. E'tibor qilish kerak bo'lgan asosiy narsa - bu sizning kalitingiz ulangan rezistor. Mening misolimda, keyingi rezistorning qarshiligini deyarli ikki barobarga oshirdim, bu esa kuchlanish oralig'ini o'lchash oson va kalitdan oldin yoki keyin xato qilmagan. Agar siz ilgari payqamagan bo'lsangiz, yana qarang va biz eski do'stimizga qarshilik kuchlanish taqsimlagichiga qaytganimizni tushunib oling. Birinchi qarshilik, 10k ohm, 5V ga ulanadi va 2 -qarshilik - V ni aniqlaydigan qarshilik.tashqariga SWITCH_ADC pin uchun, har bir kalitga ulangan va shuning uchun har bir kalit SWITCH_ADC ga ulangan ADC pinidan o'qilishi mumkin bo'lgan ma'lum bir Vout kuchlanish bilan bog'liq. Keyinchalik, har bir kalitdan kutilgan Voutni aniqlang

Vout = Vin * (R2 / (R1 + R2))

birinchi o'tish uchun:

Vout = 5V * (500 / (10000 + 500)) = 5 * 0,048 = 0,24V yoki 240 mV

ikkinchi kalit uchun:

Vout = 5V * (2200 / (10000 + 2200)) = 5 * 0.18 = 0.9V yoki ~ 900mV

va hokazo.. Agar sizda faqat ma'lum rezistorlar bo'lsa, o'z qiymatlaringizni R2 bilan almashtiring … Bu erda asosiy narsa, kalitlar orasidagi kuchlanishdagi etarlicha katta bo'shliqni saqlashdir, shunda ADCdagi xatoliklar chegarasi yutib chiqadi ' t sizni qo'shni kalitdan kutilgan voltajga qo'yadi. Men qilishning eng oson yo'li - bo'linadigan zinapoyani qurish va ADC piniga multimetr/voltmetrni qo'yish va har bir pinni bosib, qanday qiymatlarga ega bo'lishni ko'rish. Ular siz hisoblagan narsalarga to'g'ri kelishi kerak. Muayyan rezistor yordamida har bir kalitdan kutilgan barcha kuchlanish qiymatlari aniqlangandan so'ng, siz MCU -ni ADC pinini o'qib, uni ma'lum qiymatlar bilan solishtirib, qaysi kalit bosilganligini aniqlashingiz mumkin. Masalan, siz ADC pinida o'zgarish aniqlanganda chaqiriladigan uzilish xizmatini qayd qildingiz. ISR ichida siz ADC -ni o'qishingiz va bu qiymatni kalit jadvalingiz bilan solishtirishingiz mumkin. Agar siz 8-bitli ADC qiymatidan foydalansangiz, sizning kuchlanishingiz 0 dan 255 gacha bo'lgan raqamga aylanadi, bu 0V va 5V kuchlanishiga to'g'ri keladi. Bu sizning ADC -ni shunday tuzilgan deb taxmin qiladi.

4 -qadam: Xulosa

Shunday qilib, endi siz kalitlar uchun GPIO pinlarini ishlatishda tejamkor bo'lishni bilishingiz kerak. Qachonki sizda GPIO pinlari tugab qolsa, yoki hech narsadan boshlamasangiz, yoki agar siz kalitlardan foydalanmoqchi ekanligingizni tushunsangiz, qarshilik ko'rsatuvchi bo'linma GPIO pinlarini saqlashning yo'li. kalitlarga kirishni aniqlashning kuchli mexanizmi.

Tavsiya: