Electronique > Réalisations > Séquenceur 002 - Pro

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é.

sequenceur_002_lcd_001a sequenceur_002_lcd_001b sequenceur_002_lcd_001c

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.

sequenceur_002

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 :
Ces trois modes sont décrits ci-après.
Mode Off
Dans ce mode, le programme actuellement sélectionné est désactivé.

sequenceur_002_lcd_005a  

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). 

sequenceur_002_lcd_006a sequenceur_002_lcd_006c sequenceur_002_lcd_006b 

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.

sequenceur_002_lcd_007a sequenceur_002_lcd_007b

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).

sequenceur_002_lcd_008a 

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).

sequenceur_002_lcd_009a  sequenceur_002_lcd_009b  sequenceur_002_lcd_009c

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.

sequenceur_002_lcd_008b

- 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