Table des matières:

Affichage du compteur mural : 4 étapes (avec photos)
Affichage du compteur mural : 4 étapes (avec photos)

Vidéo: Affichage du compteur mural : 4 étapes (avec photos)

Vidéo: Affichage du compteur mural : 4 étapes (avec photos)
Vidéo: MODULE TIMER0 DES MICROCONTROLEURS PIC 2024, Novembre
Anonim
Image
Image
Concept
Concept

J'ai acheté un compteur de montre de poche bon marché sur eBay en pensant que cela ferait une nouveauté intéressante. Il s'est avéré que le compteur que j'avais acheté n'était pas adapté, mais à ce moment-là, je m'étais engagé à produire quelque chose qui serait accroché au mur et serait un sujet de discussion.

Le centre de l'affichage est un ampèremètre analogique qui est alimenté par un condensateur chargé qui se décharge à travers le compteur animant ainsi l'aiguille de l'aiguille.

Un affichage LED reflète le mouvement du pointeur offrant un affichage accrocheur.

L'ensemble est contrôlé par un microprocesseur Atmel 328, directement développé sur un Arduino Uno, qui mesure les niveaux lumineux actuels dans la pièce, et déclenche aléatoirement l'affichage, le tout alimenté par trois piles AA.

Fournitures

Arduino Uno avec processeur Atmel 328…voir le reste du texte

Sélection de LED, Rouge, Vert et jaune avec un Blanc

7 résistances 330R

1 x LDR

1 condensateur 220uF

1 résistance 220R

2 résistances de 10k

1 x diode de redressement

Un ampèremètre suffisamment ancien, typiquement 100uA à pleine échelle

Étape 1: Conception

Concept
Concept
Concept
Concept
Concept
Concept

Les images racontent une courte histoire, le compteur d'origine a été conçu pour être utilisé sur des radios à valve et nécessitait plus de 100 mA et ne pouvait tout simplement pas être utilisé par un Arduino. Ce sont les premières idées de mise en page d'affichage. Au final j'ai démonté le compteur avec l'intention de remplacer le mécanisme, pas très réussi.

Finalement, j'ai ramassé un vieux voltmètre avec un mécanisme de 100 uA, parfait.

Étape 2: le circuit

Le circuit
Le circuit
Le circuit
Le circuit

La version originale utilisait un Arduino pour connecter les bits dans ce qui est un système assez simple. Six broches numériques pilotent les LED colorées via des résistances 330R.

Une broche numérique est utilisée pour alimenter le diviseur de tension LDR, la tension étant mesurée sur l'une des broches ADC et utilisée pour estimer le niveau d'éclairage actuel et l'heure de la journée.

Une broche numérique est utilisée pour charger le condensateur via une diode et une résistance 220R.

Le compteur est connecté aux bornes du condensateur via une résistance de 10k. Cette valeur peut devoir être modifiée en fonction de la mesure à pleine échelle sur l'ampèremètre utilisé.

J'ai également câblé un bouton de réinitialisation, à monter sur le côté de la vitrine.

Enfin, une autre connexion est établie à partir de l'anode de l'une des LED pour fournir une référence de tension pour vérifier le niveau de tension de la batterie. Ce circuit n'a jamais été très réussi et je le remplacerai par un simple diviseur de tension la prochaine fois que les piles seront à plat et que l'écran sera hors du mur.

Étape 3: Mise en œuvre

Mise en œuvre
Mise en œuvre
Mise en œuvre
Mise en œuvre
Mise en œuvre
Mise en œuvre
Mise en œuvre
Mise en œuvre

Faire fonctionner l'écran à partir de batteries à l'aide d'un Arduino Uno n'était pas pratique, la consommation de courant serait trop élevée car une grande partie de la carte est active tout le temps, et je voulais que l'écran soit sur un mur intact pendant au moins six mois à un temps.

Pour réduire la consommation de courant, les circuits d'affichage ont été développés avec un Arduino et une planche à pain, les circuits transférés sur la carte matricielle, puis le processeur finalement programmé retiré de l'Arduino et placé dans une prise sur un petit morceau de carte matricielle, avec le xtal, et réunis avec un câble plat.

En fin de compte, l'écran fonctionne pendant 12 mois complets avec un seul jeu de piles.

Une astuce utile consiste à remplacer le processeur Atmel dans un Arduino Uno par un socket ZIF, celui-ci s'adapte bien, puis réinsérez le processeur. Une fois que le projet est prêt à démarrer, le processeur est déjà programmé et n'a plus qu'à être retiré et inséré dans un socket sur la carte finale. Lorsque j'achète des processeurs vierges, je passe une heure à installer des chargeurs de démarrage sur chacun d'eux afin qu'ils soient prêts à l'emploi à tout moment.

Étape 4: le code

Comme on peut l'imaginer, le code pour exécuter l'affichage de base n'est pas très compliqué mais le domaine clé est la réduction de la consommation d'énergie. Il existe deux approches pour cela, l'une consiste à n'exécuter l'affichage que lorsque quelqu'un le verra probablement, et l'autre à réduire au minimum la consommation d'énergie des circuits.

Le programme doit avoir les librairies Narcoleptic installées avant la compilation.

Tous les retards du système sont implémentés à l'aide de la bibliothèque narcoleptique pour un mode pleine puissance basse consommation du processeur, avec une consommation électrique mesurée en quelques nanoampères.

Le processeur se met en veille pendant quatre secondes à la fois et, au réveil, exécute une routine aléatoire pour déterminer si le système ne se réveillera pas. Sinon, le système se met en veille pendant encore quatre secondes.

Si la routine aléatoire est vraie, le circuit LDR est activé et une mesure du niveau de lumière est effectuée. Le circuit LDR est désactivé immédiatement après pour économiser de l'énergie.

Le système fonctionne sur quatre périodes de temps estimées.

  • La nuit - il fait très sombre et personne n'est susceptible de regarder - ne faites rien et retournez dormir
  • Tôt le matin - dans la première partie, il est peu probable qu'il y ait des observateurs, mais maintenez les statistiques comme si le jour
  • Pendant la journée - il peut y avoir des observateurs, mais activez uniquement le compteur analogique, pas les LED
  • Soirée - il est probable qu'il y aura des observateurs alors activez l'affichage complet

Le système estime que la durée du jour changera avec les saisons, de sorte que la soirée est prolongée jusqu'à ce qui serait autrement la nuit car la durée des jours est plus courte, mais lorsque les observateurs sont toujours susceptibles d'être présents.

Si l'heure de la journée est appropriée, une sortie numérique est utilisée pour charger le condensateur, puis éteinte. Avec un affichage uniquement analogique, le système se rendort avec toutes les sorties éteintes et le condensateur se décharge à travers le compteur dont l'aiguille, qui avait basculé à pleine échelle, revient à zéro.

Lorsque l'affichage LED est actif, le système mesure la tension sur le condensateur et présente un affichage lumineux en fonction de la tension mesurée jusqu'à ce qu'elle descende en dessous d'un seuil lorsque le système est en veille.

Une deuxième sélection aléatoire a lieu vers la fin de l'affichage pour déterminer si l'affichage sera répété ou non, offrant plus d'intérêt pour l'observateur.

Une LED blanche est activée pour éclairer la face du compteur lorsque l'affichage LED est actif.

La bibliothèque narcoleptique de Peter Knight met le processeur en mode veille complète où les sorties resteront dans l'état où elles étaient au moment de la mise en veille, mais toutes les horloges internes s'arrêtent à l'exception de la minuterie de veille qui est limitée à quatre secondes. Cela peut être testé dans un Arduino, mais à cause de la LED d'alimentation Arduino et des circuits USB, les mêmes économies d'énergie ne sont pas réalisées.

Le système contient toujours du code qui était censé tenir compte de la capacité décroissante des batteries, mais cela ne s'est pas avéré utile. La prochaine fois que ce sera hors du mur, je changerai le programme pour fournir une sorte d'état de la batterie via les LED ou l'ampèremètre.

La version finale a un bouton de réinitialisation monté sur le côté de la vitrine. La raison principale en est de permettre aux visiteurs de faire des démonstrations afin que le système exécute sa routine de base 10 fois après la réinitialisation avant de revenir à sa routine aléatoire normale.

Conseillé: