Dernière mise à jour :
13/05/2018
Présentation
Ce séquenceur est un programmateur horaire qui permet d'allumer et
d'éteindre une lampe aux heures désirées, de façon instantanée
(mode on/off) ou progressive (mode gradateur). En mode On/Off, le taux
d'éclairement et le taux d'extinction peuvent être spécifiés (par
exemple allumage à 85% et extinction à 5%). En mode gradateur, les
durées d'allumage et d'extinction sont programmables et
peuvent se faire sur une plage de une seconde à plusieurs heures, avec
un taux d'éclairement de départ et d'arrivée qui peut également être
spécifié.
Le séquenceur permet de programmer jusqu'à 64 séquences différentes,
sur des jours spécifiques de la semaine ou pour tous les
jours. Il a été conçu pour commander trois types
d'éclairage :
- ampoule à incandescence avec retard de phase (synchro sur 50 Hz
secteur, principe du
gradateur
de lumière)
- rampe de LED haute luminosité ou ampoules basse tension avec
commande
PWM / MLI
- Eclairage de LED intelligentes WS2812 (1 à 4 blocs de 32 LED, soit 128 LED maxi)
.
Avertissement
- Ce montage ne peut pas commander les lampes halogènes munies de
gradateur (variateur de lumière), ni les tubes fluorescents (tubes
communément appelés tubes néon), ni les ampoules fluocompactes, ni les
ampoules LED 230 V non graduables.
- La commande de LED est prévue pour des LED haute luminosité
/ très basse tension / basse consommation. L'emploi de LED de
forte puissance et fort courant nécessite l'ajout d'un driver
spécifique
(non traité ici).
- La durée d'une séquence ne peut pas excéder 23h59'59".
- La version "LE" disponible gratuitement ici est limitée à 2 séquences
programmables (programme N°1 des lundi et mardi uniquement).
Exemple d'utilisation
Cette réalisation peut servir pour un éclairage
d'aquarium, ou pour se lever en douceur le matin, avec un
éclairage qui commence à une heure plus tardive le dimanche...
- Lundi / Seq #1 : allumage progressif (mode
gradateur) et total, entre 6h30 (0%) et 7h00 (100%)
- Lundi / Seq #2 : extinction progressive (mode
gradateur) et non complète entre 19h00 (100%) et 19h45 (15%)
- Mardi / Seq #1 : allumage progressif (mode gradateur) et non
complet entre 13h30 (0%) et 14h00 (80%)
- Mardi / Seq #2 : extinction directe (mode On/Off) et
complète à 19h00 (0%)
- Mardi / Seq #3 : allumage
progressif (mode gradateur) et partiel, entre 23h50 (0%) et
23h59'59" (50%)
- Mercredi / Seq #1 : allumage
progressif (mode gradateur) et partiel, entre 00h00 (50%) et
00h10 (100%)
Les deux dernières séquences proposées ci-avant montrent un exemple
de chevauchement d'une action "unique" sur deux jours
consécutifs, pour allumer une lampe selon un mode gradué sur
une durée de 20 minutes. Bien que cette façon de faire soit possible,
il est plus simple de créer le chevauchement avec une seule séquence,
comme le montre l'exemple suivant :
- Mardi / Seq #1 : allumage progressif (mode gradateur) et
complet entre 23h50 (0%) et 00h10 (100%). Si l'heure
de fin est inférieure à l'heure de début, le logiciel comprend que la
graduation va s'effectuer sur une plage à cheval sur minuit, et crée en
interne deux "sous-plages" qui coïncident.
Schéma
Le montage est basé sur un PIC 18F46K22 associé à une horloge temps
réel PCF8583 et à un afficheur LCD de 4 lignes de 20 caractères.
Le
choix d'un afficheur LCD de 4 lignes est justifié par le
nombre
d'informations à afficher et pour la facilité de programmation.
Horloge
La fonction d'horloge, qui permet de savoir quel jour on est et quelle
heure il est, peut être basée sur l'une des deux configurations
suivantes :
- horloge externe RTC (*) de type PCF8583 (montré sur le
schéma)
- horloge externe RTC (*) de type DS1307 (non représenté ici)
(*) RTC =
Real Time Clock en anglais,
horloge temps réel en français
Le dialogue avec le PCF8583 (ou DS1307) s'opère via une liaison I2C et
ses deux fils de liaison SCL (signaux d'horloge) et SDA (signaux de
données). Il aurait tout à fait été possible de se passer de ce
composant externe et d'utiliser l'horloge interne du PIC (avec quartz
externe) pour produire les données horaires, ce ne sont pas les
ressources du PIC qui manquent. En réalité, utiliser une horloge dédiée
externe permet de disposer d'une plus grande autonomie de
fonctionnement secouru, en cas de panne secteur. Mais l'usage de cette
seule horloge externe ne suffit pas pour disposer d'une source de temps
permanente. Il faut que cette horloge soit alimentée de façon autonome,
avec une petite pile, une batterie ou un condensateur de forte
capacité.
Les horloges externes PCF8583 et DS1307 présentent l'avantage de
pédaler moins vite (oscillateur 32 kHz) et elles consomment
moins de courant que le PIC. La sauvegarde en énergie est pour
cette raison bien plus aisée à implémenter. En cas de coupure secteur,
seul l'horloge externe (PCF8583 ou DS1307) reste alimentée grâce à la
source de tension indépendante Bat1. Le reste du montage est
complètement hors tension et la consommation globale n'est plus que de
quelques dizaines de microampères. Quand la source d'énergie
principale revient, le PIC se remet en marche, et questionne
l'horloge externe pour se remettre aux bonnes date et heure. Le
prototype a été réalisé avec un PCF8583, comme pour mon
horloge 002.
Programmations horaires
La programmation des différentes séquences (plages horaires) s'effectue
grâce aux boutons-poussoirs et à l'afficheur LCD. Il est
possible de spécifier 8 séquences différentes par jour de semaine (8
séquences pour lundi, 8 séquences pour mardi, etc). Il est également
possible de spécifier un ou plusieurs programmes identiques qui
s'exécutent chaque jour de la semaine (8 séquences pour "tous les
jours").
L'ordre
des programmes importe peu. On peut activer le programme N°3 tout en
laissant désactivés tous les autres. Cependant, une bonne
"organisation" est préférable, autant activer le programme N°1 s'il est
le seul à être utilisé pour une journée donnée. Il en va de même pour
le programme N°3 qui dans une journée donnée, peut très bien être
activé avant le programme N°2. Autant faire les choses dans l'ordre, on
s'y retrouve plus facilement.
Chacun des 64 programmes possède trois modes de fonctionnement :
- Mode Off
- programme désactivé
- Mode Fixed
- La lampe est directement allumée ou éteinte
- Mode Dimmer
- La lampe est allumée ou éteinte de manière progressive
Ces trois modes sont décrits ci-après.
Mode Off
Dans ce mode, le programme actuellement sélectionné est désactivé.
Le mode Off correspond à un programme désactivé, et non pas
à une lampe éteinte. Pour éteindre une lampe, il faut utiliser le mode
Fixed avec valeur à 0% ou le mode Dimmer avec valeur de fin à 0%.
Mode Fixed - Allumage
direct ou extinction directe
Dans ce mode, l'allumage ou l'extinction de la lampe est
instantané (non progressif).
Le taux d'éclairement en mode allumage direct peut être
spécifié à n'importe quelle valeur comprise entre 0% et 100%.
Le taux d'éclairement en mode extinction directe se fait
généralement avec une valeur de 0%, mais cela n'est pas
obligatoire. Avec une valeur d'éclairement autre que 0%, l'extinction
n'est que partielle. La valeur d'éclairement (0% à 100%) est appliquée
à la sortie PWM
mais aussi à la sortie LED intelligentes (détails plus loin).
Mode Dimmer - Allumage
progressif ou extinction progressive
Dans ce mode, l'allumage de la lampe se fait progressivement, depuis un
taux d'éclairement minimal à un taux d'éclairement maximal, tous deux
spécifiés par l'utilisateur - par exemple de 0% à 92%. L'extinction de
la lampe se fait progressivement, depuis un taux d'éclairement
maximal à un taux d'éclairement minimal, tous deux spécifiés par
l'utilisateur - par exemple de 100% à 0%. La variation du taux
d'éclairement s'étend sur une durée spécifiée par l'utilisateur, qui
doit indiquer les heures de début et de fin de la séquence.
Remarque : si une séquence d'extinction fait suite à une séquence
d'allumage, il peut être préférable que le taux de luminosité
maximal de départ de la séquence d'extinction soit de même valeur que
le taux de luminosité maximal de fin de la séquence d'allumage
précédente, pour éviter une saute visible de luminosité (mais cela n'a
rien d'obligatoire).
La valeur d'éclairement (0% à 100%) est appliquée
à la sortie PWM
mais aussi à la sortie LED intelligentes (détails plus loin).
Programmation d'une séquence
identique tous les jours de la semaine
En
plus des 8 programmes alloués à chaque jour de la semaine, 8 autres
programmes sont dédiés à un mode de répétition journalière. Le jour de
la semaine est dans ce cas remplacé par AllDays (tous les jours).
Pour
ce type de séquence, il ne peut pas y avoir recouvrement d'un seul et
même évènement sur deux journées. L'heure de début doit impérativement
être inférieure à l'heure de fin. Si un même évènement doit
s'étaler sur deux journées, il faut activer deux programmes qui se
rejoignent. Par exemple si pour chaque jour de la semaine un éclairage
doit être allumé à 100% à 23h55 et doit être éteint le
lendemain à
00h05 (0%) en mode gradateur, il faudra activer deux programmes comme
suit :
Prg 1 = Start 23:55:00 [100%] - Stop 23:59:59 [50%]
Prg 2 = Start 00:00:00 [50%] - Stop 00:05:00 [0%]
Commande pour LED ou lampes très basse tension (PWM)
La sortie Out1 se fait en PWM, c'est à dire en modulation de rapport
cyclique, appelé aussi
modulation
de largeur d'impulsion
(MLI). Le principe repose sur la
valeur moyenne d'un signal périodique dont la fréquence est constante
mais dont le rapport entre état logique haut et état logique haut peut
être ajusté à la valeur désirée, entre 0% et 100%. Si on veut un
allumage au maximum d'intensité, le temps alloué aux états logiques
hauts doit être maximal (100%). Si on veut un allumage au minimum
d'intensité, le temps alloué aux états hauts doit être minimal (0%). Et
si la luminosité doit être au quart de sa puissance maximale, les états
logiques bas doivent durer trois fois plus longtemps que les états
logiques hauts (75 % du temps à l'état bas, et donc rapport cyclique de
25%). La résolution du signal PWM est de 256 pas, mais le réglage
s'effectue par échelon de 1% (une modification du logiciel
pour
réglage de 0 à 255 est possible).
Commande pour lampes secteur 230 V (avec graduation)
Cette sortie produit des impulsions qui sont synchronisées sur le
secteur 50 Hz, avec un retard par rapport au passage par zéro de l'onde
secteur d'autant plus grand que la lumière doit être de faible
intensité. Plus de détails aux pages
gradateur
de lumière et
gradateur
de lumière 013, basé sur un principe similaire. La section
dédiée au pilotage d'une lampe secteur est confiée à un second PIC, de
type 12F629. Ce dernier reçoit la valeur de retard qu'il doit appliquer
à la commande du triac (valeur envoyée par le PIC principal) et fait ce
qu'il faut, en synchronisme avec les impulsions 50/100 Hz du secteur.
Commande de LED intelligentes WS2812
Jusqu'à 32 LED WS2812
câblées en série peuvent être commandées en même temps, toutes
avec la même couleur et la même intensité lumineuse. La couleur peut
être spécifiée par l'utilisateur, via les trois
composantes RGB
(
Red, Green, Blue
pour Rouge, Vert et Bleu).
Le dosage séparé des trois composantes RGB permet de spécifier la couleur souhaité,
ainsi que le taux de luminosité. Exemples :
R |
G |
B |
Couleur |
Taux |
255 |
255 |
255 |
Blanc |
100% |
255 |
255 |
0 |
Jaune |
100% |
127 |
127 |
0 |
Jaune |
50% |
0 |
192 |
0 |
Vert |
75% |
En
mode gradateur (Dimmer), les valeurs spécifiées pour les composantes
RVB sont assujeties au taux de luminosité global. Ainsi, si la valeur
255 est attribuée aux trois composantes couleur RGB (blanc à 100%) et
que le taux global de luminosité est de 25%, alors les valeurs
réellement transmises aux LED intelligentes sont 63 pour chacune des
composantes RGB (blanc à 25% de luminosité).
Remarques :
- Lors du réglage des composantes
RVB, la couleur correspondante des LED WS2812 est mise
à jour en temps réel.
- 32 LED WS2812 maximum en série, 4 blocs maximum en parallèle de 32 LED WS2812 en série (128 LED maxi).
Sortie logique (tout ou rien)
La sortie nommée Out_Logic délivre un niveau TTL tout ou rien, actif à
l'état haut (+5V) quand la sortie PWM n'est pas à 0%.
Procédure d'utilisation
Le réglage du séquenceur 002 se fait via des menus et sous-menus.
Réglage de la date et de l'heure
Le réglage de la date et de
l'heure n'est nécessaire qu'après la première mise sous tension, ou
quand la pile de sauvegarde de l'horloge temps réel
PCF8583 doit
être (ou vient d'être) changée.
-
Presser autant de fois que nécessaire le bouton Mode pour afficher la
page "Date/Time Set".
- Presser le
bouton Param pour se déplacer sur la valeur à modifier. Un
trait
(curseur) apparaît sous la valeur en cours de modification.
- Presser le bouton Inc ou Dec pour incrémenter ou
décrémenter la valeur en cours de modification.
Chaque modification sur cette page est immédiatement suivie d'effet,
l'horloge RTC est mise à jour au fur et à mesure.
Modification d'une programmation horaire
Par
défaut, toutes les programmations horaires de tous les jours de la
semaine sont désactivés (mode OFF). Pour activer, désactiver ou
modifier un programme, procéder comme suit :
-
Presser autant de fois que nécessaire le bouton Mode pour afficher la
page "Prg Set". Le numéro du programme en cour d'édition est en haut à
droite de l'écran, et le jour est en haut à gauche.
- Presser le bouton Day+ ou Day- pour choisir le jour de la
semaine désiré.
- Presser le bouton Prog+ ou Prog- pour choisir le numéro du programme
à modifier.
- Presser le bouton Params pour pouvoir modifier le mode du
programme sélectionné. Un curseur se positionne sous le mode
en cours.
-
Presser le bouton Inc ou Dec pour choisir le mode de fonctionnement du
programme actuellement sélectionné. Les valeurs suivantes sont
possibles : OFF (programme désactivé), Fixed
(lampe allumée ou éteinte, entièrement ou partiellement, 0% à 100%),
DIM (mode gradateur).
- Presser le bouton
Param pour pouvoir modifier l'heure de début du programme
sélectionné, puis utiliser les boutons Inc ou Dec pour
modifier heures, minutes ou secondes.
- Presser le bouton Param pour pouvoir modifier le taux d'éclairage à
l'heure de début du
programme sélectionné, puis utiliser les boutons Inc ou Dec pour
modifier le taux d'éclairage (possible uniquement en mode DIM /
gradateur).
- Presser le bouton Param pour pouvoir modifier l'heure de fin du
programme sélectionné, puis utiliser les boutons Inc ou Dec pour
modifier heures, minutes ou secondes (possible
uniquement en mode DIM / gradateur).
- Presser le bouton Param pour pouvoir modifier le taux d'éclairage à
l'heure de fin du
programme sélectionné, puis utiliser les boutons Inc ou Dec pour
modifier le taux d'éclairage (possible uniquement en mode DIM /
gradateur).
Logiciel du PIC (version allégée LE)
LE - L'archive zip dont le lien suit contient le fichier binaire compilé
(*.hex) du PIC principal 18F46K22. Le logiciel du PIC 16F629 pour
graduation secteur 230 V n'est pas mis à disposition.
Séquenceur
002 - 18F46K22 - LE (12/05/2018)
Remarque : la version
"LE" disponible ici gratuitement est limitée à 2
séquences (programme N°1 des lundi et mardi uniquement).
Si vous souhaitez recevoir par la poste un PIC préprogrammé et prêt à
utiliser, merci de consulter la page
PIC - Sources.
Circuit imprimé
Non réalisé.
Historique
13/05/2018
- Remplacement PIC 18F2420 par 18F46K22 (V1.1).
- Ajout envoi infos sur ligne UART (Tx) des divers changements d'état.
- Désormais, le chevauchement d'une séquence sur deux jours est
possible (par exemple allumage en 20 min du lundi 23h50 au mardi 00h10).
- Désormais, le taux d'éclairement peut également être spécifié en mode
gradateur, pour les points de départ et d'arrivée (les min et max ne
sont plus imposés à 0% et 100%).
23/01/2012
- Première version (V1.0) avec PIC 18F2420