Ինչպես ազատվել կոնտակտային ցատկումից, երբ կոճակը միացնում են Arduino- ին

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

Ինչպես ազատվել կոնտակտային ցատկումից, երբ կոճակը միացնում են Arduino- ին
Ինչպես ազատվել կոնտակտային ցատկումից, երբ կոճակը միացնում են Arduino- ին

Video: Ինչպես ազատվել կոնտակտային ցատկումից, երբ կոճակը միացնում են Arduino- ին

Video: Ինչպես ազատվել կոնտակտային ցատկումից, երբ կոճակը միացնում են Arduino- ին
Video: Как прошить Arduino uno. Обзор платы. Arduino для начинающих. 2024, Նոյեմբեր
Anonim

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

Կոնտակտային ցատկման էֆեկտ
Կոնտակտային ցատկման էֆեկտ

Անհրաժեշտ է

  • - Arduino;
  • - տակտ կոճակ;
  • - 10 kOhm անվանական արժեքով դիմադրություն;
  • - լույս արտանետող դիոդ;
  • - լարերը միացնող:

Հրահանգներ

Քայլ 1

Կոնտակտային ցատկումը սովորական երեւույթ է մեխանիկական անջատիչների, կոճակների, բանալիների անջատիչների և ռելեների մեջ: Հաշվի առնելով այն փաստը, որ շփումները սովորաբար պատրաստվում են մետաղներից և համաձուլվածքներից, որոնք ունեն առաձգականություն, ֆիզիկապես փակվելիս դրանք անմիջապես չեն հաստատում հուսալի կապ: Կարճ ժամանակահատվածում շփումները մի քանի անգամ փակվում են և վանում միմյանց: Արդյունքում, էլեկտրական հոսանքը կայուն վիճակ է ստանում ոչ թե ակնթարթորեն, այլ մի շարք ելեւէջներից հետո: Այս անցողիկ ազդեցության տևողությունը կախված է շփման նյութից, չափից և դիզայնից: Նկարազարդումը ցույց է տալիս տիպային ոսցիլոգրամա, երբ տակտի կոճակի շփումները փակ են: Տեսանելի է, որ կայուն վիճակին անցնելու պահից ժամանակը մի քանի միլիվայրկյան է: Սա կոչվում է «ցատկում»:

Այս ազդեցությունը նկատելի չէ էլեկտրական շղթաներում ՝ լուսավորությունը, շարժիչները կամ այլ իներցիոն սենսորներն ու սարքերը կառավարելու համար: Բայց այն սխեմաներում, որտեղ առկա է տեղեկատվության արագ ընթերցում և մշակում (որտեղ հաճախականությունները նույն կարգի են, ինչ «ցատկող» իմպուլսները կամ ավելի բարձր), սա խնդիր է: Մասնավորապես, Arduino UNO- ն, որը գործում է 16 ՄՀց արագությամբ, հիանալի է բռնում շփման ցատկումը ՝ ընդունելով նորերի և զրոների հաջորդականություն ՝ մեկ 0-ից 1 անջատիչի փոխարեն:

Կոճակը սեղմելիս կապվեք ցատկելու հետ
Կոճակը սեղմելիս կապվեք ցատկելու հետ

Քայլ 2

Տեսնենք, թե ինչպես է կոնտակտային ցատկումը ազդում շղթայի ճիշտ աշխատանքի վրա: Եկեք ժամացույցի կոճակը միացնենք Arduino- ին `օգտագործելով քաշվող դիմադրիչի միացում: Սեղմելով կոճակը, մենք կվառենք LED- ը և կթողնենք այն մինչև կոճակը կրկին սեղմվի: Պարզության համար մենք միացնում ենք արտաքին LED- ն թվային քորոցին 13, չնայած ներկառուցվածը կարելի է բաց թողնել:

Կոճակը միացնելով Arduino- ին `օգտագործելով pull-up ռեզիստորի միացում
Կոճակը միացնելով Arduino- ին `օգտագործելով pull-up ռեզիստորի միացում

Քայլ 3

Այս խնդիրը կատարելու համար առաջին բանը, որ գալիս է մտքում.

- հիշեք կոճակի նախորդ վիճակը.

- համեմատել ներկա վիճակի հետ;

- եթե պետությունը փոխվել է, ապա մենք փոխում ենք LED- ի վիճակը:

Եկեք գրենք նման ուրվագիծ և բեռնեք այն Arduino հիշողության մեջ:

Երբ շղթան միացված է, շփման ցատկման ազդեցությունն անմիջապես տեսանելի է: Դա արտահայտվում է նրանով, որ կոճակը սեղմելուց անմիջապես հետո LED- ը չի վառվում, կամ վառվում է, իսկ հետո մարվում է, կամ կոճակը սեղմելուց անմիջապես հետո չի անջատվում, բայց մնում է միացված: Ընդհանուր առմամբ, շղթան կայուն չի աշխատում: Եվ եթե LED- ի միացումով առաջադրանքի համար դա այնքան էլ կարևոր չէ, ապա այլ, ավելի լուրջ խնդիրների համար, դա պարզապես անընդունելի է:

Մշակման կոճակի սեղմման ուրվագիծը ՝ առանց հաշվի առնելու շփման ցատկումը
Մշակման կոճակի սեղմման ուրվագիծը ՝ առանց հաշվի առնելու շփման ցատկումը

Քայլ 4

Մենք կփորձենք շտկել իրավիճակը: Մենք գիտենք, որ կոնտակտային ցատկումը տեղի է ունենում շփման փակումից հետո մի քանի միլիվայրկյանում: Կոճակի վիճակը փոխելուց հետո սպասենք, ասենք, 5ms: Մարդու համար այս ժամանակը գրեթե ակնթարթային է, և մարդու կողմից կոճակը սեղմելը սովորաբար շատ ավելի երկար է տևում `մի քանի տասնյակ միլիվայրկյան: Եվ Arduino- ն հիանալի է աշխատում նման կարճ ժամանակահատվածներով, և այս 5 մմ-ն թույլ կտա նրան կտրել շփումների ցատկումը կոճակը սեղմելուց:

Այս ուրվագծում մենք կհայտարարենք deboun () կարգի մասին Եթե կոճակի սեղմումը տևում է ավելի քան 5 մվրկ, ապա դա իսկապես սեղմում է:

Մամուլի հայտնաբերմամբ մենք փոխում ենք LED- ի վիճակը:

Վերբեռնեք ուրվագիծը Arduino տախտակին: Հիմա ամեն ինչ շատ ավելի լավ է: Կոճակն աշխատում է առանց խափանման, երբ սեղմում ենք, LED- ը փոխում է վիճակը, ինչպես ուզում էինք:

Կոճակի սեղմման մշակման ուրվագիծը ՝ հաշվի առնելով կոնտակտային ցատկումը
Կոճակի սեղմման մշակման ուրվագիծը ՝ հաշվի առնելով կոնտակտային ցատկումը

Քայլ 5

Նմանատիպ ֆունկցիոնալությունը տրամադրվում է հատուկ գրադարանների կողմից, ինչպիսին է Bounce2 գրադարանը:Այն կարող եք ներբեռնել «Աղբյուրներ» բաժնի հղումից կամ https://github.com/thomasfredericks/Bounce2 կայքում: Գրադարանը տեղադրելու համար այն տեղադրեք Arduino զարգացման միջավայրի գրադարանների գրացուցակում և վերագործարկեք IDE- ն:

«Bounce2» գրադարանը պարունակում է հետևյալ մեթոդները.

Ounceատկում () - «ounceատկում» օբյեկտի նախնականացում;

անվավեր միջակայք (ms) - սահմանում է հետաձգման ժամանակը միլիվայրկյաններով.

անվավեր կցորդ (կապի համար) - սահմանում է այն քորոցը, որին միացված է կոճակը;

int update () - օբյեկտը թարմացնում է և վերադառնում է true, եթե փին պետությունը փոխվել է, և հակառակ դեպքում ՝ false.

int read () - կարդում է քորոցի նոր վիճակը:

Եկեք գրենք մեր ուրվագիծը ՝ օգտագործելով գրադարանը: Կարող եք նաև հիշել և համեմատել կոճակի անցյալ վիճակը ընթացիկի հետ, բայց եկեք պարզեցնենք ալգորիթմը: Երբ կոճակը սեղմվում է, մենք կհաշվենք մամուլները, և յուրաքանչյուր տարօրինակ սեղմում կմիացնի LED- ն, և յուրաքանչյուր զույգ սեղմումով այն անջատելու է: Այս ուրվագիծը հակիրճ է, հեշտ ընթերցվող և օգտագործման համար դյուրին:

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