Բովանդակություն:

DIP համաժամեցման ընտրիչ ՝ օգտագործելով 1 պին ՝ 4 քայլ
DIP համաժամեցման ընտրիչ ՝ օգտագործելով 1 պին ՝ 4 քայլ

Video: DIP համաժամեցման ընտրիչ ՝ օգտագործելով 1 պին ՝ 4 քայլ

Video: DIP համաժամեցման ընտրիչ ՝ օգտագործելով 1 պին ՝ 4 քայլ
Video: Madrigal - Dip 2024, Դեկտեմբեր
Anonim
DIP համաժամեցման ընտրիչ ՝ օգտագործելով 1 պին
DIP համաժամեցման ընտրիչ ՝ օգտագործելով 1 պին

Որոշ ժամանակ առաջ ես աշխատում էի «երաժշտական տուփ» նախագծի վրա, որը պետք է ընտրեր մինչև 10 տարբեր մեղեդի հատվածների միջև: Բնական ընտրություն ՝ որոշակի մեղեդու ընտրության համար եղել է 4 փին անջատիչ, քանի որ 4 անջատիչն ապահովում է 24= 16 տարբեր պարամետրեր: Այնուամենայնիվ, այս մոտեցման համար դաժան ուժի կիրառումը պահանջում է 4 սարքի կապում, յուրաքանչյուրը յուրաքանչյուր անջատիչի համար: Քանի որ ես պլանավորում էի օգտագործել ATtiny85- ը զարգացման համար, 4 կապում կորուստը մի փոքր շատ էր: Բարեբախտաբար, ես հանդիպեցի մի հոդվածի, որը նկարագրում է 1 անալոգային քորոց օգտագործելու հնարամիտ մեթոդը `մի քանի անջատիչի մուտքերը կարգավորելու համար:

Բազմակողմանի անջատիչ; 1 մուտքագրման տեխնիկան օգտագործում է Լարման բաժանարար սխեմա `անջատիչի 16 հնարավոր համակցություններից յուրաքանչյուրի համար եզակի ամբողջ արժեք ապահովելու համար: 16 ամբողջ թվով նույնացուցիչների այս հավաքածուն այնուհետև կիրառվում է կիրառական ծրագրում ՝ գործողությունը կարգաբերման հետ կապելու համար:

Այս հրահանգը կիրառում է բազմակողմանի անջատիչ մեթոդը `երաժշտական տուփի հավելվածի համար մեղեդի ընտրություն իրականացնելու համար: Ընտրված մեղեդին այնուհետև նվագում է պիեզո ազդանշանի միջոցով ՝ օգտագործելով Arduino հնչերանգի գործառույթը:

Քայլ 1: Պահանջվող սարքավորում

Պահանջվող սարքավորում
Պահանջվող սարքավորում

ՄԱԿ -ի `որպես իրականացման հարթակի օգտագործումը նվազագույնի է հասցնում պահանջվող ապարատային բաղադրիչների քանակը: Բազմակողմանի մուտքագրման մեթոդի իրագործման համար պահանջվում է միայն 4-պին ընկնող անջատիչ, լարման բաժանարարի համար օգտագործվող 5 դիմադրող և միացումների համար միացման լար: Երաժշտության տուփի մեղեդու ընտրիչի իրականացման համար կազմաձևին ավելացվում է կազմաձև: Allyանկության դեպքում, կախված օգտագործվող ընկղմման անջատիչի տեսակից, օգտակար է օգտագործել 2x4 8 փին վարդակից ՝ ընկղմվող անջատիչը հացատախտակին միացնելու համար, քանի որ ստանդարտ ընկղմման անջատիչները, կարծես, պատրաստված են մի տախտակի վրա ուղղակիորեն միացնելու համար: Պոչը կայունացնում է ընկղմման անջատիչի միացումները և անջատիչը հեշտությամբ բարձրացնելուց անջատիչ անջատիչների տեղադրման ժամանակ:

Անուն Հնարավոր աղբյուր Ինչպես է օգտագործվում
4-պին ընկնող անջատիչ Կարգավորել ընտրությունը
2x4 փին վարդակից (ըստ ցանկության) Amazon Շատ անջատիչ անջատիչների վրա տեղադրվող փեղկերն այնքան էլ լավ չեն պահում տախտակի վրա: Մի վարդակից օգնում է կապն ավելի ամուր դարձնել: Այլընտրանքն այն է, որ ընկղմվող անջատիչ գտնվի, որն իսկապես պատրաստված է սեղանի օգտագործման համար ՝ սովորական IC կապում:

դիմադրիչներ.

  • 10K x2
  • 20K
  • 40K
  • 80K
Իրականացնել լարման բաժանարար
պասիվ պիեզո բզզոց Amazon Նվագարկեք մեղեդին, որը պայմանավորված է հավելվածով ՝ Arduino- ի հնչերանգային գործառույթի միջոցով

Քայլ 2: Բազմաֆունկցիոնալ մեթոդի բացատրություն

Multi-switch մեթոդի բացատրություն
Multi-switch մեթոդի բացատրություն

Այս բաժինը քննարկում է բազմակողմանի անջատիչի մեթոդի հիմքում ընկած հասկացությունները և մշակում է հավասարումներ, որոնք պահանջվում են 16 հնարավոր ընկղմման անջատիչի կարգաբերումներից յուրաքանչյուրի յուրահատուկ նույնացուցիչների հաշվարկման համար: Այս նույնացուցիչները կարող են օգտագործվել կիրառական ծրագրում `անջատիչի կազմաձևը գործողության հետ կապելու համար: Օրինակ, գուցե ցանկանաք կարգավորումը ՝ միացնել 1, անջատել 2, անջատել 3, անջատել 4, անջատել 4 (1, 0, 0, 0) ՝ Amazing Grace խաղալու և (0, 1, 0, 0) խաղալու համար: Առյուծը քնում է այս գիշեր: Համառոտության և համառոտության համար կազմաձևման նույնացուցիչները փաստաթղթի մնացորդում կոչվում են համեմատիչներ:

Պատկեր
Պատկեր

Բազմաֆունկցիոնալ մեթոդի հիմնական հայեցակարգը Լարման բաժանարար միացումն է, որը բաղկացած է 2 շարքի դիմադրիչներից, որոնք միացված են մուտքային լարման: Ելքային լարման կապը միացված է ռեզիստորների միջև, R1 եւ Ռ2, ինչպես ցույց է տրված վերևում: Բաժանման ելքային լարումը հաշվարկվում է որպես մուտքային լարումը բազմապատկված դիմադրության R- ի հարաբերակցությամբ2 R- ի գումարին1 եւ Ռ2 (հավասարում 1): Այս հարաբերակցությունը միշտ 1 -ից փոքր է, այնպես որ ելքային լարումը միշտ ավելի փոքր է, քան մուտքային լարումը:

Ինչպես նշված է նախագծման գծապատկերում վերևում, բազմակողմանի անջատիչը կազմաձևված է որպես լարման բաժանարար R- ով2 ֆիքսված և Ռ1 հավասար է կոմպոզիտային/համարժեք դիմադրությանը 4 ընկղմման անջատիչի դիմադրիչների համար: R- ի արժեքը1 կախված է նրանից, թե որ անջատիչներն են միացված և, հետևաբար, նպաստելով կոմպոզիտային դիմադրությանը: Քանի որ ընկղմման անջատիչի դիմադրողները զուգահեռ են, դիմադրության համարժեք հաշվարկի հավասարումը շարադրված է բաղադրիչ ռեզիստորների հակադարձումների առումով: Մեր կազմաձևի և այն դեպքում, երբ բոլոր անջատիչները միացված են, հավասարումը դառնում է

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

տալով Ռ1 = 5333,33 վոլտ Հաշվի առնելու այն փաստը, որ շատ պարամետրերի անջատիչներից առնվազն մեկն անջատված է, անջատիչի վիճակը օգտագործվում է որպես բազմապատկիչ.

1/Ռ1 = ներ1*1/80000 + վ2*1/40000 + վ3*1/20000 + վ4*1/10000 (2)

որտեղ պետական բազմապատկիչը, սես, հավասար է 1 -ին, եթե անջատիչը միացված է և հավասար է 0 -ի, եթե անջատիչն անջատված է: Ռ1 այժմ կարող է օգտագործվել հավասարման 1 -ում անհրաժեշտ դիմադրության հարաբերակցության հաշվարկման համար: Օգտագործելով այն դեպքը, երբ բոլոր անջատիչները կրկին միացված են որպես օրինակ

ՀԱՐԱԲԵՐՈ =ԹՅՈՆ = Ռ2/(Ռ12) = 10000/(5333.33+10000) =.6522

Կանխատեսվող համեմատիչի արժեքի հաշվարկման վերջին քայլը RATIO- ի բազմապատկումն է 1023 -ով `analogRead գործառույթի ազդեցությունը նմանակելու համար: Այն դեպքում, երբ բոլոր անջատիչները միացված են, նույնացուցիչն է

համեմատիչ15 = 1023*.6522 = 667

Այժմ բոլոր հավասարումները գործում են անջատիչի 16 հնարավոր պարամետրերի նույնացուցիչների հաշվարկման համար: Ամփոփել:

  1. Ռ1 հաշվարկվում է 2 հավասարման միջոցով
  2. Ռ1 եւ Ռ2 օգտագործվում են հարակից դիմադրության հարաբերակցությունը հաշվարկելու համար
  3. RATIO- ն բազմապատկվում է 1023 -ով `համեմատական արժեքը ստանալու համար
  4. ըստ ցանկության, կանխատեսվող ելքային լարումը կարող է հաշվարկվել նաև որպես RATIO*Vin

Համեմատիչների հավաքածուն կախված է միայն լարման բաժանարարի համար օգտագործվող դիմադրության արժեքներից և կազմաձևի յուրահատուկ ստորագրություն են: Քանի որ բաժանարար ելքային լարումները կտատանվեն գործարկումից մինչև գործարկում (և կարդալ կարդալ), այս համատեքստում եզակի նշանակում է, որ չնայած նույնացուցիչների երկու հավաքածուները կարող են նույնը չլինել, բայց դրանք այնքան մոտ են, որ բաղադրիչի համեմատիչ տարբերությունները ընկնում են փոքր նախնական սահմաններում: նշված միջակայքը: Ինտերվալի չափի պարամետրը պետք է ընտրվի այնքան մեծ, որ հաշվի առնի սպասվող տատանումները, բայց այնքան փոքր, որ անջատիչի տարբեր կարգավորումները չհամընկնեն: Սովորաբար 7-ը լավ է աշխատում ընդմիջման կես լայնությամբ:

Որոշակի կոնֆիգուրացիայի համեմատիչների հավաքածու կարելի է ձեռք բերել մի քանի եղանակով. Գործարկել ցուցադրական ծրագիրը և գրանցել արժեքները յուրաքանչյուր պարամետրի համար. հաջորդ աղյուսակում հաշվարկելու համար օգտագործեք աղյուսակը; պատճենել գոյություն ունեցող հավաքածուն: Ինչպես նշվեց վերևում, բոլոր հավաքածուները, ամենայն հավանականությամբ, մի փոքր տարբեր կլինեն, բայց պետք է աշխատեն: Առաջարկում եմ օգտագործել մեթոդի հեղինակի նույնացուցիչների բազմաշերտ անջատիչի տեղադրման և աղյուսակի հաջորդ բաժինը, եթե դիմադրողներից որևէ մեկը զգալիորեն փոխվել է կամ ավելացվել են ավելի շատ դիմադրողներ:

Հետևյալ ցուցադրական ծրագիրը ցույց է տալիս համեմատիչների օգտագործումը `ներկայիս ընկղման անջատիչի կարգավորումը նույնականացնելու համար: Programրագրի յուրաքանչյուր ցիկլում analogRead- ը կատարվում է ընթացիկ կազմաձևի նույնացուցիչ ստանալու համար: Այս նույնացուցիչն այնուհետև համեմատվում է համեմատական ցուցակի հետ, մինչև համընկնումը չգտնվի կամ ցանկը սպառվի: Եթե համընկնում է հայտնաբերվում, թողարկման հաղորդագրություն է տրվում ստուգման համար. եթե չգտնվի, նախազգուշացում է տրվում: Օղակի մեջ տեղադրվում է 3 վայրկյան ուշացում, որպեսզի սերիայի ելքային պատուհանը չծանրաբեռնվի հաղորդագրություններով և որոշ ժամանակ տա իջեցման անջատիչի կազմաձևումը վերականգնելու համար:

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

// oուցադրման ծրագիր ՝ լարման բաժանարար ելքը կարդալու և այն օգտագործելու համար // ընթացիկ ընկղման անջատիչի կազմաձևը նույնականացնելու միջոցով, ելքային արժեքը դիտելով // համադրման արժեքների զանգվածում յուրաքանչյուր հնարավոր կարգավորման համար: Որոնման զանգվածի արժեքները կարող են // կամ ստացվել կազմաձևման նախորդ գործողությունից, կամ հաշվարկի միջոցով // հիմքում ընկած հավասարումների հիման վրա: // ---------------------------------------------------- -------------------------------------- int համեմատական [16] = {0, 111, 203, 276, 339, 393, 434, 478, 510, 542, 567, 590, 614, 632, 651, 667}; // Սահմանել մշակման փոփոխականներ int dipPin = A0; // անալոգային քորոց լարման բաժանարար մուտքի համար int dipIn = 0; // պահում է բաժանարար լարման ելքը, որը թարգմանված է analogRead int count = 0; // հանգույցի հաշվիչ int epsilon = 7; // համեմատության միջակայք կես լայնությամբ bool dipFound = false; // ճշմարիտ, եթե ընթացիկ լարման բաժանարար ելքը գտնվի աղյուսակի որոնման մեջ անվավեր կարգավորում () {pinMode (dipPin, INPUT); // կարգավորել լարման բաժանարար քորոցը որպես INPUT Serial.begin (9600); // միացնել սերիական հաղորդակցությունը} void loop () {հետաձգում (3000); // թողնել արտադրանքը շատ արագ պտտվելուց // Նախնականացնել որոնման պարամետրերի հաշվարկ = 0; dipFound = կեղծ; // Ընթերցել և փաստաթղթավորել ընթացիկ ելքային լարման dipIn = analogRead (dipPin); Serial.print («բաժանարար ելք»); Serial.print (dipIn); // Որոնել ընթացիկ արժեքների համեմատող ցուցակ, մինչդեռ ((հաշվարկ <16) && (! DipFound)) {if (abs (dipIn - comparator [count]) <= epsilon) {// գտել է այն dipFound = true; Serial.print («հայտնաբերվել է մուտքի մոտ»); Serial.print (հաշվարկ); Serial.println («արժեք» + լարային (համեմատիչ [հաշվարկ])); ընդմիջում; } հաշվել ++; } if (! dipFound) {// արժեքը աղյուսակում չէ; չպետք է պատահի Serial.println ("OOPS! Not found; ավելի լավ է զանգահարել Ghost Busters"); }}

Քայլ 3: Համեմատական աղյուսակ

Պատկեր
Պատկեր

16 համեմատական արժեքների հաշվարկները տրված են վերևում ներկայացված աղյուսակում: Ուղեկցող Excel ֆայլը կարելի է ներբեռնել այս բաժնի ներքևում:

Աղյուսակ A-D սյունակները գրանցում են ընկղմման անջատիչի դիմադրության արժեքները և անջատիչի 16 հնարավոր կարգավորումները: Խնդրում ենք նկատի ունենալ, որ դիզայնի ցնցող գծապատկերում ցուցադրվող ապարատային անջատիչը իրականում համարակալված է ձախից աջ `աղյուսակում ցուցադրված աջից ձախ համարակալման փոխարեն: Ես գտա, որ սա ինչ -որ չափով շփոթեցնող է, բայց այլընտրանքը ցուցակի առաջին մասում չի դնում «1» կազմաձևը (0, 0, 0, 1): E սյունակը օգտագործում է նախորդ բաժնի 2 -րդ բանաձևը `Լարման բաժանարարի համարժեք դիմադրությունը R հաշվարկելու համար1 կարգավորման համար: F սյունակը օգտագործում է այս արդյունքը `համապատասխան դիմադրության RATIO- ն հաշվարկելու համար, և, վերջապես, G սյունակը բազմապատկում է RATIO- ն analogRead max արժեքով (1023)` կանխատեսվող համեմատիչի արժեքը ստանալու համար: Վերջին 2 սյունակները պարունակում են ցուցադրական ծրագրի իրական արժեքները, ինչպես նաև կանխատեսվող և իրական արժեքների տարբերությունները:

Նախորդ բաժնում նշվում էին համեմատական արժեքների մի շարք ձեռք բերելու երեք մեթոդներ, ներառյալ այս աղյուսակի ընդլայնումը, եթե դիմադրության արժեքները զգալիորեն փոխվել են կամ ավելի շատ անջատիչներ են ավելացվել: Պարզվում է, որ ռեզիստորի արժեքների փոքր տարբերությունները էականորեն չեն ազդում վերջնական արդյունքների վրա (ինչը լավ է, քանի որ ռեզիստորի բնութագրերը տալիս են հանդուրժողականություն, ասենք 5%, իսկ դիմադրությունը հազվադեպ է հավասար իր իրական հայտարարված արժեքին):

Քայլ 4: Խաղալ մեղեդի

Խաղալ մեղեդի
Խաղալ մեղեդի

Illustույց տալու համար, թե ինչպես կարող է կիրառվել բազմակողմանի անջատման տեխնիկան ծրագրում, «Մեթոդի բացատրություն» բաժնի համեմատական ցուցադրական ծրագիրը փոփոխվում է ՝ երաժշտական տուփի ծրագրի մեղեդու ընտրության մշակման իրականացման համար: Թարմացված հավելվածի կազմաձևը ցուցադրված է վերևում: Սարքավորման միակ հավելումը պասիվ պիեզո -ազդանշանն է `ընտրված մեղեդին նվագարկելու համար: Theրագրային ապահովման հիմնական փոփոխությունն այն ռեժիմի ավելացումն է, որը միանգամից նույնականացվելուց հետո օգտագործում է ազդանշանը և Arduino հնչերանգի ռեժիմը:

Մատուցվող առկա հատվածները պարունակվում են վերնագրի ֆայլում ՝ Tunes.h, անհրաժեշտ օժանդակ կառույցների սահմանման հետ միասին: Յուրաքանչյուր մեղեդի սահմանվում է որպես նշումների հետ կապված կառույցների զանգված, որը պարունակում է նոտայի հաճախականությունը և տևողությունը: Նշումների հաճախականությունները պարունակվում են առանձին վերնագրի ֆայլում ՝ Pitches.h: Programրագիրը և վերնագրի ֆայլերը հասանելի են ներբեռնման համար այս բաժնի վերջում: Բոլոր երեք ֆայլերը պետք է տեղադրվեն նույն գրացուցակում:

Ընտրությունը և նույնականացումը կատարվում են հետևյալ կերպ.

  1. «Օգտվողը» դնում է անջատիչները ցանկալի մեղեդու հետ կապված կազմաձևում
  2. յուրաքանչյուր ծրագրային հանգույցի ցիկլը ներկայիս ընկղման անջատիչի կարգավորման նույնացուցիչը ձեռք է բերվում analogRead- ի միջոցով
  3. Քայլ 2 -ի կազմաձևման նույնացուցիչը համեմատվում է առկա մեղեդիների ցուցակի յուրաքանչյուր համեմատիչի հետ
  4. Եթե համընկնում է հայտնաբերվել, playTune- ի ռեժիմը կոչվում է մեղեդիների ցուցակ մուտք գործելու համար անհրաժեշտ տեղեկատվությամբ

    Օգտագործելով Arduino տոնային գործառույթը, յուրաքանչյուր նոտա նվագարկվում է ազդանշանի միջոցով

  5. Եթե համընկնում չի գտնվել, որևէ գործողություն չի ձեռնարկվում
  6. կրկնել 1-5-ը

Մատչելի մեղեդիների DIP անջատիչի կարգավորումները ցուցադրված են ստորև բերված աղյուսակում, որտեղ 1 նշանակում է անջատիչը միացված է, 0 -ը `անջատված: Հիշեք, որ ընկղման անջատիչի կողմնորոշման եղանակը անջատիչը 1-ը տեղադրում է ձախից առավել դիրքում (այն, ինչ կապված է 80K դիմադրության հետ):

ԱՆՈՒՆ Անջատիչ 1 Անջատիչ 2 Անջատիչ 3 Անջատիչ 4
Դենի Բոյ 1 0 0 0
Փոքրիկ արջ 0 1 0 0
Առյուծը քնում է այս գիշեր 1 1 0 0
Ոչ ոք չգիտի դժվարությունը 0 0 1 0
Amazարմանալի շնորհք 0 0 0 1
Դատարկ տարածություն 1 0 0 1
Ockաղրող Թռչունների բլուր 1 0 1 1

Պիեզո ազդանշանի ձայնի որակը, անշուշտ, մեծ չէ, բայց գոնե ճանաչելի է: Իրականում, եթե հնչերանգները չափվում են, դրանք շատ մոտ են նոտաների ճշգրիտ հաճախականությանը: Interestingրագրում օգտագործվող մի հետաքրքիր տեխնիկա է մեղեդի տվյալների պահպանումը ֆլեշ/ծրագրի հիշողության բաժնում `կանխադրված տվյալների հիշողության հատվածի փոխարեն` օգտագործելով PROGMEM հրահանգը: Տվյալների բաժինը պարունակում է ծրագրի մշակման փոփոխականները և շատ ավելի փոքր է ՝ մոտ 512 բայթ ATtiny միկրոկոնտրոլերների համար:

Խորհուրդ ենք տալիս: