Տնական հաճախականության հաշվիչ ATTINY2313-ում: Տնական հաճախականության հաշվիչ ATTINY2313-ում Պարզ հաճախականության հաշվիչ attiny2313-ի վրա՝ դինամիկ ցուցումով

Բարձր կատարողականության հաճախականության հաշվիչ, որը չափում է հաճախականությունները 1 Հց-ից մինչև 10 ՄՀց (9,999,999) 1 Հց լուծաչափով ամբողջ տիրույթում: Իդեալական է ֆունկցիոնալ գեներատորների, թվային կշեռքի կամ որպես ինքնուրույն սարքի համար: Այն էժան է և հեշտ է արտադրվում, հավաքվում է մատչելի մասերից, փոքր չափսերով և կարող է պանել տեղադրվել բազմաթիվ սարքերի վրա:

Շղթան բաղկացած է յոթ 7 հատվածի LED-ներից, AVR ATtiny2313-ից և մի քանի տրանզիստորներից և դիմադրողներից: AVR-ն անում է ամբողջ աշխատանքը, և լրացուցիչ չիպերի կարիք չկա: Միկրոկառավարիչը հաշվում է 1 վայրկյանում իր մուտքին եկած իմպուլսների քանակը և ցուցադրում է այս թիվը: Ամենակարևորը շատ ճշգրիտ ժմչփն է, և այն իրականացվում է 16-բիթանոց Timer1-ի վրա CTC ռեժիմում։ Երկրորդ, 8-բիթանոց հաշվիչը աշխատում է Counter0-ի նման և հաշվում է իմպուլսները T0 մուտքի մոտ: Յուրաքանչյուր 256 իմպուլսում այն ​​առաջացնում է ընդհատում, որի ժամանակ ծրագիրը մեծացնում է բազմապատկիչը: Երբ ստանում ենք 1 վայրկյան ընդհատում, բազմապատկիչի պարունակությունը բազմապատկվում է 256-ով (ձախ հերթափոխը 8 բիթով): Հաշվիչով հաշված մնացած իմպուլսները գրվում են գրանցամատյանում և ավելացվում բազմապատկման արդյունքին: Այնուհետև այս արժեքը բաժանվում է առանձին թվերի, որոնք ցուցադրվում են ցուցիչների վրա: Այնուհետև, մինչև 1 վայրկյան ընդհատումից դուրս գալը, երկու հաշվիչներն էլ միաժամանակ զրոյացվում են, և չափումը նորից սկսվում է: Ընդհատումից ազատ ժամանակ կարգավորիչը զբաղված է դինամիկ ցուցումով։

Բանաձև և ճշգրտություն.
Ճշգրտությունը կախված է ժամացույցի գեներատորից: Քվարցը պետք է լինի լավ որակի և ունենա հնարավորինս ցածր ppm (հանդուրժողականություն): Ավելի լավ կլինի, եթե հաճախականությունը լինի 1024-ի բազմապատիկ, օրինակ՝ 16 ՄՀց կամ 22,1184 ՄՀց։ Մինչեւ 10 ՄՀց հաճախականությունները չափելու համար անհրաժեշտ է օգտագործել 21 ՄՀց-ից ոչ պակաս քվարց, օրինակ՝ 22,1184 ՄՀց։ Հաճախականության հաշվիչը կարող է չափել բնական բյուրեղային հաճախականության մինչև 47%-ը: Եթե ​​կա լավ արդյունաբերական հաճախականության հաշվիչ, ապա դուք կարող եք չափորոշել շղթան՝ ավելացնելով հարմարվողական կոնդենսատոր (1pF-10pF) քվարցային կապարներից մեկի և հողի միջև և կարգավորել հաճախականությունը արդյունաբերական հաճախականության հաշվիչի ընթերցումների համաձայն:

Աղբյուրի արխիվում կան տարբեր քվարցերի մի քանի տարբերակներ, բայց դուք կարող եք կազմել ձեր սեփական տարբերակը:

Ալիքի ձև.
Սկզբունքորեն, սարքը հասկանում է ցանկացած ալիքի ձև 0-ից մինչև 5 Վ, այլ ոչ միայն ուղղանկյուն իմպուլսներ: Սինուսոիդ և ուղղանկյուն իմպուլսները հաշվվում են հետևի եզրին, երբ այն անցնում է 0,8 Վ-ից ցածր:

Սարքը չունի պաշտպանություն 5 վոլտից բարձր մուտքային լարման գերազանցումից:

Սարքն ունի բարձր դիմադրության մուտք և չի բեռնում փորձարկվող շղթան. դուք կարող եք նույնիսկ չափել 220 վոլտ AC հաճախականությունը՝ մատով դիպչելով մուտքին: Հաճախականության հաշվիչը կարող է փոխարկվել մինչև 100 ՄՀց հաճախականություններ չափելու համար 10 Հց քայլերով` մուտքին արագ բաժանիչ ավելացնելով:

Ցուցադրել:
Յոթ յոթ հատվածի ցուցիչներ՝ ընդհանուր անոդով, օգտագործվել են դինամիկ ցուցման ռեժիմում: Եթե ​​պայծառությունն անբավարար է, կարող եք նվազեցնել ընթացիկ սահմանափակող ռեզիստորների արժեքները, սակայն պետք է հիշել, որ միկրոկառավարիչի յուրաքանչյուր ելքի առավելագույն իմպուլսային հոսանքը 40 մԱ է: Լռելյայնորեն, ռեզիստորների դիմադրությունը 100 ohms է: Աննշան զրոները դատարկվում են ծրագրային ապահովման միջոցով: Արժեքները թարմացվում են ամեն վայրկյան:

Տպագիր տպատախտակ.
109 մմ x 23 մմ երկկողմանի PCB - ցավոք, 7 ցուցիչները չեն տեղավորվել Eagle-ի անվճար տարբերակի աշխատանքային տարածքի մեջ, ուստի դրանք ձեռքով են նկարված: Տախտակի վրա պետք է կատարվի 3 լարային միացում. առաջինը կարգավորիչի սնուցման և VCC ելքային միացումն է. այս միացումը ցուցադրված է մետաքսե շերտի վրա: Մյուս երկուսը ցուցիչների տասնորդական կետերը միացնում են ներքևի շերտում տեղակայված 330 օհմ դիմադրիչներին։ Տախտակի վերին մասում Atmel ISP-6 միակցիչն է: Կոնտակտ 1-ն առաջինն է քվարցի կողմից: Այս միակցիչը կամընտիր է և անհրաժեշտ է միայն կարգավորիչի ծրագրավորման համար: Ցուցանիշները պետք է զոդել տախտակից որոշ հեռավորության վրա, որպեսզի կարողանաք զոդող երկաթ ստանալ տախտակի վերևից զոդված կապարներին:

Այս գործիքը նախատեսված է 0-9999 Հց հաճախականությունների չափման համար, սակայն մուտքում հաճախականության բաժանարար օգտագործելիս այս տիրույթը համապատասխանաբար ընդլայնվում է: Առավելագույն մուտքային լարումը 3 Վ է՝ լրացուցիչ լարման բաժանարար չլինելու պայմանով, նվազագույնը՝ 0,15 Վ, նաև բացակայելու պայմանով։ Չափման առավելագույն հաճախականությունը կարելի է երկարացնել՝ փոխելով ծրագրի կոդը, բայց դրա մասին ավելի ուշ:

Սարքի միացումը համեմատաբար պարզ է և ներկայացված է ստորև.

Շղթան հիմնված է Atmega8A-PU-ի կողմից արտադրված 8-բիթանոց միկրոկոնտրոլերի վրա: Միկրոկարգավորիչի միջուկը հաշվելու համար օգտագործվում է արտաքին քվարցային ռեզոնատորով տատանող: Նման գեներատորի ընտրությունը պայմանավորված է վերջինիս հաճախականության կայունության պահանջներով։ Որպես ցուցիչ օգտագործվում է յոթ հատվածանոց քառանիշ LED ցուցիչ՝ ընդհանուր անոդով և դինամիկ ցուցիչով: Ցուցանիշի հատվածների հոսանքը չի սահմանափակվում ռեզիստորներով, քանի որ օգտագործվում է դինամիկ ցուցում, և, իհարկե, հոսանքը իմպուլսային է, որին ցուցիչի հատվածները հաջողությամբ դիմակայում են, ինչպես նաև միկրոկառավարիչի պորտը: Մուտքային հանգույցը կատարվում է R2, D1, D2, C3, R3, R4, R1, Q1 տարրերի վրա։ Այս հանգույցը ապահովում է իր մուտքին եկող ազդանշանների ուժեղացում / սահմանափակում (հաճախականության հաշվիչի մուտքի մոտ գտնվող դիմադրությունը և դիոդները սահմանափակում են մուտքային ազդանշանը, տրանզիստորը պատասխանատու է ազդանշանը TTL մակարդակին ուժեղացնելու համար): Սարքի տպագիր տպատախտակը նույնպես բարդ չէ։ Պատրաստված է միակողմանի փայլաթիթեղից (ի սկզբանե նախատեսված էր երկկողմանի, բայց չկար, ես միակողմանի տեղավորվեցի)։ Տախտակի տոպոլոգիան ներկայացված է ստորև:

Ինչ վերաբերում է միկրոկոնտրոլերի ծրագրին, ապա այն մշակվել է միջավայրում (նախագծի ֆայլը կցված է): Իմպուլսները հաշվելու համար ես օգտագործեցի ընդհատումներ միկրոկոնտրոլերի INT0 մուտքի մոտ, իսկ հաշվելու ժամանակը սահմանափակելու համար օգտագործեցի ժամանակաչափի ընդհատումներ TMR0: Քանի որ այս ժմչփն ունի 1/256 բաժանման գործակցով նախնական սանդղակ (շնորհիվ այն ութանիշի), ընդհատման հաճախականությունը հաշվարկվում է հետևյալ կերպ՝ Fprev.=F gen.÷256÷thr. գործերը։ Իմ դիզայնում ես ընտրեցի ընդհատման հաճախականությունը 200 Հց: Ինչպես վերևում գրեցի, չափման հաճախականությունը կարող է ավելացվել: Դա անելու համար անհրաժեշտ է միայն սահմանափակել չափման ժամանակը: Դա արվում է 200 թիվը 2-ի փոխելով (չափման ժամանակը ոչ թե 1 վրկ է, այլ 10 մս, անջատման հաճախականությունը՝ 99999 Հց), կոդում, ինչպես ցույց է տրված C-ի սկզբնաղբյուրի նկարում։

Միկրոկառավարիչը ծրագրավորելու համար ես օգտագործել եմ զուգահեռ ծրագրավորող: Ինչպես տեսնում եք, իմ դիզայնում արտաքին վերակայման փինն օգտագործվում է որպես սովորական նավահանգիստ: Եթե ​​դուք չունեք զուգահեռ ծրագրավորող, ապա ահա մի շրջանային տարբերակ, որտեղ օգտագործվում է միկրոկառավարիչի D պորտը, և կարիք չկա օգտագործել RESET փին որպես սովորական ելքային պորտ:

Ահա ծրագրում ապահովիչներ տեղադրելու օրինակ.

Ահա հաճախականության հաշվիչի տարբերակի դիագրամ, որն օգտագործում է RESET իր նպատակային նպատակի համար.

Եվ նաև ահա տախտակի տոպոլոգիան սխեմայի երկրորդ տարբերակի համար.

Շղթան սնուցելու համար օգտագործվում է կայունացված 5 Վ սնուցման աղբյուր (ես օգտագործել եմ համակարգչային սնուցման աղբյուր, այնպես որ շղթայում կայունացնող տարրեր չկան):

Այս սխեմայում սակավ մասեր չկան, բայց ես դեռ կթվարկեմ փոխարինողների և անալոգների ցանկը: Այսպիսով, Atmega8A-PU միկրոկոնտրոլերը կարելի է փոխարինել նմանատիպ Atmega8-16PU-ով (ի դեպ, վերջինս ավելի նախընտրելի է): Ռեզիստորները կարելի է վերցնել 0,125 Վտ հզորությամբ, բացառությամբ R2-ի, ավելի լավ է այն վերցնել 0,5 Վտ հզորությամբ: Կոնդենսատորներ - գեներատորի համար սկավառակ է, կերամիկական, իսկ մուտքային միավորի համար՝ ցանկացած հարմար պարամետրերի առումով: Տրանզիստորը կարող է փոխարինվել կենցաղային KT3102-ով (ինչպես KT315-ի համար փորձերը ցույց են տվել, ընթացիկ փոխանցման h21E գործակիցը չափազանց ցածր է): Դուք կարող եք վերցնել ցանկացած LED ցուցիչ, որը հարմար է չափի (և դրանք կրիտիկական չեն): Քվարցային ռեզոնատորն օգտագործվել է 3267800 Հց (3,2768 ՄՀց) հաճախականությամբ։

Պատրաստի սարքի լուսանկարները ներկայացված են ստորև:

Առաջին լուսանկարը ցույց է տալիս ռեզիստորը, որը միացված է RESET MK սնուցման աղբյուրին (ձախ որոնվածի երկրորդ ստուգումից՝ զրոյացված):

Ռադիոյի տարրերի ցանկ

Նշանակում Տիպ Դոնոմինացիա Քանակ ՆշումԽանութԻմ նոթատետրը
U1 MK AVR 8-bit

ATmega8A

1 ATmega 8-16PU Նոթատետրում
Q1 երկբևեռ տրանզիստոր

KT3102

1 2N3390 Նոթատետրում
VD1, VD2 ուղղիչ դիոդ

1N4148

2 Նոթատետրում
C1, C2 Կոնդենսատոր27 pF2 Նոթատետրում
C3 Կոնդենսատոր22 nF1 Նոթատետրում
R1, R4 Ռեզիստոր

470 օմ

2 Նոթատետրում
R2 Ռեզիստոր

100 օմ

1
PIC16F628A MK-ի վրա կարելի է պատրաստել շատ օգտակար և պարզ սարք, որն ուղղակի անփոխարինելի է ռադիոսիրողի ստեղծագործական լաբորատորիայում: Մինչև 30 ՄՀց հաճախականությունները չափելու համար այս թվային հաճախականության հաշվիչը նախագծված է սովորական PIC16F628A կարգավորիչ չիպի վրա: Դրա միացման դիագրամը բաղկացած է հիմնական մոդուլից, որի մուտքային դրայվերը միացված է իր հաշվառման մուտքին: Հաճախականության հաշվիչի սխեման ներկայացված է ստորև բերված նկարում.

Այս հաշվիչը կարող է օգտագործվել երկու ռեժիմով՝ թվային մասշտաբով և հաճախականության հաշվիչով: Երբ հոսանքը միացված է, հաճախականության հաշվիչն անցնում է այն ռեժիմին, որով այն աշխատել է մինչև վերջին անջատումը: Եթե ​​դա հաճախականության հաշվիչի ռեժիմ էր, ապա հաճախականության հաշվիչի ռեժիմը «F» կցուցադրվի ցուցիչի ձախ նիշում: Նաև «0»-ը կցուցադրվի ցուցիչի ցածր կարգի թվանշանում: Հաճախականության հաշվիչն ավտոմատ կերպով կմտնի հաճախականության չափման ռեժիմ և կլինի սպասման ռեժիմում: Երբ ազդանշան է կիրառվում մուտքի վրա, հաճախականության հաշվիչի ռեժիմի նշանը «F» է: մարված է, և ցուցիչը կցուցադրի չափված հաճախականության արժեքը կիլոհերցով:
Հաճախականության հաշվիչի մուտքային վարորդի սխեման՝ թվային սանդղակ, ներկայացված է նկարում.


Եթե ​​միացման պահին հաճախականության հաշվիչի մուտքում կա չափված ազդանշան, ապա հոսանքը միացնելուց հետո հաճախականության հաշվիչի «F» նշանը կվառվի 1 վայրկյան, այնուհետև կգնա: դուրս.
0,1 վրկ չափման ժամանակին անցնելու համար: կամ 10 վայրկյան, դուք պետք է սեղմեք կամ No 1 կոճակը, կամ միաժամանակ սեղմեք No 1 կոճակը և No2 կոճակը, համապատասխանաբար (տե՛ս ստեղնաշարի դասավորությունը հաճախականության հաշվիչի ռեժիմի համար), ապա սպասեք, որ տասնորդական կետի դիրքը փոխվի, և ապա բաց թողեք կոճակը (կոճակները): Եթե ​​դրանից հետո անհրաժեշտ է վերադառնալ 1 վայրկյան չափման ժամանակին, ապա անհրաժեշտ է սեղմել թիվ 2 կոճակը և սպասել տասնորդական կետի դիրքի փոփոխությանը, ապա բաց թողնել կոճակը։ Ցանկացած չափման ժամանակի համար տասնորդական կետը նշում է կիլոհերցը:


Հաշվիչի ռեժիմի ստեղնաշարի դասավորություն

Կոճակ թիվ 1 0.1 վրկ. Չափման ժամանակի փոփոխություն 0,1 վրկ:
Կոճակ #2 1 վրկ. Չափման ժամանակի փոփոխություն 1 վրկ:
Կոճակ #1 +
կոճակ թիվ 2 10 վրկ. Չափման ժամանակի փոփոխություն 10 վայրկյան:
(կոճակները սեղմվում են միաժամանակ)

Եթե ​​մինչև հոսանքն անջատելը թվային մասշտաբի ռեժիմում աշխատանք է եղել, ապա հաջորդ անգամ, երբ հոսանքը միացվի, այս ռեժիմը կկարգավորվի, իսկ թվային մասշտաբի ռեժիմի ներսում՝ հենց ենթամոդը («մինուս IF» կամ «գումարած IF» ”) կսահմանվի, որտեղ աշխատանքը տեղի է ունեցել մինչև վերջին անջատումը: Ցուցանիշի ձախ նիշում անընդհատ կցուցադրվեն թվային սանդղակի ենթամոդերի նշանները (համապատասխանաբար «L» կամ «H»): Եթե ​​թվային մասշտաբի մուտքում ազդանշան չկա, ցուցիչը ցույց կտա կարգավորիչի հիշողության մեջ պահվող միջանկյալ հաճախականության արժեքը, իսկ առկայության դեպքում՝ մուտքում առկա ազդանշանի հաճախականությունը հանելու կամ ավելացնելու արդյունքը: թվային մասշտաբի և PIC կարգավորիչի ոչ անկայուն հիշողության մեջ գրանցված միջանկյալ հաճախականության արժեքը:


Թվային մասշտաբի ռեժիմն ունի 4 ենթառեժիմ։
- Երբ սեղմում եք թիվ 1 կոճակը, հայտնվում է «մինուս IF» ենթամոդը:
- Այս դեպքում ցուցիչի ձախ նիշում կցուցադրվի «L.» ենթամոդի նշանը:
- Երբ սեղմում եք No 2 կոճակը, անցում է կատարվում «plus IF» ենթառողջին։
- Այս դեպքում ցուցիչի ձախ նիշում կցուցադրվի «H.» ենթամոդի նշանը:

Կարգավորիչը «թարթելու» գործընթացում միջանկյալ հաճախականության արժեքը = 5,5 ՄՀց գրվում է նրա ոչ անկայուն հիշողության մեջ, բայց այնուհետև այն կարող է ինքնուրույն գրել ցանկացած արժեք և օգտագործել այն որպես միջանկյալ: Դա անելու համար դուք պետք է արտաքին ազդանշան կիրառեք թվային ազդանշանի մուտքին հաճախականությամբ, որն այնուհետև կօգտագործվի որպես միջանկյալ: Դուք կարող եք վերահսկել այս հաճախականության արժեքը՝ անցնելով հաճախականության հաշվիչի ռեժիմին:

Թվային մասշտաբի ռեժիմի ստեղնաշարի դասավորություն.
Ժամանակի չափման կոճակներ Բացատրություններ
Կոճակ թիվ 1 «մինուս ԵԹԵ» Միջանկյալ հաճախականությունը հանվում է
չափված հաճախականություն
Կոճակ թիվ 2 «գումարած ԵԹԵ» Միջանկյալ հաճախականությունը գումարվում է
չափված հաճախականություն
Կոճակ #1 +
կոճակ թիվ 2 ԵԹԵ կարգավորում Գրել RAM արժեքին
չափված հաճախականություն (IF)
Re:
Կոճակ #1 +
կոճակ No. 2 Գրել IF Չափված հաճախականության արժեքը RAM-ից ոչ անկայուն հիշողության պատճենում, որպեսզի այն հետագայում օգտագործվի որպես միջանկյալ


Երբ փոխում եք գործառնական ռեժիմը, փոխվում է ստեղնաշարի դասավորությունը: Եթե ​​թիվ 1 կոճակը սեղմվում է որոշակի ժամանակից քիչ ժամանակ, ապա այլ ռեժիմի անցում չի կատարվում, և No 1 կոճակը կարող է չափման ժամանակը սահմանել 0,1 վրկ: (հաճախականության հաշվիչի ռեժիմում) կամ միացրեք «մինուս IF» ենթառողջը (թվային մասշտաբի ռեժիմում): Այս շեմը գերազանցելու դեպքում տեղի է ունենում անցում այլ ռեժիմի: Այս շեմի արժեքը մոտ 4 վայրկյան է, և այդ ժամանակային միջակայքը հաշվվում է հաշվման ցիկլի ավարտից՝ թիվ 1 կոճակը սեղմելու պահին։


Դուք կարող եք նվազեցնել հաճախականության հաշվիչի սխեմայի էներգիայի սպառումը ՝ ավելացնելով B պորտի կապում ցուցիչին միացնող դիմադրիչների արժեքները: Դրա դիզայնում ես օգտագործել եմ AON-ով սովետական ​​հեռախոսի 9 նիշանոց LED ցուցիչ՝ ընդհանուր կաթոդով և կարմիր փայլով։ Իմ հաճախականության հաշվիչի մեջ, բացի ցանցից, կա նաև մարտկոցի հզորություն (կուտակիչներ): Սարքի տպագիր տպատախտակը ներկայացված է նկարում.


PIC16F84A միկրոկառավարիչի որոնվածը, ինչպես նաև կարգավորիչի մասին հոդվածի ամբողջական տեքստը, ներբեռնեք այստեղից: Ես փորձարկեցի շղթան - ZU77:

Այս հոդվածում ներկայացված հաճախականությունը թույլ է տալիս չափել հաճախականությունը 10 Հց-ից մինչև 60 ՄՀց 10 Հց ճշգրտությամբ: Սա թույլ է տալիս օգտագործել այս սարքը կիրառությունների լայն շրջանակի համար, ինչպիսիք են հիմնական տատանումների հաճախականությունը, ռադիոընդունիչի և հաղորդիչի, ֆունկցիայի գեներատորի, քվարցային ռեզոնատորի և այլնի հաճախականությունը: Հաճախականության հաշվիչն ապահովում է լավ պարամետրեր և ունի լավ մուտքագրում: զգայունություն ուժեղացուցիչի և TTL փոխարկիչի առկայության պատճառով: Սա թույլ է տալիս չափել քվարցային ռեզոնատորների հաճախականությունը: Եթե ​​դուք օգտագործում եք կամընտիր հաճախականության բաժանարար, առավելագույն չափման հաճախականությունը կարող է հասնել 1 ԳՀց կամ ավելի:

PIC միկրոկոնտրոլերի վրա հաճախականության հաշվիչի գաղափարն ինձ մոտ առաջացավ Microchip-ի AN592 հավելվածի նշումը կարդալուց հետո, որը նկարագրում է, թե ինչպես կարելի է չափել հաճախականությունը PIC-ում և ներկայացնում է ծրագիր: Ես նախագծեցի մի շղթա և գրեցի մի ծրագիր, որում ես բարելավեցի չափման ճշգրտությունը, և հաճախականության արժեքը ցուցադրվում է LCD էկրանին: Պարզվեց, որ դա բավականին պարզ և արդյունավետ հաճախականության հաշվիչ է:

Հաճախականության հաշվիչի սխեման բավականին պարզ է, գործառույթների մեծ մասը կատարում է միկրոկառավարիչը: Միակ բանն այն է, որ միկրոկոնտրոլերին անհրաժեշտ է ուժեղացման փուլ՝ մուտքային լարումը 200-300 մՎ-ից 3 Վ-ի բարձրացնելու համար: Տրանզիստորը, որը միացված է ընդհանուր թողարկիչի սխեմայի համաձայն, միկրոկոնտրոլերի մուտքին ապահովում է կեղծ TTL ազդանշան:

Որպես տրանզիստոր անհրաժեշտ է ինչ-որ «արագ» տրանզիստոր, ես օգտագործել եմ BFR91 (KT3198V-ի կենցաղային անալոգը):

Vke լարումը սահմանվում է 1,8-2,2 վոլտ մակարդակի վրա R3 * ռեզիստորի կողմից միացումում: Ես ունեմ այն ​​10 կՕհմ, բայց այն կարող է կարգավորել: Տրանզիստորի կոլեկտորից լարումը կիրառվում է PIC միկրոկոնտրոլերի հաշվիչ/ժմչփի մուտքագրման վրա՝ 470 ohms մի շարք դիմադրության միջոցով: Չափումն անջատելու համար PIC-ում օգտագործվում են ներկառուցված ներքևող դիմադրիչներ:

PIC-ն իրականացնում է 32-բիթանոց հաշվիչ՝ մասամբ ապարատային, մասամբ՝ ծրագրային ապահովման մեջ: Հաշվարկը սկսվում է այն բանից հետո, երբ միկրոկոնտրոլերի ներկառուցված քաշվող ռեզիստորներն անջատվեն, տեւողությունը ուղիղ 0,4 վայրկյան է: Այս ժամանակից հետո PIC-ը ստացված թիվը բաժանում է 4-ի, այնուհետև գումարում կամ հանում է համապատասխան միջանկյալ հաճախականությունը՝ իրական հաճախականությունը ստանալու համար։ Ստացված հաճախականությունը փոխակերպվում է էկրանին ցուցադրելու համար:

Կալիբրացիա

Որպեսզի հաճախականության հաշվիչը ճիշտ աշխատի, այն պետք է տրամաչափվի: Դա անելու ամենահեշտ ձևը նախապես ճշգրիտ հայտնի հաճախականությամբ զարկերակային աղբյուրը միացնելն է և անհրաժեշտ ընթերցումները սահմանել՝ պտտելով հարմարվողական կոնդենսատորը:

Եթե ​​այս մեթոդը հարմար չէ, ապա կարող եք օգտագործել «կոպիտ տրամաչափումը»: Դա անելու համար անջատեք սարքի հոսանքը և միացրեք միկրոկառավարիչի 10-րդ ոտքը GND-ին: Այնուհետև միացրեք հոսանքը: MK-ն չափելու և ցուցադրելու է ներքին հաճախականությունը: Եթե ​​դուք չեք կարող կարգավորել ցուցադրվող հաճախականությունը (կարգավորելով 33 pF կոնդենսատորը), ապա մի պահ միացրեք 12 կամ 13 MK կապը GND-ին: Հնարավոր է, որ դա անհրաժեշտ լինի մի քանի անգամ անել, քանի որ. ծրագիրը ստուգում է այս ելքերը միայն մեկ անգամ մեկ չափման համար (0,4 վրկ): Չափորոշումից հետո անջատեք միկրոկոնտրոլերի 10-րդ փին GND-ից՝ առանց սարքի հոսանքն անջատելու, որպեսզի տվյալները պահպանվեն MK-ի չցնդող հիշողության մեջ։

Ռադիոյի տարրերի ցանկ

Նշանակում Տիպ Դոնոմինացիա Քանակ ՆշումԽանութԻմ նոթատետրը
MK PIC 8-բիթ

PIC18F84J11

1 Նոթատետրում
Գծային կարգավորիչ

LM7805

1 Նոթատետրում
ՏրանզիստորBFR911 Նոթատետրում
ուղղիչ դիոդ

1N4007

1 Նոթատետրում
Կոնդենսատոր1 uF1 Նոթատետրում
10 uF1 Նոթատետրում
էլեկտրոլիտիկ կոնդենսատոր1 uF1 Նոթատետրում
Կոնդենսատոր0.1 uF1 Նոթատետրում
Կոնդենսատոր33 pF1 Նոթատետրում
Հարմարվողական կոնդենսատոր33 pF1 Նոթատետրում
Ռեզիստոր

470 օմ

2 Նոթատետրում
Ռեզիստոր

10 կՕհմ

1 Ընտրություն Նոթատետրում
Ռեզիստոր

10 կՕհմ

1 Նոթատետրում
Փոփոխական դիմադրություն10 կՕհմ2

Այս դասը բավականին պարզ կլինի։ Հուսով եմ, որ դուք լավ եք սովորել անցյալի նյութերը. դաս ժամանակաչափերի և կոճակների կառավարման մասին:

Հասկանալու համար, թե ինչու են անհրաժեշտ արտաքին ընդհատումները, ես մի պարզ օրինակ կտամ. ենթադրենք, որ դուք օգտագործում եք ուշացումներ հիմնական ծրագրի օղակում (օրինակ՝ լուսադիոդը թարթելու համար), մինչդեռ անհրաժեշտ է օգտագործել կոճակը՝ լուսադիոդը այլ ռեժիմի անցնելու համար։ . Եթե ​​կոճակի մշակումը գտնվում է հիմնական հանգույցում, ապա դուք պետք է սպասեք, մինչև կոդերի բոլոր բեկորները մշակվեն, և հերթը հասնի կոճակի մշակմանը: Երբեմն դա հարմար չէ:

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

Արտաքին ընդհատումների համար հատկացված քորոցների քանակը կախված է միկրոկառավարիչի տեսակից, օրինակ՝ atmega8-ն ունի 2-ը, atmega16-ը՝ 3: Դրանք կոչվում են INT0, INT1 և այլն։

Ընդհատումը կարող է առաջանալ Rise Edge ազդանշանի բարձրացման, Falling Edge-ի անկման, ցանկացած փոփոխության, Ցածր մակարդակի ցածր մակարդակի միջոցով: Վիզարդում դա հետևյալն է.

Այժմ դիտարկենք, որպես օրինակ, արտաքին ընդհատման անսովոր օգտագործումը` հաճախականության հաշվիչ:

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

Դա անելու համար կարգավորեք ժմչփ 1 վայրկյանում 1 անգամ կրակելու համար, ինչպես դաս 5-ում: Երբ ժմչփի ընդհատումը գործարկվում է, մենք վերականգնում ենք հաշվիչը և արդյունքը ցուցադրում էկրանին:

#ներառում // Ալֆան-թվային LCD մոդուլի գործառույթները#asm .equ __lcd_port= 0x18 ; PORTB #endasm #ներառում #ներառում անստորագիր երկար i = 0, հաճախականություն= 0; char lcd_buf[ 33]; ընդհատում [EXT_INT0] void ext_int0_isr(void) (i++;) ընդհատում [TIM1_COMPA] void timer1_compa_isr(void) (freq= i; i= 0; TCNT1H= 0x00; TCNT1L= 0x00) (void); // Հայտարարեք ձեր տեղական փոփոխականները այստեղ // Մուտք/Ելք պորտերի սկզբնավորում// Բ պորտի սկզբնավորում // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In ( PORTB=0x00 ; DDRB=0x00 ; PORTD=0xFF; DDRD=0x00 ; // Ժամաչափ/Հաշվիչի 1 սկզբնավորում// Ժամացույցի աղբյուր՝ System Clock // Ժամացույցի արժեքը՝ 7,813 կՀց // Ռեժիմ՝ Normal top=FFFFh // OC1A ելք՝ Discon. // OC1B ելք՝ Discon. // Աղմուկի անջատիչ. Անջատված // Input Capture on Falling Edge // Ժմչփ 1 Overflow ընդհատում. Անջատված // Input Capture Interrupt՝ Off // Համեմատել A Match Interrupt: On // Համեմատել B Match ընդհատում. Անջատված TCCR1A=0x00 ; TCCR1B=0x05 ; TCNT1H=0x00 ; TCNT1L= 0x00 ; ICR1H=0x00 ; ICR1L=0x00 ; OCR1AH=0x1E; OCR1AL=0x85 ; OCR1BH=0x00 ; OCR1BL=0x00 ; // Արտաքին ընդհատում(ներ)ի սկզբնավորում// INT0՝ միացված // INT0 ռեժիմ՝ բարձրացող եզր // INT1՝ անջատված GICR|= 0x40 ; MCUCR=0x03 ; GIFR=0x40 ; // Ժամաչափ(ներ)/Հաշվիչ(ներ) Ընդհատում(ներ)ի սկզբնավորում TIMSK=0x10 ; // Global enable interrupts #asm("sei") lcd_init(8) ; while (1) (sprintf (lcd_buf, «freq=%d», հաճախականություն); lcd_gotoxy(0, 0); lcd_puts(lcd_buf);); )

#ներառում // Ալֆան-թվային LCD մոդուլի գործառույթները #asm .equ __lcd_port=0x18 ;PORTB #endasm #include #ներառում անստորագիր երկար i = 0, հաճախականություն=0; char lcd_buf; ընդհատել void ext_int0_isr(void) ( i++; ) ընդհատել void timer1_compa_isr(void) (freq=i; i=0; TCNT1H=0x00; TCNT1L=0x00; ) void main(void) ( // Հայտարարեք ձեր տեղական փոփոխականները այստեղ // In /Ելքային նավահանգիստների սկզբնավորում // B պորտի սկզբնավորում // Func7=Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3 =T State2=T State1=T State0=T PORTB=0x00; DDRB=0x00; PORTD=0xFF; DDRD=0x00; // Ժամաչափ/Հաշվիչի 1 սկզբնավորում // Ժամացույցի աղբյուր՝ Համակարգի Ժամացույց // Ժամացույցի արժեքը՝ 7,813 կՀց // Ռեժիմ՝ նորմալ վերև=FFFFh // OC1A ելք՝ Անջատում։ // OC1B ելք՝ Անջատում։ // Աղմուկի չեղարկում՝ Անջատված // Մուտքագրում ընկնող եզրին // Ժամաչափ 1 Հորդառատ ընդհատում՝ Անջատված // Ներածման նկարահանման ընդհատում՝ Անջատված // Համեմատեք A Match ընդհատում. Միացված // Համեմատեք B Match ընդհատում. Off OCR1BL=0x00; // Արտաքին ընդհատում(ներ) սկզբնավորում // INT0: Միացված // INT0 ռեժիմ. Բարձրացող եզր // INT1: Off GICR|=0x40; MCUCR=0x03; GIFR=0x40; // Ժամաչափ(ներ)/Հաշվիչ(ներ) Ընդհատում(ներ)ի սկզբնավորում TIMSK=0x10; // Global enable interrupts #asm("sei") lcd_init(8); while (1) ( sprintf(lcd_buf,"freq=%d",freq); lcd_gotoxy(0,0); lcd_puts(lcd_buf); ); )