Índice:

Sensor de movimento / luzes controladas por contador: 7 etapas
Sensor de movimento / luzes controladas por contador: 7 etapas

Vídeo: Sensor de movimento / luzes controladas por contador: 7 etapas

Vídeo: Sensor de movimento / luzes controladas por contador: 7 etapas
Vídeo: Conmutador para dos focos 💡💡 2024, Novembro
Anonim
Sensor de movimento / luzes controladas por contador
Sensor de movimento / luzes controladas por contador

Este projeto foi criado como um projeto final para um curso de Design Digital na Cal Poly, San Luis Obispo (CPE 133).

Por que estamos fazendo isso? Queremos ajudar a conservar os recursos naturais do mundo. Nosso projeto tem como foco a economia de eletricidade. Ao economizar mais eletricidade, seremos capazes de conservar os recursos naturais que são usados para gerar eletricidade. No início de 2018, os recursos naturais estão sendo consumidos a uma taxa incrível. Queremos estar conscientes de nosso impacto em nosso meio ambiente e fazer nossa parte na preservação dos recursos naturais. A electrónica pode ser implementada de várias formas para poupar energia, o que ajuda o ambiente e também ao nosso estado económico. * Este modelo foi criado a partir dos componentes de que dispomos.

Qual foi a nossa inspiração? As pessoas muitas vezes se esquecem de desligar as luzes do feriado e desperdiçam energia deixando-as acesas durante a noite. Na realidade, este projeto irá conservar eletricidade porque as “luzes festivas” só acenderiam quando houvesse gente por perto, economizando energia quando não houvesse ninguém por perto. Além disso, queríamos projetar um cronômetro para que as luzes se apagassem completamente após um determinado tempo para garantir que não acendessem devido ao movimento detectado às 3 da manhã, por exemplo.

Como você poderia usar este design? Ele pode ser implementado para todos os tipos de luzes, sejam elas decorativas, práticas ou ambas. Se você quiser que a luz da sua mesa funcione apenas 6 horas por vez, por exemplo. Você precisaria definir um contador para 21.600 segundos (6 horas x 3.600 segundos / hora). Enquanto o contador está aumentando ativamente, o sensor de movimento controlaria a luz. Portanto, toda vez que ele desligar durante esse período de tempo, você só precisa acenar com a mão na frente do sensor de movimento e ele ligará novamente. Se você adormecer em sua mesa e acordar 7 horas depois, seus movimentos não o ativarão.

Etapa 1: software e hardware necessários

Software e Hardware Requeridos
Software e Hardware Requeridos
Software e Hardware Requeridos
Software e Hardware Requeridos
Software e Hardware Requeridos
Software e Hardware Requeridos
Software e Hardware Requeridos
Software e Hardware Requeridos

Programas:

  • Vivado 2016.2 (ou uma versão mais recente) pode ser encontrada aqui
  • Arduino IDE 1.8.3 (ou uma versão mais recente) pode ser encontrado aqui

Hardware:

  • Placa 1 Basys 3
  • 1 Arduino Uno
  • 2 tábuas de pão
  • 1 Sensor ultrassônico de alcance HC-SR04
  • 9 fios macho-macho
  • 1 LED
  • 1 resistor 100Ω

Etapa 2: Códigos (Vivado)

Códigos (Vivado)
Códigos (Vivado)

Máquina de estados finitos (consulte o diagrama de estados acima):

O LED exigia uma máquina de estado finito. Um LED tem apenas dois estados de estar ligado e desligado. Apenas duas entradas controlam o estado do LED, o contador e o sensor. O único momento em que o LED deve estar aceso é quando o sensor detecta movimento e quando o contador está contando de zero a trinta segundos. Em qualquer outro caso, o LED ficará desligado.

Nome do arquivo: LEDDES

Contador:

O contador nos permite limitar o período de tempo durante o qual o sensor de movimento pode ativar o LED. Seu valor é exibido no display de sete segmentos do Basys 3 Board por meio de um código-fonte (“sseg_dec”). Quando a chave Reset é pressionada (valor: '0'), o contador começa a aumentar a cada segundo de 0 a 30. Quando atinge 30, ele congela nesse número. Ele não reiniciará de 0 até que a chave Reset seja alternada para '1' e de volta para '1.' Quando Reset volta a '0', o contador irá reiniciar de 0 a 30. Esta implementação também requer o uso de um sinal de relógio, seu código é fornecido abaixo ("clk_div2").

Nome do arquivo: FinalCounter

ARQUIVOS FORNECIDOS:

Display de sete segmentos:

Este código permite que o display de sete segmentos exiba valores decimais. Um submódulo atua como decodificador entre uma entrada binária de 8 bits e um decimal codificado em binário de 4 bits. O outro divide o sinal do relógio para atualizar seu valor em uma determinada taxa.

Nome do arquivo: sseg_dec

Sinal do relógio:

Este código permite que o contador aumente em incrementos de 1 segundo. Ele divide a freqüência do clock de entrada em uma freqüência mais lenta. Adaptamos para fornecer um período de 1 segundo por constante mudança max_count: integer: = (3000000)”para“constant max_count: integer: = (50000000).”

Nome do arquivo: clk_div2

Arquivos fornecidos: sseg_dec, clk_div2 * Esses arquivos fonte foram fornecidos pelo Professor Bryan Mealy.

Etapa 3: Compreendendo como eles se unem (esquemas dos componentes VHDL)

Compreendendo como eles se unem (esquemas dos componentes VHDL)
Compreendendo como eles se unem (esquemas dos componentes VHDL)

O arquivo principal ("MainProjectDES") contém todos os subarquivos discutidos anteriormente. Eles estão conectados da maneira acima. Os diferentes componentes são interconectados usando mapas de portas para enviar um sinal de um elemento para outro.

Como você deve ter notado, o FinalCounter fornece uma saída de 5 bits enquanto sseg_dec requer uma entrada de 8 bits. Para compensar, definimos o sinal conectando os dois componentes para começar com "000" e adicionamos a saída de 5 bits do contador. Fornecendo assim uma entrada de 8 bits.

Restrições:

Para executar esses códigos na placa Basys 3, um arquivo de restrições foi necessário, informando a cada sinal para onde ir e como as partes foram conectadas.

Etapa 4: código (Arduino)

Nós programamos o Arduino Uno para usar o sensor de movimento para detectar movimento e fornecer uma saída que sinaliza para o LED acender. Além disso, o uso do sensor para detectar movimento exige a execução de loops que procuram constantemente por mudanças na distância. Essencialmente, ele precisa de um temporizador que funcione simultaneamente para emitir um sinal “alto” para o LED acender enquanto o temporizador precisa ser reiniciado quando um novo movimento é detectado, o que é quase impossível de implementar no Vivado com base no escopo de conhecimento da classe. Além disso, usamos um Arduino porque não seria viável usar o HC-SR04 com a placa Basys 3, já que a placa fornece apenas 3,3 V enquanto o sensor requer uma fonte de alimentação de 5 V. Para a implementação do movimento de detecção, é a codificação real em oposição ao CAD em VHDL.

Usamos a função embutida de pulso para o sensor para recuperar o tempo decorrido entre o som inicialmente emitido pelo sensor e o som que retorna ao atingir um objeto. Em seguida, usamos a velocidade do som e o intervalo de tempo para calcular a distância entre o objeto e o sensor. A partir daí, armazenamos a distância atual e a monitoramos. Verificamos a distância a cada 150ms. Também usamos a biblioteca elapsedmil para executar um cronômetro interno dentro do arduino para controlar o tempo decorrido. Se detectarmos uma mudança de distância, que corresponde a um movimento, o cronômetro é zerado e manterá a luz acesa até que se passem 3 segundos. Sempre que o sensor detecta outro movimento, o cronômetro é zerado para 0 e o sinal para a luz do LED ficará "alto" pelos próximos 3 segundos. Anexamos uma cópia de nosso código do Arduino abaixo.

Etapa 5: Como nossos componentes se encaixam

Como nossos componentes se encaixam!
Como nossos componentes se encaixam!
Como nossos componentes se encaixam!
Como nossos componentes se encaixam!
Como nossos componentes se encaixam!
Como nossos componentes se encaixam!

Como você pode ver no "Basys3: Pmod Pin-out Diagram *" e na foto da placa Arduino Uno, destacamos e rotulamos as portas que usamos.

1. A placa LED e Basys 3

O LED é conectado em série com o resistor de 100Ω. -O fio branco conecta o resistor ao pino PWR da placa Basys 3. -O fio amarelo conecta o LED ao pino H1 da placa Basys 3.

2. O sensor de movimento e o Arduino Uno

-O fio laranja conecta Vcc (alimentação) do sensor de movimento ao pino 5V da placa Arduino Uno.-O fio branco conecta o pino Trig do sensor de movimento ao pino 10 da placa Arduino Uno. -O fio amarelo conecta o pino Eco de o sensor de movimento ao pino 9 da placa Arduino Uno.-O fio preto conecta o pino GND do sensor de movimento ao pino GND da placa Arduino Uno.

[Os fios que usamos eram muito curtos para alcançar os componentes, portanto, eles estavam interconectados]

3. A placa Basys 3 e o Arduino Uno

O fio amarelo conecta o pino A14 da placa Basys 3 ao pino 6 da placa Arduino Uno.

* Este diagrama foi retirado do "Manual de referência da placa FPGA Basys 3 ™ da Digilent", que pode ser encontrado aqui.

Etapa 6: demonstração

Etapa 7: É hora de fazer um teste

Parabéns! Você chegou ao final do nosso projeto de sensor de movimento e luz controlada por contador! Muito obrigado por ler nossa postagem do Instructables. Agora é hora de você tentar construir este projeto sozinho. Se você seguir cada passo com cuidado, você deve ter um sensor de movimento e luz controlada por contador que funcione de forma semelhante ao nosso! Desejamos-lhe boa sorte na construção deste projeto e esperamos que ele possa contribuir para a economia de energia elétrica e também de recursos naturais!

Recomendado: