Mundarija:
- 1 -qadam: Essentials (aslida emas)
- 2 -qadam: kuchlanish bo'luvchi
- 3 -qadam: kuchlanish bo'linadigan narvon
- 4 -qadam: Xulosa
Video: Bir nechta MCU pinli ko'plab kalitlarni qanday o'qish kerak: 4 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:29
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
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
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:
Bitta analog pin yordamida bir nechta analog qiymatlarni qanday o'qish mumkin: 6 qadam (rasmlar bilan)
Bitta analog pin yordamida bir nechta analog qiymatlarni qanday o'qish mumkin: Men bu qo'llanmada sizga faqat bitta analog kirish pinidan foydalanib, bir nechta analog qiymatlarni o'qishni ko'rsataman
ESP32 va ESP8266 yordamida ESP-NOW orqali bir nechta ESP suhbatini qanday qilish kerak: 8 qadam
ESP32 va ESP8266 yordamida ESP-NOW orqali bir nechta ESP suhbatini qanday o'tkazish kerak: Men davom etayotgan loyihada yo'riqchisiz bir-birim bilan gaplashish uchun menga bir nechta ESP kerak. Buning uchun men ESP-NOW-dan foydalanib, ESP-da yo'riqchisiz bir-birim bilan simsiz aloqa o'rnataman
Arduino bir nechta fayllar bilan ishlash (O'QISH/YOZISH): 4 qadam
Arduino bir nechta fayllar bilan ishlaydi (O'QING/YOZING): Salom bolalar, bugun men sizga ma'lumotlarni saqlaydigan RTC qalqoni bilan ishlaydigan Arduino loyihasini taqdim etaman. Loyihaning asosiy vazifasi - sc kartada saqlanadigan bir nechta fayllar bilan ishlash. Ushbu loyihada uchta fayl bilan ishlaydigan kod mavjud
Bir nechta mikrokontroldan bir nechta LEDni qanday chiqarish mumkin: 6 qadam (rasmlar bilan)
Bir nechta mikroto'lqinli pinlardan qanday qilib ko'p LEDlarni haydash mumkin: Ko'pgina mikrokontrolderlarning uch holatida (+V, GND yoki "yuqori impedansli") mavjudligidan foydalanib, siz N pinli N*(N-1) LEDlarni boshqarishingiz mumkin. Shunday qilib, PIC12Fxxx yoki ATtiny11 kabi 8pinli mikrokontroller beshta mavjud 20 ta LEDni boshqarishi mumkin
ISP 6 pinli 8 pinli rozetkaga: 4 qadam
ISP 6 -pinli 8 -pinli rozetkaga: Men bu loyihani asosan 8 pinli ulanishga ega bo'lgan ATTiny45 -ni dasturlashim kerak edi, mening USBtinyISP -da (Ladyada -dan) faqat 10 -pinli va 6 -pinli ulanish mavjud. Taxminan 3-4 hafta mobaynida Internetni aylanib chiqqach, hech narsa topolmadim