İçindekiler:

Hareket Sensörü/Sayaç Kontrollü Işıklar: 7 Adım
Hareket Sensörü/Sayaç Kontrollü Işıklar: 7 Adım

Video: Hareket Sensörü/Sayaç Kontrollü Işıklar: 7 Adım

Video: Hareket Sensörü/Sayaç Kontrollü Işıklar: 7 Adım
Video: AKILLI MERDİVEN NASIL YAPILIR / ARDUİNO / HOW TO MAKE A SMART LADDER / KENDİN YAP / PIR SENSÖR / LED 2024, Temmuz
Anonim
Hareket Sensörü/Sayaç Kontrollü Işıklar
Hareket Sensörü/Sayaç Kontrollü Işıklar

Bu proje, Cal Poly, San Luis Obispo'da (CPE 133) Dijital Tasarım kursu için bir final projesi olarak oluşturulmuştur.

Bunu neden yapıyoruz? Dünyadaki doğal kaynakların korunmasına yardımcı olmak istiyoruz. Projemiz elektrik tasarrufuna odaklanıyor. Daha fazla elektrik tasarrufu yaparak, elektrik üretmek için kullanılan doğal kaynakları koruyabileceğiz. 2018 yılına girerken doğal kaynaklar inanılmaz bir hızla tüketiliyor. Çevremiz üzerindeki etkimizin bilincinde olmak ve doğal kaynakların korunmasında üzerimize düşeni yapmak istiyoruz. Elektronik, hem çevreye hem de ekonomik durumumuza yardımcı olan enerji tasarrufu için çeşitli şekillerde uygulanabilir.*Bu model, elimizdeki bileşenler kullanılarak oluşturulmuştur.

İlhamımız neydi? İnsanlar genellikle tatil ışıklarını kapatmayı unutuyor ve gece boyunca açık bırakarak enerjilerini boşa harcıyorlar. Gerçekte, bu proje elektrik tasarrufu sağlayacak çünkü "tatil ışıkları" yalnızca insanlar yakındayken yanacak ve böylece etrafta kimse yokken enerji tasarrufu sağlanacak. Ayrıca, örneğin saat 3'te algılanan hareket nedeniyle açılmamalarını sağlamak için belirli bir süre sonra ışıkların tamamen kapanacağı bir zamanlayıcı tasarlamak istedik.

Bu tasarımı nasıl kullanabilirsiniz? Bu tasarım dekoratif, pratik veya her ikisi için de her türlü ışık için uygulanabilir. Örneğin, masa ışığınızın bir seferde yalnızca 6 saat çalışmasını istiyorsanız. Bir sayacı 21.600 saniyeye (6 saat x 3, 600 saniye/saat) ayarlamanız gerekir. Sayaç aktif olarak artarken, hareket sensörü ışığı kontrol eder. Böylece, bu süre boyunca her kapandığında, hareket sensörünün önünde elinizi sallamanız yeterlidir ve tekrar açılacaktır. Masanızda uyuyakalır ve 7 saat sonra uyanırsanız hareketiniz açmayacaktır.

Adım 1: Gerekli Yazılım ve Donanım

Gerekli Yazılım ve Donanım
Gerekli Yazılım ve Donanım
Gerekli Yazılım ve Donanım
Gerekli Yazılım ve Donanım
Gerekli Yazılım ve Donanım
Gerekli Yazılım ve Donanım
Gerekli Yazılım ve Donanım
Gerekli Yazılım ve Donanım

Yazılım:

  • Vivado 2016.2 (veya daha yeni bir sürüm) burada bulunabilir
  • Arduino IDE 1.8.3 (veya daha yeni bir sürüm) burada bulunabilir

Donanım:

  • 1 Basys 3 kurulu
  • 1 Arduino Uno
  • 2 ekmek tahtası
  • 1 Ultrasonik Değişken Sensör HC-SR04
  • 9 Erkekten erkeğe teller
  • 1 LED
  • 1 100Ω Direnç

Adım 2: Kodlar (Vivado)

Kodlar (Vivado)
Kodlar (Vivado)

Sonlu Durum Makinesi (yukarıdaki durum şemasına bakın):

LED, sonlu durumlu bir makine gerektiriyordu. Bir LED'in yalnızca iki açık ve kapalı olma durumu vardır. Yalnızca iki giriş, LED'in durumunu, sayacı ve sensörü kontrol eder. LED'in yanması gereken tek zaman, sensörün hareketi algıladığı ve sayacın sıfırdan otuz saniyeye kadar saydığı zamandır. Başka herhangi bir durumda LED kapalı olacaktır.

Dosya adı: LEDDES

Tezgah:

Sayaç, hareket sensörünün LED'i etkinleştirebileceği süreyi sınırlamamızı sağlar. Değeri, bir kaynak kodu (“sseg_dec”) aracılığıyla Basys 3 Board'un yedi segmentli ekranında görüntülenir. Sıfırlama anahtarı kapalıyken (değer: '0'), sayaç her saniye 0'dan 30'a yükselmeye başlar. 30'a ulaştığında o sayı üzerinde donar. Sıfırlama anahtarı '1'e ve tekrar '1'e çevrilene kadar 0'dan yeniden başlamaz. Sayaç çalışırken Sıfırlama '1' olursa, sayaç ulaştığı değerde donar. Sıfırlama '0'a geri döndüğünde, sayaç 0'dan 30'a yeniden başlar. Bu uygulama aynı zamanda bir saat sinyalinin kullanılmasını gerektirir, kodu aşağıda verilmiştir ("clk_div2").

Dosya adı: FinalCounter

SAĞLANAN DOSYALAR:

Yedi Segment Ekran:

Bu kod, yedi segmentli ekranın ondalık değerleri göstermesine izin verir. Bir alt modül, 8 bitlik ikili giriş ile 4 bitlik İkili Kodlu Ondalık arasında kod çözücü görevi görür. Diğeri, değerini belirli bir oranda yenilemek için saat sinyalini böler.

Dosya adı: sseg_dec

Saat Sinyali:

Bu kod, sayacın 1 saniyelik artışlarla artmasına izin verir. Giriş saat frekansını daha yavaş bir frekansa böler. Sabit max_count: tamsayı:= (3000000)” sabitini “sabit max_count: tamsayı:= (500000000)” olarak değiştirerek 1 saniyelik bir süre sağlayacak şekilde uyarlandık.

Dosya adı: clk_div2

Sağlanan dosyalar: sseg_dec, clk_div2 *Bu kaynak dosyalar Profesör Bryan Mealy tarafından sağlanmıştır.

Adım 3: Nasıl Bir Araya Geldiklerini Anlamak (VHDL Bileşenlerinin Şemaları)

Nasıl Bir Araya Geldiklerini Anlamak (VHDL Bileşenlerinin Şemaları)
Nasıl Bir Araya Geldiklerini Anlamak (VHDL Bileşenlerinin Şemaları)

Ana dosya (" MainProjectDES ") daha önce tartışılan tüm alt dosyaları içerir. Yukarıdaki şekilde bağlanırlar. Farklı bileşenler, bir öğeden diğerine sinyal göndermek için bağlantı noktası haritaları kullanılarak birbirine bağlanır.

Fark etmiş olabileceğiniz gibi, FinalCounter 5 bitlik bir çıkış sağlarken sseg_dec 8 bitlik bir giriş gerektirir. Telafi etmek için, her iki bileşeni birbirine bağlayan sinyali "000" ile başlayacak ve sayaçtan 5 bitlik çıkışı ekleyecek şekilde ayarladık. Böylece 8 bitlik bir giriş sağlar.

kısıtlamalar:

Bu kodları Basys 3 Board üzerinde çalıştırmak için, her sinyalin nereye gideceğini ve parçaların nasıl bağlanacağını söyleyen bir kısıtlama dosyası gerekliydi.

Adım 4: Kod (Arduino)

Arduino Uno'yu hareketi algılamak için hareket sensörünü kullanacak ve LED'in yanmasını işaret eden bir çıkış sağlayacak şekilde programladık. Ek olarak, hareketi algılamak için sensörü kullanmak, sürekli olarak mesafedeki değişikliği arayan döngüler gerektirir. Esasen, yeni bir hareket algılandığında zamanlayıcının sıfırlanması gerekirken LED'in yanması için "yüksek" bir sinyal vermek üzere aynı anda çalışan bir zamanlayıcıya ihtiyaç duyar; bu, Vivado'da uygulanması neredeyse imkansızdır, bilgi kapsamına göre Vivado'da uygulanması neredeyse imkansızdır. sınıfın. Ayrıca, sensör 5V güç kaynağı gerektirirken kart yalnızca 3,3V sağladığından, HC-SR04'ü Basys 3 Board ile kullanmak mümkün olmayacağından Arduino kullandık. Algılama hareketinin uygulanması için, VHDL'deki CAD'in aksine gerçek kodlamadır.

Sensörün başlangıçta yaydığı ses ile bir nesneye çarptığında geri dönen ses arasında geçen süreyi almak için sensör için yerleşik darbe işlevini kullandık. Ardından, nesne ile sensör arasındaki mesafeyi hesaplamak için ses hızını ve zaman aralığını kullanırız. Bundan sonra mevcut mesafeyi kaydediyor ve takip ediyoruz. Her 150 ms'de bir mesafeyi kontrol ediyoruz. Geçen süreyi takip etmek için arduino içinde dahili bir zamanlayıcı çalıştırmak için elapsedmil kitaplığını da kullandık. Bir harekete karşılık gelen bir mesafe değişikliği tespit edersek, zamanlayıcı sıfırlanır ve ışığı 3 saniye geçene kadar açık tutar. Sensör başka bir hareket algıladığında, zamanlayıcı 0'a sıfırlanır ve sonraki 3 saniye boyunca LED ışığı için sinyal "yüksek" olacaktır. Arduino kodumuzun bir kopyasını aşağıya ekledik.

Adım 5: Bileşenlerimiz Birbirine Nasıl Uyum Sağlar

Bileşenlerimiz Birbirine Nasıl Uyum Sağlar!
Bileşenlerimiz Birbirine Nasıl Uyum Sağlar!
Bileşenlerimiz Birbirine Nasıl Uyum Sağlar!
Bileşenlerimiz Birbirine Nasıl Uyum Sağlar!
Bileşenlerimiz Birbirine Nasıl Uyum Sağlar!
Bileşenlerimiz Birbirine Nasıl Uyum Sağlar!

"Basys3: Pmod Pin-out Diagram*" ve Arduino Uno Board'un fotoğrafında da görebileceğiniz gibi, kullandığımız portları vurguladık ve etiketledik.

1. LED ve Basys 3 Kartı

LED, 100Ω direnç ile seri olarak bağlanır. -Beyaz kablo, direnci Basys 3 kartının PWR pinine bağlar. -Sarı kablo, LED'i Basys 3 kartının H1 pinine bağlar.

2. Hareket Sensörü ve Arduino Uno

-Turuncu kablo, hareket sensörünün Vcc'sini (gücünü) Arduino Uno kartının 5V pinine bağlar.-Beyaz kablo, hareket sensörünün Trig pinini Arduino Uno kartının 10 pinine bağlar.-Sarı kablo, pin Echo'yu bağlar. hareket sensörünü Arduino Uno kartının 9 numaralı pinine bağlar.-Siyah kablo, hareket sensörünün GND pinini Arduino Uno kartının GND pinine bağlar.

[Kullandığımız teller bileşenlere ulaşamayacak kadar kısaydı, bu yüzden birbirlerine bağlıydılar]

3. Basys 3 Board ve Arduino Uno

Sarı kablo, Basys 3 kartının A14 pinini Arduino Uno kartının 6 pinine bağlar.

*Bu şema, burada bulunabilecek Digilent'in "Basys 3™ FPGA Board Reference Manual"'ından alınmıştır.

Adım 6: Gösteri

Adım 7: Test Etme Zamanı

Tebrikler! Hareket sensörlü ve sayaç kontrollü ışık projemizin sonuna geldiniz! Instructables yazımızı okuduğunuz için çok teşekkür ederiz. Şimdi bu projeyi kendiniz inşa etmeye çalışmanızın zamanı geldi. Her adımı dikkatli bir şekilde takip ederseniz, bizimkine benzer şekilde çalışan bir hareket sensörlü ve sayaç kontrollü ışığa sahip olmalısınız! Bu projeyi inşa etmede size iyi şanslar diliyoruz ve doğal kaynakların yanı sıra elektrik tasarrufuna da katkıda bulunabileceğini umuyoruz!

Önerilen: