Electronique > Réalisations > Jeux de lumières > Gradateur de lumière 016

Dernière mise à jour : 07/07/2013

Présentation

Ce gradateur de lumière automatique permet d'allumer ou d'éteindre une ou plusieurs LED (ou lampes à incandescence) de façon progressive sur une longue durée, pour un effet lumineux style "aube" ou "crépuscule". 

gradateur_lumiere_016_pcb_3d_a

La durée totale d'un cycle se programme par des cavaliers, microswitches (interrupteurs miniatures) ou par des "ponts définitifs", pour une durée comprise entre 25 secondes et 68 minutes. Le cycle d'allumage ou d'extinction débute dès la mise sous tension du montage et le sens de variation (allumage ou extinction) est défini par la position d'un interrupteur. Le gradateur fait usage d'un PIC 16F628A et la sortie se fait en mode PWM / MLI au niveau TTL. Le circuit est vraiment très simple, et l'oscillateur interne 4 MHz du PIC est mis à contribution. C'est en quelque sorte la version basse tension continue du gradateur de lumière 011b.

Schéma

Un seul composant vraiment indispensable : le PIC.

gradateur_lumiere_016

Un seul composant vraiment indispensable : le PIC.
Oui, je sais, je radote.

Mode de fonctionnement (allumage / extinction)
Toutes les "x" secondes, la valeur du rapport cyclique du signal PWM est incrémentée ou décrémentée. Cette valeur "x" dépend de l'état logique imposé aux entrées RB4 à RB7 du PIC, que l'on peut modifier ici avec les quatre petits interrupteurs du bloc DSW1 (les quatre du bas). Le nombre de pas possibles pour le rapport cyclique du signal PWM est de 256, ce qui correspond à une résolution de 8 bits. La valeur 0 correspond à 0% et la valeur 255 correspond à 100%. Dans le mode de variation le plus rapide, qui correspond à "un cran par 100 ms", l'évolution d'une extrême à l'autre prend 25 secondes. Dans le mode de variation le plus lent, qui correspond à "un cran toutes les 15 secondes", l'évolution d'une extrême à l'autre prend 4080 secondes, soit un peu plus d'une heure.

Base de temps générale
Le timer T1 est mis à contribution pour générer une période de 100 ms (10 Hz) qui sert de base de temps principale. A chaque interruption du timer T1 (donc 10 fois par seconde), on a le choix entre faire évoluer (augmenter si allumage ou diminuer si extinction) la valeur du rapport cyclique, ou incrémenter un compteur qui lorsqu'il atteint la valeur 10, est remis à zéro. Cela permet de disposer d'une base de temps de 100 ms ou de 1 seconde.
Les deux modes devraient permettre de couvrir un large éventail de besoins. La LED D1 clignote à la fréquence de 0,5 Hz, elle s'allume et s'éteint toutes les secondes. Simple indicateur de bon fonctionnement.
Remarque : quand elles sont laissées en l'air, les entrées du port B du PIC sont à l'état logique haut car le "pullup" interne est activé. Un état logique bas est donc obtenu en mettant ces entrées à la masse, ce qui est le cas quand les interrupteurs du bloc DSW1 sont fermés. 

Choix de la durée générale
Elle dépend de la position des quatre interrupteurs DSW1-5 à DSW1-8 et donc de l'état des entrées RB4 à RB7 du PIC. A chaque interrupteur activé, correspond un "facteur d'ajout" de la base de temps (qui pour rappel est de 0,1 ou 1 sec), ce facteur possède une valeur comprise entre 0 et 15. Le tableau suivant résume les différentes durées de variation (pour passer d'un extrême à l'autre) que l'ont peut avoir.

RB7 RB6 RB5 RB4 Durée si RB1 = 0 Durée si RB1 = 1
0 0 0 0 25 sec (0'25") 255 sec (4'15")
0 0 0 1 51 sec (0'51") 510 sec (8'30")
0 0 1 0 76 sec (1'15") 765 sec (12'45")
0 0 1 1 102 sec (1'42") 1020 sec (17'00")
0 1 0 0 127 sec (2'07") 1275 sec (21'15")
0 1 0 1 153 sec (2'33") 1530 sec (25'30")
0 1 1 0 178 sec (2'58") 1785 sec (29'45")
0 1 1 1 204 sec (3'24") 2040 sec (34'00")
1 0 0 0 229 sec (3'49") 2295 sec (38'15")
1 0 0 1 255 sec (4'15") 2550 sec (42'30")
1 0 1 0 280 sec (4'40") 2805 sec (45'45")
1 0 1 1 306 sec (5'06") 3060 sec (51'00")
1 1 0 0 331 sec (5'31") 3315 sec (55'15")
1 1 0 1 357 sec (5'57") 3570 sec (59'30")
1 1 1 0 382 sec (5'22") 3825 sec (63'45")
1 1 1 1 408 sec (6'48") 4080 sec (68'00")

Sans grande surprise, le pas de variation est de 25 secondes quand RB1 est à l'état 0, et de 255 secondes quand RB1 est à l'état haut.

Sens de variation
Défini par l'état logique de la broche RB2 du PIC :
Pour une fonction qui est toujours la même, il est bien sûr possible de se passer d'un interrupteur, et de laisser la ligne RB2 en l'air (pour un état haut, mode allumage) ou de la relier directement à la masse (pour un état bas, mode extinction). A noter qu'il est possible de changer le sens de variation durant la progression ou en fin de progression. Un allumage progressif peut donc être envisagé en mettant l'appareil sous tension (le matin par exemple), avec la broche RB2 en l'air (état logique haut imposé par la résistance de pullup interne). Un peu plus tard (le soir par exemple), tout en laissant le montage sous tension, il est possible de commander l'extinction avec un simple transistor NPN du style 2N2222 qui, câblé en émetteur commun / interrupteur (émetteur à la masse et collecteur sur RB2), porte la broche RB2 à la masse quand sa base est portée à un potentiel de tension suffisant.

Sortie LED : 20 mA ou plus ?
Le PIC en lui-même peut débiter un courant de 20 mA et est donc apte à commander une LED sans rien ajouter d'autre (si ce n'est sa traditionnelle résistance de limitation de courant). Pour piloter quelques branches de quelques LED standard (ordre de grandeur 20 mA par LED) ou de quelques LED de moyenne puissance (100 mA ou 200 mA par LED par exemple), l'ajout d'un transistor classique style 2N2222 ou d'un transistor MOSFET peut convenir :

pwm_cde_led_001 pwm_cde_led_002

Bien entendu ces deux exemples sont pris parmi des dizaines possibles, le choix d'une tension de 12 V et d'un nombre de LED égal à 18 est tout à fait arbitraire. Pour un courant supérieur à 1 A, n'hésitez pas à choisir un MOSFET plutôt qu'un bipolaire.

Pourquoi la sortie PWM (broche RB3/CCP1 du PIC) passe-t-elle par un des interrupteurs du bloc DSW1 ? Peut-être pour donner un aspect plus "pro" au schéma ? Ca me gênait de faire passer un fil pour contourner ce joli bloc dont un des interrupteurs ne servait pas. Tiens, en y regardant de près, le premier interrupteur ne sert pas non plus... Une évolution à venir prévue d'avance ?

Alimentation
Le PIC est ici alimenté par une tension de +5 V, que vous pouvez soustraire à un circuit existant ou produire localement à partir d'une tension comprise entre +8 V et +24 V, grâce au régulateur de tension intégré U2.

Logiciel du PIC

Fichier binaire compilé (*.hex) prêt à flasher dans le PIC, dans l'archive zip suivante :
Gradateur lumière 016 - 16F628A - (07/07/2013)
Si vous souhaitez recevoir par la poste un PIC préprogrammé et prêt à utiliser, merci de consulter la page PIC - Sources.

Prototype

Réalisé avec ma platine de développement EasyPic7. Tests OK (07/07/2013).

Circuit imprimé

Non réalisé (en fait si, mais il ne me plaît pas). Pour vous simplifier la vie, il supporte l'ensemble des composants mentionnés ci-avant : PIC bien sûr, mais aussi régulateur de tension et transistors de sortie pour une commande en courant plus généreuse. 

gradateur_lumiere_016_pcb_composants

Typon aux formats PDF, EPS et Bitmap 600 dpi

Bien sûr, un seul transistor à la fois, le bipolaire ou le MOSFET ! 

gradateur_lumiere_016_interface_transistors

Les branches LED + résistances restent extérieures au circuit :
- J3 : arrivée tension externe (+12 V sur mon exemple)
- J4 : sortie pour les sources lumineuses (vers LED ou lampes à incandescence)

Historique

07/07/2013
- Correction bug extinction progressive (seul l'allumage progressif fonctionnait correctement).
24/02/2013
- Première mise à disposition.