Índice:

Modelo de um interruptor universal: 10 etapas
Modelo de um interruptor universal: 10 etapas

Vídeo: Modelo de um interruptor universal: 10 etapas

Vídeo: Modelo de um interruptor universal: 10 etapas
Vídeo: COMO INSTALAR INTERRUPTOR e BOCAL DE LÂMPADA (passo a passo) 2024, Julho
Anonim
Modelo de um interruptor universal desligado
Modelo de um interruptor universal desligado

Você está cansado de verificar se todas as luzes da sua casa estão apagadas antes de dormir? Você gostaria de poder desligar todas as luzes de uma vez, sem qualquer problema? Para economizar energia e tempo, decidimos criar um sistema que pudesse teoricamente fechar uma casa inteira de uma vez.

Modelamos uma prova desse conceito usando um par de LEDs e uma placa de circuito Basys 3 e criamos um design que desativaria todos os LEDs com o apertar de um botão. Este modelo também pode ser aplicado a um sistema de iluminação residencial real, embora exija fiação e modificações mais complicadas nos arquivos VHDL fornecidos.

Etapa 1: importar os arquivos VHDL fornecidos

Para que nosso modelo funcione corretamente, você precisará baixar o software que fornece as instruções da placa Basys 3.

Primeiro, você precisará baixar uma ferramenta de síntese para implementar arquivos vhdl no hardware. Se você deseja ter certeza de que todo o código irá replicar totalmente nosso design sem a necessidade de qualquer modificação, recomendamos que você use o Vivado 2016.2. Depois de instalar o Vivado, você pode criar um projeto e baixar nossos arquivos de origem. Adicione-os como fontes ao seu projeto, não se esqueça de adicionar o arquivo de restrições também!

A seguir, explicaremos o que cada um dos arquivos de origem faz. Pule as etapas 2 a 6 se desejar apenas obter a construção física do dispositivo.

Etapa 2: divisão do módulo superior VHDL

Repartição do Módulo Superior VHDL
Repartição do Módulo Superior VHDL
Repartição do Módulo Superior VHDL
Repartição do Módulo Superior VHDL

O módulo superior do projeto é o que conecta todos os módulos de componentes individuais ao hardware usado. Como você pode ver, temos os módulos killSwitch e buzzerControl definidos como componentes na parte superior.

A seção inferior especifica como esses módulos são conectados entre si. Conectamos quatro LEDs à placa e os associamos aos módulos killSwitch de dev0 a dev3. Temos quatro módulos killSwitch definidos porque precisamos de um para gerenciar o estado de cada LED conectado. Cada um desses módulos utiliza o relógio e o sinal de botão que criamos na definição do módulo superior, bem como seus respectivos interruptores de entrada e sinais de dispositivo de saída.

O módulo de controle da campainha na parte inferior ativa a campainha quando o botão universal off é pressionado. Como você pode ver, o módulo de controle da campainha recebe o sinal do relógio e do botão como entradas. Ele também é passado pelo pino de saída da campainha física para controlá-lo adequadamente.

Etapa 3: Divisão do módulo de chave de segurança VHDL

Repartição do módulo do interruptor de segurança VHDL
Repartição do módulo do interruptor de segurança VHDL
Repartição do módulo do interruptor de segurança VHDL
Repartição do módulo do interruptor de segurança VHDL

O interruptor de desligamento é o botão universal de desligamento e o módulo se preocupa principalmente em conectá-lo a outros elementos do circuito para que, quando pressionado, todas as luzes se apaguem.

Enquanto o módulo superior lida com a conexão do hardware físico ao software, o módulo killSwitch lida com a lógica principal de cada dispositivo. O módulo recebe entradas para o sinal do relógio, botão universal off e a chave seletora do dispositivo. Em troca, ele controla o estado do pino do dispositivo ao qual está conectado.

Na seção de arquitetura do código, vemos que ele depende do módulo dFlipFlop para armazenar memória. Você também pode ver que declaramos quatro sinais que serão usados para conectar o flip-flop, bem como implementar nossas instruções lógicas. Na seção comportamental do código, criamos uma instância do módulo dFlipFlop e atribuímos nossos sinais de E / S às portas.

A partir daqui, a parte principal de nossa lógica reside nos valores de sinal para invertState e isDevOn. Nossa base lógica para o dispositivo é a seguinte: "Sempre que o botão for acionado, a luz irá inverter seu estado ligado / desligado. Sempre que o botão for pressionado e o LED estiver atualmente ligado, o LED inverterá seu estado para desligado. " A partir dessas duas afirmações, podemos extrapolar que o estado do LED deve ser o XOR do switch e do nosso elemento de memória. Dessa forma, uma mudança em qualquer um deles inverte o LED. Isso pode ser visto implementado no sinal isDevOn. A condição de LED ligado para o elemento de memória é controlada pelo nosso sinal invertState. Se o LED estiver aceso e o botão for pressionado, nosso elemento de memória atualizará e inverterá seu estado. Isso também inverte o estado do LED.

Etapa 4: análise do módulo flip-flop VHDL

Detalhamento do Módulo Flip Flop VHDL
Detalhamento do Módulo Flip Flop VHDL

Um problema com nosso projeto foi o fato de que, depois de usar o interruptor de desligamento, as luzes que estavam acesas anteriormente podem precisar ser giradas duas vezes para voltar à posição ligada. Isso seria um grande inconveniente para as pessoas ao longo do tempo. Conseguimos contornar esse inconveniente incluindo um "Flip Flop", um elemento de circuito capaz de armazenar informações, em nosso design. Agora, o sistema lembra se um interruptor de luz estava ligado anteriormente, de forma que, se for girado novamente, ele acenderá independentemente de sua posição inicial.

O código VHDL usa as instruções if e else para criar o Flip Flop como um componente em nosso projeto de circuito. Ele garante que, quando o sinal do clock muda de um estado baixo para um estado alto, quando a lâmpada está acesa e quando o botão de desligar é pressionado, a saída dos flip-flops sobrescreve sua entrada. Quando a entrada é substituída, o flip-flop é invertido.

Etapa 5: Divisão do Módulo VHDL Piezo Buzzer

Repartição do Módulo VHDL Piezo Buzzer
Repartição do Módulo VHDL Piezo Buzzer
Repartição do Módulo VHDL Piezo Buzzer
Repartição do Módulo VHDL Piezo Buzzer

Este arquivo é um pouco supérfluo no que diz respeito ao design do hardware, mas é essencial para fazer com que o módulo superior e os arquivos de restrições funcionem sem problemas. Se você optar por não usar a campainha Piezo, baixe este arquivo, mas não anexe a campainha à placa Basys 3.

A campainha Piezo irá, ao pressionar o botão desativar, tocar um tom de duas notas que fornecerá ao usuário um feedback auditivo de que o botão foi pressionado. Implementamos isso comportamentalmente em VHDL por meio de uma série de instruções if em uma estrutura de processo. Começamos criando um valor inteiro para controlar quantas mudanças de relógio ocorreram. Assim que o processo começa, o programa gasta a primeira metade de um segundo (0 a 50 milhões de tiques do relógio) emitindo uma nota A em 440 hertz. Isso é conseguido invertendo o sinal da campainha piezoelétrica a cada múltiplo par de 227272 tiques do relógio com uma função de módulo. Este número é o resultado da divisão do sinal do clock da placa (100 MHz) pela freqüência desejada (400 Hz). Durante a segunda metade de um segundo (50 a 100 milhões de tiques do relógio), a placa emite uma nota F em 349,2 hertz pelo mesmo método de antes. Depois de um segundo, o programa não incrementa mais a variável do relógio e para de emitir qualquer coisa da campainha piezoelétrica. Pressionar o botão universal off novamente redefine esse número para 0, reiniciando o ciclo de ruído.

Etapa 6: análise do arquivo de restrições VHDL

O arquivo de restrições informa ao Vivado quais dispositivos da placa Basys 3 estamos usando. Ele também fornece à Vivado os nomes que demos aos dispositivos em nosso código. O Vivado precisa dessa informação para saber como conectar nossos elementos lógicos ao hardware físico. O arquivo de restrições inclui uma grande quantidade de código comentado (não utilizado). Essas linhas de código fazem referência aos dispositivos na placa que não estamos usando.

Os dispositivos que estamos usando incluem quatro interruptores de entrada identificados como V17, V16, W16 e W1 na placa. Também estamos usando o botão universal para desligar, denominado U18. Os pinos de saída para nossos quatro LEDs conectados são JB4, JB10, JC4 e JC10. Para nossa campainha piezzo, estamos usando o pino de saída JA9.

Como declaramos na análise do módulo superior, se você deseja adicionar LEDs ou outros dispositivos adicionais à placa, você precisa aumentar o escopo dos sinais sw e dev, adicionar mais módulos killSwitch e conectá-los. Em seguida, você precisa vincular esses nomes de variáveis ao hardware do dispositivo por meio do arquivo de restrições. Isso pode ser feito removendo o comentário (reativando) as linhas de código associadas aos pinos que você deseja usar e, em seguida, adicionando o nome de sua variável associada no módulo superior. A sintaxe apropriada para isso pode ser copiada dos dispositivos que estamos usando. Para descobrir os nomes dos pinos que deseja usar na placa, consulte o guia de referência do Baasys 3 aqui.

Etapa 7: Construindo a Base 3

Construindo a Base 3
Construindo a Base 3
Construindo a Base 3
Construindo a Base 3

Você precisará conectar seus LEDs nas portas de E / S corretas do Basys 3. Siga as imagens fornecidas para determinar quais são as portas corretas, porque se você conectar um LED na porta errada, ele não acenderá. Se você optou por conectar a campainha piezoelétrica, também precisará conectá-la às portas de E / S corretas.

Quando a placa estiver pronta, conecte-a ao computador via cabo USB.

Etapa 8: Implementando arquivos VHDL no Basys 3

Implementando arquivos VHDL no Basys 3
Implementando arquivos VHDL no Basys 3
Implementando arquivos VHDL no Basys 3
Implementando arquivos VHDL no Basys 3

Agora que sua placa está pronta e seu código concluído, você pode finalmente montar o modelo.

Depois de ter seu projeto no Vivado configurado, você deve clicar no botão "Gerar Bitstream" para compilar o código antes de ser carregado no fórum. Se você receber uma mensagem de erro neste momento, deverá verificar novamente se o seu código corresponde exatamente ao nosso. Quando digo exatamente, quero dizer até mesmo os pontos-e-vírgulas ou os tipos de parênteses que estão sendo usados. Uma vez que seu bitstream foi escrito com sucesso, vá para o gerenciador de hardware dentro do Vivado e clique no botão "Abrir Destino", então clique em "Dispositivo de Programa" imediatamente após. Sua placa Basys 3 agora deve estar totalmente funcional.

Etapa 9: Usando a placa Basys 3

Usando o Basys 3 Board
Usando o Basys 3 Board

Agora que o Basys 3 Board está operacional e foi programado para representar nosso modelo, você precisa saber como usá-lo.

Cada um dos quatro interruptores mais à direita controla um dos LEDs, sacudi-los fará com que o LED ligue ou desligue. Se o LED não ativar, verifique se você está conectado à porta de E / S correta e se o seu LED está funcionando em primeiro lugar.

Quando você deseja desabilitar todos os LEDs de uma vez, você deve apertar o botão central no conjunto de cinco botões exibidos acima.

Etapa 10: Mostre

O modelo serve como uma novidade bacana que você pode demonstrar na frente de seus amigos e familiares. Teoricamente, também pode ser usado para implementar o interruptor universal de desligamento em seu sistema elétrico doméstico, se você substituir os LEDs por fios que conduzem às suas luzes. Embora seja possível, ainda teríamos de desaconselhar. Há potencial para causar sérios danos a você ou à sua casa se você tentar religar sem a ajuda de um eletricista.

Recomendado: