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

Arduino ժամաչափեր ՝ 8 նախագիծ ՝ 10 քայլ (նկարներով)
Arduino ժամաչափեր ՝ 8 նախագիծ ՝ 10 քայլ (նկարներով)

Video: Arduino ժամաչափեր ՝ 8 նախագիծ ՝ 10 քայլ (նկարներով)

Video: Arduino ժամաչափեր ՝ 8 նախագիծ ՝ 10 քայլ (նկարներով)
Video: FLProg7. Իրական ժամանակի ժամացույց և ջերմաստիճան | ESP32 NodeMCU | Visual Embedded Programming 2024, Հունիսի
Anonim
Arduino ժամաչափեր. 8 նախագիծ
Arduino ժամաչափեր. 8 նախագիծ

Arduino Uno- ն կամ Nano- ն կարող են ճշգրիտ թվային ազդանշաններ առաջացնել վեց նվիրված քորոցների վրա `օգտագործելով երեք ներկառուցված ժամաչափերը: Դրանք պահանջում են ընդամենը մի քանի հրաման ՝ գործարկելու համար ոչ մի պրոցեսորի ցիկլ օգտագործելու համար:

Theամաչափերի օգտագործումը կարող է վախեցնել, եթե սկսեք ATMEGA328 ամբողջական տվյալների թերթից, որը պարունակում է 90 էջ նվիրված իրենց նկարագրությանը: Մի քանի ներկառուցված Arduino հրամաններ արդեն օգտագործում են ժամաչափերը, օրինակ ՝ millis (), delay (), tone (), AnalogWrite () և servo գրադարանը: Բայց նրանց ամբողջ ուժն օգտագործելու համար հարկավոր է դրանք կարգավորել գրանցամատյանների միջոցով: Ես այստեղ կիսում եմ մի քանի մակրո և գործառույթներ `դա ավելի հեշտ և թափանցիկ դարձնելու համար:

Theամաչափերի շատ կարճ ակնարկից հետո հետևեք 8 հիանալի նախագծերի, որոնք ապավինում են ժամաչափերի հետ ազդանշանի ստեղծմանը:

Քայլ 1: Պահանջվող բաղադրիչներ

Պահանջվող բաղադրիչներ
Պահանջվող բաղադրիչներ

Բոլոր 8 նախագծերն իրականացնելու համար ձեզ հարկավոր է.

  • Arduino Uno կամ համատեղելի
  • Վահանի նախատիպ ՝ մինի նախատախտակով
  • 6 breadboard jumper մալուխներ
  • 6 կարճ տախտակի թռիչք (պատրաստեք ինքներդ ձեզ 10 սմ ամուր միջուկի միացման մետաղալարից)
  • 2 կոկորդիլոսի կապար
  • 1 սպիտակ 5 մմ LED
  • 220 Օմ դիմադրություն
  • 10kOhm դիմադրություն
  • 10 կՕմ պոտենցիոմետր
  • 2 կերամիկական 1muF կոնդենսատոր
  • 1 էլեկտրոլիտիկ 10muF կոնդենսատոր
  • 2 դիոդ ՝ 1n4148 կամ նմանատիպ
  • 2 միկրո սերվո շարժիչ SG90
  • 1 8 Օմ բարձրախոս
  • 20 մ բարակ (0.13 մմ) էմալապատ մետաղալար

Քայլ 2. Ազդանշանի ստեղծման համար Arduino ժամաչափերի ակնարկ

Timer0- ը և timer2- ը 8-բիթ ժամաչափ են, ինչը նշանակում է, որ դրանք կարող են հաշվել 0-ից մինչև 255 առավելագույնը: Erամաչափը 16-բիթ ժամաչափ է, ուստի այն կարող է հաշվել մինչև 65535: Յուրաքանչյուր ժամաչափ ունի երկու հարակից ելքային կապ `6 և 5 ժամաչափի համար 0, 9 և 10 ժամաչափի համար 1, 11 և 3 ժամաչափի համար 2: Timամաչափը ավելանում է Arduino ժամացույցի յուրաքանչյուր ցիկլով կամ արագությամբ, որը կրճատվում է նախնական չափման գործոնով, որը կամ 8, 64, 256 կամ 1024 է (ժամանակաչափի համար թույլատրվում են նաև 32 և 128): Ersամաչափերը հաշվում են 0 -ից մինչև «TOP», այնուհետև նորից (արագ PWM) կամ ներքև (փուլը ճիշտ PWM): Այսպիսով, «TOP» - ի արժեքը որոշում է հաճախականությունը: Ելքային կապերը կարող են սահմանել, վերակայել կամ շրջվել Ելքային Համեմատության Ռեգիստրի արժեքի վրա, այնպես որ դրանք որոշում են աշխատանքային ցիկլը: Միայն timer1- ն ունի երկու ելքային կապում հաճախականությունն ու աշխատանքային ցիկլերը ինքնուրույն սահմանելու ունակություն:

Քայլ 3: LED թարթում

Image
Image
LED թարթում
LED թարթում
LED թարթում
LED թարթում

Ամենացածր հաճախականությունը, որին կարելի է հասնել 8-բիթ ժամաչափերով, 16 ՄՀց է ((511*1024) = 30, 6 Հց: Այսպիսով, LED- ը 1Hz- ով թարթելու համար մեզ անհրաժեշտ է ժմչփ 1, որը կարող է հասնել 256 անգամ փոքր հաճախությունների ՝ 0.12 Հց հաճախականությունների:

Միացրեք LED- ն իր անոդով (երկար ոտքով) pin9- ին և միացրեք նրա կաթոդը 220 Օմ դիմադրիչով գետնին: Վերբեռնեք ծածկագիրը: LED- ը կթարթվի ուղիղ 1 Հց հաճախականությամբ ՝ 50%աշխատանքային ցիկլով: The loop () գործառույթը դատարկ է. Ժամաչափը սկզբնավորվում է setup- ում () և լրացուցիչ ուշադրության կարիք չունի:

Քայլ 4: LED Dimmer

Image
Image
LED Dimmer
LED Dimmer
LED Dimmer
LED Dimmer

Իմպուլսային լայնության մոդուլյացիան LED- ի ինտենսիվությունը կարգավորելու արդյունավետ միջոց է: Պատշաճ վարորդի առկայության դեպքում դա նաև նախընտրելի մեթոդ է `էլեկտրաշարժիչների արագությունը կարգավորելու համար: Քանի որ ազդանշանը կա՛մ 100% միացված է, կա՛մ 100% անջատված, ոչ մի էներգիա չի վատնվում մի շարք դիմադրության վրա: Հիմնականում դա նման է LED- ն ավելի արագ բռնկելուն, քան կարող է հետևել աչքը: 50Hz- ը սկզբունքորեն բավարար է, բայց այն կարող է դեռ մի փոքր թրթռալ, և երբ LED- ն կամ աչքերը շարժվում են, կարող է առաջանալ անհանգստացնող ոչ շարունակական «հետք»: Օգտագործելով 64-ի նախնական սանդղակը 8-բիթ ժամաչափով, մենք ստանում ենք 16 ՄՀց/(64*256) = 977 Հց, որը համապատասխանում է նպատակին: Մենք ընտրում ենք timer2- ը, որպեսզի timer1- ը հասանելի լինի այլ գործառույթների համար, և մենք չենք միջամտում Arduino time () գործառույթին, որն օգտագործում է timer0- ը:

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

Քայլ 5: Թվային-անալոգային փոխարկիչ (DAC)

Image
Image
Թվային-անալոգային փոխարկիչ (DAC)
Թվային-անալոգային փոխարկիչ (DAC)
Թվային-անալոգային փոխարկիչ (DAC)
Թվային-անալոգային փոխարկիչ (DAC)

Arduino- ն չունի իրական անալոգային ելք: Որոշ մոդուլներ վերցնում են անալոգային լարումը `պարամետրը կարգավորելու համար (ցուցադրման հակադրություն, հայտնաբերման շեմ և այլն): Միայն մեկ կոնդենսատորով և ռեզիստորով, ժամանակաչափը կարող է օգտագործվել 5 մՎ կամ ավելի բարձր լուծաչափով անալոգային լարման ստեղծման համար:

Ածր անցման ֆիլտրը կարող է «միջինացնել» PWM ազդանշանը անալոգային լարման: Կոնդենսատորը ռեզիստորի միջոցով միացված է PWM քորոցին: Բնութագրերը որոշվում են PWM հաճախականությամբ և ռեզիստորի և կոնդենսատորի արժեքներով: 8-բիթ ժամաչափերի լուծաչափը կլինի 5V/256 = 20mV, ուստի մենք ընտրում ենք Timer1- ը `10-բիթանոց լուծում ստանալու համար: RC- ի սխեման առաջին կարգի ցածրորակ զտիչ է և այն կունենա ինչ-որ ալիք: RC սխեմայի ժամանակային մասշտաբը պետք է շատ ավելի մեծ լինի, քան PWM ազդանշանի ժամանակահատվածը `ալիքը նվազեցնելու համար: Periodամանակահատվածը, որը մենք ստանում ենք 10 բիթ ճշգրտության համար, 1024/16 ՄՀց = 64 մուս է: Եթե մենք օգտագործում ենք 1muF կոնդենսատոր և 10kOhm դիմադրություն, RC = 10ms: Պիկ-գագաթնակետ ծածանը առավելագույնը 5V*0.5*T/(RC) = 16mV է, որն այստեղ բավարար է համարվում:

Նկատի ունեցեք, որ այս DAC- ն ունի շատ բարձր ելքային դիմադրություն (10kOhm), ուստի լարումը զգալիորեն կնվազի, եթե հոսանք քաշի: Դրանից խուսափելու համար այն կարող է բուֆերացվել opamp- ով, կամ կարող է ընտրվել R- ի և C- ի այլ համադրություն, օրինակ ՝ 1kOhm ՝ 10muF- ով:

Օրինակում, DAC- ի ելքը ղեկավարվում է պոտենցիոմետրով: Երկրորդ անկախ DAC ալիքը կարող է գործարկվել timer1- ի հետ pin 10 -ում:

Քայլ 6: Մետրոնոմ

Image
Image
Մետրոնոմ
Մետրոնոմ
Մետրոնոմ
Մետրոնոմ

Մետրոնոմը օգնում է հետևել ռիթմին երաժշտություն նվագելիս: Շատ կարճ իմպուլսների դեպքում arduino ժամաչափի ելքը կարող է սնվել անմիջապես բարձրախոսին, ինչը հստակ լսելի կտտոցներ կտա: Պոտենցիոմետրով հարվածի հաճախականությունը կարող է կարգավորվել 40 -ից 208 զարկ / րոպեում ՝ 39 քայլով: Erամաչափ 1 -ը անհրաժեշտ է ճշգրտության համար: «TOP» - ի արժեքը, որը որոշում է հաճախականությունը, փոփոխվում է loop () գործառույթի ներսում, և դա ուշադրություն է պահանջում: Այստեղ տեսնում եք, որ WGM ռեժիմը տարբերվում է ֆիքսված հաճախականություն ունեցող այլ օրինակներից. Այնուամենայնիվ, սա նշանակում է, որ մենք կարող ենք օգտագործել միայն 1 ելքային փին:

Քայլ 7: Ձայնի սպեկտր

Image
Image
Ձայնային սպեկտր
Ձայնային սպեկտր
Ձայնային սպեկտր
Ձայնային սպեկտր

Մարդը կարող է լսել ձայնի հաճախությունների ավելի քան 3 կարգ ՝ 20 Հց -ից մինչև 20 կՀց: Այս օրինակը պոտենցիոմետրով ստեղծում է ամբողջ սպեկտրը: 10muF կոնդենսատորը դրվում է բարձրախոսի և Arduino- ի միջև ՝ DC հոսանքը արգելափակելու համար: Timer1- ը արտադրում է քառակուսի ալիք: Waveform սերնդի ռեժիմն այստեղ Phase-correct PWM է: Այդ ռեժիմում հաշվիչը սկսում է հաշվել հետընթաց, երբ այն հասնում է վերևի, ինչը հանգեցնում է իմպուլսների, որոնց միջին արժեքը հաստատված է, նույնիսկ այն դեպքում, երբ աշխատանքային ցիկլը տատանվում է: Այնուամենայնիվ, այն նաև հանգեցնում է մի ժամանակաշրջանի, որը (գրեթե) կրկնակի է, և պարզապես պատահում է, որ նախնական 8 -ով ժամանակաչափը 1 -ը ընդգրկում է լսելիության ամբողջ սպեկտրը ՝ առանց նախնական սանդղակը փոխելու անհրաժեշտության: Նաև այստեղ, քանի որ TOP- ի արժեքը փոխվում է անընդհատ, OCR1A- ի օգտագործումը որպես վերև նվազեցնում է անսարքությունները:

Քայլ 8: Servo Motors

Image
Image
Servo Motors
Servo Motors
Servo Motors
Servo Motors

Կան հզոր սերվո գրադարաններ, բայց եթե դուք ունեք ընդամենը երկու սերվո քշելու համար, ապա կարող եք դա անել անմիջապես ժամաչափով 1, և այդպիսով նվազեցնել պրոցեսորը, հիշողության օգտագործումը և խուսափել ընդհատումներից: Հանրաճանաչ SG90 servo- ն ընդունում է 50 ՀՀ ազդանշան, և զարկերակի երկարությունը կոդավորում է դիրքը: Իդեալական ժամանակաչափի համար 1. Հաճախականությունը ֆիքսված է, այնպես որ ինչպես pin9- ի, այնպես էլ pin 10 -ի ելքերը կարող են օգտագործվել սերվոները ինքնուրույն ղեկավարելու համար:

Քայլ 9. Լարման կրկնապատկիչ և ինվերտոր

Լարման կրկնապատկիչ և ինվերտոր
Լարման կրկնապատկիչ և ինվերտոր
Լարման կրկնապատկիչ և ինվերտոր
Լարման կրկնապատկիչ և ինվերտոր
Լարման կրկնապատկիչ և ինվերտոր
Լարման կրկնապատկիչ և ինվերտոր

Երբեմն ձեր նախագիծը պահանջում է 5 Վ -ից բարձր լարման կամ բացասական լարման: Դա կարող է լինել MOSFET գործարկելը, պիեզո տարրը գործարկելը, opamp- ը միացնելը կամ EEPROM- ի վերակայումը: Եթե ընթացիկ քաշքշուկը բավական փոքր է ՝ մինչև 5 մԱ, լիցքավորման պոմպը կարող է լինել ամենապարզ լուծումը. Ընդամենը 2 դիոդ և երկու կոնդենսատոր, որոնք միացված են ժամանակաչափից իմպուլսային ազդանշանին, թույլ են տալիս կրկնապատկել arduino 5V- ը մինչև 10V: Գործնականում կա դիոդի 2 կաթիլ, ուստի գործնականում դա ավելի շատ նման կլինի 8.6 Վ երկկողմանի, կամ -3.6 Վ ինվերտորի համար:

Քառակուսի ալիքի հաճախականությունը պետք է բավարար լինի դիոդների միջոցով բավարար լիցք մղելու համար: 1muF կոնդենսատորը տեղափոխում է փոփոխության 5muC, երբ լարումը փոխվում է 0 -ից մինչև 5V, այնպես որ 10mA հոսանքի դեպքում հաճախականությունը պետք է լինի առնվազն 2kHz: Գործնականում ավելի բարձր հաճախականությունն ավելի լավ է, քանի որ այն նվազեցնում է ալիքը: Timամաչափ 2 -ով առանց նախնական չափման 0 -ից 255 -ը հաշվարկվում է, հաճախականությունը `62.5 կՀց, ինչը լավ է աշխատում:

Քայլ 10: Անլար էներգիայի փոխանցում

Image
Image
Անլար էներգիայի փոխանցում
Անլար էներգիայի փոխանցում
Անլար էներգիայի փոխանցում
Անլար էներգիայի փոխանցում

Սովորական չէ, որ խելացի ժամացույցը լիցքավորվի առանց մալուխների, բայց նույնը հեշտությամբ կարող է մաս կազմել Arduino նախագծին: Բարձր հաճախականության ազդանշան ունեցող կծիկը կարող է ուժը փոխանցել մոտակա մեկ այլ կծիկ ինդուկցիայի միջոցով ՝ առանց էլեկտրական շփման:

Նախ պատրաստեք կծիկները: Ես օգտագործել եմ 8,5 սմ տրամագծով թղթե գլան և 0,13 մմ տրամագծով էմալապատ մետաղալար ՝ 2 ոլորուն պատրաստելու համար. Առաջնայինը ՝ 20 պտույտով, երկրորդը ՝ 50 պտույտով: Այս տիպի կծիկի N- ոլորուններով և R շառավղով ինքնա-ինդուկտիվությունը կազմում է m 5muH * N^2 * R. Այսպիսով, N = 20-ի և R = 0.0425- ի համար տրվում է L = 85muH, ինչը հաստատվել է բաղադրիչ փորձարկողի միջոցով: Մենք արտադրում ենք 516kHz հաճախականությամբ ազդանշան, որի արդյունքում ստացվում է 2pi*f*L = 275Ohm դիմադրություն: Սա այնքան բարձր է, որ Arduino- ն չի անցնում գերհոսանք:

Կծիկն առավել արդյունավետ գործարկելու համար մենք կցանկանայինք օգտագործել իսկական AC աղբյուր: Կա մի հնարք, որը կարելի է անել. Ժամաչափի երկու ելքերը կարող են գործարկվել հակառակ փուլում ՝ ելքերից մեկը շրջելով: Այն սինուս ալիքին ավելի նմանեցնելու համար մենք օգտագործում ենք Phase-correct PWM- ը: Այս կերպ, կապի 9 -ի և 10 -ի միջև, լարումը փոխվում է երկուսն էլ `0V- ի, կապի 9 +5V- ի, երկուսն էլ` 0V- ի, կապի 10 +5V- ի միջև: Ազդեցությունը նկարում ցուցադրվում է շրջանակի հետքից (1024 նախնական չափերով, այս խաղալիքի շրջանակը մեծ թողունակություն չունի):

Միացրեք առաջնային կծիկը 9 և 10. կապում միացրեք LED- ը երկրորդական կծիկին: Երբ երկրորդային կծիկը մոտենում է առաջնայինին, LED- ը պայծառ լուսավորվում է:

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