Mundarija:

DIP Tune Selector 1 Pin yordamida: 4 qadam
DIP Tune Selector 1 Pin yordamida: 4 qadam

Video: DIP Tune Selector 1 Pin yordamida: 4 qadam

Video: DIP Tune Selector 1 Pin yordamida: 4 qadam
Video: Обзор и сравнение BSIDE ZT-Y2 и мультиметра BSIDE ZT-Y ну и мультиметр BSIDE ZT-X 2024, Noyabr
Anonim
1 pin yordamida DIP Tune Selector
1 pin yordamida DIP Tune Selector

Biroz oldin men "musiqiy quti" loyihasida ishladim, u 10 tagacha turli xil sozlamalardan birini tanlashi kerak edi. Muayyan ohangni tanlashning tabiiy tanlovi 4 pinli o'tish tugmasi edi, chunki 4 ta kalit 2 ni ta'minlaydi4= 16 xil sozlamalar. Biroq, bu yondashuvni qo'pol kuch bilan amalga oshirish uchun har bir kalit uchun bittadan 4 ta qurilma pimi kerak. Men ATtiny85 -ni ishlab chiqish uchun ishlatishni rejalashtirganim uchun, 4 ta pinni yo'qotish juda ko'p edi. Yaxshiyamki, men bir nechta kalitli kirishni boshqarish uchun 1 analog pinni ishlatishning ajoyib usulini tasvirlaydigan maqolaga duch keldim.

Multi-switch; 1-kiritish texnikasi, kuchlanishning bo'linishi sxemasidan foydalanadi, 16 ta mumkin bo'lgan kalit sozlamalari kombinatsiyasining har biri uchun yagona tamsayı qiymatini beradi. Bu 16 ta butun sonli identifikatorlar to'plami, keyin dasturni amalni sozlamaga bog'lash uchun ishlatiladi.

Bu yo'riqnomada musiqa qutisi uchun sozlashni tanlash uchun ko'p kalitli usul qo'llaniladi. Keyin tanlangan ohang Arduino ohang funktsiyasidan foydalangan holda piezo buzzer orqali ijro etiladi.

1 -qadam: Kerakli apparat

Kerakli apparat
Kerakli apparat

Birlashgan Millatlar Tashkilotidan foydalanish platformasi sifatida foydalanish zarur apparat komponentlari sonini kamaytiradi. Ko'p kalitli kirish usulini amalga oshirish uchun faqat 4-pinli o'tish moslamasi, kuchlanish taqsimlagichi uchun ishlatiladigan 5 rezistor va ulanish uchun ulash simlari kerak bo'ladi. Musiqa qutisi sozlagichini amalga oshirish uchun konfiguratsiyaga piezo -signal qo'shiladi. Ixtiyoriy ravishda, ishlatilgan tushirish moslamasining turiga qarab, 2x4 o'lchamli 8 pinli rozetkani ulash paneliga ulash foydalidir, chunki standart burilish tugmachalari to'g'ridan -to'g'ri non paneliga ulanmagan perford taxtasiga lehimlash uchun qilinganga o'xshaydi. Soket tushirish tugmachalari ulanishlarini barqarorlashtiradi va almashtirish tugmachalarini o'rnatishda kalitni osongina ko'tarilishining oldini oladi.

Ism Mumkin bo'lgan manba Qanday ishlatilgan
4-pinli kalit Tanlovni sozlash
2x4 pinli rozetka (ixtiyoriy) Amazon Ko'pgina tushirish tugmachasidagi yozuvlar kalitni kalit taxtada yaxshi ushlab turmaydi. Soket ulanishni yanada mustahkam qilishga yordam beradi. Muqobil variant - bu oddiy IC pimlari bilan non panelida ishlatish uchun chindan ham yaratilgan tushirish kalitini topish.

rezistorlar:

  • 10K x2
  • 20K
  • 40K
  • 80K
Voltaj bo'linishini amalga oshirish
passiv piezo signal Amazon Arduino ohang funktsiyasi orqali ilova tomonidan boshqariladigan ohangni ijro eting

2-qadam: Ko'p kalitli usulni tushuntirish

Ko'p kalitli usulni tushuntirish
Ko'p kalitli usulni tushuntirish

Bu bo'limda ko'p kalitli usulning asosiy tushunchalari muhokama qilinadi va 16 ta mumkin bo'lgan dip-switch sozlamalari konfiguratsiyalarining har biri uchun yagona identifikatorlarni mustaqil hisoblash uchun zarur bo'lgan tenglamalar ishlab chiqiladi. Bu identifikatorlar keyinchalik dastur konfiguratsiyasini amal bilan bog'lash uchun ishlatilishi mumkin. Masalan, siz sozlamani xohlaysiz - 1 -ni yoqing, 2 -ni o'chiring, 3 -ni o'chiring, 4 -ni o'chiring (1, 0, 0, 0) - Amazing Grace -ni o'ynang va (0, 1, 0, 0) o'ynang. Sher bugun kechasi uxlaydi. Qisqa va aniq bo'lishi uchun konfiguratsiya identifikatorlari hujjatning qolgan qismida taqqoslagichlar deb ataladi.

Rasm
Rasm

Ko'p kalitli usulning asosiy kontseptsiyasi kirish voltajiga ulangan 2 ta ketma-ket rezistordan tashkil topgan kuchlanish bo'luvchi sxemasi. Chiqish kuchlanish simlari rezistorlar orasiga ulangan, R1 va R.2, yuqorida ko'rsatilganidek. Ajratuvchi chiqish zo'riqishida R kuchlanish qarshiligiga ko'paytirilgan kirish voltaji sifatida hisoblanadi2 R yig'indisiga1 va R.2 (tenglama 1). Bu nisbat har doim 1dan past bo'ladi, shuning uchun chiqish voltaji har doim kirish voltajidan kichik bo'ladi.

Dizayn diagrammasida ko'rsatilganidek, ko'p kalit R bilan kuchlanish bo'luvchi sifatida tuzilgan2 sobit va R.1 4 dip switch rezistorlar uchun kompozit/ekvivalent qarshilikka teng. R qiymati1 qaysi tushirish kalitlari yoqilganiga bog'liq va shuning uchun kompozit qarshilikka hissa qo'shadi. Chiqib ketish rezistorlari parallel bo'lgani uchun, ekvivalent qarshilik hisoblash tenglamasi komponentli rezistorlarning o'zaro nisbati bilan ifodalanadi. Bizning konfiguratsiyamiz va barcha kalitlar yoqilgan bo'lsa, tenglama bo'ladi

1/R1 = 1/80000 + 1/40000 + 1/20000 + 1/10000

R berish1 = 5333,33 volts. Ko'pgina sozlamalarda hech bo'lmaganda bitta kalit o'chirilganligini hisobga olish uchun kalit holati ko'paytirgich sifatida ishlatiladi:

1/R1 = s1*1/80000 + s2*1/40000 + s3*1/20000 + s4*1/10000 (2)

bu erda davlat multiplikatori, si, agar kalit yoqilgan bo'lsa 1 ga, agar o'chirilgan bo'lsa 0 ga teng. R1 Endi 1 -tenglamada zarur bo'lgan qarshilik koeffitsientini hisoblash uchun foydalanish mumkin. Hamma kalitlar yana yoqilgan holatda misol sifatida

NISBI = R2/(R.1+R2) = 10000/(5333.33+10000) =.6522

Bashorat qilinadigan taqqoslash qiymatini hisoblashning oxirgi bosqichi analogRead funktsiyasini taqlid qilish uchun 1023 ga RATIO ni ko'paytirishdir. Barcha kalitlar yoqilgan holat uchun identifikator

taqqoslovchi15 = 1023*.6522 = 667

16 ta mumkin bo'lgan kalit sozlamalari uchun identifikatorlarni hisoblash uchun barcha tenglamalar tayyor. Xulosa qilish uchun:

  1. R1 2 -tenglama yordamida hisoblanadi
  2. R1 va R.2 RATIO bilan bog'liq qarshilikni hisoblash uchun ishlatiladi
  3. RATIO 1023 ga ko'paytirib, qiyosiy qiymatni oladi
  4. ixtiyoriy ravishda, taxmin qilingan chiqish voltajini RATIO*Vin sifatida ham hisoblash mumkin

Taqqoslagichlar to'plami faqat kuchlanish bo'luvchi uchun ishlatiladigan qarshilik qiymatlariga bog'liq va konfiguratsiya uchun yagona imzo hisoblanadi. Ajratuvchi chiqish kuchlanishlari yugurishdan yugurishga (va o'qishdan o'qishga) o'zgarib turishi sababli, bu nuqtai nazardan o'ziga xosligi shuni anglatadiki, identifikatorlarning ikkita to'plami aynan bir xil bo'lmasligi mumkin, shuning uchun ular komponent taqqoslagichining farqlari kichik masofaga to'g'ri keladi. belgilangan interval. Interval o'lchami parametrini kutilgan tebranishlarni hisobga oladigan darajada katta tanlash kerak, lekin har xil kalit sozlamalari bir -biriga mos kelmaydigan darajada kichik. Odatda 7 yarim kenglik oralig'ida yaxshi ishlaydi.

Muayyan konfiguratsiya uchun taqqoslagichlar to'plamini bir necha usul bilan olish mumkin - demo dasturini ishga tushirish va har bir parametr uchun qiymatlarni yozib olish; hisoblash uchun keyingi qismdagi elektron jadvaldan foydalaning; mavjud to'plamni nusxalash. Yuqorida aytib o'tilganidek, barcha to'plamlar biroz boshqacha bo'lishi mumkin, lekin ular ishlashi kerak. Agar ko'p rezistorlar o'zgarsa yoki undan ko'p rezistorlar qo'shilsa, men ko'p tugmachali sozlash uchun muallif identifikatorlari to'plamini va keyingi qismdagi elektron jadvalni ishlatishni taklif qilaman.

Quyidagi demo dasturi taqqoslagichlarning joriy tushirish sozlamalarini aniqlash uchun ishlatilishini ko'rsatadi. Har bir dastur tsiklida joriy konfiguratsiya identifikatorini olish uchun analogRead amalga oshiriladi. Bu identifikator mos keluvchi topilmaguncha yoki ro'yxat tugaguncha taqqoslagichlar ro'yxatida taqqoslanadi. Agar moslik topilsa, tekshirish uchun chiqish xabari chiqariladi; topilmasa, ogohlantirish beriladi. 3 soniya kechikish kiritiladi, shunda ketma -ket chiqish oynasi xabarlar bilan to'lib ketmaydi va tushirish tugmasi konfiguratsiyasini tiklashga biroz vaqt beradi.

//-------------------------------------------------------------------------------------

// Demo dasturi, kuchlanish taqsimlagichining chiqishini o'qish va undan har bir mumkin bo'lgan parametr uchun // taqqoslash qiymatlari qatorida chiqish qiymatini qidirish orqali // joriy tushirish kaliti konfiguratsiyasini aniqlash uchun foydalanish. Qidiruv majmuasidagi qiymatlarni // konfiguratsiya uchun oldingi ishga tushirish yoki tayanch tenglamalar asosida hisoblash // orqali olish mumkin. // ------------------------------------------------ -------------------------------------- int solishtiruvchi [16] = {0, 111, 203, 276, 339, 393, 434, 478, 510, 542, 567, 590, 614, 632, 651, 667}; // ishlov berish o'zgaruvchilarini belgilang int dipPin = A0; // kuchlanish bo'luvchi kirish uchun analog pin int dipIn = 0; // analog tomonidan tarjima qilingan bo'luvchi kuchlanish chiqishini ushlab turadiRead int count = 0; // loop hisoblagichi int epsilon = 7; // taqqoslash oralig'i yarim kenglik bool dipFound = false; // rost, agar joriy kuchlanishni ajratuvchi chiqish jadvalining bo'sh joyini sozlashda topilsa () {pinMode (dipPin, INPUT); // kuchlanish bo'luvchi pinini INPUT Serial.begin (9600) sifatida sozlash; // ketma -ket aloqani yoqish} void loop () {delay (3000); // chiqishni juda tez aylantirishdan saqlang // Qidiruv parametrlarini ishga tushiring count = 0; dipFound = noto'g'ri; // O'qing va hujjatlashtiring joriy chiqish kuchlanish dipIn = analogRead (dipPin); Serial.print ("ajratuvchi chiqish"); Serial.print (dipIn); // Hozirgi qiymat uchun taqqoslagichlar ro'yxatini qidiring ((hisoblash <16) && (! DipFound)) {if (abs (dipIn - solishtiruvchi [hisoblash]) <= epsilon) {// topildi dipFound = rost; Serial.print ("kirishda topilgan"); Ketma -ket chop etish (hisoblash); Serial.println ("qiymat" + String (taqqoslovchi [hisoblash])); tanaffus; } hisoblash ++; } if (! dipFound) {// qiymati jadvalda emas; sodir bo'lmasligi kerak Serial.println ("OOPS! Topilmadi; Ghost Bustersga qo'ng'iroq qilish yaxshiroq"); }}

3 -qadam: solishtiruvchi elektron jadval

Rasm
Rasm

16 komparator qiymatlari uchun hisoblar yuqorida ko'rsatilgan elektron jadvalda keltirilgan. Qo'shilgan excel faylini ushbu bo'limning pastki qismida yuklab olish mumkin.

A-D elektron jadval ustunlari qarshilik rezistorlarining qiymatlarini va 16 ta mumkin bo'lgan kalit sozlamalarini qayd qiladi. Shuni esda tutingki, dizayn sxemasida ko'rsatilgan apparat DIP kaliti elektron jadvalda ko'rsatilgan o'ngdan chapga raqamlash o'rniga chapdan o'ngga raqamlangan. Men buni biroz chalkash deb topdim, lekin alternativa "1" konfiguratsiyasini (0, 0, 0, 1) ro'yxatning birinchi qismiga qo'ymaydi. E ustuni oldingi bo'linmaning 2 -formulasidan foydalanadi1 sozlash uchun. F ustuni ushbu natijani RATIO bilan bog'liq qarshilikni hisoblash uchun ishlatadi va nihoyat, G ustuni taxmin qilingan taqqoslash qiymatini olish uchun RATIO ni analogRead max qiymatiga (1023) ko'paytiradi. Oxirgi 2 ustunda demo dasturining haqiqiy qiymatlari, bashorat qilingan va haqiqiy qiymatlar o'rtasidagi farqlar mavjud.

Oldingi bo'limda, agar qarshilik qiymatlari sezilarli darajada o'zgartirilsa yoki ko'proq kalitlar qo'shilsa, ushbu jadvalni kengaytirishni o'z ichiga olgan taqqoslovchi qiymatlar to'plamini olishning uchta usuli aytib o'tilgan. Ko'rinib turibdiki, qarshilik qiymatlaridagi kichik farqlar yakuniy natijalarga sezilarli ta'sir ko'rsatmaydi (bu yaxshi, chunki qarshilik ko'rsatkichlari bardoshlik beradi, 5%deylik va qarshilik kamdan -kam hollarda uning haqiqiy ko'rsatilgan qiymatiga teng).

4 -qadam: Musiqani ijro eting

Musiqa ijro etish
Musiqa ijro etish

Ilovada ko'p kommutatorli texnikani qanday ishlatish mumkinligini ko'rsatish uchun, "Uslubni tushuntirish" bo'limidagi taqqoslash demo dasturi, musiqa qutisi dasturi uchun ohang tanlash jarayonini amalga oshirish uchun o'zgartiriladi. Yangilangan dastur konfiguratsiyasi yuqorida ko'rsatilgan. Uskuna uchun yagona qo'shimcha - bu tanlangan musiqani ijro etish uchun passiv piezo signal. Dasturiy ta'minotning asosiy o'zgarishi - bu signal va Arduino ohangidan foydalanib, ohangni ijro etish tartibini qo'shish.

Mavjud sozlamalar parchalari Tunes.h sarlavhali faylda va kerakli qo'llab -quvvatlash tuzilmalari ta'rifi bilan birga mavjud. Har bir kuy notaning chastotasi va davomiyligini o'z ichiga olgan notalar bilan bog'liq tuzilmalar qatori sifatida belgilanadi. Eslatmalar chastotalari alohida sarlavhali faylda, Pitch.h. Dastur va sarlavha fayllarini ushbu bo'lim oxirida yuklab olish mumkin. Barcha uchta fayl bitta katalogga joylashtirilishi kerak.

Tanlash va identifikatsiyalash quyidagicha amalga oshiriladi:

  1. "Foydalanuvchi" kerakli sozlash bilan bog'liq bo'lgan konfiguratsiyadagi o'tish tugmachalarini o'rnatadi
  2. har bir dastur tsikli joriy tushirish moslamasi identifikatorini analogRead orqali oladi
  3. 2 -qadam konfiguratsiya identifikatori mavjud sozlamalar ro'yxatidagi har bir taqqoslagich bilan solishtiriladi
  4. Agar o'yin topilsa, playTune tartibi sozlar ro'yxatiga kirish uchun zarur bo'lgan ma'lumotlar bilan chaqiriladi

    Arduino ohang funktsiyasidan foydalangan holda, har bir nota ovozli signal orqali eshitiladi

  5. Agar mos kelmasa, hech qanday chora ko'rilmaydi
  6. 1-5 ni takrorlang

Mavjud kuylar uchun DIP tugmachalari sozlamalari quyidagi jadvalda ko'rsatilgan, bu erda 1 ta kalit yoqilgan, 0 o'chirilgan. Eslatib o'tamiz, tushirish tugmasi qanday yo'naltirilgan bo'lsa, 1-tugmachani chap tomonda (80K qarshilik bilan bog'liq) joylashtiradi.

NOMI Kalit 1 2 -kalit Kalit 3 Kalit 4
Denni Boy 1 0 0 0
Kichik ayiq 0 1 0 0
Sher bugun kechasi uxlaydi 1 1 0 0
Hech kim muammoni bilmaydi 0 0 1 0
Ajoyib joziba 0 0 0 1
Bo'sh joy 1 0 0 1
MockingBird Hill 1 0 1 1

Piezo signalining ovoz sifati, albatta, unchalik yaxshi emas, lekin uni hech bo'lmaganda tanib olish mumkin. Aslida, agar ohanglar o'lchanadigan bo'lsa, ular aniq chastotaga juda yaqin. Dasturda qo'llaniladigan qiziqarli usullardan biri bu PROGMEM ko'rsatmasidan foydalanib, ma'lumotni standart xotira bo'limi o'rniga flesh/dastur xotirasi bo'limida saqlashdir. Ma'lumotlar bo'limi dasturni qayta ishlash parametrlarini o'z ichiga oladi va juda kichik, ATtiny mikrokontrollerlarining ba'zilari uchun taxminan 512 bayt.

Tavsiya: