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

Շարժման ցուցիչ/հակահսկվող լույսեր `7 քայլ
Շարժման ցուցիչ/հակահսկվող լույսեր `7 քայլ

Video: Շարժման ցուցիչ/հակահսկվող լույսեր `7 քայլ

Video: Շարժման ցուցիչ/հակահսկվող լույսեր `7 քայլ
Video: Հավասարաչափ շրջանագծային շարժում |10-րդ դասարան. Ֆիզիկա | «Քան» ակադեմիա 2024, Նոյեմբեր
Anonim
Շարժման ցուցիչ/հակահսկվող լույսեր
Շարժման ցուցիչ/հակահսկվող լույսեր

Այս նախագիծը ստեղծվել է որպես Թվային դիզայնի դասընթացի վերջնական ծրագիր Cal Poly, San Luis Obispo (CPE 133):

Ինչո՞ւ ենք մենք դա անում: Մենք ցանկանում ենք օգնել պահպանել աշխարհում բնական պաշարները: Մեր նախագիծը կենտրոնացած է էլեկտրաէներգիայի խնայողության վրա: Ավելի շատ էլեկտրաէներգիա խնայելով ՝ մենք կկարողանանք պահպանել բնական ռեսուրսները, որոնք օգտագործվում են էլեկտրաէներգիա արտադրելու համար: Սկսելով 2018 թվականը, բնական պաշարները սպառվում են անհավանական արագությամբ: Մենք ցանկանում ենք գիտակցել մեր ազդեցությունը մեր շրջակա միջավայրի վրա և մեր դերը կատարել բնական պաշարների պահպանման գործում: Էլեկտրոնիկան կարող է ներդրվել էներգիայի խնայողության տարբեր եղանակներով, ինչը օգնում է շրջակա միջավայրին, ինչպես նաև մեր տնտեսական վիճակին:*Այս մոդելը ստեղծվել է մեզ հասանելի բաղադրիչների օգտագործմամբ:

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

Ինչպե՞ս կարող եք օգտագործել այս դիզայնը: Այս դիզայնը կարող է իրականացվել բոլոր տեսակի լույսերի համար `անկախ դեկորատիվ, գործնական կամ երկուսից: Եթե ցանկանում եք, որ ձեր գրասեղանի լույսը միաժամանակ գործի միայն 6 ժամ, օրինակ. Դուք պետք է հաշվիչ սահմանեք 21, 600 վայրկյան (6 ժամ x 3, 600 վայրկյան/ժամ): Մինչ հաշվիչը ակտիվորեն աճում է, շարժման ցուցիչը վերահսկում է լույսը: Այսպիսով, ամեն անգամ, երբ այն անջատվում է այդ ժամանակահատվածում, պարզապես անհրաժեշտ է ձեռքը թափահարել շարժման սենսորի առջև, և այն նորից կվերածվի: Եթե դուք քնում եք ձեր գրասեղանի մոտ և արթնանում 7 ժամ անց, ձեր շարժումը այն չի միացնի:

Քայլ 1: Պահանջվող ծրագրակազմ և սարքավորում

Պահանջվող ծրագրակազմ և սարքավորում
Պահանջվող ծրագրակազմ և սարքավորում
Պահանջվող ծրագրակազմ և սարքավորում
Պահանջվող ծրագրակազմ և սարքավորում
Պահանջվող ծրագրակազմ և սարքավորում
Պահանջվող ծրագրակազմ և սարքավորում
Պահանջվող ծրագրակազմ և սարքավորում
Պահանջվող ծրագրակազմ և սարքավորում

Softwareրագրային ապահովում:

  • Vivado 2016.2 (կամ ավելի նոր տարբերակ) կարելի է գտնել այստեղ
  • Arduino IDE 1.8.3 (կամ ավելի նոր տարբերակ) կարելի է գտնել այստեղ

Սարքավորումներ:

  • 1 Basys 3 տախտակ
  • 1 Arduino Uno
  • 2 տախտակ
  • 1 Ուլտրաձայնային ազդանշանային տվիչ HC-SR04
  • 9 Արականից արական լարեր
  • 1 LED
  • 1 100Ω դիմադրություն

Քայլ 2: Կոդեր (Vivado)

Կոդեր (Vivado)
Կոդեր (Vivado)

Վերջնական վիճակի մեքենա (տե՛ս վերը նշված պետական դիագրամը)

LED- ը պահանջում էր վերջնական վիճակի մեքենա: LED- ն ունի միացման և անջատման ընդամենը երկու վիճակ: Միայն երկու մուտք են վերահսկում լուսադիոդի, հաշվիչի և տվիչի վիճակը: LED- ը պետք է միացված լինի միայն այն ժամանակ, երբ սենսորը հայտնաբերում է շարժումը և երբ հաշվիչը հաշվում է զրոյից երեսուն վայրկյան: Otherանկացած այլ դեպքում LED- ն անջատված կլինի:

Ֆայլի անունը.: LEDDES

Հաշվիչ:

Հաշվիչը թույլ է տալիս սահմանափակել այն ժամանակը, որի ընթացքում շարժման տվիչը կարող է ակտիվացնել LED- ը: Դրա արժեքը ցուցադրվում է Basys 3 Board- ի յոթ հատվածի ցուցադրման վրա `աղբյուրի կոդի միջոցով (« sseg_dec »): Երբ Վերակայման անջատիչն անջատված է (արժեքը ՝ «0»), հաշվիչը սկսում է ամեն վայրկյան աճել 0 -ից մինչև 30. Երբ այն հասնում է 30 -ի, այն սառեցնում է այդ թվի վրա: Այն չի վերագործարկվի 0 -ից մինչև Reset անջատիչը միացված լինի «1» -ին և վերադառնա «1»: Եթե վերականգնումը «1» դառնա հաշվիչի ընթացքի ընթացքում, հաշվիչը կսառչի այն արժեքի վրա, որին հասել էր: Երբ Վերականգնումը վերադառնա «0», հաշվիչը կվերագործարկվի 0 -ից 30 -ը: Այս իրականացումը պահանջում է նաև ժամացույցի ազդանշանի օգտագործում, որի կոդը տրված է ստորև («clk_div2»):

Ֆայլի անունը.: FinalCounter

ՏՐԱՄԱԴՐՎԱ ՖԱՅԼԵՐ

Յոթ հատվածի ցուցադրում

Այս ծածկագիրը թույլ է տալիս յոթ հատվածի ցուցադրմանը ցուցադրել տասնորդական արժեքներ: Մեկ ենթամոդուլը գործում է որպես ապակոդավորիչ 8-բիթանոց երկուական մուտքագրման և 4-բիթանոց Երկուական կոդավորված տասնորդականի միջև: Մյուսը բաժանում է ժամացույցի ազդանշանը `դրա արժեքը որոշակի արագությամբ թարմացնելու համար:

Ֆայլի անունը.: sseg_dec

Ockամացույցի ազդանշան

Այս ծածկագիրը թույլ է տալիս հաշվիչին ավելացնել 1 վայրկյան ավելացմամբ: Այն բաժանում է մուտքի ժամացույցի հաճախականությունը ավելի դանդաղ հաճախականության: Մենք հարմարվեցինք, որպեսզի ապահովենք 1 վայրկյան ժամանակահատված ՝ փոփոխելով հաստատուն max_count: integer: = (3000000)”դեպի” հաստատուն max_count: integer: = (50000000):

Ֆայլի անունը.: clk_div2

Տրամադրված ֆայլեր ՝ sseg_dec, clk_div2 *Այս աղբյուր ֆայլերը տրամադրել է պրոֆեսոր Բրայան Միլին:

Քայլ 3. Հասկանալով, թե ինչպես են դրանք միավորվում (VHDL բաղադրիչների սխեմաներ)

Հասկանալով, թե ինչպես են դրանք միավորվում (VHDL բաղադրիչների սխեմաներ)
Հասկանալով, թե ինչպես են դրանք միավորվում (VHDL բաղադրիչների սխեմաներ)

Հիմնական ֆայլը («MainProjectDES») պարունակում է նախկինում քննարկված բոլոր ենթաֆայլերը: Նրանք միացված են վերը նշված եղանակով: Տարբեր բաղադրիչները փոխկապակցված են նավահանգիստների քարտեզների միջոցով `ազդանշան մի տարրից մյուսը ուղարկելու համար:

Ինչպես երևի նկատել եք, FinalCounter- ն ապահովում է 5-բիթանոց ելք, իսկ sseg_dec- ն ՝ 8-բիթանոց: Փոխհատուցման համար մենք սահմանում ենք երկու բաղադրիչներին միացնող ազդանշանը `սկսելով« 000 »-ով և հաշվիչից 5-բիթանոց ելքով: Այսպիսով ապահովելով 8-բիթ մուտքագրում:

Սահմանափակումներ:

Այս կոդերը Basys 3 Board- ում գործարկելու համար պահանջվում էր սահմանափակումների ֆայլ, որը յուրաքանչյուր ազդանշանին պատմում էր, թե ուր գնալ և ինչպես էին մասերը միացված:

Քայլ 4: Կոդ (Arduino)

Մենք ծրագրավորեցինք Arduino Uno- ն ՝ օգտագործելով շարժման սենսորը ՝ շարժումը հայտնաբերելու և ելք ապահովելու համար, որն ազդանշան է տալիս LED- ի լուսավորմանը: Բացի այդ, շարժիչը հայտնաբերելու համար սենսորից օգտվելը պահանջում է վազող հանգույցներ, որոնք անընդհատ հեռավորության փոփոխություն են փնտրում: Ըստ էության, այն պետք է մի ժամաչափ, որը միաժամանակ աշխատի, որպեսզի LED- ն լուսավորվի «բարձր» ազդանշան, իսկ ժամաչափը պետք է վերակայվի, երբ նոր շարժում հայտնաբերվի, ինչը գրեթե անհնար է իրականացնել Vivado- ի վրա ՝ հիմնված գիտելիքների շրջանակի վրա: դասարանից: Ավելին, մենք օգտագործեցինք Arduino- ն, քանի որ անհնար կլիներ օգտագործել HC-SR04- ը Basys 3 տախտակի հետ, քանի որ տախտակն ապահովում է միայն 3.3 Վ լարման դեպքում, իսկ սենսորը պահանջում է 5 Վ լարման աղբյուր: Հայտնաբերող շարժման իրականացման համար դա իրական կոդավորում է ՝ ի տարբերություն VHDL- ի CAD- ի:

Մենք օգտագործեցինք զարկերակային ներկառուցված գործառույթը սենսորի համար, որպեսզի ստանանք սենսորից ի սկզբանե արձակվող ձայնի և առարկային հարվածելիս հետ վերադարձվող ձայնի միջև ընկած ժամանակը: Հետո մենք օգտագործում ենք ձայնի արագությունը և ժամանակի միջակայքը ՝ օբյեկտի և տվիչի միջև հեռավորությունը հաշվարկելու համար: Դրանից մենք պահում ենք ընթացիկ հեռավորությունը և հետևում դրան: Մենք ստուգում ենք հեռավորությունը յուրաքանչյուր 150 մմ: Մենք նաև օգտագործեցինք elapsedmil գրադարանը `arduino- ի ներսում ներքին ժամաչափ գործարկելու համար` անցած ժամանակը հետևելու համար: Եթե մենք հայտնաբերենք հեռավորության փոփոխություն, որը համապատասխանում է շարժմանը, ժմչփը զրոյի է դրվում և լույսը կպահի մինչև 3 վայրկյան անցնելը: Ամեն անգամ, երբ սենսորը հայտնաբերում է մեկ այլ շարժում, ժամաչափը զրոյականացվում է 0 -ի վրա և LED լույսի ազդանշանը հաջորդ 3 վայրկյանում «բարձր» կլինի: Ստորև մենք կցել ենք մեր Arduino կոդի պատճենը:

Քայլ 5: Ինչպես են մեր բաղադրիչները տեղավորվում միասին:

Ինչպես են մեր բաղադրիչները տեղավորվում միասին
Ինչպես են մեր բաղադրիչները տեղավորվում միասին
Ինչպես են մեր բաղադրիչները տեղավորվում միասին
Ինչպես են մեր բաղադրիչները տեղավորվում միասին
Ինչպես են մեր բաղադրիչները տեղավորվում միասին
Ինչպես են մեր բաղադրիչները տեղավորվում միասին

Ինչպես տեսնում եք «Basys3: Pmod Pin-out Diagram*»-ում և Arduino Uno Board- ի լուսանկարում, մենք ընդգծեցինք և մակնշեցինք մեր օգտագործած նավահանգիստները:

1. LED և Basys 3 տախտակ

LED- ն միացված է շարքում 100Ω դիմադրիչի հետ: -Սպիտակ մետաղալարը դիմադրիչը միացնում է Basys 3 տախտակի PWR կապին: -Դեղին մետաղալարն LED- ն միացնում է Basys 3 տախտակի H1 կապին:

2. Շարժման ցուցիչ և Arduino Uno

-Նարնջագույն մետաղալարը միացնում է շարժման սենսորի Vcc (հզորությունը) Arduino Uno տախտակի 5V- ին: շարժման տվիչը Arduino Uno տախտակի 9-րդ կապում: -Սև մետաղալարը միացնում է շարժման տվիչի GND- ը Arduino Uno տախտակի GND- ին:

[Մեր օգտագործած լարերը չափազանց կարճ էին բաղադրիչներին հասնելու համար, ուստի դրանք փոխկապակցված էին]

3. Basys 3 Board- ը և Arduino Uno- ն

Դեղին մետաղալարը կապում է Basys 3 տախտակի A14 կապը Arduino Uno տախտակի 6 -րդ կապին:

*Այս դիագրամը վերցված է Digilent- ի «Basys 3 ™ FPGA Board Reference Manual» - ից, որը կարելի է գտնել այստեղ:

Քայլ 6: Demուցադրություն

Քայլ 7: Timeամանակն է այն փորձարկել:

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

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