Mündəricat:

Hərəkət sensoru/sayğacla idarə olunan işıqlar: 7 addım
Hərəkət sensoru/sayğacla idarə olunan işıqlar: 7 addım

Video: Hərəkət sensoru/sayğacla idarə olunan işıqlar: 7 addım

Video: Hərəkət sensoru/sayğacla idarə olunan işıqlar: 7 addım
Video: 40 полезных автотоваров с алиэкспресс, которые упростят жизнь любому автовладельцу #8 2024, Noyabr
Anonim
Hərəkət sensoru/sayğacla idarə olunan işıqlar
Hərəkət sensoru/sayğacla idarə olunan işıqlar

Bu layihə Cal Poly, San Luis Obispo'da (CPE 133) Rəqəmsal Dizayn kursu üçün son layihə olaraq yaradılmışdır.

Niyə bunu edirik? Dünyadakı təbii sərvətlərin qorunmasına kömək etmək istəyirik. Layihəmiz elektrik enerjisinə qənaət etməkdir. Daha çox elektrik enerjisinə qənaət edərək, elektrik enerjisi istehsal etmək üçün istifadə olunan təbii sərvətlərə qənaət edə biləcəyik. 2018 -ci ildən başlayaraq təbii qaynaqlar inanılmaz dərəcədə sürətlə istehlak olunur. Ətrafımıza təsirimizin fərqində olmaq və təbii sərvətlərin qorunmasında öz rolumuzu oynamaq istəyirik. Elektronika ətraf mühitə və iqtisadi vəziyyətimizə kömək edən enerjiyə qənaət etmək üçün müxtəlif yollarla həyata keçirilə bilər.*Bu model əlimizdə olan komponentlərdən istifadə etməklə yaradılmışdır.

İlhamımız nə idi? İnsanlar bayram işıqlarını söndürməyi çox vaxt unudar və bir gecədə buraxaraq enerjisini boşa xərcləyər. Əslində, bu layihə elektrik enerjisinə qənaət edəcək, çünki "bayram işıqları" yalnız insanlar yaxınlıqda olanda yanacaq və beləliklə heç kim olmadığı zaman enerjiyə qənaət edəcək. Üstəlik, məsələn, saat 3 -də aşkarlanan hərəkət səbəbiylə işıqların açılmamasını təmin etmək üçün müəyyən bir müddətdən sonra işıqların tamamilə sönməsini təmin etmək üçün bir taymer dizayn etmək istədik.

Bu dizayn, dekorativ, praktik və ya hər ikisi olsun, hər cür işıq üçün tətbiq oluna bilər. Masanızın işığının bir anda yalnız 6 saat işləməsini istəyirsinizsə. Bir sayacı 21, 600 saniyəyə (6 saat x 3, 600 saniyə/saat) təyin etməlisiniz. Sayğac aktiv şəkildə artarkən, hərəkət sensoru işığı idarə edərdi. Beləliklə, bu müddət ərzində hər dəfə söndükdə, əlinizi hərəkət sensoru qarşısında yelləməlisiniz və o yenidən açılacaqdır. Masanızda yuxuya gedib 7 saat sonra oyansanız, hərəkətiniz açılmayacaq.

Addım 1: Lazımi Proqram və Təchizat

Lazımi Proqram və Təchizat
Lazımi Proqram və Təchizat
Lazımi Proqram və Təchizat
Lazımi Proqram və Təchizat
Lazımi Proqram və Təchizat
Lazımi Proqram və Təchizat
Lazımi Proqram və Avadanlıq
Lazımi Proqram və Avadanlıq

Proqram təminatı:

  • Vivado 2016.2 (və ya daha yeni bir versiyasını) burada tapa bilərsiniz
  • Arduino IDE 1.8.3 (və ya daha yeni bir versiyasını) burada tapa bilərsiniz

Avadanlıq:

  • 1 Basys 3 lövhə
  • 1 Arduino Uno
  • 2 Çörək taxtası
  • 1 Ultrasonik Ranging sensoru HC-SR04
  • 9 Kişidən kişiyə tel
  • 1 LED
  • 1100Ω Rezistor

Addım 2: Kodlar (Vivado)

Kodlar (Vivado)
Kodlar (Vivado)

Sonlu vəziyyət maşını (yuxarıdakı vəziyyət diaqramına baxın):

LED -ə sonlu dövlət maşını lazım idi. Bir LED -in yalnız iki vəziyyətdə olması və sönməsi var. LED -in vəziyyətini yalnız sayğac və sensor idarə edir. Sensorun hərəkəti algıladığı və sayğac sıfırdan otuz saniyəyə qədər saydığı zaman LED -in yanması lazımdır. İstənilən halda LED sönəcək.

Fayl adı: LEDDES

Sayğac:

Sayğac, hərəkət sensörünün LED -i aktivləşdirə biləcəyi müddətini məhdudlaşdırmağa imkan verir. Dəyəri, bir mənbə kodu ("sseg_dec") ilə Basys 3 Boardun yeddi seqment ekranında göstərilir. Sıfırlama açarı aşağı olduqda (dəyər: '0'), sayğac hər saniyədə 0 -dan 30 -a yüksəlməyə başlayır. 30 -a çatanda bu nömrədə donur. Sıfırlama açarı '1' və '1' ə dönənə qədər sıfırdan yenidən başlamaz, əgər sayğac gedərkən Sıfırlama '1' olarsa, sayğac çatdığı hər hansı bir dəyərdə donacaq. Sıfırlama '0' a qayıtdıqda sayğac 0 -dan 30 -a qədər yenidən başlayacaq. Bu tətbiq eyni zamanda bir saat siqnalının istifadəsini tələb edir, onun kodu aşağıda verilmişdir ("clk_div2").

Fayl adı: FinalCounter

TƏMİN OLUNAN DOSYALAR:

Yeddi Segment Ekranı:

Bu kod yeddi seqmentin ondalık dəyərləri göstərməsinə imkan verir. Bir alt modul 8 bitlik ikili girişlə 4 bitlik İkili Kodlu Ondalık arasında dekoder rolunu oynayır. Digəri, dəyərini müəyyən bir sürətlə yeniləmək üçün saat siqnalını bölür.

Fayl adı: sseg_dec

Saat Siqnalı:

Bu kod sayğacın 1 saniyəlik artımlarla artmasına imkan verir. Giriş saat tezliyini daha yavaş bir tezliyə bölür. Sabit max_count: integer: = (3000000) "" daimi max_count: integer: = (50000000) "olaraq dəyişərək 1 saniyəlik bir müddət təmin etməyə uyğunlaşdıq.

Fayl adı: clk_div2

Təqdim olunan fayllar: sseg_dec, clk_div2 *Bu mənbə faylları Professor Bryan Mealy tərəfindən təmin edilmişdir.

Addım 3: Bir araya necə gəldiklərini anlamaq (VHDL Komponentlərinin Şematikləri)

Bir araya necə gəldiklərini anlamaq (VHDL komponentlərinin sxemləri)
Bir araya necə gəldiklərini anlamaq (VHDL komponentlərinin sxemləri)

Əsas fayl ("MainProjectDES") əvvəllər müzakirə olunan bütün alt faylları ehtiva edir. Yuxarıda göstərilən qaydada bağlanırlar. Fərqli komponentlər bir elementdən digərinə siqnal göndərmək üçün liman xəritələrindən istifadə edərək bir -birinə bağlıdır.

Gördüyünüz kimi, FinalCounter 5 bitlik çıxış təmin edir, sseg_dec isə 8 bitlik giriş tələb edir. Kompensasiya etmək üçün hər iki komponenti birləşdirən siqnalı "000" ilə başlayacaq və sayğacdan 5 bitlik çıxışı əlavə edəcəyik. Beləliklə, 8 bitlik giriş təmin edir.

Məhdudiyyətlər:

Bu kodları Basys 3 Board -da işə salmaq üçün hər bir siqnalın hara gedəcəyini və hissələrin necə bağlandığını bildirən bir məhdudiyyət faylı tələb olunurdu.

Addım 4: Kod (Arduino)

Arduino Uno -nu, hərəkəti aşkar etmək və LED -in yanması üçün siqnal verən bir çıxış təmin etmək üçün hərəkət sensoru istifadə etmək üçün proqramlaşdırdıq. Əlavə olaraq, hərəkəti aşkar etmək üçün sensordan istifadə etmək üçün daim məsafədə dəyişiklik axtaran döngələr işləməlidir. Əslində, LED -in yanması üçün "yüksək" bir siqnal çıxarmaq üçün eyni vaxtda işləyən bir taymer lazımdır, bilik sahəsinə əsaslanaraq Vivadoda tətbiq etmək demək olar ki, mümkün olmayan yeni bir hərəkət aşkar edildikdə taymeri sıfırlamaq lazımdır. sinifdən. Üstəlik, bir Arduino istifadə etdik, çünki HC-SR04-ün Basys 3 lövhəsi ilə istifadəsi mümkün olmayacaq, çünki lövhə yalnız 3.3V təchiz edir, sensor isə 5V enerji təchizatı tələb edir. Algılama hərəkətinin həyata keçirilməsi üçün VHDL -də CAD -dan fərqli olaraq faktiki kodlaşdırmadır.

Sensorun əvvəlcə yaydığı səslə bir cismə vuranda geri dönən səs arasında keçən vaxtı geri qaytarmaq üçün sensora quraşdırılmış nəbz funksiyasından istifadə etdik. Sonra cisimlə sensor arasındakı məsafəni hesablamaq üçün səs sürətindən və zaman aralığından istifadə edirik. Bundan sonra cari məsafəni saxlayırıq və izləyirik. Məsafəni hər 150 ms -də yoxlayırıq. Arduino içərisində keçən bir vaxtı izləmək üçün daxili bir taymer işlətmək üçün elapsedmil kitabxanasından da istifadə etdik. Bir hərəkətə uyğun olan bir məsafə dəyişikliyi aşkar etsək, taymer sıfıra sıfırlanır və 3 saniyə keçməyənə qədər işığı yandırır. Sensor başqa bir hərəkət algıladığında, taymer 0 -a sıfırlanır və LED işığı üçün siqnal növbəti 3 saniyə ərzində "yüksək" olacaq. Aşağıda Arduino kodumuzun surətini əlavə etmişik.

Addım 5: Komponentlərimiz Bir -birinə Necə Uyğundur

Komponentlərimiz bir -birinə necə uyğundur!
Komponentlərimiz bir -birinə necə uyğundur!
Komponentlərimiz bir -birinə necə uyğundur!
Komponentlərimiz bir -birinə necə uyğundur!
Komponentlərimiz bir -birinə necə uyğundur!
Komponentlərimiz bir -birinə necə uyğundur!

"Basys3: Pmod Pin-out Diagram*" da və Arduino Uno Board-un fotoşəklində gördüyünüz kimi istifadə etdiyimiz limanları vurguladıq və etiket etdik.

1. LED və Basys 3 lövhəsi

LED 100Ω rezistorla ardıcıl olaraq bağlanır. -Ağ tel, müqaviməti Basys 3 lövhəsinin PWR pininə bağlayır. -Sarı tel, LED -i Basys 3 lövhəsinin H1 pininə bağlayır.

2. Hərəkət Sensoru və Arduino Uno

-Narıncı tel, hərəkət sensörünün Vcc (gücünü) Arduino Uno lövhəsinin 5V pininə bağlayır. Arduino Uno lövhəsinin 9-cu pininə hərəkət sensoru.-Qara tel, hərəkət sensörünün GND pinini Arduino Uno lövhəsinin GND pininə bağlayır.

[İstifadə etdiyimiz tellər komponentlərə çatmaq üçün çox qısa idi, buna görə də bir -birinə bağlı idi]

3. Basys 3 Board və Arduino Uno

Sarı tel, Basys 3 lövhəsinin A14 pinini Arduino Uno lövhəsinin 6 pininə bağlayır.

*Bu diaqram, Digilent -in "Basys 3 ™ FPGA Board Reference Manual" kitabından götürülmüşdür.

Addım 6: Nümayiş

Addım 7: Test etməyin vaxtıdır

Təbrik edirik! Hərəkət sensoru və sayğacla idarə olunan işıq layihəmizin sonuna gəldiniz! Instructables postumuzu oxuduğunuz üçün çox sağ olun. İndi bu layihəni özünüz qurmağa çalışmağın vaxtıdır. Hər addımı diqqətlə təqib etsəniz, bizimki kimi işləyən bir hərəkət sensoru və sayğacla idarə olunan işığınız olmalıdır! Bu layihənin inşasında sizə uğurlar arzulayırıq və ümid edirik ki, həm elektrik enerjisinə, həm də təbii sərvətlərə qənaət etməyə töhfə versin!

Tövsiyə: