İçindekiler:
- Adım 1: Sistem Kara Kutusu
- 2. Adım: Bileşenler
- Adım 3: D Parmak Arası Terlikler
- Adım 4: Koşullar
- Adım 5: Kısıtlamalar
- Adım 6: Ana Kaynak Dosyası
- Adım 7: Montaj
- Adım 8: Programın Yüklenmesi
Video: Enerji Verimli Hareket Aktif Sokak Lambaları: 8 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:18
Bu projedeki amacımız, toplulukların enerji ve finansal kaynaklarından tasarruf sağlayacak bir şey yaratmaktı. Hareketle etkinleştirilen sokak lambaları bu iki şeyi de yapacaktır. Tüm ülke genelinde enerji, sokak lambalarının boş olan sokakları aydınlatmasıyla boşa harcanıyor. Sokak aydınlatma sistemimiz, ışıkların yalnızca gerektiğinde açık olmasını sağlayarak toplulukların sayısız dolar tasarruf etmesini sağlar. Hareket sensörlerini kullanan sistem, yalnızca arabalar varken ışıkları açar. Ayrıca yayaların güvenliği için sokaktaki tüm ışıkları açan bir geçersiz kılma düğmesi uyguladık. Aşağıdaki adımlar, Vivado ve bir Basys 3 panosu kullanarak projemizin küçültülmüş modelini nasıl tasarladığımız ve oluşturduğumuz konusunda size yol gösterecektir.
Adım 1: Sistem Kara Kutusu
Bu projeye basit bir kara kutu diyagramı çizerek başladık. Bir kara kutu diyagramı, sistemimizin gerekli tüm işlemleri tamamlamak için ihtiyaç duyduğu girdileri ve çıktıları basitçe gösterir. Tasarımımızı mümkün olduğunca basit ve sade tutmaya çalıştık. Üç sistem girişimiz, bir hareket sensörü veriyolu (küçültülmüş modelimiz için 4), bir yaya geçersiz kılma düğmesi ve bir saat girişi içeriyordu. Diğer tarafta tek çıkışımız sokak ışıklarımızı temsil eden bir LED ışık veriyoludur. Bu model için 16 sokak lambası senaryosu kullandık çünkü bu Basys 3 kartındaki maksimum yerleşik LED çıkışı sayısı. Son olarak, bu diyagramı kullanarak uygun girdi ve çıktılarla Vivado projemizi, kaynak ve kısıtlama dosyalarımızı oluşturabildik.
2. Adım: Bileşenler
Bu adımda kara kutu diyagramımızı oluşturan bileşenleri daha derinlemesine inceleyeceğiz. İlk bileşenimiz, D parmak arası terlik içeren bir VHDL kaynak dosyasıdır. D parmak arası terlikler, saatin yükselen kenarındaki sensörlerden kendilerine girilen sinyali alır ve bu verileri bir sonraki yükselen kenara kadar kilitler. Bu, hassas hareket sensörlerimizin çıkış LED'lerinin "titremesine" neden olmasını engeller. Ayrıca, düğmeye basıldıktan sonra LED'leri yaklaşık 5-7 saniye açık tutmak için düğme giriş sinyaline tek bir D flip-flop koyduk. Bunu ayrıca bir saat bölücüden geçirdik.
varlık clk_div2 Bağlantı Noktasıdır (clk: std_logic içinde; sclk: std_logic dışında); clk_div2'yi sonlandır;
clk_div2'nin my_clk_div mimarisi
sabit max_count: tamsayı:= (300000000); sinyal tmp_clk: std_logic:= '0'; my_div'e başla: süreç (clk, tmp_clk) değişken div_cnt: tamsayı:= 0; başlar if (rising_edge(clk)) sonra if (div_cnt = MAX_COUNT) o zaman tmp_clk <= tmp_clk değil; div_cnt:= 0; başka div_cnt:= div_cnt + 1; eğer son; eğer son; sclk <= tmp_clk; işlemi sonlandır my_div; my_clk_div'i sonlandır;
Bu şemadaki son bileşenimiz, giriş sinyallerinin konfigürasyonunu temel alan çıkışlar için koşulları içeren davranışsal bir VHDL kaynak dosyasıdır.
Adım 3: D Parmak Arası Terlikler
Giriş sinyallerine bağlı dört parmak arası terlik, sistemimizin işlevselliği için çok önemlidir. Daha önce de belirtildiği gibi, hassas hareket sensörleri ve bir geçersiz kılma düğmesi ile parmak arası terlikler, yalnızca giriş sinyalimizi saatin yükselen kenarında vermek için mandalları kullanır. Bu sıralı mantık, sokak ışıklarımızın hızlı bir hareketle tetiklendikten sonra belirli bir süre açık kalabileceği anlamına gelir. D-Flip Flop'un kodlaması oldukça basittir:
startprocess (CLK) başlar, eğer yükselen_kenar(CLK) ise Q <= D; eğer son; bitiş süreci;
Her şey tek bir if ifadesinde derlenebilir. Bu parçayı aldıktan sonra, gerekli parmak arası terliklerimizin dördünü de içeren yapısal bir VHDL kaynak dosyası oluşturduk:
DFF0'ı başlat: DFF bağlantı noktası haritası (CLK => CLK, D => D(0), Q => Q(0)); DFF1: DFF bağlantı noktası haritası (CLK => CLK, D => D(1), Q => Q(1)); DFF2: DFF bağlantı noktası haritası (CLK => CLK, D => D(2), Q => Q(2)); DFF3: DFF bağlantı noktası haritası (CLK => CLK, D => D(3), Q => Q(3));
son Davranış;
Bu, tüm sistem bileşenlerini bir araya getirdiğimiz ana yapısal dosyamızı çok daha temiz ve düzenli tutmaya yardımcı olur.
Adım 4: Koşullar
Kodumuzu kompakt ve verimli tutmak için tüm koşullarımızı tek bir durum ifadesinde yazdık. Her hareket sensörü 4 LED'lik bir gruptan sorumlu olduğundan, küçültülmüş modelimiz için 16 olası LED çıkış konfigürasyonumuz vardı.:
durum NMS "1111" olduğunda => LED LED LED LED LED LED LED LED LED LED LED LED LED LED LED LED <= "111111111111111"; son durum;
Adım 5: Kısıtlamalar
Vivado kullanarak giriş ve çıkışlarınızı düzgün bir şekilde belirtmek için, kullanılan tüm bağlantı noktalarını, düğmeleri, LED'leri ve saatleri belirten bir kısıtlama dosyası uygulamalısınız.
set_property PACKAGE_PIN W5 [get_ports CLK] set_property IOSTANDARD LVCMOS33 [get_ports CLK]
set_property PACKAGE_PIN U16 [get_ports {LED[0]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED[0]}] set_property PACKAGE_PIN E19 [get_ports {LED[1]}] set_property IOSTANDARD LVCMOS33property IOSTANDARD LVCMOS33property IOSTANDARD LVCMOS33property [get_ports] set_LEDPIN] U19 [get_ports {LED[2]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED[2]}] set_property PACKAGE_PIN V19 [get_ports {LED[3]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED[3]}] set_property PACKAGE_PIN get_ports {LED[4]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED[4]}] set_property PACKAGE_PIN U15 [get_ports {LED[5]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED[5]}] set_property PACKAGE_PIN U14 LED[6]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED[6]}] set_property PACKAGE_PIN V14 [get_ports {LED[7]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED[7]}] set_property PACKAGE_PIN V13 [get_ 8]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED[8]}] set_property PACKAGE_PIN V3 [get_ports {LED[9]}] set_property IO STANDART LVCMOS33 [get_ports {LED[9]}] set_property PACKAGE_PIN W3 [get_ports {LED[10]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED[10]}] set_property PACKAGE_PIN U3 [gettyports {OSTLED[11]}] [get_ports {LED[11]}] set_property PACKAGE_PIN P3 [get_ports {LED[12]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED[12]}] set_property PACKAGE_PIN N3 [get_ports {LED[13]CMOS33] set_property IOSTANDARD_port LV {LED[13]}] set_property PACKAGE_PIN P1 [get_ports {LED[14]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED[14]}] set_property PACKAGE_PIN L1 [get_ports {LED[15]}] set_property IOSTANDARD LVCMOS33 [get_ [15]}]
set_property PACKAGE_PIN U18 [get_ports BTN] set_property IOSTANDARD LVCMOS33 [get_ports BTN]
set_property PACKAGE_PIN A14 [get_ports {MS[0]}] set_property IOSTANDARD LVCMOS33 [get_ports {MS[0]}] set_property PACKAGE_PIN A16 [get_ports {MS[1]}] set_property IOSTANDARD LVCMOS33property IOSTANDARD LVCMOS33property [get_ports] set_[1] B15 [get_ports {MS[2]}] set_property IOSTANDARD LVCMOS33 [get_ports {MS[2]}] set_property PACKAGE_PIN B16 [get_ports {MS[3]}] set_property IOSTANDARD LVCMOS33 [get_ports {MS[3]}]
Adım 6: Ana Kaynak Dosyası
Bu ana dosyada daha önce bahsedilen tüm bileşen kaynak dosyalarını bir araya getiriyoruz. Bu dosya, farklı bileşenleri bir araya getiren yapısal kod işlevi görür.
varlık Master_Final_Project Port'tur (BTN: STD_LOGIC'de; CLK: STD_LOGIC'de; MS: STD_LOGIC_VECTOR'da (3'ten 0'a); LED: STD_LOGIC_VECTOR (15'ten 0'a kadar); Master_Final_Project'i sonlandır;
Master_Final_Project mimarisinin Davranışı
final_project bileşeni Port'tur (--CLK: STD_LOGIC'de; NMS: STD_LOGIC_VECTOR'da (3'e 0); BTN: STD_LOGIC'de; --sw: STD_LOGIC_Vector'de (1'den 0'a); LED: out STD_LOGIC_VECTOR (15'ten 0'a); uç bileşen;
Final_DFF bileşeni:
Port (CLK: STD_LOGIC'de; D: STD_LOGIC_Vector'de (3'ten 0'a); Q: çıkış STD_LOGIC_Vector'de (3'ten 0)); uç bileşen;
sinyal DFF02proj30: STD_LOGIC;
sinyal DFF12proj74: STD_LOGIC; sinyal DFF22proj118: STD_LOGIC; sinyal DFF32proj1512: STD_LOGIC;
başlamak
DFF0: Final_DFF bağlantı noktası haritası (CLK => CLK, D(0) => MS(0), D(1) => MS(1), D(2) => MS(2), D(3) => MS(3), Q(0) => DFF02proj30, Q(1) => DFF12proj74, Q(2) => DFF22proj118, Q(3) => DFF32proj1512); Proje0: final_project bağlantı noktası haritası (NMS(0) => DFF02proj30, NMS(1) => DFF12proj74, NMS(2) => DFF22proj118, NMS(3) => DFF32proj1512, BTN => BTN, LED => LED); son Davranış;
Adım 7: Montaj
Bu proje için donanım montajı minimumdur. Tek gerekli parçalar aşağıdaki gibidir:
1. Basys 3 kartı (1)
2. Amazon'da bulabileceğiniz ucuz hareket sensörleri. (4)
3. Erkek-kadın potansiyel müşteriler (4)
Toplantı:
1. 4 erkek ucu PMod başlık JB bağlantı noktaları 1-4'e bağlayın (Bkz. Şekil).
2. Dişi uçları her hareket sensörünün çıkış pinine bağlayın.
Adım 8: Programın Yüklenmesi
Artık VHDL ana kaynak dosyasını Basys 3 kartına yüklemeye hazırız. Olası hatalar için sentez, uygulama ve bit akışı denetimi oluşturduğunuzdan emin olun. Hepsi başarılı bir şekilde çalışıyorsa, donanım yöneticisini açın ve Basys 3 cihazını programlayın. Projeniz şimdi tamamlandı!
Önerilen:
Ultrasonik Sensör Kullanan Otomatik Sokak Lambaları: 3 Adım
Ultrasonik Sensör Kullanan Otomatik Sokak Lambaları: Sokak lambalarının gece otomatik olarak nasıl yandığını ve sabahları otomatik olarak kapandığını hiç düşündünüz mü? Bu ışıkları açıp kapatan var mı? Sokak lambalarını açmanın birkaç yolu var ama aşağıdakiler
Hareket Aktif Lamba Anahtarı: 3 Adım
Hareket Aktif Lamba Anahtarı: Masamızdan veya odamızdan her ayrıldığımızda çoğu zaman oradaki ışıkları kapatmayı unuturuz. Bu, elektrik kaybına ve elektrik faturanızın artmasına neden olur. Ama ya siz odadan çıktıktan sonra ışıklar otomatik olarak kapanırsa? Evet içinde
Işık Sensörlü Hareket Aktif Işık Anahtarı: 5 Adım
Işık Sensörlü Hareketle Çalışan Işık Anahtarı: Hareketle etkinleştirilen ışık anahtarının hem evde hem de ofiste birçok uygulaması vardır. Ancak bu, bir ışık sensörü dahil etme avantajına sahiptir, böylece bu ışık yalnızca Gece saatlerinde tetiklenebilir
Hareket Aktif Redstone: 7 Adım (Resimlerle)
Hareket Aktif Redstone: Merhaba! Bu proje, harekete geçen bir redstone lambasıdır. Parçalanabilir bir mikrodenetleyici ve bir röleye bağlı ultrasonik mesafe sensörü kullanarak çalışır. Bu proje minecraft yarışmasına giriliyor ve herhangi bir oy, favori veya ortak
Enerji Verimli Bilgisayar: 9 Adım
Enerji Verimli Bilgisayar: Kendi PC'nizi oluşturmaya ilişkin sayısız talimat ve web'de ve basılı olarak nasıl yapılacağına ilişkin makaleler vardır. Ancak, enerji açısından verimli bir bilgisayar oluşturmaya yönelik çok fazla kılavuz yoktur. Bu talimat boyunca, size nasıl satış yapılacağına dair bazı ipuçları vereceğim