İçindekiler:
- Adım 1: Kara Kutu Şeması
- Adım 2: Durum Makineleri
- Adım 3: Makine Doğruluk Tablolarını, Uyarma Denklemlerini ve Çıktı Denklemlerini Belirtin
- Adım 4: Sarıcı, Alt Modüller ve Kısıtlama
- Adım 5: LED için G/Ç Bağlantı Noktaları
Video: L I G H T S: 5 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:20
Bu son projenin amacı, sürdürülebilirliğe odaklanacak ve dijital tasarım konseptlerini uygulayacak bir şey yaratmaktı ve bunu yapmak için vhdl kullanarak ölçeklenebilir bir güç tasarrufu sistemi tasarlamaya karar verdim ve Basys 3 Board (Artix-7 35T serisi) için yaptım.). Ölçeklenebilir çünkü bir odaya herhangi bir sayıda sensör yerleştirilebilir ve bu sistemlerden herhangi bir sayıda bir bina veya evin etrafına yerleştirilebilir. Bu sistemin yapacağı şey, teorik olarak ticari binalarda binlerce dolar tasarruf etmek ve aktif ve pasif olarak kontrol edilen ışıklar, hareket dedektörleri, yedi segmentli ekranda görüntülenen zamanlayıcılardan oluşan bağlantılı bir sistem uygulayarak daha küçük konut topluluklarında enerji tüketiminin büyük bir yüzdesini azaltmaktır. kontrol anahtarları. Bu örnek, üç hareket detektörü, bir ana şalter, bir manuel/normal şalter, dört yedi segmentli ekran ve sistem kontrolleri için tek bir ışık içeren tek bir sistemle ilgilidir.
Örneğin, seçilen bir odaya birkaç hareket detektörü yerleştirilecek (bu örnek tasarımda üç tane var) ve her biri hareketi algılarsa (1) bir sinyal gönderecek, yoksa (0) bir sinyal gönderecektir. Hareket dedektörlerinden en az biri hareket algılarsa, ışıklar yanmıyorsa yanar ve açıksa yanık kalır. Herhangi bir zamanda tüm hareket dedektörleri hiçbir şey algılamaz, bir zamanlayıcı belirli bir süre için geri saymaya başlar (kodda ayarlanabilir) ve zamanlayıcı geri sayım yaparken ışıklar açık kalır. Zamanlayıcı geri sayımı bitirdiğinde zamanlayıcı durur ve ışıklar kapanır. Zamanlayıcı geri sayım sırasında en az bir hareket dedektörü hareket algılarsa, zamanlayıcı durur ve sıfırlanır. Ve ışıklar kapalıyken en az bir hareket dedektörü hareket algılarsa, ışıklar hemen açılır.
Bu sistemin iki modu vardır, biri yukarıda belirtildiği gibi zamanlayıcılı, diğeri ise ışıkları manuel olarak kontrol eden (sensörleri yok sayan) bir anahtarın bulunduğu. Kullanıcının, genel olarak daha fazla enerji tasarrufu sağlayacağını düşündüklerine göre kullanmak istedikleri modu seçmesine olanak tanıyan bir ana anahtar vardır. Eski. Koridor gibi bir oda, pasif zamanlayıcı modundan yararlanabilir - kullanıcılar, insanların ne zaman geçeceğinden emin değiller, ancak her girip çıktıklarında ışıkları açıp kapatmak rahatsız edici olurdu, oysa böyle bir oda tek kullanıcılı bir yatak odası olarak manuel olarak çalıştırılması daha iyi olacaktır. Ve ana şalter, yatak odasında yaşayan kişinin uzun bir süre dışarı çıkması durumunda ana şalterin kapatılabileceği ve zamanlayıcı modunun enerji tasarrufu için daha verimli çalışacağı gibi durumlarda yardımcı olacaktır.
Yani bu sistemde iki durum makinesi vardır, biri ana durum makinesi, diğeri geri sayım sayacı için. Ana durum makinesinin şu şekilde tanımlanan beş durumu vardır: 1. "ışıklar açık, hareket algılandı" (id = 000), 2. "ışıklar açık, hareket algılanmadı" (id = 001), 3. "ışıklar kapalı, hareket yok algılandı" (id = 010), 4. "manuel olarak açıldı" (id = 011) ve 5. "manuel olarak kapatıldı" (id = 100). Bu ana durum makinesinin dört girişi vardır: ana anahtar (ms), manuel/normal anahtar (ns), en az bir anahtar hareket algıladığında yüksek, aksi halde düşük (orx) ve düşük olan bir sinyal. zamanlayıcı tamamlandığında yüksek, aksi takdirde düşüktür (td). Ana durum makinesinin iki çıkışı vardır: ışıklar (ışıklar) ve geri sayım sayacının (zamanlayıcı) veya (t) ne zaman açılacağını gösteren bir sinyal (her ikisi de birbirinin yerine kullanılır).
İkinci durum makinesi, geri sayım sayacı 12 duruma sahiptir: bunlardan 10 tanesi yedi segmentin gösterdiği sayıyla ilişkili kimliklere sahiptir - “seg 10” (id = 1010), “seg 9” (id = 1001), […], “seg 2” (id = 0010), “seg 1” (id = 0001) ve diğer iki durumun her ikisi de sıfırı görüntüler, zamanlayıcının kapalı olduğunu gösterir- yani ilk boş "boş 1" (id = 1111) vardır.) ve ikinci boş "boş 2" (id = 0000). Geri sayım sayacının bir girişi vardır: zamanlayıcı (t) ve üç çıkış: dört bit (bin) ile ikili olarak görüntülenen sayı ve zamanlayıcının yapıldığını gösteren bir sinyal (td).
Adım 1: Kara Kutu Şeması
Bu, tüm sistemin nasıl çalışması gerektiğine dair bir genel bakıştır ve bir kara kutu diyagramı ile açıklanmıştır.
- Saat, ana durum makinesini ve yedi segmentli kod çözücüyü saatlemek için kullanılır; aşağı sayaç için daha yavaş bir saat gereklidir, bu nedenle saat girişini alan ve aşağı sayaç için daha yavaş bir saat çıkışı veren bir saat bölücü modülü vardır.
- Sargıdaki ara değişken (orx) hareket sensörlerine bağlıdır ve sensörlerden en az biri bir şey algılarsa yüksek, aksi takdirde düşük olacaktır; bunun için boole denklemi sadece orx = s(2) veya s(1) veya s(0)'dır.
-
Ana fsm, girişlere (orx, ms, ns, td) bağlı olarak sistemin içinde bulunduğu genel durumu kontrol eder ve kullanıldığı iki sinyalle (zamanlayıcı ve ışıklar) basitleştirilmiş olarak gösterildiği gibi (sm) mevcut durumunu verir.
- (zamanlayıcı), girişi olarak aşağı sayıcı fsm'ye gönderilen ve ana fsm'nin mevcut durumu tarafından kontrol edilen bir sarmalayıcı sinyaldir. Zamanlayıcının ne zaman açılacağını gösterir.
- (ışıklar) led'i kontrol etmek için kullanılan bir sarıcı sinyaldir ve ana fsm'nin mevcut durumu tarafından kontrol edilir.
-
Aşağı sayaç fsm, girişe (zamanlayıcı) bağlı olarak yedi segmentin neyi görüntülediğini kontrol eder ve (td ve bin) için kullanıldığı iki sinyalle basitleştirilmiş olarak gösterilen mevcut durumu (sd) verir.
- (td), girişi olarak ana fsm'ye gönderilen ve aşağı sayıcı fsm'nin mevcut durumu tarafından kontrol edilen bir sarmalayıcı sinyaldir. Zamanlayıcının ne zaman yapıldığını gösteren bir geri besleme sinyali olarak işlev görür.
- (bin), dört bit sıfır ("0000" ve bin) ile birleştirilen dört bitlik bir sarmalayıcı sinyaldir ve birleştirilmiş sekiz bit, sekiz bitlik bir sarmalayıcı sinyal olan (q)'ya gönderilir, bu da sırayla yediye gönderilir. (ALU_VAL) altında segment kod çözücü.
-
Yedi segmentli modül, Polylearn'deki ile aynıdır; ana girişleri, sarmalayıcı sinyaline (seg) ve (DISP_EN) sarmalayıcıya (disp_en) çıkışları (SEGMENTS) kullanarak dört farklı yedi segmentli ekranda görüntülemek için (Bin) ila (ALU_VAL) arasında 8 bitlik bir sayı alır.
- İki veya daha fazla yedi segmentli ekran aynı anda farklı rakamları görüntüleyemediği için, dört bölüm arasında geçiş yapmak, her bir bölüm ayrı ayrı açıldığında uygun rakamı bir seferde görüntülemek için bir saat gerekir ve yeterince hızlı döngü yapmak, sseg'ler aynı anda açık görünüyor.
- (işaret ve geçerli) bu program boyunca sabittir, bu nedenle (işaret) kalıcı olarak düşük ve (geçerli) kalıcı olarak yüksek olarak ayarlanır.
- (ALU_VAL), sarmalayıcı sinyali (q) bir girdi olarak alır, bu, yedi segmentli ekranda görüntülenecek sayıyı ikili olarak temsil eder.
- Çıkış (SEGMENTS) sekiz bitlik bir sarmalayıcı sinyale (seg) ve (DISP_EN) dört bitlik bir sarmalayıcı sinyale (disp_en) gönderilir.
-
Ayrıca şemada açıkça gösterilmeyen bir D flip flop modülü vardır, ancak iki durum makinesi için alt modüller olarak gereklidir ve durumların eşzamanlı olarak geçişine yardımcı olur.
- Kodlama için 2^(3) = 8 > 5 durum olduğundan, bunlardan (3) tanesi ana fsm için gereklidir
- Bunlardan (4) aşağı sayaç fsm için gereklidir, çünkü kodlama için 2^4 = 16 > 12 durum
Adım 2: Durum Makineleri
İki durum makinesini uygun şekilde tasarlamak için, bireysel durumların, çıktıları ve farklı olası girdilere dayalı olarak geçiş yaptığı durumla birlikte net bir şekilde tanımlanması gerekir.
Ana fsm durumları:
"Işıklar açık, hareket algılandı" (id = 000)
Işıklar yanıyor, hareket dedektörlerinden en az biri hareketi algılıyor, bu nedenle orx yüksek olmalı ve ms açık.
- Çıkışlar: ışıklar = 1 ve zamanlayıcı = 0
- ms = 1 ve orx = 1 olduğunda bu durum olarak kalır.
- ms = 1 ve orx = 0 ise "ışıklar açık, hareket algılanmadı" durumuna geçer.
- ms = 0 ve ns = 1 ise "manuel açık" durumuna geçer.
- ms = 0 ve ns = 0 ise "manuel olarak kapatıldı" durumuna geçer.
"Işıklar açık, hareket algılanmadı" (id = 001)
Işıklar açık, herhangi bir hareket dedektöründen hareket algılanmadı, bu nedenle orx düşük olmalı ve ms açık. Ayrıca bu durumun başlangıcında, yüksek olarak ayarlanmış zamanlayıcı, geri sayım fsm'ye geri sayıma başlamasını söyler, geri sayıma devam eder ve geri sayım fsm bu fsm'ye sayımın bittiğini söylediğinde geri sayımı durdurur.
- Çıkışlar: ışıklar = 1 ve zamanlayıcı = 1.
- ms = 1 ve orx = 0 ve td (zamanlayıcı yapılır) = 0 olduğunda bu durum olarak kalır.
- ms = 1 ve orx = 1 ise "ışıklar açık, hareket algılandı" durumuna geçer.
- ms = 1 ve orx = 0 ve td = 1 ise “ışıklar kapalı, hareket algılanmadı” durumuna geçer.
- ms = 0 ve ns = 1 ise "manuel açık" durumuna geçer.
- ms = 0 ve ns = 0 ise "manuel olarak kapatıldı" durumuna geçer.
"Işıklar kapalı, hareket algılanmadı" (id = 010)
Işıklar kapalı, herhangi bir hareket sensöründen hareket algılanmadı ve zamanlayıcı geri sayımı tamamladı, bu nedenle orx düşük olmalı, ms açık ve td kapalı.
- Çıkışlar: ışıklar = 0 ve zamanlayıcı = 0.
- ms = 1 ve orx = 0 olduğunda bu durum olarak kalır.
- ms = 1 ve orx =1 ise "ışıklar açık, hareket algılandı" durumuna geçer.
- ms = 0 ve ns = 1 ise "manuel açık" durumuna geçer.
- ms = 0 ve ns = 0 ise "manuel olarak kapatıldı" durumuna geçer.
"Manuel olarak açıldı" (id = 011)
Işıklar açık, hareket dedektörleri alakasız, bu nedenle ms kapalı ve ns açık.
- Çıkışlar: ışıklar = 1 ve zamanlayıcı = 0.
- ms = 0 ve ns = 1 olduğunda bu durum olarak kalır.
- ms = 0 ve ns = 0 ise "manuel olarak kapatıldı" durumuna geçer.
- "Işıklar kapalı, ms = 1 ise hareket algılanmadı" durumuna geçer.
"Manuel olarak kapatıldı" (id = 100)
Işıklar kapalı, hareket dedektörleri alakasız, bu nedenle ms kapalı ve ns kapalı.
- Çıkışlar: ışıklar = 0 ve zamanlayıcı = 0.
- ms = 0 ve ns = 0 olduğunda bu durum olarak kalır.
- ms = 0 ve ns = 1 ise "manuel açık" durumuna geçer.
- "Işıklar kapalı, ms = 1 ise hareket algılanmadı" durumuna geçer.
Aşağı sayaç durumları:
"Seg 10" (id = 1010)
Yedi segmentli ekran 10 gösterir.
- Çıkışlar: bin = “1010” ve td = 0.
- Zamanlayıcı = 1 ise "seg 9" durumuna geçer.
- Zamanlayıcı = 0 ise "boş 2" durumuna geçer.
"Seg 9" (id = 1001)
Yedi segmentli ekran 9 gösterir.
- Çıkışlar: bin = “1001” ve td = 0.
- Zamanlayıcı = 1 ise "seg 8" durumuna geçer.
- Zamanlayıcı = 0 ise "boş 2" durumuna geçer.
("Seg 8"den "Seg 2"ye kadar olan durumlar, "Seg 10" ve "Seg 9" ile aynı modeli izledikleri ve açıklama için gerekli olmadığı için atlanmıştır)
"Seg 1" (id = 0001)
Yedi segmentli ekran 1 gösterir.
- Çıkışlar: bin = “0001” ve td = 0.
- Saatin bir sonraki yükselen kenarında "boş 2" durumuna geçer (giriş gerekmez).
"Boş 2" (id = 1111)
Yedi segmentli ekran 0 gösterir. İkinci bir boş durumun amacı, güvenlik için td = 1 olduğunda ayrı bir durum olmasıdır.
- Çıkışlar: bin = “1111” ve td = 1.
- Saatin bir sonraki yükselen kenarında "boş 1" durumuna geçer (giriş gerekmez).
"Boş 1" (id = 0000)
Yedi segmentli ekran 0 gösterir. Bu, ana durum makinesi “ışıklar kapalı, hareket algılanmadı” durumundayken sistemin kaldığı durumdur.
- Çıkışlar: bin = “0000” ve td = 0.
- Zamanlayıcı = 1 ise "seg 10" durumuna geçer.
Adım 3: Makine Doğruluk Tablolarını, Uyarma Denklemlerini ve Çıktı Denklemlerini Belirtin
Sonraki adım, iki durum makinesi için doğruluk tabloları ve her fsm için uyarma denklemleri ve çıktı denklemleri oluşturmaktır. Her fsm uyarma denklemi için, mevcut durum ve giriş sinyalleri açısından her bir sonraki durum kodlanmış bit için denklemler olması gerekir. Her fsm çıkış denklemi için, mevcut durum açısından her bir çıkış sinyali için denklemler olması gerekir. Dört denklem kümesinin tümü, gösterilen doğruluk tablolarından çizilebilir. (qn, her durum makinesi için bir sonraki durum kodlanmış bitidir ve q, mevcut durumdur)
(000) q(2)'q(1)'q(0)' ile eşdeğer ve (0000) q(3)'q(2)'q(1)'q(0)' ile eşdeğer
(örn. (0101) q(3)'q(2)q(1)'q(0)'dur ve (110) q(2)q(1)q(0)')
Ana fsm için uyarma denklemleri:
- qn(2) = (ms)'(ns)
- qn(1) = (ms)'(ns)' + (ms)(orx)'[(td)(001) + (010)] + (ms)[(011) + (100)]
- qn(0) = (ms)'(ns)' + (ms)(orx)'[(000) + (td)'(001)]
Ana fsm için çıkış denklemleri:
- ışıklar = (000) + (001) + (100)
- zamanlayıcı = (001)
Aşağı sayaç fsm için uyarma denklemleri:
- qn(3) = t[(0000) + (1010) + (1001) + (0001)]
- qn(2) = t[(1000) + (0111) + (0110) + (0101) + (0001)]
- qn(1) = t[(0000) + (1000) + (0111) + (0100) + (0011) + (0001)]
- qn(0) = t[(1010) + (1000) + (0110) + (0100) + (0010) + (0001)]
Aşağı sayaç fsm için çıkış denklemleri:
- td = (1111)
- bin(3) = (1010) + (1001) + (1000) + (1111) + (0000)
- bin(2) = (0111) + (0110) + (0101) + (0100) + (1111) + (0000)
- bin(1) = (1010) + (0011) + (0110) + (0011) + (0010) + (1111) + (0000)
- bin(0) = (1001) + (0111) + (0101) + (0011) + (0001) + (1111) + (0000)
Adım 4: Sarıcı, Alt Modüller ve Kısıtlama
Adım 1'de açıklandığı gibi, bu modüller bu proje için gereklidir ve hepsi "final_proj.vhd" başlıklı sarmalayıcı modül ile birbirine bağlıdır. "Basys3_Master.xdc" başlıklı kısıtlama dosyası, tüm sarmalayıcı girişlerini ve çıkışlarını anahtarlara, yedi segmente ve Basys 3 kartındaki G/Ç bağlantı noktalarına bağlamak için kullanılır. Ana şalter, panodaki kabloların açık olduğu tarafa en yakın şalter olmalıdır, normal/manuel şalter en yakın ikinci şalterdir ve üç hareket sensörünü temsil eden üç şalter, normal/manuel şalterin hemen yanındaki üç şalterdir.. Tüm kodlar (boole denklemleri, modül bildirimleri, vb.) dosyalara zaten yazılmıştır, bu nedenle bu işi yapmak için başka bir şey yazmanız gerekmez.
Adım 5: LED için G/Ç Bağlantı Noktaları
Bu projenin son adımı, (ışıkların) gerçekten açılıp kapanmadığını gösteren bir led kullanmaktır. Kablolama iki resimde gösterilmiştir. Led'i yakmamak için led ile seri olarak bir direnç (en az 330 ohm) olduğundan emin olun ve led'in uzun pininin kırmızı kablo gösterildiği gibi (üstte) basys kartındaki aynı dişi başlığa bağlı olduğundan emin olun. en sağda) ve daha kısa pim toprağa bağlı, gösterilen siyah tel ile aynı dişi başlık (üstte, soldan ikinci).
Önerilen:
Akıllı Motosiklet HUD Prototipi (adım adım Navigasyon ve Çok Daha Fazlası): 9 Adım
Akıllı Motosiklet HUD Prototipi (adım adım Navigasyon ve Çok Daha Fazlası): Merhaba !Bu Talimatlar, motosiklet kasklarına monte edilmek üzere tasarlanmış bir HUD (Heads-Up Display) platformunu nasıl tasarladığımın ve inşa ettiğimin hikayesidir. "Haritalar" yarışması bağlamında yazılmıştır. Maalesef tamamen bitiremedim
Arduino Araba Geri Geri Park Uyarı Sistemi - Adım Adım: 4 Adım
Arduino Araba Geri Geri Park Uyarı Sistemi | Adım Adım: Bu projede Arduino UNO ve HC-SR04 Ultrasonik Sensör kullanarak basit bir Arduino Araba Geri Park Sensörü Devresi tasarlayacağım. Bu Arduino tabanlı Araba Ters uyarı sistemi, Otonom Navigasyon, Robot Mesafesi ve diğer menzil r
Adım Adım PC Oluşturma: 9 Adım
Adım Adım Bilgisayar Oluşturma: Sarf Malzemeleri: Donanım: AnakartCPU & CPU soğutucusuPSU (Güç kaynağı ünitesi)Depolama (HDD/SSD)RAMGPU (gerekli değil)CaseTools: TornavidaESD bilezik/aplikatörlü matstermal macun
Üç Hoparlör Devresi -- Adım Adım Eğitim: 3 Adım
Üç Hoparlör Devresi || Adım Adım Eğitim: Hoparlör Devresi, ortamdan alınan ses sinyallerini MIC'e güçlendirir ve bunu, güçlendirilmiş sesin üretildiği Hoparlöre gönderir. Burada, size bu Hoparlör Devresini kullanarak bu Hoparlör Devresini yapmanın üç farklı yolunu göstereceğim:
Adım Adım Arduino Uno ile Akustik Kaldırma (8 adım): 8 Adım
Arduino Uno ile Akustik Kaldırma Adım Adım (8 adım): ultrasonik ses dönüştürücüler L298N erkek dc pinli Dc dişi adaptör güç kaynağı Arduino UNOBreadboardBu nasıl çalışır: İlk olarak, Arduino Uno'ya kod yüklersiniz (dijital ile donatılmış bir mikrodenetleyicidir) ve kodu dönüştürmek için analog bağlantı noktaları (C++)