Clasificador de basura CPE 133: 14 pasos
Clasificador de basura CPE 133: 14 pasos

Video: Clasificador de basura CPE 133: 14 pasos

Video: Clasificador de basura CPE 133: 14 pasos
Video: Clasificador de residuos Automatizado 2025, Enero
Anonim
Clasificador de basura CPE 133
Clasificador de basura CPE 133

Para nuestra clase de CPE 133 en Cal Poly, nos dijeron que creáramos un proyecto VHDL / Basys 3 que ayudaría al medio ambiente y era lo suficientemente simple como para poder implementarlo con nuestros nuevos conocimientos de diseño digital. La idea detrás de nuestro proyecto es que, en general, la gente no piensa dónde tira la basura. Decidimos crear una máquina que obligaría a las personas a pensar en dónde ponen su basura. Nuestro clasificador de basura toma la entrada del usuario a través de tres interruptores, cada uno de los cuales representa basura, reciclaje o abono. Una vez que el usuario ha seleccionado el tipo de residuo que le gustaría eliminar, pulsa un botón. Este botón hará que se abran las tapas de los contenedores correspondientes. La máquina también usó la pantalla del Basys 3 para indicar si alguna de las tapas está abierta actualmente. Cuando se suelta el botón, las tapas se cerrarán de nuevo para que la máquina esté lista para el siguiente usuario.

Paso 1: Materiales

Materiales
Materiales
Materiales
Materiales
Materiales
Materiales

Los materiales necesarios para este proyecto son:

Tablero Basys 3

Computadora con Vivado instalado

3x servo *

Alambre de cobre de 3 pies

Cortador / pelacables de alambre

Soldador y soldadura

* debido a que los servos son caros y somos estudiantes universitarios, sustituimos una resistencia de 68 ohmios y un LED para cada servo como prototipo (el código funciona de la misma manera)

Paso 2: Comenzar a codificar

Codificación inicial
Codificación inicial
Codificación inicial
Codificación inicial
Codificación inicial
Codificación inicial

Hay mucho código por escribir para este proyecto. Usaremos código VHDL escrito en Vivado. Para empezar querremos crear un nuevo proyecto. Primero, nombrará el proyecto y especificará el tipo de proyecto. Asegúrese de seleccionar la misma configuración que se muestra en la imagen. Cuando haya llegado a la pantalla de fuentes, querrá agregar seis fuentes llamadas "top", "flip_flop", "segmentos", "servo_top", "servo_sig" y "clk_div". Asegúrese de seleccionar VHDL para el idioma de cada archivo, no Verilog. En la pantalla de restricciones, debe crear un archivo para la asignación de pines. El nombre de este archivo no es importante. A continuación, se le pedirá que seleccione la placa que utilizará. Asegúrese de seleccionar el correcto. Fotos de referencia para una selección correcta. El último paso le pedirá que especifique las entradas y salidas de cada archivo fuente. Este paso se puede codificar más tarde, así que haga clic en Siguiente.

Paso 3: archivo de restricciones

Archivo de restricciones
Archivo de restricciones
Archivo de restricciones
Archivo de restricciones

En este paso escribiremos el archivo de restricciones. Esto le dice a Vivado qué pines enviarán / recibirán qué señales de los circuitos. Necesitaremos el reloj, tres interruptores, la pantalla de siete segmentos (siete cátodos y cuatro ánodos), un botón y los tres pines PMOD de salida que usará el servo / LED. Fotos de referencia para ver cómo debería verse el código.

Paso 4: Archivo Flip Flop

Archivo Flip Flop
Archivo Flip Flop

El siguiente archivo que escribiremos es el archivo fuente flip_flip. Esta será una implementación VHDL de un flip flop D. En otras palabras, solo pasará su entrada a la salida en el flanco ascendente de la señal del reloj y cuando se presione el botón. Tomará el reloj, D y el botón como entrada y generará Q. Consulte las fotos para el código. El propósito de este archivo es permitir que los contenedores se abran solo cuando se presiona el botón en lugar de abrirlos directamente cada vez que se gira el interruptor y solo se cierran cuando se gira el interruptor hacia atrás.

Paso 5: Archivo de segmentos

Archivo de segmentos
Archivo de segmentos

El siguiente archivo que se escribirá es el archivo de segmentos. Esto tomará el botón como en los valores de entrada y salida para los siete cátodos y cuatro ánodos de la pantalla de siete segmentos del Basys 3. Este archivo hace que la pantalla de siete segmentos muestre una "C" cuando los contenedores están cerrados y una "O" cuando los contenedores están abiertos. Para el código ver foto adjunta.

Paso 6: archivo del divisor de reloj

Archivo divisor de reloj
Archivo divisor de reloj

Los servos funcionan tomando una señal PWM con una frecuencia de 64k Hz, mientras que el reloj integrado en Basys 3 funciona a 50M Hz. El archivo del divisor de reloj convertirá el reloj predeterminado en una frecuencia amigable para el servo. El archivo tomará el reloj y una señal de reinicio como entrada y generará una nueva señal de reloj. Consulte la foto adjunta para obtener el código.

Paso 7: Archivo de señal servo

Archivo de señal servo
Archivo de señal servo

El archivo de señal de servo tomará una entrada de reloj, una entrada de reinicio y una entrada de posición deseada. Emitirá una señal PWM que conducirá el servo a la posición deseada. Este archivo usa la señal de reloj creada en el último archivo para crear una señal PWM para el servo con diferentes ciclos de trabajo dependiendo de la posición deseada. Esto nos permite girar los servos que controlan las tapas de los cubos de basura. Consulte la foto adjunta para ver el código.

Paso 8: Archivo superior del servo

Archivo superior del servo
Archivo superior del servo

El propósito de este archivo es compilar los dos últimos archivos en un servocontrolador funcional. Tomará un reloj, un reinicio y una posición como entrada y dará salida a la señal PWM del servo. Utilizará tanto el divisor de reloj como el archivo de señal de servo como componentes e incluirá una señal de reloj interno para pasar el reloj modificado desde el divisor de reloj al archivo de señal de servo. Ver fotos en

Paso 9: Archivo superior

Archivo superior
Archivo superior
Archivo superior
Archivo superior
Archivo superior
Archivo superior
Archivo superior
Archivo superior

Este es el archivo más importante del proyecto, ya que incluye todo lo que hemos creado. Tomará el botón, los tres interruptores y el reloj como entradas. Dará los siete cátodos, los cuatro ánodos y las tres señales de servo / LED como salidas. Utilizará los archivos flip flop, segmentos y servo_top como componentes y tendrá un interruptor interno y una señal de servo interna.

Paso 10: Prueba en Vivado

Ejecute Synthesis, implementación y escritura de bitsream en Vivado. Si encuentra algún mensaje de error, busque la ubicación del error y luego compárelo con el código dado. Trabaje con los errores hasta que todas estas ejecuciones finalicen correctamente.

Paso 11: Introducción al hardware de construcción

En este paso, creará el hardware LED que usamos en nuestro prototipo. Si usa servos, el proyecto debería estar listo para funcionar siempre que se usen los pines correctos. Si usa LED, siga los pasos a continuación.

Paso 12: preparación

Corta el alambre en seis pedazos iguales. Pele los extremos de cada trozo de alambre lo suficiente para que se pueda soldar. Separe los LED, resistencias y cables en tres grupos. Calentar el soldador.

Paso 13: soldadura

Soldadura
Soldadura
Soldadura
Soldadura

Suelde cada una de las resistencias de 68 ohmios al lado negativo de su LED correspondiente. Suelde un cable en el lado positivo del LED y otro cable en el lado de la resistencia no soldado al LED. Debería tener tres de los artilugios LED que se muestran arriba.

Paso 14: final

Final
Final

Inserte cada cable positivo en el pin PMOD correspondiente y cada negativo en un pin PMOD de tierra. Opcionalmente, agregue contenedores de cartón para representar los contenedores de basura y ocultar su desorden de soldadura. Una vez que los cables están conectados correctamente y el código se carga correctamente en la placa sin errores, la máquina debería funcionar según lo previsto. Si algo sale mal, vuelva a los pasos anteriores para solucionar el problema. Diviértete con tu nuevo "clasificador de basura".