Table des matières:

Bougies électroniques multiples : 3 étapes
Bougies électroniques multiples : 3 étapes

Vidéo: Bougies électroniques multiples : 3 étapes

Vidéo: Bougies électroniques multiples : 3 étapes
Vidéo: 🔧 3 TECHNIQUES POUR TESTER SA BOUGIE ? 🔵 2024, Novembre
Anonim
Bougies électroniques multiples
Bougies électroniques multiples

Les bougies électroniques ont été publiées plusieurs fois sur Instructables, alors pourquoi celle-ci ?

À la maison, j'ai ces petites maisons de Noël semi-transparentes qui ont un éclairage LED et une petite batterie. Certaines maisons ont des LED avec un effet bougie et certaines ont des LED qui sont simplement allumées. Les petites piles se vident relativement vite et comme je voulais avoir un effet bougie dans toutes les maisons j'ai décidé d'en faire un projet PIC. Bien sûr, vous pouvez également le transformer en projet Arduino.

Alors, qu'est-ce qui rend cette bougie électronique spéciale ? PIC et Arduino ont tous du matériel de modulation de largeur d'impulsion (PWM) à bord qui peut être utilisé pour créer un effet de bougie à l'aide d'une LED mais dans mon cas, je voulais avoir 5 bougies électroniques indépendantes à l'aide d'un contrôleur et qui n'est pas présent, du moins pas que je connais hors. La solution que j'ai utilisée est de rendre ces cinq signaux PWM indépendants complètement dans le logiciel.

Étape 1: Modulation de largeur d'impulsion dans le logiciel

La modulation de largeur d'impulsion a été décrite plusieurs fois, par ex. dans cet article Arduino:

PIC et Arduino ont un matériel PWM spécial à bord qui facilite la génération de ce signal PWM. Si nous voulons faire un ou plusieurs signaux PWM dans le logiciel, nous avons besoin de deux temporisateurs:

  1. Une minuterie utilisée pour générer la fréquence PWM
  2. Une minuterie qui est utilisée pour générer le cycle de service PWM

Les deux temporisateurs génèrent et interrompent une fois terminés, de sorte que le traitement du signal PWM est entièrement piloté par interruption. Pour la fréquence PWM, j'utilise le timer 0 du PIC et le laisse déborder. Avec une horloge d'oscillateur interne de 8 MHz et une pré-échelle de 64, la formule est: Fosc/4 / 256 / 64 = 2.000.000 / 256 / 64 = 122 Hz ou 8, 2 ms. La fréquence doit être suffisamment élevée pour que l'œil humain ne puisse pas la détecter. Une fréquence de 122 Hz est largement suffisante pour cela. La seule chose que fait cette routine d'interruption de la minuterie est de copier le cycle de service pour un nouveau cycle PWM et d'allumer toutes les LED. Il le fait indépendamment pour les 5 LED.

La valeur de la minuterie pour gérer le cycle de service PWM dépend de la façon dont nous créons l'effet de bougie. Dans mon approche, je simule cet effet en incrémentant le rapport cyclique avec une valeur de 3 pour augmenter la luminosité de la LED et en le décrémentant avec une valeur de 25 pour diminuer la luminosité de la LED. De cette façon, vous obtenez un effet de bougie. Étant donné que j'utilise une valeur minimale de 3, le nombre d'étapes pour contrôler le cycle de service complet avec un octet est de 255 / 3 = 85. Cela signifie que la minuterie de cycle de service PWM doit fonctionner avec une fréquence de 85 fois la fréquence du Minuterie de fréquence PWM qui est 85 * 122 = 10,370 Hz.

Pour le cycle de service PWM, j'utilise la minuterie 2 du PIC. Il s'agit d'une minuterie avec rechargement automatique et elle utilise la formule suivante: Période = (Recharge + 1) * 4 * Tosc * Valeur de pré-échelle Timer2. Avec un rechargement de 191 et une pré-échelle de 1 nous obtenons une période de (191 + 1) * 4 * 1/8.000.000 * 1 = 96 us ou 10,416 Hz. La routine d'interruption du cycle de service PWM vérifie si le cycle de service est passé et éteint la LED pour laquelle le cycle de service est terminé. Si le cycle de service n'est pas passé, il décrémente un compteur de cycle de service avec 3 et termine la routine. Il le fait indépendamment pour toutes les LED. Dans mon cas, cette routine d'interruption prend environ 25 us et puisqu'elle est appelée tous les 96 us, déjà 26% du CPU est utilisé pour gérer le cycle d'utilisation PWM dans le logiciel.

Étape 2: Le matériel et les composants requis

Le matériel et les composants requis
Le matériel et les composants requis

Le diagramme schématique montre le résultat final. Bien que je ne contrôle que 5 LED indépendamment, j'ai ajouté une 6ème LED qui fonctionne avec l'une des 5 autres LED. Étant donné que le PIC ne peut pas piloter deux LED sur une broche de port, j'ai ajouté un transistor. L'électronique est alimentée par un adaptateur CC 6 volts / 100 mA et utilise un régulateur de tension à faible chute pour créer un 5 volts stable.

Vous avez besoin des composants suivants pour ce projet:

  • 1 microcontrôleur PIC 12F615
  • 2 condensateurs céramiques: 2*100nF
  • Résistances: 1*33k, 6*120 Ohm, 1*4k7
  • 6 LED orange ou jaune, haute luminosité
  • 1 transistor BC557 ou équivalent
  • 1 Condensateur électrolytique 100 uF / 16 V
  • 1 régulateur de faible chute de tension LP2950Z

Vous pouvez construire le circuit sur une maquette et ne nécessite pas beaucoup d'espace, comme on peut le voir sur la photo.

Étape 3: Le logiciel restant et le résultat

La partie restante du logiciel est la boucle principale. La boucle principale incrémente ou décrémente la luminosité des LED en ajustant le rapport cyclique de manière aléatoire. Puisque nous incrémentons uniquement avec une valeur de 3 et décrémentons avec une valeur de 25, nous devons nous assurer que les décréments ne se produisent pas aussi souvent que les incréments.

Comme je n'ai utilisé aucune bibliothèque, j'ai dû créer un générateur aléatoire à l'aide d'un registre à décalage à rétroaction linéaire, voir:

en.wikipedia.org/wiki/Linear-feedback_shif…

L'effet bougie est influencé par la vitesse à laquelle le cycle de service PWM est modifié, de sorte que la boucle principale utilise un délai d'environ 10 ms. Vous pouvez ajuster ce temps pour changer l'effet de bougie selon vos besoins.

La vidéo ci-jointe montre le résultat final où j'ai utilisé un capuchon sur la LED pour améliorer l'effet.

J'ai utilisé JAL comme langage de programmation pour ce projet et j'ai joint le fichier source.

Amusez-vous à faire ce Instructable et dans l'attente de vos réactions et résultats.

Conseillé: