Projet 4 - Veilleuse automatique
Présentation
Les veilleuses sont bien connues de tous les parents et rassurent les jeunes enfants lorsque l’heure du coucher arrive. Également appelé interrupteur crépusculaire, ce dispositif met en marche un éclairage lorsque la luminosité ambiante baisse et atteint un seuil de déclenchement, et inversement son extinction est provoquée par le levé du jour. C’est ce que nous allons réaliser avec ce quatrième projet.
1. Principe de fonctionnement
Grâce à une photorésistance, le montage sera capable de mesurer la luminosité ambiante. Lorsque celle-ci passera en dessous d’un certain seuil, une ampoule à LED sera alimentée afin d’éclairer doucement la pièce. La durée d’éclairage sera programmable mais dans tous les cas, si la luminosité au petit matin devient suffisante, l’ampoule sera éteinte.
2. Notions abordées
Nous aborderons l’utilisation d’un nouveau composant : la photorésistance. Nous verrons également l’usage et le calcul d’un pont diviseur de tension.
Matériel nécessaire
Le montage est principalement construit autour d’une photorésistance (ou LDR - Light Dependent Resistor) de la série GL dont nous allons détailler le fonctionnement.
Une LDR
Il nécessite également plusieurs autres éléments :
-
une plaque de prototypage (ou breadboard) ;
-
un transistor NPN 2N2222 ou similaire ;
-
un système d’éclairage LED sous 3,3 V ou 5 V (par exemple une ampoule 3 W ou une LED 1 W) ;
-
trois résistances : environ 500 Ohms, entre 10 et 100 kOhms et enfin 10-50 Ohms ;
-
des fils « Dupont » ;
-
un transformateur de 5 V délivrant 1000 mA afin d’alimenter le montage.
Pour la partie programmation, nous utilisons une carte Arduino Nano afin de contrôler les seuils de détection de la photorésistance, l’allumage et la temporisation de l’éclairage. Cet Arduino Nano sera alimenté grâce au transformateur listé ci-dessus.
Schéma et montage
Avant de décrire le schéma à proprement parler, voyons quel est le principe de fonctionnement de la photorésistance et comment l’utiliser.
1. La photorésistance (ou LDR)
La photorésistance est un composant électronique dont la résistance varie en fonction de la luminosité qu’il reçoit, peu importe que la source lumineuse soit naturelle comme le soleil ou qu’elle soit artificielle en provenance d’une lampe. C’est un composant à deux broches non polarisées, il n’y a donc pas de broche « plus » ou de broche « moins ». C’est-à-dire que, comme une résistance classique, la photorésistance n’a pas de sens de branchement. Elle est représentée sur les schémas grâce au symbole suivant :
Symbole de la LDR
Plus la luminosité augmente, plus sa résistance diminue. Et inversement, plus la luminosité baisse, plus sa résistance augmente. Malheureusement, comme l’illustre la figure suivante, la relation entre résistance et luminosité n’est pas proportionnelle.
Graphe de réponse d’une LDR
D’autres facteurs comme la température, ont également tendance à modifier la réponse de la LDR.
La photorésistance n’est donc pas d’une grande précision et ne permet pas de mesurer avec exactitude la luminosité reçue. En revanche, elle est suffisante pour déterminer s’il fait jour ou nuit. Mais comment choisir une LDR ?
La datasheet d’une LDR permet de connaître :
-
le voltage supporté, en général...
Programmation de l’Arduino
Le montage permet donc de mesurer la tension aux bornes de la photorésistance grâce à un pont diviseur, d’allumer ou d’éteindre la diode grâce à un transistor.
Il ne reste donc plus qu’à programmer l’Arduino pour manipuler tous ces éléments.
1. Les déclarations préliminaires
Comme d’habitude, la première étape est la déclaration des pins Arduino utilisées, ainsi qu’une variable globale nous permettant de mémoriser l’état allumé/éteint de la veilleuse (qui par défaut sera donc éteint).
#define PIN_TRANSISTOR 8
#define PIN_MESURE A0
bool flag = false;
Définissons également une temporisation, c’est-à-dire, une durée d’allumage (en secondes) de la veilleuse. Ici, elle est d’une heure, soit 3600 secondes :
#define TEMPO 3600
Il est également nécessaire de mémoriser dans une variable globale le moment où la veilleuse s’allume, afin de pouvoir calculer la durée de temporisation.
unsigned long debut;
2. La fonction setup()
La fonction de setup sera relativement courte cette fois, puisqu’elle va simplement initialiser les pins de l’Arduino :
pinMode(PIN_TRANSISTOR, OUTPUT);
digitalWrite(PIN_TRANSISTOR, LOW);
analogRead(PIN_MESURE);...
Améliorations possibles
Les fonctionnalités de ce circuit peuvent être améliorées de plusieurs manières.
1. Allumage progressif
Il est possible de moduler la puissance de l’éclairage selon la luminosité au lieu d’avoir un fonctionnement en « tout ou rien ». Plus la luminosité baisse, plus l’éclairage devient puissant. Comme souvent, il y a différentes manières d’effectuer cette modification, de la plus simple à la plus compliquée :
-
Commander non plus une, mais 3 ou 4 LED, qui s’allumeraient les unes après les autres à différents seuils.
-
Commander le transistor en amplification plutôt qu’en blocage/saturation.
-
Générer un signal PWM (Pulse Width Modulation - modulation par largeur d’impulsion) afin de moduler la durée d’alimentation de la LED.
2. Allumer un ruban de LED
Il est tout à fait possible d’installer en guise d’éclairage un ruban de LED, et même pourquoi pas, multicolore. En termes d’éclairage, les possibilités sont infinies, et cette veilleuse peut devenir un élément décoratif à part entière.
3. Corriger l’effet de seuil
Lorsqu’une limite, un seuil, est choisi afin de pouvoir y comparer d’autres valeurs et en déduire un traitement (dans...
Ressources supplémentaires
Quelques explications détaillées de la photorésistance :
https://fr.wikipedia.org/wiki/Photor%C3%A9sistance
Comment choisir une photorésistance :
https://wiki.mchobby.be/index.php?title=Photo-r%C3%A9sistance
Les différents capteurs de lumière :
https://www.eeca.eu/meilleur-capteur-de-lumiere/
Créer un luxmètre précis :
http://nagashur.com/blog/2013/06/21/mesurer-leclairement-lumineux-lux-avec-un-arduino/