Tabla de contenido:

Modelo de un interruptor de apagado universal: 10 pasos
Modelo de un interruptor de apagado universal: 10 pasos

Video: Modelo de un interruptor de apagado universal: 10 pasos

Video: Modelo de un interruptor de apagado universal: 10 pasos
Video: CÓMO INSTALAR UN INTERRUPTOR LUMINOSO AC 2024, Noviembre
Anonim
Modelo de un interruptor de apagado universal
Modelo de un interruptor de apagado universal

¿Estás cansado de comprobar que todas las luces de tu casa están apagadas antes de irte a dormir? ¿Le gustaría poder apagar todas las luces a la vez sin ningún problema? Para ahorrar energía y tiempo, decidimos crear un sistema que teóricamente podría apagar una casa entera de una vez.

Modelamos una prueba de este concepto usando un par de LED y una placa de circuito basys 3, y creamos un diseño que desactivaría todos los LED con solo presionar un botón. Este modelo también podría aplicarse a un sistema de iluminación doméstico real, aunque requeriría un cableado más complicado y modificaciones a los archivos VHDL dados.

Paso 1: importar los archivos VHDL dados

Para que nuestro modelo funcione correctamente, deberá descargar el software que le da las instrucciones a la placa Basys 3.

Primero deberá descargar una herramienta de síntesis para implementar archivos vhdl en el hardware. Si desea estar seguro de que todo el código replicará completamente nuestro diseño sin necesidad de modificaciones, le recomendamos que utilice Vivado 2016.2. Después de haber instalado Vivado, puede crear un proyecto y descargar nuestros archivos fuente. Agréguelas como fuentes a su proyecto, ¡no olvide agregar el archivo de restricciones también!

A continuación, explicaremos qué hace cada uno de los archivos fuente. Omita los pasos 2 a 6 si solo desea llegar a la construcción física del dispositivo.

Paso 2: Desglose del módulo superior VHDL

Desglose del módulo superior VHDL
Desglose del módulo superior VHDL
Desglose del módulo superior VHDL
Desglose del módulo superior VHDL

El módulo superior del proyecto es el que conecta todos los módulos de componentes individuales con el hardware utilizado. Como puede ver, tenemos los módulos killSwitch y buzzerControl definidos como componentes en la parte superior.

La sección inferior especifica cómo se conectan estos módulos entre sí. Hemos conectado cuatro LED a la placa y los hemos asociado con los módulos killSwitch dev0 a dev3. Tenemos cuatro módulos killSwitch definidos porque necesitamos uno para administrar el estado de cada LED conectado. Cada uno de estos módulos utiliza la señal de reloj y botón que creamos en la definición del módulo superior, así como sus respectivos interruptores de entrada y señales de dispositivos de salida.

El módulo de control del zumbador en la parte inferior activa el zumbador cuando se presiona el botón de apagado universal. Como puede ver, el módulo de control del zumbador pasa el reloj y la señal del botón como entradas. También se pasa el pin de salida del zumbador físico para controlarlo en consecuencia.

Paso 3: Desglose del módulo Kill Switch de VHDL

Desglose del módulo de interruptor de apagado VHDL
Desglose del módulo de interruptor de apagado VHDL
Desglose del módulo de interruptor de apagado VHDL
Desglose del módulo de interruptor de apagado VHDL

El Kill Switch es el botón de apagado universal, y el módulo se ocupa principalmente de conectarlo a otros elementos del circuito para que cuando se presione todas las luces se apaguen.

Mientras que el módulo superior maneja la conexión del hardware físico al software, el módulo killSwitch maneja la lógica principal de cada dispositivo. El módulo recibe entradas para la señal del reloj, el botón de apagado universal y el interruptor de palanca del dispositivo. A cambio, controla el estado del pin del dispositivo al que está conectado.

En la sección de arquitectura del código, vemos que tiene una dependencia del módulo dFlipFlop para almacenar memoria. También puede ver que hemos declarado cuatro señales que se utilizarán para conectar el flip flop, así como para implementar nuestras declaraciones lógicas. Dentro de la sección de comportamiento del código, hemos creado una instancia del módulo dFlipFlop y hemos asignado nuestras señales de E / S a los puertos.

Desde aquí, la parte principal de nuestra lógica radica en los valores de señal para invertState e isDevOn. Nuestra base lógica para el dispositivo es la siguiente: "Cada vez que se acciona el interruptor, la luz invertirá su estado de encendido / apagado. Cada vez que se presione el botón y el LED esté encendido, el LED invertirá su estado a apagado". " De estas dos afirmaciones podemos extrapolar que el estado del LED debe ser el XOR del interruptor y nuestro elemento de memoria, de esa manera un cambio en cualquiera de los dos invierte el LED. Esto se puede ver implementado en la señal isDevOn. La condición de LED encendido para el elemento de memoria es manejada por nuestra señal invertState. Si el LED está encendido y se presiona el botón, nuestro elemento de memoria se actualizará e invertirá su estado. Esto también invierte el estado del LED.

Paso 4: Desglose del módulo Flip Flop VHDL

Desglose del módulo Flip Flop VHDL
Desglose del módulo Flip Flop VHDL

Un problema con nuestro diseño fue el hecho de que después de usar el interruptor de apagado, es posible que las luces que estaban previamente encendidas deban girarse dos veces para volver a la posición de encendido. Esto sería un gran inconveniente para las personas a lo largo del tiempo. Logramos evitar este inconveniente al incluir un "Flip Flop", un elemento de circuito capaz de almacenar información, en nuestro diseño. Ahora, el sistema recuerda si un interruptor de luz estaba encendido anteriormente, de modo que si se gira nuevamente, se encenderá independientemente de su posición inicial.

El código VHDL usa declaraciones if y else para crear el Flip Flop como un componente dentro de nuestro diseño de circuito. Asegura que cuando la señal del reloj pasa de un estado bajo a uno alto, cuando la bombilla está encendida y cuando se presiona el interruptor de apagado, la salida de los flip flops sobrescribe su entrada. Cuando se sobrescribe la entrada, el flip flop se invierte.

Paso 5: Desglose del módulo de zumbador piezoeléctrico VHDL

Desglose del módulo de zumbador piezoeléctrico VHDL
Desglose del módulo de zumbador piezoeléctrico VHDL
Desglose del módulo de zumbador piezoeléctrico VHDL
Desglose del módulo de zumbador piezoeléctrico VHDL

Este archivo es un poco superfluo en lo que respecta al diseño del hardware, pero es esencial para que el módulo superior y los archivos de restricciones se ejecuten sin problemas. Si elige no utilizar el zumbador piezoeléctrico, descargue este archivo, pero no conecte el zumbador a la placa Basys 3.

El zumbador piezo, al presionar el botón de desactivación, reproducirá un tono de dos notas que proporcionará al usuario una respuesta auditiva de que el botón ha sido presionado. Implementamos esto de manera conductual en VHDL a través de una serie de declaraciones if en una estructura de proceso. Comenzamos creando un valor entero para realizar un seguimiento de cuántos cambios de reloj se han producido. Una vez que comienza el proceso, el programa pasa la primera mitad de un segundo (0 a 50 millones de tics de reloj) emitiendo una nota A a 440 hercios. Esto se logra invirtiendo la señal del zumbador piezoeléctrico cada múltiplo par de 227272 tics de reloj con una función de módulo. Este número es el resultado de dividir la señal de reloj de la placa (100 MHz) por la frecuencia deseada (400 Hz). Durante la segunda mitad de un segundo (50 a 100 millones de tics de reloj), la placa emite una nota F a 349,2 hercios a través del mismo método que antes. Después de un segundo, el programa no incrementa más la variable de reloj y deja de emitir algo desde el zumbador piezoeléctrico. Al presionar el botón de apagado universal nuevamente se restablece este número a 0, reiniciando el ciclo de ruido.

Paso 6: Desglose del archivo de restricciones VHDL

El archivo de restricciones le dice a Vivado qué dispositivos en la placa Basys 3 estamos usando. También proporciona a Vivado los nombres que le dimos a los dispositivos en nuestro código. Vivado necesita esta información para saber cómo conectar nuestros elementos lógicos al hardware físico. El archivo de restricciones incluye una gran cantidad de código comentado (no utilizado). Estas líneas de código hacen referencia a los dispositivos de la placa que no estamos usando.

Los dispositivos que estamos usando incluyen cuatro interruptores de entrada etiquetados como V17, V16, W16 y W1 en la placa. También estamos usando el botón de apagado universal, etiquetado como U18. Los pines de salida para nuestros cuatro LED conectados son JB4, JB10, JC4 y JC10. Para nuestro zumbador piezzo estamos usando el pin de salida JA9.

Como indicamos en el desglose del módulo superior, si desea agregar LED adicionales u otros dispositivos a la placa, debe aumentar el alcance de las señales sw y dev, agregar más módulos killSwitch y conectarlos entre sí. Luego, debe vincular esos nombres de variables al hardware del dispositivo a través del archivo de restricciones. Esto se puede hacer descomentando (volviendo a habilitar) las líneas de código asociadas con los pines que desea usar y luego agregando el nombre de su variable asociada en el módulo superior. La sintaxis adecuada para esto se puede copiar de los dispositivos que estamos usando. Para averiguar los nombres de los pines que desea usar en el tablero, consulte la guía de referencia de Baasys 3 aquí.

Paso 7: Construcción de Basys 3

Construyendo el Basys 3
Construyendo el Basys 3
Construyendo el Basys 3
Construyendo el Basys 3

Deberá conectar sus LED en los puertos de E / S correctos del Basys 3. Siga las imágenes proporcionadas para determinar cuáles son los puertos correctos, porque si conecta un LED en el puerto incorrecto, no se iluminará. Si ha optado por conectar el zumbador piezoeléctrico, también deberá conectarlo a los puertos de E / S correctos.

Cuando la placa esté lista, conéctela a su computadora mediante un cable USB.

Paso 8: implementación de archivos VHDL en Basys 3

Implementación de archivos VHDL en Basys 3
Implementación de archivos VHDL en Basys 3
Implementación de archivos VHDL en Basys 3
Implementación de archivos VHDL en Basys 3

Ahora que su placa está lista y su código está terminado, finalmente puede armar el modelo.

Una vez que haya configurado su proyecto en Vivado, debe hacer clic en el botón "Generar Bitstream" para compilar el código antes de que se cargue en el tablero. Si recibe un mensaje de error en este momento, debe verificar que su código coincida exactamente con el nuestro. Cuando digo exactamente, me refiero incluso al punto y coma o los tipos de paréntesis que se están utilizando. Una vez que su bitstream se haya escrito correctamente, vaya al administrador de hardware dentro de Vivado y haga clic en el botón "Abrir destino", luego haga clic en "Dispositivo de programa" inmediatamente después. Su placa Basys 3 ahora debería ser completamente funcional.

Paso 9: uso de la placa Basys 3

Uso de la placa Basys 3
Uso de la placa Basys 3

Ahora que la placa Basys 3 está operativa y ha sido programada para representar nuestro modelo, hay que saber cómo utilizarla.

Cada uno de los cuatro interruptores situados más a la derecha controla uno de los LED, al pulsarlos, el LED se encenderá o apagará. Si el LED no se activa, verifique que esté conectado al puerto de E / S correcto y que su LED funcione en primer lugar.

Cuando desee desactivar todos los LED a la vez, debe presionar el botón central en el conjunto de cinco botones que se muestran arriba.

Paso 10: ¡Presume

El modelo sirve como una pequeña novedad que puedes demostrar frente a tus amigos y familiares. En teoría, también se puede usar para implementar el interruptor de apagado universal en el sistema eléctrico de su hogar, si reemplaza los LED con cables que conducen a las luces. Si bien es posible, aún tendríamos que desaconsejarlo. Existe la posibilidad de que se produzca un daño grave a usted mismo oa su hogar si intenta volver a cablear sin la ayuda de un electricista.

Recomendado: