Electronique > Réalisations > Lampadaire multicolore 006

Dernière mise à jour : 19/12/2008

Présentation

Ce lampadaire permet d'obtenir une lumière dont la couleur varie en fonction de la position d'un potentiomètre unique.

lampadaire_multicolore_006_pcb_3d_a

Il s'agit d'une version finalisée qui fait suite au lampadaire 004 que j'ai abandonné entre temps. Cette version, qui s'appuie sur un PIC de type 12F675, est en effet plus simple et revient moins cher à construire, tout en offrant une palette de couleurs plus étendue.
Avertissement : ce schéma n'est pas entièrement terminé, il me reste quelques améliorations à apporter, voir paragraphe "Pas totalement au point".

Schéma

Ce schéma est complet.

lampadaire_multicolore_006

Horloge / oscillateur
Pas de quartz dans ce montage, car l'oscillateur interne de 4 MHz du PIC est mis à contribution.

PWM et luminosité variable
Avec le programme flashé dans le PIC, la fréquence de clignotement des quatre ensembles de leds est de l'ordre de 130 Hz, ce qui ne se voit pas. En réalité, le cadencement interne est de l'ordre de 13 KHz, mais le signal PWM constitué avec les moyens du bord est basé sur un cycle de cent périodes d'horloge, ce qui explique le rapport de 100. Par exemple, si les leds rouges sont soumises à un rapport cyclique de 25 %, elles sont allumées pendant 25 cycles du cadencement interne et sont éteintes pendant 75 cycles de ce même cadencement, ce qui correspond à une luminosité de 25 %. Pour plus de détails concernant ce mode de fonctionnement, appelé PWM ou MLI, voir page Modulation de largeur d'impulsion.

Commande des leds
Si on s'était contenté d'une seule led haute luminosité / basse consommation par sortie, on aurait très bien pû se passer des transistors Q1 à Q4. Mais j'ai préféré ici pouvoir faire "large", et l'alimentation des leds est donc séparée de l'alimentation du PIC. Vous pouvez ainsi, en fonction de leur nombre, décider plus simplement de la valeur de leur tension d'alimentation et du nombre de branches (plus de détails à la page Alimentation d'une led).

Mélange des couleurs

Le logiciel du PIC intègre quatre modes de mélange des couleurs, chaque mode peut être sélectionné l'un après l'autre grâce à l'interrupteur SW1. Le premier mode (mode 001) correspond au mode de distribution des couleurs représenté par le graphe ci-après :

lampadaire_multicolore_006_mode_001

Explication du fonctionnement pour le Mode 1
Une tension de 0V appliquée à l'entrée In1 (AN0, broche 7 du PIC) correspond à la valeur 0 sur une plage comprise entre 0 et 1023, puisque le convertisseur analogique / numérique (CAN) du PIC travaille sur 10 bits. Une tension de 5V correspond à la pleine échelle du CAN, soit la valeur de 1023 (et non 1024 car la valeur 0 est la première des 1024 valeurs possibles), la tension de référence ayant été spécifiée - par logiciel - comme devant être égale à VDD (VDD est l'alim positive du PIC, soit +5V). Sur cette plage de tension comprise entre 0V et 5V, on trouve donc 1024 valeurs de tension possibles, que j'ai séparées en quatre groupes de valeurs :
- 1er groupe : valeurs comprises entre 0 et 254 (tension comprise entre 0V et 1,25V)
- 2ème groupe : valeurs comprises entre 255 et 511 (tension comprise entre 1,25V et 2,5V)
- 3ème groupe : valeurs comprises entre 512 et 767 (tension comprise entre 2,5V et 3,75)
- 4ème groupe : valeurs comprises entre 768 et 1023 (tension comprise entre 3,75V et 5V)

lampadaire_multicolore_006_mode_000

Le logiciel du PIC fait correspondre une intensité lumineuse donnée à chaque couleur, en fonction de la valeur de la tension lue sur l'entrée analogique. Regardons en particulier comment la couleur verte est traitée, à l'aide du graphe mode 1 simplifié suivant.

lampadaire_multicolore_006_mode_001b

Le "plancher" de chaque zone de couleur représente l'intensité lumineuse minimale de la couleur considérée, et le "plafond" représente son intensité lumineuse maximale. Ainsi, pour la couleur verte, on observe un minimum d'intensité pour les valeurs 255 et 1023, et un maximum d'intensité pour toutes valeurs comprises entre 512 et 767. Entre les valeurs 255 et 511, l'intensité croit en même temps que la valeur. Et entre les valeurs 767 et 1023, l'intensité décroit quand la valeur continue d'augmenter. Voyons deux exemples pratiques avec le mode 001 :
Exemple 1 : avec une valeur de 383 (entre 255 et 511), le rouge et le vert sont à 50 % d'intensité, le jaune est à 100 % d'intensité, et le bleu est à 0 % d'intensité.
Exemple 2 : avec une valeur de 896 (entre 767 et 1023), le rouge et le jaune sont à 0 % d'intensité, le vert est à 50 % d'intensité, et le bleu est à 100 % d'intensité.
Tout cela n'est que de la logique et des formules mathématiques très simples, qui permettent en fonction de la valeur lue, d'allumer pleinement ou en partie une ou plusieurs couleurs. Notez que dans ce mode 001, le chevauchement des couleurs rouge et bleue n'a jamais lieu, ce qui signifie que certaines couleurs ne seront jamais représentées. L'idée que j'ai eu pour ce mode n'était pas de pouvoir couvrir toutes les couleurs possibles, mais de pouvoir passer progressivement d'une couleur "chaude" à une couleur "froide".

Mode 002
Dans ce mode, les quatres couleurs peuvent se trouver mélangées, mais jamais avec une intensité maximale pour les quatre en même temps.

lampadaire_multicolore_006_mode_002

Mode 003
La couleur jaune n'a pas été inclue dans ce mode 003, et contrairement aux deux modes précédents, les trois couleurs R, V et B peuvent se trouver ensemble avec un max pour les trois en même temps pour la valeur 511 (potentiomètre en position médiane). La position centrale du potentiomètre doit donc donner une couleur assez "blanche", avec une éventuelle composante colorée légère qui dépendra du type des leds utilisées.

lampadaire_multicolore_006_mode_003

Mode 004
Ce mode 004 ne permet aucun mélange des couleurs, il n'y en a toujours qu'une seule à la fois.

lampadaire_multicolore_006_mode_004

La "forme" des zones peut paraître bizarre, mais elle permet une transistion douce en terme d'intensité lumineuse, à chaque changement de couleur. Quand on passe du rouge au jaune, l'intensité reste maximale, et quand on passe du jaune au vert, l'intensité qui diminuait retourne en mode de progression.

Sauvegarde du mode en cours après coupure d'alimentation
Après réécriture du code et grâce à Janni (forum Mikroe), les procédures de sauvegarde et de restauration du dernier mode utilisé avant coupure d'alimentation, sont enfin implémentées.
Thanks to Janni for his very good optimisation suggestions !

Proto

Réalisé sur une plaque d'expérimentation sans soudure, avec un petit câble de déport des entrées / sorties de type EasyProto.

lampadaire_multicolore_006_proto_001a

L'alimentation des leds est assurée par le +5V de la carte de développement EasyPic4, via le câble de déport du port A. Le fil vert qui dépasse permet le changement de mode (connexion entre entrée GP3 et +5V).

lampadaire_multicolore_006_proto_001b lampadaire_multicolore_006_proto_001c lampadaire_multicolore_006_proto_001d lampadaire_multicolore_006_proto_001e lampadaire_multicolore_006_proto_001f lampadaire_multicolore_006_proto_001g lampadaire_multicolore_006_proto_001h lampadaire_multicolore_006_proto_001i


Pas totalement au point...

Dans le principe, le code fonctionne mais les résultats ne sont pas parfaits et ne me conviennent qu'à moitié. Selon les réglages adoptés (mode et tension d'entrée sur AN0), le montage laisse apparaître quelques "acoups" lumineux. Au début, je pensais que le problème n'était que logiciel et j'ai tenté plusieurs modifications, notement au niveau de la périodicité de la lecture de la tension d'entrée au port AN0. J'avais en effet rapidement fait le lien entre ces petits défauts et la périodicité de la lecture de la tension d'entrée par le CAN, bien que la routine de modification des valeurs de rapport cyclique n'est appelée que lorsque la tension d'entrée est modifiée. Réduire ou augmenter la périodicité de la lecture ne changeait rien au problème. J'ai laissé momentanement tomber cette réalisation, me disant que je trouverais bien plus tard. Et après deux mois de repos, j'ai effectivement trouvé une partie du problème, qui n'avait rien de logiciel ! Le potentiomètre RV1 utilisé pour le réglage des couleurs était tout simplement vieillot et crachait, et la tension d'entrée bagotait sans arrêt. La routine de modification des valeurs PWM était donc constement appelée. Après avoir remplacé ce potentiomètre par un modèle neuf, une grande partie du problème était résolue. Mais il reste toutefois quelques acoups de temps en temps, surtout quand toutes les leds sont allumées en même temps, et ce quelque soit leur luminosité propre. Je reste convaincu que la section logiciel gagnerait à être mieux écrite, mais mes connaissances sont pour le moment trop limitées pour me permettre de faire mieux.

Fichier compilé et code source

L'archive dont le lien est donné ci-après contient le fichier compilé (*.hex) à mettre dans le PIC 12F675, ainsi que le code source écrit dans MikroPascal (V8.3).
Lampadaire multicolore 006 - 12F675.zip (23/10/2008)
Si vous souhaitez recevoir par la poste un PIC préprogrammé et prêt à utiliser, merci de consulter la page PIC - Sources.

Circuit imprimé

En cours de réalisation.