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".
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.
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.
- DSW1-2
= ON (RB1 = 0) : base de temps 100 ms, le "compteur
d'interruptions" ne sert pas et le rapport cyclique évolue toutes les
100 ms. Dans ce mode, on dispose d'une plage de réglage comprise entre
25 secondes (100 ms * 255) et 408 secondes (presque 7 minutes).
- DSW1-2 = OFF
(RB1 = 1) : base de temps 1 sec, le "compteur d'interruptions" est
incrémenté toutes les 100 ms et est remis à zéro quand il atteint la
valeur 10 (au bout d'une seconde). Lors de son passage à
zéro, le
rapport cyclique évolue. Dans ce mode, on dispose d'une plage
de
réglage comprise entre 255 secondes (un peu plus de 4 minutes) et 4080
secondes (un peu plus d'une heure, 68 minutes pour être précis).
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 :
- DSW1-3
= ON (RB2 = 0) : fonction extinction, démarre avec un rapport cyclique
de 100% et se termine avec un rapport cyclique de 0%.
- DSW1-3 = OFF
(RB2 = 1) : fonction allumage, démarre avec un rapport
cyclique de 0% et se termine avec un rapport cyclique de 100%.
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 :
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
transistor
s
de sortie pour une
commande en courant plus généreuse.
Typon
aux formats PDF, EPS et Bitmap 600 dpi
Bien sûr, un seul transistor à la
fois, le bipolaire
ou
le MOSFET !
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.