Bouton magique pour LED sur ATtiny4

SESAM


Il y a longtemps, j'avais un interrupteur miracle tactile SESAM . Je l'aimais vraiment. Mais les temps changent, il ne rentre plus à l'intérieur, puis il n'a pas été conçu pour fonctionner avec toutes sortes de lampes à économie d'énergie à la mode. J'ai aimé le principe de gestion. Une courte pression du capteur alluma / éteint la lumière et une longue ajusta la luminosité. Peu importe - le disjoncteur était K145AP2 , un analogue de Siemens S576B (K145AP2 est toujours vendu).


Sous la coupe, ma version d'émulation du fonctionnement de cette puce.


Il n'y a pas si longtemps, j'ai construit moi-même une bande lumineuse à LED dans un profil en aluminium avec un diffuseur au-dessus de la table et la question s'est posée à propos de l'interrupteur. La préparation est en quelque sorte fastidieuse. Alors qu'il accroche au fil - ce n'est pas beau, pour mettre un interrupteur ordinaire - gâche la vue, et il n'y a vraiment nulle part où aller.


J'ai décidé de construire un interrupteur, et pour un et un gradateur, à la fin du panneau de particules de 16 mm. Faites-le toucher, recouvrez d'un autocollant que les fabricants de meubles boulonnent.


Le fer


Commencé avec un capteur. J'ai essayé sur le principe du transfert de charge vers l' ATtiny13A . L'option fonctionne, mais j'étais trop paresseux pour me soucier des paramètres de réglage automatique, etc. Il n'a pas non plus pris la finale.


J'ai alors décidé d'essayer d'implémenter le capteur sur la bibliothèque QTouch . En tant que capteur ATtiny10 . Il existe un utilitaire prêt à l'emploi qui transforme ATtiny10 en un bouton tactile avec tous les goodies. Mais en sortie, le binaire est difficile à y ajouter votre code. J'ai pensé à quoi faire, j'ai surfé sur Internet, puis je suis tombé sur une mention du TTP223 - le contrôleur d'un bouton tactile. Cette option me convenait parfaitement.


En tant que MK, le choix s'est porté sur ATtiny4 . Aussi petit que TTP223 , un minuteur 16 bits. Oui, et depuis longtemps je voulais faire quelque chose d'utile sur ces tinki.


Comme clé - P3055LD de l'ancienne carte mère.


Circuit imprimé


Lors du développement d'une carte de circuit imprimé, je suis parti du fait que les trous à l'extrémité du panneau de particules nécessitaient le minimum possible, j'ai décidé qu'un diamètre de 7 mm serait tout à fait suffisant. Le conseil s'est avéré 7x28mm, deux couches.


Plus tard, lorsque la carte a été soudée, il est devenu clair que la carte ne rentrerait pas dans le trou de 7 mm, au moins 9 mm - ne tenait pas compte de la hauteur des éléments. L'idée d'un autocollant a également cessé de plaire. Et puis un talon de meuble a attiré mon attention! Conçu pour un trou de 10 mm et un diamètre intérieur de 7 mm exactement! Tout a coïncidé!


Le capteur se patch sur une écharpe séparée qui est soudée à l'extrémité principale. Sur les photos, vous pouvez voir.


Les photos

image sympa
image sympa
image sympa
image sympa


Le programme


Le programme de contrôle est écrit en assembleur. Toutes les 32 ms (horloge de surveillance), le capteur est interrogé. Selon l'état actuel et la durée de l'appui, certaines actions sont effectuées. La logique de travail est légèrement différente du prototype K145AP2


Si le voyant est éteint (état après la mise sous tension):


  • Un appui court allume l'éclairage au même niveau auquel il a été éteint. Lorsqu'il est allumé pour la première fois avec une luminosité maximale
  • Un appui long allume la lumière au niveau maximum.

Si le voyant est allumé:


  • Une courte pression éteint la lumière
  • Un appui long modifie la luminosité. La direction du changement de luminosité change par appui long répété

Les pressions trop courtes (interférences) du programme sont ignorées. La luminosité est définie par le coefficient PWM (16 bits). Fréquence PWM environ 122 Hz (8 000 000 Hz / 2 16 ≈ 122 Hz)


Pour compenser la perception psychophysiologique de la luminosité de l'éclairage par rapport à la luminosité réelle, un changement de cette dernière se produit le long d'une partie de la parabole cubique . Habituellement, des tableaux sont utilisés pour cela, mais dans ma version, le coefficient est calculé. Le coefficient varie avec la fréquence PWM, c'est-à-dire que lorsque la luminosité change, chaque impulsion est obtenue avec sa propre durée. La valeur PWM minimale est limitée par logiciel.


La plupart du temps, MK dort et consomme environ 16 microampères avec le TTP223 . Autrement dit, le circuit est tout à fait adapté aux appareils avec une alimentation autonome.


ATtiny4 a six broches. Deux pour l'alimentation, un par défaut pour la réinitialisation. J'en ai déjà impliqué deux. Un seul à gauche. J'ai pensé comment l'utiliser. Et puis je me suis souvenu du portable d'un nouvel ami avec trackpad Force Touch. À titre d'expérience, j'ai décidé de faire quelque chose de similaire. Je n'ai pas besoin de beaucoup de fiabilité de la réponse, et il y a beaucoup de vibromoteurs d'anciens téléphones. En conséquence, j'ai implémenté une telle fonction dans le programme qu'une impulsion courte apparaît sur une sortie libre, lorsque la limite de réglage est atteinte. Dans K145AP2, lorsque la limite de réglage est atteinte, la direction du réglage change. Par conséquent, une certaine habileté était nécessaire pour retirer la main du capteur au maximum ou au minimum. Dans ma mise en œuvre, lorsque la frontière est atteinte, l'ajustement s'arrête. Le temps d'ajustement total d'une frontière à l'autre est d'environ 4 secondes.


Code disponible sur GitHub


TPI via Arduino


Séparément, je note la programmation de MK. Mon JTAGICE3 ne prend pas en charge l'interface de programmation TPI. Mais, heureusement, de bonnes personnes ont écrit un croquis sur Arduin pour programmer cette petite chose. Pas tout de suite, mais tout a fonctionné pour moi, le firmware a été inondé et tout a fonctionné. En plus des arduins, 4 résistances sont nécessaires. L'ensemble du processus est peint dans un croquis.


Résumé


Le bouton magique est installé et fonctionne comme prévu. La consommation et les dimensions actuelles lui permettent d'être intégré dans des appareils à alimentation autonome.


Je n'ai pas obtenu l'effet attendu de la vibration. Ici, des expériences avec le site d'installation sont apparemment nécessaires.


Dans le prototype K145AP2 et l'analogue Siemens S576B, il y a une conclusion "Sleep". Il s'agit d'un tel mode dans lequel la luminosité diminue très lentement jusqu'à ce qu'elle soit complètement désactivée. Comme prévu par le constructeur, pour cela un capteur supplémentaire est installé près de la tête du lit. 16 bits du temporisateur PWM activent ce mode.


Cela vient d'idées pour l'avenir.


Bouton en place

image sympa


Comme tout.


Merci à tous!


UPD: Comme promis, j'ai augmenté la fréquence PWM à près de 1 kHz. Code Github

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


All Articles