Mundarija:

Harakat sensori/taymer tomonidan boshqariladigan chiroqlar: 7 qadam
Harakat sensori/taymer tomonidan boshqariladigan chiroqlar: 7 qadam

Video: Harakat sensori/taymer tomonidan boshqariladigan chiroqlar: 7 qadam

Video: Harakat sensori/taymer tomonidan boshqariladigan chiroqlar: 7 qadam
Video: Headaches & Migraines in POTS - Melissa Cortez, DO 2024, Iyul
Anonim
Harakat sensori/taymer tomonidan boshqariladigan chiroqlar
Harakat sensori/taymer tomonidan boshqariladigan chiroqlar

Ushbu loyiha San Luis Obispo Cal Polyda (CPE 133) raqamli dizayn kursining yakuniy loyihasi sifatida yaratilgan.

Biz nima uchun bunday qilayapmiz? Biz dunyodagi tabiiy boyliklarni saqlashga yordam berishni xohlaymiz. Bizning loyihamiz elektr energiyasini tejashga qaratilgan. Ko'proq elektr energiyasini tejash orqali biz elektr energiyasini ishlab chiqarish uchun ishlatiladigan tabiiy resurslarni tejashimiz mumkin bo'ladi. 2018 yil boshlanishi bilan tabiiy resurslar aql bovar qilmas darajada iste'mol qilinmoqda. Biz atrof -muhitga ta'sirimizni bilishni va tabiiy resurslarni saqlashda o'z hissamizni qo'shishni xohlaymiz. Elektron energiyani tejash uchun turli usullar bilan amalga oshirilishi mumkin, bu esa atrof -muhitga va iqtisodiy holatimizga yordam beradi.*Bu model bizda mavjud bo'lgan komponentlar yordamida yaratilgan.

Bizni ilhomimiz nima edi? Odamlar ko'pincha bayram chiroqlarini o'chirishni unutishadi va bir kechada qoldirib, energiyani behuda sarflaydilar. Aslida, bu loyiha elektr energiyasini tejaydi, chunki "bayram chiroqlari" faqat odamlar yonida bo'lganda yonadi, shuning uchun hech kim yo'qligida energiyani tejaydi. Bundan tashqari, biz taymerni loyihalashtirmoqchi bo'ldik, shunda ma'lum bir vaqtdan keyin chiroqlar soat 3 da aniqlangan harakat tufayli yoqilmasligi uchun to'liq o'chadi.

Qanday qilib bu dizayndan foydalanish mumkin? Bu dizayn har xil turdagi chiroqlar uchun ham qo'llanilishi mumkin, xoh dekorativ, xoh amaliy, xoh ikkalasi. Agar siz stol nuri bir vaqtning o'zida 6 soat ishlashini xohlasangiz. Hisoblagichni 21, 600 soniyaga o'rnatish kerak bo'ladi (6 soat x 3, 600 soniya/soat). Hisoblagich faol o'sayotgan paytda, harakat sensori yorug'likni boshqaradi. Shunday qilib, bu vaqt oralig'ida har safar u o'chganda, siz qo'lingizni harakat sensori oldida silkitib qo'yishingiz kerak va u yana yoqiladi. Agar siz ish stolida uxlab qolsangiz va 7 soatdan keyin uyg'onsangiz, sizning harakatingiz uni yoqmaydi.

1 -qadam: Kerakli dasturiy ta'minot va apparat

Kerakli dasturiy ta'minot va uskunalar
Kerakli dasturiy ta'minot va uskunalar
Kerakli dasturiy ta'minot va uskunalar
Kerakli dasturiy ta'minot va uskunalar
Kerakli dasturiy ta'minot va uskunalar
Kerakli dasturiy ta'minot va uskunalar
Kerakli dasturiy ta'minot va uskunalar
Kerakli dasturiy ta'minot va uskunalar

Dasturiy ta'minot:

  • Vivado 2016.2 (yoki undan yangi versiyasini) bu erda topishingiz mumkin
  • Arduino IDE 1.8.3 (yoki undan yangi versiyasini) bu erda topish mumkin

Uskuna:

  • 1 Basys 3 taxta
  • 1 Arduino Uno
  • 2 ta taxtali
  • 1 Ultrasonik o'lchash sensori HC-SR04
  • 9 Erkak-erkak simlari
  • 1 LED
  • 1100Ω qarshilik

2 -qadam: Kodlar (Vivado)

Kodlar (Vivado)
Kodlar (Vivado)

Cheklangan holat mashinasi (yuqoridagi holat diagrammasiga qarang):

LEDga cheklangan holatdagi mashina kerak edi. LEDda faqat ikkita holat yoqilgan va o'chadi. Faqat ikkita kirish LED, hisoblagich va sensor holatini boshqaradi. Sensor harakatni aniqlaganda va hisoblagich noldan o'ttiz soniyagacha sanalganda, LED yonishi kerak. Boshqa har qanday holatda, LED o'chadi.

Fayl nomi: LEDDES

Hisoblagich:

Hisoblagich bizga harakat sensori LEDni yoqishi mumkin bo'lgan vaqtni cheklashga imkon beradi. Uning qiymati Basys 3 kengashining etti segmentli displeyida manba kodi ("sseg_dec") orqali ko'rsatiladi. Qayta tiklash tugmasi pastga tushganda (qiymat: '0'), hisoblagich har soniyada 0 dan 30 gacha ko'tarila boshlaydi. 30 ga yetganda, u shu raqamda muzlab qoladi. Qayta tiklash tugmasi "1" ga o'tguncha va "1" ga qaytmaguncha, u 0dan qaytadan ishga tushmaydi, agar hisoblagich ketayotganda Reset "1" ga aylansa, hisoblagich o'zi xohlagan qiymatda qotib qoladi. Qayta tiklash "0" ga qaytsa, hisoblagich 0 dan 30 gacha qayta ishga tushadi. Bu dastur soat signalidan foydalanishni ham talab qiladi, uning kodi quyida keltirilgan ("clk_div2").

Fayl nomi: FinalCounter

TAKVIMLANGAN FAYLLAR:

Etti segmentli displey:

Bu kod etti segmentli displeyda o'nlik qiymatlarni ko'rsatishga imkon beradi. Bitta submodul 8-bitli ikkilik kirish va 4-bitli ikkilik kodli o'nlik o'rtasida dekoder vazifasini bajaradi. Ikkinchisi soat signalini bo'linib, uning qiymatini ma'lum tezlikda yangilaydi.

Fayl nomi: sseg_dec

Soat signallari:

Bu kod hisoblagichni 1 soniyagacha oshirishga imkon beradi. U kirish chastotasini sekinroq chastotaga ajratadi. Biz max_count: integer: = (3000000) "ni" doimiy max_count: integer: = (50000000) "ga o'zgartirish orqali 1 soniya vaqt berishga moslashdik.

Fayl nomi: clk_div2

Taqdim etilgan fayllar: sseg_dec, clk_div2 *Bu manba fayllar professor Bryan Meali tomonidan taqdim etilgan.

3 -qadam: Ularning qanday birlashishini tushunish (VHDL komponentlarining sxemalari)

Ularning qanday birlashishini tushunish (VHDL komponentlarining sxemalari)
Ularning qanday birlashishini tushunish (VHDL komponentlarining sxemalari)

Asosiy fayl ("MainProjectDES") ilgari muhokama qilingan barcha pastki fayllarni o'z ichiga oladi. Ular yuqoridagi usulda bog'langan. Turli elementlar signalni bir elementdan ikkinchisiga yuborish uchun port xaritalari yordamida o'zaro bog'langan.

Siz sezganingizdek, FinalCounter 5-bitli chiqishni ta'minlaydi, sseg_dec esa 8-bitli kirishni talab qiladi. Buning o'rnini bosish uchun biz ikkala komponentni birlashtiruvchi signalni "000" dan boshlaymiz va hisoblagichdan 5 bitli chiqishni qo'shamiz. Shunday qilib, 8-bitli kirishni ta'minlaydi.

Cheklovlar:

Bu kodlarni Basys 3 doskasida ishga tushirish uchun har bir signalga qaerga borish kerakligini va uning qismlari qanday ulanganligini ko'rsatuvchi cheklovlar fayli kerak edi.

4 -qadam: Kod (Arduino)

Biz Arduino Uno -ni harakat sensori yordamida harakatni aniqlash va LEDning yonishini bildiruvchi chiqishni ta'minlash uchun dasturlashtirdik. Bundan tashqari, harakatni aniqlash uchun datchikdan foydalanish masofani o'zgartirishni doimiy ravishda qidirib yuradigan halqalarni talab qiladi. Asosan, LEDning yonishi uchun "yuqori" signalni chiqarish uchun bir vaqtning o'zida ishlaydigan taymer kerak, yangi harakat aniqlanganda taymerni qayta o'rnatish kerak, buni Vivadoda bilim doirasiga ko'ra amalga oshirish deyarli mumkin emas. sinfdan. Bundan tashqari, biz Arduino-dan foydalandik, chunki HC-SR04-ni Basys 3 platasi bilan ishlatish maqsadga muvofiq emas, chunki karta faqat 3,3V, sensor 5V quvvat manbasini talab qiladi. Aniqlash harakatini amalga oshirish uchun bu VHDL -dagi SAPRdan farqli o'laroq haqiqiy kodlashdir.

Biz sensordan dastlab chiqadigan tovush va ob'ektga urilganda orqaga qaytadigan tovush o'rtasidagi vaqtni olish uchun sensori o'rnatilgan ichki impuls funktsiyasidan foydalanganmiz. Keyin biz ob'ekt tezligi va sensor orasidagi masofani hisoblash uchun tovush tezligi va vaqt oralig'idan foydalanamiz. Shundan kelib chiqib, biz hozirgi masofani saqlaymiz va uni kuzatib boramiz. Biz har 150ms masofani tekshiramiz. Biz, shuningdek, o'tgan vaqtni kuzatish uchun arduino ichida ichki taymerni ishga tushirish uchun elapsedmil kutubxonasidan foydalandik. Agar biz harakatga mos keladigan masofaning o'zgarishini aniqlasak, taymer nolga qaytariladi va u 3 soniya o'tguncha chiroqni yonib turadi. Qachonki sensor boshqa harakatni aniqlasa, taymer 0 ga qaytariladi va LED nuri uchun signal keyingi 3 soniyada "yuqori" bo'ladi. Biz quyida Arduino kodimiz nusxasini biriktirdik.

5 -qadam: Bizning komponentlarimiz bir -biriga qanday mos keladi

Bizning komponentlarimiz bir -biriga qanday mos keladi!
Bizning komponentlarimiz bir -biriga qanday mos keladi!
Bizning komponentlarimiz bir -biriga qanday mos keladi!
Bizning komponentlarimiz bir -biriga qanday mos keladi!
Bizning komponentlarimiz bir -biriga qanday mos keladi!
Bizning komponentlarimiz bir -biriga qanday mos keladi!

"Basys3: Pmod pin-out diagrammasi*" va Arduino Uno taxtasi rasmida ko'rib turganingizdek, biz foydalangan portlarni ajratib ko'rsatdik.

1. LED va Basys 3 taxtasi

LED 100Ω qarshilik bilan ketma -ket ulanadi. -Oq sim qarshilikni Basys 3 kartasining PWR piniga ulaydi. -Sariq sim LEDni Basys 3 kartasining H1 piniga ulaydi.

2. Harakat sensori va Arduino Uno

-To'q sariq sim harakat sensori Vccini (kuchini) Arduino Uno kartasining 5V piniga ulaydi. Harakat sensori Arduino Uno kartasining 9-piniga.-Qora sim harakat sensori GND pinini Arduino Uno kartasining GND piniga ulaydi.

[Biz ishlatgan simlar komponentlarga etib borish uchun juda qisqa edi, shuning uchun ular bir -biriga bog'langan edi]

3. Basys 3 taxtasi va Arduino Uno

Sariq sim Basys 3 kartasining A14 pinini Arduino Uno kartasining 6 -piniga ulaydi.

*Bu diagramma Digilent -ning "Basys 3 ™ FPGA kartasi ma'lumotnomasi" dan olingan, uni bu erda topishingiz mumkin.

6 -qadam: Namoyish

7 -qadam: Sinab ko'rish vaqti keldi

Tabriklaymiz! Siz bizning harakat sensori va hisoblagich bilan boshqariladigan yorug'lik loyihasining oxirigacha etib keldingiz! Bizning Instructables postimizni o'qiganingiz uchun sizga katta rahmat. Endi siz ushbu loyihani o'zingiz qurishga harakat qilishingiz kerak. Agar siz har bir qadamni diqqat bilan kuzatib boradigan bo'lsangiz, sizda biznikiga o'xshash harakat sensori va hisoblagich bilan boshqariladigan yorug'lik bo'lishi kerak! Biz sizga ushbu loyihani amalga oshirishda omad tilaymiz va u elektr energiyasini hamda tabiiy resurslarni tejashga hissa qo'shadi deb umid qilamiz!

Tavsiya: