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.
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.
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...
... le second graphe pour une vue zoomée dans le temps, qui
permet de mieux voir le décallage d'allumage entre chaque led.
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.