Tabla de contenido:

Temporizador múltiple con control externo: 13 pasos
Temporizador múltiple con control externo: 13 pasos

Video: Temporizador múltiple con control externo: 13 pasos

Video: Temporizador múltiple con control externo: 13 pasos
Video: Como configurar un temporizador mecánico paso a paso 2024, Mes de julio
Anonim
Temporizador múltiple con control externo
Temporizador múltiple con control externo

Este proyecto Instructable es una construcción de un temporizador multifunción

Este temporizador puede funcionar como:

  1. Una alarma de propósito general con tiempos seleccionables entre 1 segundo y +90 horas. Tener una cuenta regresiva con alarma audible y / o control del dispositivo externo hasta que finalice, luego una indicación de cuenta regresiva del tiempo desde la alarma.
  2. Un temporizador de siesta con 7 tiempos seleccionables, cuenta atrás y alarma al finalizar.
  3. Un temporizador de meditación con 4 tiempos seleccionables, con cuenta atrás y un chirrido corto al finalizar, cuenta atrás con otro chirrido 5 minutos después de eso.

Este proyecto puede construirse como se describe aquí o modificarse para adaptarse. Previamente construí un temporizador con esta funcionalidad y lo usé en mi primer Instructable para controlar la caja de exposición UV.

Pensé que podría publicar el programa original y los diseños de la placa. Sin embargo, por alguna razón no pude encontrar el código. También quería hacer mejoras en el hardware para hacer que los circuitos de control fueran más flexibles y reducir el consumo de batería. El rediseño resultante de la placa de circuito principal y la reescritura del código brindan la oportunidad de discutir el enfoque de programación y diseño de hardware.

Cada vez que creo una placa de circuito, a menudo encuentro que hay fallas en el diseño o la ubicación de los componentes. Las placas que construyo también son una de las dos desventajas. Además, me gusta estar involucrado en todos los aspectos de un proyecto de principio a fin. Estas son algunas de las razones por las que hago mis propias placas de circuito en lugar de enviar los archivos Gerber al extranjero para su fabricación. Quizás soy viejo y estoy estancado en mis caminos. Este proyecto refleja este sesgo. Como hago mis propias placas de circuito, mis diseños y mis archivos Gerber no cumplen con los estándares de fabricación, no he incluido estos archivos. Aquellos que no deseen grabar y terminar los tableros pueden preparar sus propios diseños y publicar los archivos Gerber en la sección de comentarios. Por favor, haga que fabriquen y prueben sus tablas antes de publicarlas.

Paso 1: Descripción general de los elementos de hardware

El dispositivo funciona con 4 pilas AAA y está controlado por un Arduino Pro Mini 5V.

Un pequeño zumbador / altavoz proporciona una alarma audible.

Un relé en miniatura de 5v proporciona voltajes de control a dispositivos externos. Se proporciona flexibilidad en la fuente de esta salida de voltaje de control.

Un codificador rotatorio con pulsador proporciona una selección de menú.

Una pantalla OLED y un interruptor de arranque / parada momentáneo completan la interfaz de usuario.

El hardware electrónico adicional consta de un interruptor de encendido SPDT y un conector telefónico en miniatura para conectarse a dispositivos externos.

Además, se proporcionan archivos para ayudarlo en este proyecto:

Archivos STL para un caso de proyecto impreso en 3D.

Imágenes de máscara de cobre y soldadura para el grabado y acabado de la placa de circuito de control y el codificador rotatorio.

Imágenes esquemáticas y de tablero como referencia para quienes deseen modificar mi diseño.

Es posible que desee revisar mi Instructable sobre la creación de placas de circuito de doble cara como un ejemplo de cómo hacer la producción de placas de circuito.

Paso 2: descripción general del software

Junto con los archivos fuente de Arduino, alguna información adicional que puede ser útil.

Las bibliotecas de control de hardware se utilizan cuando están disponibles (botón de rebote, control OLED, lectura del codificador rotatorio).

El programa implementa una máquina de estado finito (FSM) simple para controlar la ejecución del código como una declaración de conmutación en la función de bucle.

Se define una clase de menú para permitir la selección de las opciones mostradas en el OLED y la selección mediante el codificador rotatorio.

La entrada se implementa mediante sondeo directo (no controlado por interrupciones) ya que no es crítico en cuanto al tiempo y hace que el código sea más claro.

Las declaraciones de impresión en serie se utilizan para ayudar a rastrear la ejecución y la depuración del código.

Varios tipos de elementos de la estructura del programa, que incluyen:

  • Varias pestañas de código para aislar algunas de las funciones y variables de control de hardware.
  • Cambie declaraciones para establecer el valor de estado (FSM) y las variables de control.
  • Definición de estructura
  • Enumeraciones para permitir la asignación de valores de estado como texto.
  • #definir definiciones de preprocesador para pines de hardware y valores estándar.

Paso 3: Lista de piezas

Crea el recinto
Crea el recinto

No estaba seguro de dónde colocar este paso, ya que se puede realizar en casi cualquier momento. Usé una caja de cerramiento impresa en 3D. Es posible que no tenga acceso a una impresora 3D o prefiera otro tipo de carcasa, como caja de aluminio, plástico cortado con láser, madera tallada a mano u otro tipo que utilice para sus proyectos electrónicos. He incluido los archivos STL para la parte superior, inferior, la perilla del codificador giratorio y el bisel OLED. Utilice estos archivos y la cortadora de su elección para crear archivos gcode para su impresora.

Imprimo todas las partes usando filamento PLA, un color para la parte superior e inferior del gabinete, otro contrastante para la perilla y el bisel (que está pegado a la parte superior). No voy a especificar todas las configuraciones de mi cortadora, pero use un Tri -Relleno hexagonal de al menos un 35% para permitir el roscado de los tornillos de las esquinas y un ajuste "sin soporte" para que se lean las letras incisas. Imprimí la caja usando la altura de capa "normal" de mis impresoras.

Paso 9: Diseño y escritura de código

Este paso es opcional pero sugerido para una mejor comprensión.

La mayor parte del esfuerzo en términos de horas es la redacción del código. Puede omitir este paso si usa el programa adjunto como -is. Sin embargo, se sugiere que se tome el tiempo de revisar el código para comprenderlo mejor o modificarlo para satisfacer sus necesidades.

Los siguientes comentarios pueden ser útiles para comprender este proceso.

  • Comentarios: comente extensamente sobre la marcha. A menudo, escribo los comentarios antes de escribir el código.
  • Divide y conquista: utiliza funciones, clases y módulos (pestañas). Utiliza compilaciones frecuentes (Verificar) para comprobar la sintaxis. Depurar: utilice sentencias de impresión para verificar el flujo y probar los valores y las interfaces de hardware. No tenga miedo de resolver los problemas sobre la marcha, ¡nadie escribe código libre de errores!
  • Constantes: las instrucciones del precompilador #define asignan nombres a los números de pin. Las definiciones de variables constantes con comentarios reducen o eliminan los números "mágicos". El uso de constantes ubicadas al inicio de un programa o función permite cambiar los parámetros sin reescribir el código.
  • Bibliotecas predefinidas: el uso de bibliotecas predefinidas reduce la carga de programación y el tiempo de depuración.
  • Bloques de diseño: creados usando funciones, aislando código en pestañas separadas (programas asociados y archivos.h), enumeraciones, clases y estructuras. Centra tu atención en cada uno para entender cómo funcionan en relación con el resto del código.
  • State Machine (s): este es un patrón de programación que funciona muy bien con Arduinos o cualquier programa que se use para controlar salidas o reaccionar entradas. Existen varios tipos de máquinas de estado. Este código utiliza una máquina de estado basada en la declaración de conmutación en la función de bucle. Este formulario es fácil de entender y depurar.
  • Pantalla y menús: la salida OLED es concisa pero proporciona suficiente información para usuarios ocasionales y admite la selección de opciones. Se integra bien con la máquina de estado (casi todos los estados tienen una pantalla OLED asociada). La clase Menú fue útil para aislar el código para mostrar y seleccionar opciones de menú.

Lea el programa varias veces. Es útil tomar una función o sección a la vez. ¡A menudo no entiendo el código que he escrito a menos que lo haya leído al menos dos veces!

Paso 10: instale el programa

Copie el archivo adjunto a su computadora y luego descomprímalo en su directorio de Sketches

Conecte el Arduino a su computadora y descargue el código del programa de la manera habitual. Abra el monitor serial Arduino IDE para verificar que el programa se esté ejecutando y ayude en la depuración.

Paso 11: arma el temporizador

Ensamblar el temporizador
Ensamblar el temporizador
Ensamblar el temporizador
Ensamblar el temporizador
Ensamblar el temporizador
Ensamblar el temporizador
Ensamblar el temporizador
Ensamblar el temporizador

Una vez impresas y limpias las partes superior e inferior de la caja, los componentes se pueden unir con pequeños tornillos de plástico autorroscantes. Primero, el soporte de la batería se encaja a presión en la parte posterior. El resto de las piezas se unen a la parte superior del armario en el siguiente orden:

  1. OLED y cable
  2. Interruptor de arranque / parada y cableado
  3. Codificador rotatorio y cable
  4. Altavoz / zumbador y cableado
  5. Cableado y conector de control externo
  6. Interruptor deslizante de encendido / apagado y cableado (verifique la orientación dos veces para que esté en la dirección que desea

Si está soldando los cables directamente a su placa de circuito, hágalo después de que todas las piezas estén unidas a su caja para reducir la rotura de cables. Debe esperar hasta que los cables estén conectados a la placa principal antes de atornillar esa placa a la parte posterior.

Si está utilizando cabezales de clavija y conectores Dupont, primero conecte la placa principal a la parte posterior con tornillos y luego conecte los componentes. Tenga cuidado cuando conecte la batería a la placa principal y observe la polaridad correcta. También debe configurar los puentes o el cableado de control de relé en este momento.

La parte inferior del gabinete se conecta a la parte superior mediante el uso de tornillos de máquina de cabeza redonda 4-40, uno en cada esquina. Los cuatro orificios en la parte superior deben ser roscados con un macho de 4/40 o si usa insertos roscados 4-40, deberá perforar los orificios para aceptarlos. Los 4 orificios para el montaje de la placa de circuito principal en la parte inferior también deben perforarse. Ajuste esta placa al soporte de la batería a presión y marque la ubicación de los orificios. Taladre según corresponda para los tornillos de montaje.

Paso 12: Prueba de integración

Pruebas de integración
Pruebas de integración
Pruebas de integración
Pruebas de integración
Pruebas de integración
Pruebas de integración

La prueba final (de integración) se logra probando todas las opciones del menú y verificando que funcionen con el hardware como se diseñó. Para el código que proporcioné, eso debería ser suficiente. Si escribió su propio código o modificó el mío, sus pruebas deberán ser más extensas. No creo que sea necesario ejercitar todas las selecciones de tiempo, pero debe probar todas las opciones de alarma estándar y validar que las alarmas de siesta y meditación funcionen según lo diseñado.

Paso 13: Pensamientos finales

Enhorabuena por su proyecto exitoso, espero. Estoy seguro de que encontró problemas en el camino que necesitaba resolver. También estoy seguro de que algunas de mis instrucciones podrían haber sido más completas o claras. Hágame saber a través de la sección de comentarios cuáles fueron sus resultados y proporcione sugerencias sobre cómo se pueden mejorar estas instrucciones.

Gracias por su tiempo viendo y / o construyendo este proyecto.

Recomendado: