Electronique > Réalisations > Jeux de lumières > Eclairage à leds 001

Dernière mise à jour : 20/07/2009

Présentation

Ce petit circuit, très simple à réaliser, a été conçu à la demande d'un internaute, pour équiper d'un éclairage à LED un objet volant non identifié (OVNI ou UFO), le UFO8 pour être précis.

eclairage_leds_001_pcb_3d_a

Il est basé sur un PIC 12F675, afin de simplifier la mise en oeuvre des fonctions requises, résumées via ce cahier des charges bien précis :
- consommation globale la plus faible possible
- poids minimum (quelques grammes)
- allumage de plusieurs leds en mode "continu"
- allumage de plusieurs leds en mode "flash"
- extinction automatique des leds "continues" si tension d'alim trop faible

Schéma

Le schéma repose exclusivement sur l'utilisation d'un circuit intégré programmable de type PIC 12F675, qui fait tout le boulot.

eclairage_leds_001

Mode d'allumage des LED
Des LED peuvent être alimentées de différentes façons : en mode continu ou en mode impulsionnel. En mode continu, la consommation est plus élevée qu'en mode impulsionnel, quelque soit le type de led utilisée (cela reste vrai même si on choisi des leds haute luminosité ou faible consommation). Cela se comprend aisement : en mode impulsionnel, la led n'est allumé qu'une fraction du temps total, et on obtient une consommation moyenne qui dépend de la durée d'éclairage par rapport à la durée d'extinction. Si on alimente en continu une led sous un courant de 10 mA, la consommation moyenne est égale à la consommation continue, c'est à dire 10 mA. Si maintenant on alimente la led avec un rapport cyclique de 10 % (temps d'allumage 10 fois plus faible que le temps d'extinction), la consommation moyenne est réduite dans un rapport de 10 et vaut désormais 1 mA. Et si on va plus loin et qu'on alimente la led avec un rapport cyclique de 1 % (temps d'allumage 100 fois plus faible que le temps d'extinction), la consommation moyenne est alors réduite dans un rapport de 100 et vaut désormais 100 uA (0,1 mA). Pour qu'aucun effet de clignotement ne soit visible, il importe que la fréquence de répétion des allumages / extinctions de la led soit supérieure à la limite de sensibilité de l'oeil et de sa persistance rétinienne. En pratique, une valeur de quelques dizaines de hertz est suffisante. Voilà donc le principe de base posé, toutes les leds seront alimentées en mode impulsionnel, avec un rapport cyclique de 1 % pour les leds qui doivent paraître allumées en permanence, et avec un rapport cyclique vingt fois plus faible pour celles qui doivent "flasher".

Choix de l'horloge du PIC
La consommation propre du PIC est avant tout liée à sa fréquence d'horloge : plus cette dernière est élevée et plus la consommation est importante. On peut donc penser que le mieux est d'adopter une fréquence la plus basse possible, par exemple de 32 KHz. Malheureusement, si cette fréquence de base est suffisante pour obtenir un clignotement visible des leds, elle est insuffisante pour obtenir une impression d'allumage continu, car la fréquence de clignotement est de quelques hertz, fréquence si basse que l'oeil ne se laisse pas berner. Pour un fonctionnement correct et sans scintillement visible, une fréquence d'horloge d'au moins 1 MHz (250 KHz en interne) est requise pour le PIC. Pour une telle fréquence ou pour une fréquence inférieure, il convient d'utiliser un réseau RC externe connecté sur la broche GP5/OSC1, ce qui ajoute en taille et poids à l'ensemble. L'usage de l'horloge interne de 4 MHz du PIC est tentante, car d'une part elle ne requiert aucun composant externe pour cadencer le programme, et d'autre part parce que cette fréquence est amplement suffisante pour obtenir l'effet désiré. En contrepartie, on a droit à une légère augmentation de la consommation du PIC. Mais comme cette dernière reste toutefois bien inférieure à 1 mA à 4 MHz, est-il vraiment utile de chercher la petite bête ? Pour ma part, j'ai pris ma décision : choix de l'horloge interne 4 MHz et minimum de composants externes.

Séquencement d'allumage des LED
Le cahier des charges stipule que certaines leds doivent paraître allumées en continu et que d'autres doivent paraître clignotantes. On pourrait donc fort bien se contenter de deux lignes de commandes, une première pour les leds allumées "en continu" et l'autre pour les leds qui flashent. J'ai cependant choisi d'allumer les leds via quatre lignes de commande différentes, non pas pour diminuer la consommation globale, mais pour répartir dans le temps la consommation moyenne. En effet, et d'un point de vue consommation moyenne, allumer quatre leds en même temps sur un rapport cyclique de 1 % revient au même que d'allumer les quatres leds les unes après les autres (séquentiellement), avec un même rapport cyclique pour chacune d'entre elles. Par contre, d'un point de vue consommation instantanée, allumer les leds de façon séquentielle répartit le courant consommé : au lieu d'avoir une consommation de 400 uA pendant 150 us par exemple, on a une consommation de 100 uA pendant 600 us. Ce qui constitue une charge instantanée moindre pour la batterie, dont l'énergie est si précieuse au moment où elle commence à se décharger... Les graphes qui suivent montrent les impulsions délivrées à chacune des quatres leds D1 à D4. Le premier graphe pour la vue d'ensemble...

eclairage_leds_001_graphe_001a

... le second graphe pour une vue zoomée dans le temps, qui permet de mieux voir le décallage d'allumage entre chaque led.

eclairage_leds_001_graphe_001b

On voit bien sur ces graphes que les leds D1, D3 et D4 sont allumées plus souvent que la led D2, qui reçoit une seule impulsion d'allumage quand les autres en ont reçu 20. C'est bien cette led D2 qui sera vue comme clignotante. La fréquence de clignotement pour les leds D1, D3 et D4 est voisine de 60 Hz, celle de la led D2 est de l'ordre de 3 Hz (trois flashes par secondes).

Remarque : oh, je sais bien ce qu'on va me dire : "La consommation des moteurs est bien supérieure à celle des leds, c'est vraiment chercher midi à quatorze heures." Et je suis tout à fait d'accord. Et si ce petit exercice, s'il n'est pas vraiment indispensable dans le cas qui nous concerne, pouvait servir ailleurs ? C'est bien d'en parler, non ?

Courant dans les LED
Tiens, un autre avantage d'allumer les leds de façon séquentielle : une seule résistance commune est nécessaire pour limiter le courant qui les traverse. Utiliser une seule résistance pour allumer en même temps des leds de natures différentes (avec des tensions nominales de fonctionnement différentes) est en effet impossible, la led possédant la tension de seuil la plus faible s'allume et empêche les autres de s'allumer correctement (détails page Alimentation d'une led). Cette méthode de résistance unique est donc possible dans notre cas (toutes les leds s'allument bien), mais elle ne permet pas de définir de façon individuelle un courant donné pour chacune des leds. En d'autres termes, la valeur de la résistance R1 de limitation de courant doit être choisie de telle sorte que la luminosité de l'ensemble des leds conviennent à votre besoin (la valeur donnée ici à R1 est un bon point de départ, que vous pouvez ajuster). Pour information, les sorties du PIC ne peuvent débiter ou absorber un courant supérieur à 25 mA.

Polarité des signaux de commande
Il ne vous aura sans doute pas échappé que les signaux de commande sont "positifs" au repos et "négatifs" en activité. C'est un choix arbitraire, lié à l'orientation des leds qui se voient montées en anode commune (point commun des leds relié au +V alim). Il est tout à fait possible d'orienter les leds dans l'autre sens pour un câblage en cathode commune, avec des signaux de commande en logique positive, sachant que les sorties du PIC sont capables de fournir autant de courant qu'elles sont capables d'en drainer (25 mA max dans les deux sens). Si vous préférez opérer en logique positive, vous savez ce qu'il vous reste à faire avec le code source...

Alimentation
Assurée par l'accu lipo en place dans l'engin, dont la tension de service nominale est de 4,2 V quand l'accu est chargé, et de 3,2 V en fin de décharge. La fonction de reset automatique du PIC sur chute de tension a été désactivée, le fonctionnement du PIC est assuré entre +2 V et +5 V.

Détection baisse tension
L'idée est de consommer moins de courant quand la tension de l'accu faiblit, en coupant les vivres aux leds qui apparaissent allumées en permanence, et en ne laissant en fonction que les leds clignotantes. Il existe plusieurs moyens de réaliser un détecteur de seuil de tension, avec une tension de référence bien stable et un comparateur de tension. Mais ici, la place et le poids étant compté, il fallait trouver simple (nombre minimal de composants) et si possible efficace. Je me suis demandé si la tension de basculement état haut vers état bas des entrées du PIC était toujours une fonction proportionnelle de la tension d'alimentation générale du PIC. L'idée d'utiliser l'entrée GP3 pour détecter la chute de tension, avec une simple résistance associée à une paire de diodes silicium provoquant une chute de tension "contrôlée", me trottait dans la tête et il fallait que j'essaie. J'ai donc écrit un petit programme de test tout bête qui regardait en permanence l'état logique de l'entrée GP3, et qui allumait une led rouge s'il s'agissait d'un état haut et qui allumait une led verte s'il s'agissait d'un état bas. Puis j'ai fait varier la tension d'alimentation de +5.0 V à +3.0 V pour voir à partir de quelle tension on avait basculement. Et hop, basculement à partir de 3.6 V, cela me convient très bien ! Le programme du PIC tiens donc compte de l'état logique de la broche GP3 pour l'allumage des leds. Si la tension d'alim générale est inférieure à 3.6 V, les leds qui s'allument normalement en mode "continu" s'éteignent alors, et seules les leds clignotantes persistent à fonctionner.

Logiciel

Code source (MikroPascal Pro V2.50) et fichier binaire compilé (*.hex) disponibles dans l'archive dont le lien suit. Le logiciel du PIC est d'une simplicité déconcertante, ce dont vous pourrez rapidement vous convaincre en ouvrant le fichier de code source.
Attention, code uniquement simulé, pas encore testé en grandeur nature chez moi !

Eclairage led 001 - 12F675 - (20/07/2009)
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é, mais la simplicité du circuit ne doit pas vous faire hésiter une seconde à envisager un montage en l'air ou sur plaque d'expérimentation.

Historique

20/07/2009
- Première mise à disposition.