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

Ինչպես չափել բարձր հաճախականության և աշխատանքային ցիկլը միաժամանակ ՝ միկրոկոնտրոլերի միջոցով. 4 քայլ
Ինչպես չափել բարձր հաճախականության և աշխատանքային ցիկլը միաժամանակ ՝ միկրոկոնտրոլերի միջոցով. 4 քայլ

Video: Ինչպես չափել բարձր հաճախականության և աշխատանքային ցիկլը միաժամանակ ՝ միկրոկոնտրոլերի միջոցով. 4 քայլ

Video: Ինչպես չափել բարձր հաճախականության և աշխատանքային ցիկլը միաժամանակ ՝ միկրոկոնտրոլերի միջոցով. 4 քայլ
Video: 8 բան, որ տղամարդիկ անում են ՄԻԱՅՆ այն կնոջ հետ, ում սիրում են 2024, Հուլիսի
Anonim
Ինչպես չափել բարձր հաճախականության և աշխատանքային ցիկլը ՝ միաժամանակ ՝ օգտագործելով միկրոկոնտրոլեր
Ինչպես չափել բարձր հաճախականության և աշխատանքային ցիկլը ՝ միաժամանակ ՝ օգտագործելով միկրոկոնտրոլեր
Ինչպես չափել բարձր հաճախականության և աշխատանքային ցիկլը ՝ միաժամանակ ՝ օգտագործելով միկրոկոնտրոլեր
Ինչպես չափել բարձր հաճախականության և աշխատանքային ցիկլը ՝ միաժամանակ ՝ օգտագործելով միկրոկոնտրոլեր
Ինչպես չափել բարձր հաճախականության և աշխատանքային ցիկլը ՝ միաժամանակ ՝ օգտագործելով միկրոկոնտրոլեր
Ինչպես չափել բարձր հաճախականության և աշխատանքային ցիկլը ՝ միաժամանակ ՝ օգտագործելով միկրոկոնտրոլեր

Ես գիտեմ, թե ինչ եք մտածում. Բայց սպասեք, այստեղ կա նորություն. Ես նկարագրում եմ հաճախականությունների չափման մի մեթոդ, որը շատ ավելի բարձր է, քան կարող է կրել միկրոկոնտրոլերը (MCU) և ազդանշանի աշխատանքային ցիկլը `բոլորը միաժամանակ:

Սարքի հաճախականությունների տիրույթը ընդգրկում է ~ 43 Հց -ից ~ 450 կՀց, մինչդեռ աշխատանքային ցիկլը տատանվում է 1% -ից մինչև 99%:

Թույլ տվեք բացատրել «կարող է կրել» մասը. MCU- ն չափում է քառակուսի ալիքի ազդանշանի ՝ T- ի ժամանակահատվածը ՝ հետևելով անցումային հաջորդ երկու իրադարձությունների միջև ընկած ժամանակին: Օրինակ, ցածրից բարձր լարման ցատկում է նրա մուտքի/ելքի կապերից մեկի վրա: Դա անում է ՝ հաշվելով իր ներքին ժամացույցի զարկերակների քանակը: Միամտորեն, չափված հաճախականությունների վերին սահմանը պետք է ենթարկվի Nyqvist-Shannon նմուշառման թեորեմին. այսինքն ՝ մոտավորապես հավասար կլինի MCU- ների ժամացույցի հաճախականության կեսին: Իրականում սահմանը շատ ավելի ցածր է, քանի որ MCU- ն պետք է կատարի ծածկագիր `ընդհատումները կարգավորելու, փոփոխականները պահպանելու, թվաբանական գործողություններ կատարելու, արդյունքները ցուցադրելու և այլն: մոտ 106. Հետևաբար, չափելի հաճախականության միջակայքի վերին սահմանը այս դեպքում կլինի 48, 000 /212 /2 = 226.4 կՀց:

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

Պարտականություն = 100% * P / T

Ինչպես հաճախության դեպքում, այնպես էլ գործնական սահմանափակում կա զարկերակի լայնության վրա: Օգտագործելով վերը նշված օրինակը, ժամացույցի 106 ցիկլը կսահմանափակի զարկերակի լայնությունը մինչև 2.21 միկրովայրկյան: Կամ ՝ 50% -ից ոչ պակաս ՝ 226,4 կՀց հաճախականությամբ:

Քառակուսի ալիքների ազդանշանների վերին հաճախականության սահմանը բարձրացնելու եղանակներից մեկը թվային բաժանարարների կիրառումն է, որոնք օգտագործում են մատնահետքեր: Մուտքային հաճախականությունը բաժանելով n- ի ՝ չափելի վերին միջակայքը կընդլայնվի n անգամ: Սա հիանալի նորություն է, թվային բաժանարարներն ունեն մեկ հիմնարար թերություն. Բաժանված ազդանշանը կորցնում է զարկերակի լայնության (և գործառնական ցիկլի) տեղեկատվությունը: Բաժանարարների աշխատանքի եղանակի պատճառով նրանց արտադրանքը միշտ ունենում է աշխատանքային ցիկլի 50%: Սարսափելի…

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

Քայլ 1. Թվային հաճախությունների բաժին

Թվային հաճախությունների բաժին
Թվային հաճախությունների բաժին
Թվային հաճախությունների բաժին
Թվային հաճախությունների բաժին
Թվային հաճախությունների բաժին
Թվային հաճախությունների բաժին

Ավանդական թվային հաճախականության բաժանարարները օգտագործում են մատիտներ; այս ձեռնարկը հիանալի կերպով բացատրում է այն սկզբունքները, թե ինչպես կարելի է կառուցել բաժանարարներ ՝ օգտագործելով JK ստանդարտ մատնահետքերը: Սա լուծում է մուտքային հաճախությունների խնդիրը MCU- ի համար չափազանց բարձր, բայց ունի մեկ մեծ թերություն. Բաժանված ազդանշանը ունի 50% աշխատանքային ցիկլ `անկախ մուտքային ազդանշանի պարտականությունից: Տեսնելու համար, թե ինչու է դա այդպես, նայեք առաջին երկու թվերին: Սկզբնական ազդանշանը ՝ T կետով և P զարկերակի լայնությամբ, սնվում է JK մատնահետքի ժամացույցի քորոցով, մինչդեռ նրա J և K կապերը մշտապես բարձր են պահվում (առաջին նկար): 3.3V տրամաբանությունը ենթադրվում է ամբողջ ընթացքում: Ենթադրենք, որ մատով խփելը առաջանում է ժամացույցի դրական (այսինքն ՝ աճող) եզրից: Այս պայմաններում ելքային կապի վիճակի փոփոխություններ (առանձին «մատներ» և «մատներ») տեղի են ունենում ամեն անգամ, երբ ժամացույցի պտույտը ցածրից բարձրանում է: Theամացույցի բարձրից ցածր անցումը (այսինքն ՝ բացասական եզրը) ամբողջովին անտեսվում է: Տես երկրորդ նկարը: Ելքային քորոցը ՝ Q, արձակում է ազդանշան, որի ժամանակահատվածը երկու անգամ ավելի է, քան սկզբնական շրջանը, այսինքն ՝ դրա հաճախականությունը կիսով չափ կրճատվում է: Ելքի զարկերակի լայնությունը միշտ հավասար է T. Հետևաբար, զարկերակի սկզբնական լայնությունը ՝ P- ն, կորչում է:

Երրորդ նկարում ցուցադրված կոնֆիգուրացիայում JK- ի մեկ այլ մատնահետքի ավելացում բաժանում է սկզբնական հաճախականությունը 4-ի: Նույն հաջորդական եղանակով ավելի շատ մատնահետքերի ավելացումը հաճախականությունը բաժանում է հաջորդ ուժերով `2: 8, 16, 32 և այլն:

Խնդիր. Ինչպե՞ս բաժանել քառակուսի ալիքի հաճախականությունը `պահպանելով դրա զարկերակի լայնությունը:

Գաղափարն այն է, որ պատշաճ կերպով խառնուրդին ավելացնենք JK մատնանշված բացասական եզրը: Եկեք այն անվանենք «Neg FF»; տես չորրորդ պատկերը: Այստեղ «պատշաճ» նշանակում է, որ նոր մատնահետքի J և K կապերը կապված են Q և Qbar ելքային կապանքների հետ, համապատասխանաբար ՝ նախորդ նկարում պատկերված բաժանարար-ի -4-ով («Pos FF»): (Այստեղ «բար» -ը Q խորհրդանիշի հորիզոնական սանդղակն է, որը ցույց է տալիս տրամաբանական մերժումը): Տեսնելու համար, թե ինչի է դա հասնում, նայեք հինգերորդ նկարում «Neg FF» - ի գործառական աղյուսակին. Neg- ի ելքային կապում, Q և Qbar, արտացոլում են համապատասխանաբար J և K մուտքային կապերի վիճակը: Ինչը նշանակում է, որ դրանք հայելային են Pos- ի Q- ի և Qbar- ի վիճակը: Բայց, Նեգի մատով խփվող գործողությունը պետք է սպասի սկզբնական ազդանշանի բացասական եզրին, որը P ժամանակին հասնում է դրական եզրից հետո: Ահա!

Ստացված ալիքի ձևերը պատկերված են վեցերորդ նկարում: «Pos Q» - ն ազդանշան է տալիս 1/4 -րդ հաճախականությամբ, «Pos Qbar» - ը հակադարձ է, «Neg Q» - ն հաջորդում է «Pos Q» - ին ՝ զարկերակի P լայնությամբ, իսկ «Neg Qbar» - ը ՝ հակադարձ: Կարող եք հաստատել, որ «Pos Qbar» - ի և «Neg Q» - ի տրամաբանական AND- ն արտադրում է զարկերակային գնացք, որը բնութագրվում է սկզբնական զարկերակի P լայնությամբ և 1/4 հաճախականությամբ: Բինգո!

Սկզբում ես հենց այս ելքային ազդանշանն էի օգտագործում MCU- ն կերակրելու համար: Այնուամենայնիվ, պարզվեց, որ պրոբլեմատիկ է իմպուլսի շատ կարճ լայնությունների համար `ներածության մեջ նշված MCU- ի 106 ցիկլերի սահմանափակման պատճառով: Ես լուծել եմ այս փոքր խնդիրը ՝ ընտրելով մեկ այլ ելք ՝ փոխարենը «Pos Qbar» ԵՎ «Neg Qbar»: Ալիքաձևերի մեկ հայացքը պետք է ձեզ համոզի, որ այս կոնկրետ ալիքի ձևի զարկերակի լայնությունը `P ', փոփոխվում է T- ի և 2T- ի միջև (0, T) միջակայքի փոխարեն: P- ն P- ից կարելի է հեշտությամբ վերականգնել.

P = 2T - P '

Քայլ 2: Առաջարկվող սարքավորում

Առաջարկվող սարքավորում
Առաջարկվող սարքավորում
Առաջարկվող սարքավորում
Առաջարկվող սարքավորում
Առաջարկվող սարքավորում
Առաջարկվող սարքավորում

Ինձ իսկապես դուր է գալիս էլեկտրոնային հոբբիստների համեմատաբար նորեկը. Atmel SAM D21 MCU- ն ՝ հիմնված 32-բիթանոց ARM Cortex M0+ պրոցեսորի վրա, որը գործում է 48 ՄՀց հաճախականությամբ, շատ ավելի բարձր, քան հին Atmels- ը: Այս նախագծի համար ես գնել եմ.

  • ItsyBitsy M0 Express MCU տախտակ Adafruit- ից
  • Ես պատահաբար ունեի վերալիցքավորվող LiPo մարտկոց Adafruit- ից
  • Մոնոխրոմ 128x32 SPI OLED էկրան (կռահեցիք ՝ Adafruit)
  • Երկակի դրական եզրով հրահրված JK մատնահետք SN74HC109 Texas Instruments- ից
  • Երկակի բացասական եզրով հրահրված JK մատնահետք SN74HC112- ից Texas Instruments- ից
  • Quadruple AND gate CD74AC08E Texas Instruments- ից
  • Quadruple OR gate CD74AC32E Texas Instruments- ից

Քայլ 3: Շղթան

The Circuit
The Circuit
The Circuit
The Circuit

Առաջին նկարը ցույց է տալիս հաճախականության/հերթապահության հաշվիչի պարզեցված սխեմատիկ պատկերը: 3.3 Վ CMOS տրամաբանությունը ենթադրվում է ամբողջ ընթացքում: Հետևաբար, մուտքային քառակուսի ալիքի ամպլիտուդը պետք է լինի համապատասխան V- ի միջևԻՀ մակարդակ (այսինքն ՝ 2 Վ) և 3.3 Վ. Հակառակ դեպքում, անհրաժեշտ է համապատասխանաբար բարձրացնել կամ իջեցնել այն: Շատ դեպքերում պարզ լարման բաժանարարը բավական կլինի: Եթե ցանկանում եք հաշվիչի ձեր տարբերակը նախագծել այլ տրամաբանական մակարդակով, ապա պետք է օգտագործեք մեկ այլ միկրո վերահսկիչ (MCU), մարտկոց և ցուցադրիչ, որն աշխատում է ցանկալի մակարդակի վրա: Այս նախագծում օգտագործվող տրամաբանական դարպասներն ու մատնահետքերը աշխատում են տրամաբանական մակարդակներով 2 Վ-ից 6 Վ միջակայքում և շատ դեպքերում պետք է լավ լինեն:

Ինչպես ցույց է տրված, ItsyBitsy MCU- ն օգտագործում է 9-13 կապում `ծրագրային SPI արձանագրության միջոցով ցուցադրման հետ հաղորդակցվելու համար: 3V պինն էներգիա է հաղորդում ամբողջ միացումին: Թվային մուտքագրման 3 -րդ կապը ընդունում է վերլուծված ազդանշանը, իսկ 2 -րդ և 4 -րդ կապերը վերահսկում են ազդանշանի աղբյուրը. Կամ ուղիղ ազդանշան, որը գալիս է դարպասից AND3 (ցածր մուտքային հաճախականություններ), կամ ազդանշան բաժանվում է 4 -ով դարպասով AND4 (բարձր մուտքային հաճախականություններ), ինչպես նկարագրված է 2 -րդ քայլում: Հաջորդ քայլում քննարկված ծածկագիրը ինքնաբերաբար հայտնաբերում է մուտքային հաճախականությունների տիրույթը և համապատասխանաբար փոխում է ազդանշանի աղբյուրը:

Սխեմատիկան չի ցույց տալիս թվային չիպերի միացումների իրական բարդությունը: Երկրորդ պատկերը ցույց է տալիս, թե ինչ տեսք կունենա նախագիծը հացահատիկի վրա: Մուտքային ազդանշանը կարմիր մետաղալարով անցնում է դեպի երկակի դրական եզրային մատով խփող 2CLK փին: Ո CAՇԱԴՐՈԹՅՈՆ. Սովորաբար, այս մատնահետքի բոլոր J և K կապերը պետք է բարձր պահվեն, սակայն դրա փոխարեն մասնավորապես SN74HC109- ը պարունակում է Kbar քորոցը `շրջված K քորոցը: Հետևաբար, այս քորոցը պետք է հիմնավորված լինի: SN74HC112- ի առաջին բացասական եզրային մատնահետքը ունի իր 1K և 1J կապը, որոնք միացված են SN74HC109- ի 1Q և 1Qbar կապումներին: SN74HC112- ի երկրորդ մատով-անգործությունը չօգտագործված է, և դրա մուտքային կապումներն (2K, 2J, 2CLRbar) հիմնավորված են: Բոլոր այլ լրացուցիչ կապում PREbar (նախադրված) և CLRbar (հստակ) բոլոր մատնահետքերում պետք է միացված լինել տրամաբանական բարձրին: Unամացույցի և ելքի չօգտագործված կապերը մնում են միացված: Նմանապես, բոլոր դարպասների չօգտագործված մուտքային կապումներն հիմնավորված են, իսկ չօգտագործված ելքային կապերը մնում են անկապ: Ինչպես ես քննարկեցի իմ «Հեռախոսի մատանի անտեսանելի մարդասպանը» հրահանգում, տրամաբանական չիպերի չօգտագործված մուտքային կապանքների հիմնավորումը վերացնում է պատահական տատանումները և խնայում մարտկոցի էներգիան:

Քայլ 4. Օրենսգիրքը և ցածր հաճախությունների չափումը

Բնականաբար, բոլոր գործողությունները կատարվում են ստորև բերված կոդի մեջ: Երբ 3 -րդ փին մուտքագրվող մուտքը թվային ցածրից բարձր է անցնում, MCU- ն սկսում է հաշվել իր ներքին 48 ՄՀց ժամացույցի իմպուլսները: Այն նշում է բարձրից ցածր անցման պահը և շարունակում է հաշվարկը մինչև հաջորդ ցածրից բարձր անջատիչը, երբ նորից նորից կսկսի ամբողջ գործընթացը: Առաջին հաշվարկը ներկայացնում է զարկերակի լայնությունը, մինչդեռ ամբողջ հաշվարկը ներկայացնում է ազդանշանի ժամանակահատվածը: Եվ դա է ամբողջ գաղտնիքը:

CPU- ն նշում է այս անցումները ապարատային ընդհատումների միջոցով: SAMD21- ն ունի մի քանի ժամացույց; իմ կոդը օգտագործում է TC3 մեկը: Սկզբում ես սկսեցի կարդալ M0- ի տվյալների թերթիկը, որը շատ ջանքեր էր գործադրում ընդհատումների կառավարիչը կոդավորելու համար, բայց շուտով ես գտա շատ առնչվող կոդ Arduino ֆորումում օգտագործողների կողմից electro_95, MartinL և Rucus, որոնց ներդրումը պատշաճ կերպով ճանաչված: Ես ներառեցի և փոփոխեցի դրանց համակցված ծածկագիրը իմի մեջ. խնայելով ինձ շատ ժամանակ!

Ինչպես արդեն նշեցի, ազդանշանի թույլատրելիությունը սահմանափակված է 6 106 պրոցեսորի ցիկլերով `ընդհատումների միջև ծածկագիրը կատարելու համար: Իմպուլսի լայնության պահպանմամբ թվային բաժանումը հոգում է բարձր հաճախականությունների մասին: Lowածր հաճախականությունները, մյուս կողմից, առաջացնում են մեկ այլ մարտահրավեր. Քանի որ TC3 ժամացույցի հաշվիչը 16 բիթ երկարություն ունի, այն դուրս է գալիս 65, 536 համարների սահմանաչափը հատելուց հետո: Կարելի է կարգավորել այս իրավիճակը ՝ ավելացնելով արտահոսքի ընդհատում, բայց ընտրել այլ լուծում. Այսպիսով, եթե ազդանշանի ժամանակահատվածը մոտենում է հոսքի սահմանին, ծածկագիրը կարող է հանձնարարել TC3- ին հաջորդ ժամանակաշրջանի համար օգտագործել 24 ՄՀց համարներ, և, voila, հաշվիչը 32 -ից ցածր է ընկնում, 768 համար: Նույնիսկ ավելի ցածր հաճախականությունների դեպքում TC3- ին կարող են հանձնարարվել հաշվել 12 ՄՀց իմպուլսներ և այլն: Համապատասխան նախալեզվիչն ինքնաբերաբար որոշվում է ազդանշանի հաճախականության հիման վրա `հիստերեզով, որպեսզի TC3 հաշվիչը պահի արտահոսքի սահմաններում: Արդյունքում, սարքի տիրույթի ստորին ծայրը մոտ 43 Հց է:

Դուք ողջունում եք ծածկագրել ծածկագիրը և օգտագործել այն ձեր նախագծում, բայց արդյունքների հրապարակման ժամանակ խնդրում ենք նշել դրա աղբյուրը:

Հղում դեպի կոդը:

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