Botón mágico para LED en ATtiny4

SESAM


Una vez tuve hace mucho tiempo el interruptor milagroso sensible al tacto SESAM . Realmente me gustó. Pero los tiempos están cambiando, ya no cabe en el interior, y luego no fue completamente diseñado para funcionar con todo tipo de lámparas de bajo consumo de moda. Me gustó el principio de gestión en él. Un toque breve del sensor encendió / apagó la luz, y uno largo ajustó el brillo. A quién le importa : el interruptor automático fue K145AP2 , un análogo de Siemens S576B (K145AP2 todavía se vende).


Bajo el corte, mi versión de emular el funcionamiento de este chip.


No hace mucho tiempo, construí una tira de luz LED en un perfil de aluminio con un difusor sobre la mesa para mí y surgió la pregunta sobre el interruptor. Prepararse es de alguna manera engorroso. Para que cuelgue del cable, no es hermoso, para poner un interruptor ordinario, arruina la vista, y realmente no hay a dónde ir.


Decidí construir un interruptor, y para uno y un atenuador, en el extremo del aglomerado de 16 mm. Haz que toque, cubre con una pegatina, que los fabricantes de muebles enmascaran con pernos.


Hierro


Comenzó con un sensor. Probé con el principio de transferencia de carga al ATtiny13A . La opción está funcionando, pero era demasiado vago para molestarme con los parámetros de autoajuste, etc. Tampoco tomó el terminado.


Entonces decidí intentar implementar el sensor en la biblioteca QTouch . Como un sensor ATtiny10 . Hay una utilidad lista para usar que convierte ATtiny10 en un botón táctil con todas las ventajas. Pero en la salida, el binario es difícil de agregar su código allí. Pensé en qué hacer, navegué por Internet y luego me encontré con una mención del TTP223 , el controlador de un botón táctil. Esta opción me fue perfecta.


Como MK, la elección recayó en ATtiny4 . Tan pequeño como TTP223 , un temporizador de 16 bits. Sí, y durante mucho tiempo quise hacer algo útil en estos tinki.


Como clave: P3055LD de la antigua placa base.


Placa de circuito


Al desarrollar una placa de circuito impreso, procedí del hecho de que los agujeros en el extremo de la placa de aglomerado necesitaban el mínimo posible, decidí que un diámetro de 7 mm sería suficiente. El tablero resultó 7x28mm, dos capas.


Más tarde, cuando se soldaba la placa, se hizo evidente que la placa no encajaría en el orificio de 7 mm, al menos 9 mm, no tuvo en cuenta la altura de los elementos. La idea con una pegatina de alguna manera también dejó de gustar. ¡Y luego un trozo de mueble me llamó la atención! ¡Diseñado para orificios de 10 mm y un diámetro interno de exactamente 7 mm! ¡Todo coincidió!


El sensor se remueve en una bufanda separada que está soldada al extremo principal. En las fotos puedes ver.


Imágenes

imagen genial
imagen genial
imagen genial
imagen genial


El programa


El programa de control está escrito en ensamblador. Cada 32 ms (temporizador de vigilancia) se sondea el sensor. Dependiendo del estado actual y la duración de la presión, se realizan ciertas acciones. La lógica del trabajo es ligeramente diferente del prototipo K145AP2


Si la luz está apagada (estado después del encendido):


  • Una pulsación breve enciende la iluminación al mismo nivel en el que se apagó. Cuando se enciende por primera vez con el brillo máximo
  • Pulsación larga enciende la luz al máximo nivel.

Si la luz está encendida:


  • Una pulsación corta apaga la luz
  • Una pulsación larga cambia el brillo. La dirección del cambio de brillo cambia al presionar repetidamente

Se ignoran las presiones demasiado cortas (interferencia) del programa. El brillo se establece mediante el coeficiente PWM (16 bits). Frecuencia PWM aproximadamente 122 Hz (8,000,000 Hz / 2 16 ≈ 122 Hz)


Para compensar la percepción psicofisiológica del brillo de la iluminación del brillo real, se produce un cambio en este último a lo largo de una porción de la parábola cúbica . Por lo general, se usan tablas para esto, pero en mi versión se calcula el coeficiente. El coeficiente varía con la frecuencia PWM, es decir, cuando cambia el brillo, cada pulso se obtiene con su propia duración. El valor mínimo de PWM es limitado por software.


La mayoría de las veces, MK duerme y consume alrededor de 16 microamperios junto con TTP223 . Es decir, el circuito es bastante adecuado para dispositivos con alimentación autónoma.


ATtiny4 tiene seis pines. Dos para el poder, uno predeterminado para restablecer. Ya he involucrado a dos. Solo queda uno. Pensé en cómo usarlo. Y luego recordé la computadora portátil de un nuevo amigo con el trackpad Force Touch. Como experimento, decidí hacer algo similar. No necesito mucha confiabilidad de la respuesta, y hay muchos vibromotores de teléfonos viejos. Como resultado, implementé tal función en el programa que aparece un impulso breve en una salida libre, cuando se alcanza el límite de ajuste. En K145AP2, cuando se alcanza el límite de ajuste, la dirección del ajuste cambia. Por lo tanto, se necesitaba cierta habilidad para quitar la mano del sensor al máximo o al mínimo. En mi implementación, cuando se alcanza el borde, el ajuste se detiene. El tiempo total de ajuste de un límite a otro es de aproximadamente 4 segundos.


Código disponible en GitHub


TPI a través de Arduino


Por separado, noto la programación de MK. Mi JTAGICE3 no es compatible con la interfaz de programación TPI. Pero, afortunadamente, las buenas personas escribieron un boceto sobre Arduin para programar esta pequeña cosa. No de inmediato, pero todo funcionó para mí, el firmware se inundó y todo funcionó. Además de arduins, se necesitan 4 resistencias. Todo el proceso está pintado en un boceto.


Resumen


El botón mágico está instalado y funciona según lo previsto. El consumo y las dimensiones actuales le permiten integrarse en dispositivos con alimentación autónoma.


No obtuve el efecto esperado de la vibración. Aquí aparentemente se necesitan experimentos con el sitio de instalación.


En el prototipo K145AP2 y el análogo Siemens S576B hay una conclusión "Sleep". Este es un modo en el que el brillo cae muy lentamente hasta que se apaga por completo. Según lo previsto por el fabricante, para esto se instala un sensor adicional cerca de la cabecera de la cama. 16 bits del temporizador PWM habilitan este modo.


Esto es de ideas para el futuro.


Botón en su lugar

imagen genial


Como todo


Gracias a todos!


UPD: Como prometí, elevé la frecuencia PWM a casi 1kHz. Código Github

Source: https://habr.com/ru/post/es411263/


All Articles