Taula de continguts:

Sensor de moviment / llums controlades per comptador: 7 passos
Sensor de moviment / llums controlades per comptador: 7 passos

Vídeo: Sensor de moviment / llums controlades per comptador: 7 passos

Vídeo: Sensor de moviment / llums controlades per comptador: 7 passos
Vídeo: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, Juny
Anonim
Sensor de moviment / llums controlades per comptador
Sensor de moviment / llums controlades per comptador

Aquest projecte es va crear com a projecte final per a un curs de disseny digital a Cal Poly, San Luis Obispo (CPE 133).

Per què ho fem? Volem ajudar a conservar els recursos naturals del món. El nostre projecte se centra a estalviar electricitat. En estalviar més electricitat, podrem conservar els recursos naturals que s’utilitzen per generar electricitat. Quan comencem el 2018, els recursos naturals es consumeixen a un ritme increïble. Volem ser conscients del nostre impacte en el nostre entorn i contribuir a la preservació dels recursos naturals. L’electrònica es pot implementar de diverses maneres per estalviar energia que ajuda el medi ambient i el nostre estat econòmic. * Aquest model es va crear utilitzant els components disponibles.

Quina va ser la nostra inspiració? La gent sovint s’oblida d’apagar els llums de les vacances i malgastar energia deixant-les enceses durant la nit. En realitat, aquest projecte estalviarà electricitat perquè els “llums de vacances” només s’encendrien quan hi hagi gent a prop, conservant així l’energia quan no hi ha ningú al voltant. A més, volíem dissenyar un temporitzador perquè els llums s’apaguessin completament després d’un temps determinat per garantir que no s’encenguessin a causa del moviment detectat a les 3 de la matinada, per exemple.

Com es pot utilitzar aquest disseny? Aquest disseny es pot implementar per a tot tipus de llums, ja siguin decoratius, pràctics o ambdós. Per exemple, si voleu que la llum de l’escriptori funcioni només durant 6 hores alhora. Hauríeu d’establir un comptador a 21, 600 segons (6 hores x 3, 600 segons / hora). Mentre el comptador augmenta activament, el sensor de moviment controlaria la llum. Per tant, cada vegada que s'apaga durant aquest període de temps, només haureu d'agitar la mà davant del sensor de moviment i es tornarà a encendre. Si us adormiu a l’escriptori i us despertareu 7 hores després, el vostre moviment no l’encendrà.

Pas 1: programari i maquinari necessaris

Programari i maquinari requerits
Programari i maquinari requerits
Programari i maquinari requerits
Programari i maquinari requerits
Programari i maquinari requerits
Programari i maquinari requerits
Programari i maquinari requerits
Programari i maquinari requerits

Programari:

  • Vivado 2016.2 (o una versió més recent) es pot trobar aquí
  • Arduino IDE 1.8.3 (o una versió més recent) es pot trobar aquí

Maquinari:

  • 1 tauler Basys 3
  • 1 Arduino Uno
  • 2 taules de pa
  • 1 sensor d'ultrasons HC-SR04
  • 9 cables de mascle a mascle
  • 1 LED
  • 1 resistència de 100Ω

Pas 2: codis (Vivado)

Codis (Vivado)
Codis (Vivado)

Màquina d'estats finits (vegeu el diagrama d'estats anterior):

El LED requeria una màquina d'estat finit. Un LED només té dos estats d’estar encès i apagat. Només dues entrades controlen l’estat del LED, el comptador i el sensor. L'única vegada que el LED hauria d'estar encès és quan el sensor detecta moviment i quan el comptador compta de zero a trenta segons. En qualsevol altre cas, el LED estarà apagat.

Nom del fitxer: LEDDES

Comptador:

El comptador ens permet limitar el temps durant el qual el sensor de moviment pot activar el LED. El seu valor es mostra a la pantalla de set segments del tauler Basys 3 mitjançant un codi font ("sseg_dec"). Quan el commutador Restableix està inactiu (valor: '0'), el comptador comença a augmentar cada segon de 0 a 30. Quan arriba a 30, es congela en aquest número. No es reiniciarà des de 0 fins que el commutador de reinici es commutarà a "1" i es tornarà a "1." Si Restableix es converteix en "1" mentre el comptador funciona, el comptador es congelarà en qualsevol valor que hagués assolit. Quan Restableix torna a '0', el comptador es reiniciarà de 0 a 30. Aquesta implementació també requereix l'ús d'un senyal de rellotge, el seu codi es proporciona a continuació ("clk_div2").

Nom del fitxer: FinalCounter

ARXIUS PROVISTOS:

Pantalla de set segments:

Aquest codi permet que la visualització de set segments mostri valors decimals. Un submòdul actua com a descodificador entre una entrada binària de 8 bits i un decimal codificat binari de 4 bits. L’altre divideix el senyal del rellotge per actualitzar el seu valor a un ritme determinat.

Nom del fitxer: sseg_dec

Senyal de rellotge:

Aquest codi permet que el comptador augmenti en increments d'1 segon. Divideix la freqüència del rellotge d’entrada en una freqüència més lenta. Ens hem adaptat per proporcionar un període d'1 segon canviant constant max_count: enter: = (3000000) "a" constant max_count: integer: = (50000000) ".

Nom del fitxer: clk_div2

Fitxers proporcionats: sseg_dec, clk_div2 * Aquests fitxers font van ser proporcionats pel professor Bryan Mealy.

Pas 3: entendre com s'uneixen (esquemes dels components VHDL)

Comprensió de com s’uneixen (esquemes dels components VHDL)
Comprensió de com s’uneixen (esquemes dels components VHDL)

El fitxer principal ("MainProjectDES") conté tots els subarxius comentats anteriorment. Es connecten de la manera anterior. Els diferents components estan interconnectats mitjançant mapes de ports per enviar un senyal d’un element a un altre.

Com haureu notat, el FinalCounter proporciona una sortida de 5 bits mentre que sseg_dec requereix una entrada de 8 bits. Per compensar, configurem el senyal que connecta els dos components per començar amb "000" i complementar la sortida de 5 bits del comptador. Proporcionant així una entrada de 8 bits.

Restriccions:

Per executar aquests codis a la placa Basys 3, calia un fitxer de restriccions que indiqués a cada senyal cap a on anar i com es connectaven les parts.

Pas 4: Codi (Arduino)

Vam programar l'Arduino Uno per utilitzar el sensor de moviment per detectar el moviment i proporcionar una sortida que indica que el LED s'encén. A més, utilitzar el sensor per detectar el moviment requereix cicles en funcionament que busquen constantment canvis de distància. Essencialment, necessita un temporitzador que funcioni simultàniament per generar un senyal "alt" perquè el LED s'encengui mentre que el temporitzador s'ha de restablir un cop s'hagi detectat un moviment nou, que és gairebé impossible d'implementar a Vivado segons l'àmbit de coneixement. de la classe. A més, hem utilitzat un Arduino perquè no seria factible utilitzar HC-SR04 amb la placa Basys 3, ja que la placa només subministra 3,3 V mentre que el sensor requereix una font d'alimentació de 5 V. Per a la implementació del moviment de detecció, es tracta d’una codificació real en lloc de CAD en VHDL.

Hem utilitzat la funció incorporada d’impulsos per al sensor per recuperar el temps transcorregut entre el so emès inicialment pel sensor i el so que es retorna quan es colpeja un objecte. A continuació, fem servir la velocitat del so i l’interval de temps per calcular la distància entre l’objecte i el sensor. A partir d’aquí, emmagatzemem la distància actual i en fem un seguiment. Comprovem la distància cada 150 ms. També hem utilitzat la biblioteca elapsedmil per executar un temporitzador intern dins de l'arduino per fer un seguiment del temps transcorregut. Si detectem un canvi de distància, que correspon a un moviment, el temporitzador es restableix a zero i mantindrà la llum encesa fins que passin 3 segons. Sempre que el sensor detecta un altre moviment, el temporitzador es restableix a 0 i el senyal de la llum LED serà "alt" durant els pròxims 3 segons. Hem adjuntat una còpia del nostre codi Arduino a continuació.

Pas 5: com s’ajusten els nostres components

Com s’ajusten els nostres components!
Com s’ajusten els nostres components!
Com s’ajusten els nostres components!
Com s’ajusten els nostres components!
Com s’ajusten els nostres components!
Com s’ajusten els nostres components!

Com podeu veure al "Basys3: Pmod Pin-out Diagram *" i a la foto de la placa Arduino Uno, hem ressaltat i etiquetat els ports que hem utilitzat.

1. El tauler LED i Basys 3

El LED es connecta en sèrie amb la resistència de 100Ω. -El cable blanc connecta la resistència al pin PWR de la placa Basys 3. -El cable groc connecta el LED al pin H1 de la placa Basys 3.

2. El sensor de moviment i l’Arduino Uno

-El cable taronja connecta Vcc (potència) del sensor de moviment al pin 5V de la placa Arduino Uno.-El cable blanc connecta el pin Trig del sensor de moviment al pin 10 de la placa Arduino Uno.-El fil groc connecta el pin Echo de el sensor de moviment al pin 9 de la placa Arduino Uno.-El cable negre connecta el pin GND del sensor de moviment al pin GND de la placa Arduino Uno.

[Els cables que vam fer servir eren massa curts per arribar als components, de manera que estaven interconnectats]

3. La placa Basys 3 i l’Arduino Uno

El cable groc connecta el pin A14 de la placa Basys 3 al pin 6 de la placa Arduino Uno.

* Aquest diagrama s'ha extret del "Manual de referència de la placa FPGA Basys 3 ™" de Digilent, que es pot trobar aquí.

Pas 6: demostració

Pas 7: és hora de provar-ho

Enhorabona! Ja heu arribat al final del nostre projecte de llum controlada per sensor de moviment i comptador. Moltes gràcies per llegir la nostra publicació sobre Instructables. Ara és hora que proveu de construir aquest projecte vosaltres mateixos. Si seguiu tots els passos amb cura, hauríeu de tenir un sensor de moviment i una llum controlada per comptador que funcioni de manera similar a la nostra. Us desitgem molta sort per construir aquest projecte i esperem que pugui contribuir a estalviar electricitat i recursos naturals.

Recomanat: