Ինչպես կարդալ բազմաթիվ անջատիչներ մեկ MCU կապով `4 քայլ
Ինչպես կարդալ բազմաթիվ անջատիչներ մեկ MCU կապով `4 քայլ
Anonim

Դուք երբևէ խեղդվե՞լ եք ծրագրի (նախագծերի) վրա, և նախագիծը շարունակում է աճել և աճել, մինչդեռ դրան ավելացնում եք ավելի շատ բաներ (մենք դա անվանում ենք Feaping Creaturism): Վերջերս կատարված նախագծի վրա ես կառուցում էի հաճախականությունների հաշվիչ և ավելացնում հինգ ֆունկցիոնալ ազդանշանի գեներատոր/հաճախականության սինթեզատոր: Շուտով ես ավարտվեցի ավելի շատ անջատիչներով, քան մնացել էի հասանելի կապում, այնպես որ ինչ պետք է անի տղան:

Այնուամենայնիվ, շուտով ես ունեի ևս յոթ անջատիչ իմ Funbox- ում (այո, այդպես էի անվանում իմ գործառույթի գեներատորը … Այն չի պահանջում հերթափոխի գրանցամատյաններ կամ հատուկ IC- ներ: Փաստորեն, այն չի պահանջում նաև միկրոկոնտրոլեր, եթե դիսկրետ կիսահաղորդիչներն այնպես են պտտվում: Ահա մի եղանակ, որով կարող եք կարդալ/կառավարել բազմաթիվ անջատիչներ ՝ օգտագործելով ձեր AVR- ի մեկ փին (կամ այլ միկրոկառավարիչ… Ես լսել եմ, որ AVR- ից բացի այլ միկրոկոնտրոլերներ կան, բայց չեմ պատկերացնում…)::)

Քայլ 1: Հիմնականը (ոչ իրականում)

Դա իրականացնելու համար ձեզ հարկավոր են մի քանի բաղադրիչներ. Այն օգնում է ունենալ բազմաթիվ անջատիչներ, որոնք դուք պետք է կառավարեք: Ձեզ նույնպես կպահանջվեն որոշ ռեզիստորներ և կամ միկրոկոնտրոլեր, որն ունի ADC (անալոգային-թվային փոխակերպում) կամ ինչ-որ այլ եղանակով կցանկանայիք նշել, որ անջատիչն ակտիվացված է, և որն է անջատիչը:

Եթե ցանկանայիք, կարող եք օգտագործել լարման վերահսկվող տատանում `դա ցույց տալու համար, գուցե որոշ թարթող լույսերով, կամ այլընտրանք` ձայնով: Այս դժվարության մեջ ես կձևացնեմ, որ մենք օգտագործում ենք AVR, բայց ձեր աշխարհում կարող եք ձևացնել այն, ինչ ձեզ երջանկացնում է: Կարոտում եմ Բոբ Ռոսսին:

Քայլ 2: Լարման բաժանարար

Ըստ էության, այն, ինչ մենք պատրաստվում ենք դա անել, դա տեխնիկայի և սխեմայի օգտագործումն է, որը կոչվում է լարման բաժանարար: Լարման բաժանարարները, ինչպես երևի կռահել եք, բաժանում են V,,,, լարման որոշված արժեքով: Դուք կարող եք լարումը բաժանել մի քանի բաղադրիչների, ներառյալ կոնդենսատորները և ինդուկտորները, բայց ահա ես դա կանեմ լավ ռեզիստորով: Գաղափարը Այն, ինչ մենք անում ենք, շարադրել երկու բաղադրիչ, որոնք կհանգեցնեն, յուրաքանչյուրը առանձին, լարման անկում բաղադրիչի վրա: Նայեք առաջին նկարին, եթե իմաստ չունեմ: Գոյություն ունի 9V- ի պոտենցիալ տարբերություն երկաթուղուց մինչև երկաթուղի: 9V- ի և 0V- ի միջև կա երկու դիմադրություն շարքում: Սրանցից յուրաքանչյուրը լարման անկում կապրի ՝ կախված դիմադրությունից, ինչպես հավանաբար հիշում եք V = IR- ից: Եթե լարման չափում կատարեք երկու դիմադրիչների միջև, ապա որոշակի արժեք կստանաք 9 Վ – ից մինչև 0 Վ ՝ կախված նրանից, թե որքան լարվածություն է ընկել առաջին ռեզիստորի երկայնքով և որքան է մնացել 2 – րդ դիմադրության վրայից իջնելու համար ՝ մինչև 0 Վ: Այս իրավիճակում կա ռեզիստորի վրա լարման անկումը հաշվարկելու մի պարզ բանաձև, և այն այսպիսին է թվում. Թող դիմադրությունը 1 -ի (R1) նկատմամբ լինի V1, իսկ դիմադրության վրա ՝ երկու (R2) ՝ V2: Քանի որ ես այլևս չեմ կարող ձևաչափել, բանաձևը դիտեք ստորև բերված նկար 2 -ում: Այսպիսով, մեր դիմադրողական բաժանարարում Vout լարումը կարող է որոշվել V2- ի մեր բանաձևով (քանի որ մենք հղում ենք անելու GND- ին մինչև 0V): Ի՞նչ կապ ունի դա այն բանի հետ, որ մի փունջից հայտնաբերվում են մի քանի անջատիչներ: Դե, թերթիր էջը, և ես ցույց կտամ քեզ:

Քայլ 3. Լարման բաժանարար սանդուղք

Հիմա ենթադրենք, որ մենք ունենք մեր բոլոր անջատիչները, գուցե վեց կամ ութ կամ տասնվեցը, բոլորը միացված են ռեզիստորների միջոցով, որոնցից յուրաքանչյուրը գործում է որպես լարման բաժանարար, այնպես որ երբ անջատիչի քորոցի վիճակը փոխվում է, լարումը կարդացվում է և ելնելով լարման մակարդակից, մենք կարող է իմանալ, թե որ անջատիչն է պարզապես ակտիվացվել: Նայեք ստորև: Ստորև բերված նկարում ես միացրել եմ անջատիչների երկու բլոկ: Ամենաբարձր բլոկն ունի երկու անջատիչ, իսկ ներքևի բլոկն ունի հինգ անջատիչ: Դուք կարող եք նույն կերպ միացնել ձեր անջատիչ, վայրկենական, շոշափելի և այլն անջատիչները: Կարևորը, որ պետք է նկատել, այն դիմադրիչն է, որին միացված է ձեր անջատիչը: Իմ օրինակում ես գրեթե կրկնապատկել եմ հաջորդ դիմադրության դիմադրությունը `ստեղծելով լարման բաց, որը հեշտ է չափել և սխալմամբ չընդունել անջատիչի առաջ կամ հետո: Եթե նախկինում չեք նկատել, նորից նայեք և գիտակցեք, որ մենք վերադարձանք մեր հին ընկերոջը ՝ դիմադրողական լարման բաժանարարին: Առաջին ռեզիստորը ՝ 10k ohm- ը, միացված է 5V- ին, իսկ 2 -րդը ՝ այն դիմադրիչը, որը որոշելու է Vդուրս SWITCH_ADC կապի համար միացված է յուրաքանչյուր անջատիչին և, հետևաբար, յուրաքանչյուր անջատիչ կապված է որոշակի Vout լարման հետ, որը կարելի է կարդալ SWITCH_ADC- ում միացված ADC կապից: Հաջորդը, յուրաքանչյուր անջատիչից որոշեք ակնկալվող Vout- ը

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

մեկ անջատիչի համար.

Vout = 5V * (500 / (10000 + 500)) = 5 * 0.048 = 0.24V կամ 240 մՎ

երկրորդ անջատիչի համար.

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

և այլն … Ազատ զգալ ձեր սեփական արժեքներով փոխարինել R2- ով, եթե դուք ունեք միայն որոշակի ռեզիստորներ … Այստեղ ամենակարևորը անջատիչների միջև լարման բավական լայն բացը պահելն է, որպեսզի ADC- ի սխալի ցանկացած սահման շահի »: t ձեզ մտցրեք հարևան անջատիչից սպասվող լարման մեջ: Ես գտել եմ, որ ամենահեշտն այն է, որ կառուցես բաժանարար սանդուղքը և մի մուլտիմետր/վոլտմետր տեղադրես ADC կապի վրա և սեղմիր յուրաքանչյուր քորոց և տես, թե ինչ արժեքներ ես ստանում: Նրանք պետք է բավականին տեղին լինեն ձեր հաշվարկի մեջ: Երբ դուք ունեք յուրաքանչյուր անջատիչից որոշակի ռեզիստոր օգտագործելով ակնկալվող լարման արժեքները, ապա կարող եք ձեր MCU- ին կարդալ ADC կապը և այն համեմատել ձեր հայտնի արժեքների հետ `որոշելու, թե որ անջատիչն է սեղմված: Օրինակ, ասեք, որ գրանցել եք ընդհատումների ծառայության ռեժիմ, որը կկոչվի ամեն անգամ, երբ ADC կապում հայտնաբերվի փոփոխություն: Այդ ISR- ի ներսում կարող եք կարդալ ADC- ն և այդ արժեքը համեմատել ձեր անջատիչ սեղանի հետ: Եթե դուք օգտագործում եք 8 բիթանոց ADC արժեք, ձեր լարումը կվերածվի 0-ի և 255-ի միջև ընկած թվի, որը համապատասխանում է 0V- ից մինչև 5V- ի լարման: Սա ենթադրում է, որ ձեր ADC- ն այս կերպ կազմաձևված է:

Քայլ 4: Ամփոփում

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

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