Mise en oeuvre - Chapitre 2 (nouvelle version)

Bonjour,
Aujourd'hui nous allons apprendre à fabriquer un détecteur de luminosité avec seuil de fonctionnement et affichage.
Ce montage sera constitué d'un capteur de luminosité, de trois LEDs pour l'affichage, et d'un potentiomètre qui vous servira à fixer le seuil de fonctionnement. Plus clairement, quand la valeur mesurée à l'aide de la photorésistance sera inférieure à la valeur de consigne donnée par le potentiomètre, notre montage n'affichera rien sur les LEDs.
Nous aurons donc besoin d'un amplificateur opérationnel, qui jouera le rôle de comparateur entre le seuil fixé et la valeur lue sur la photorésistance.
- MATÉRIEL -
- Arduino Uno (x1)
- Photorésistance (x1)
- Résistance 1 KOhm (x2)
- Résistance 150 Ohms (x4)
- Résistance 10 KOhms (x1)
- Amplificateur Opérationnel LM358 (x1)
- LEDs (x3)
- Potentiomètre rotatif (x1)
- Breadboard (x2)
- SCHÉMA -
- CODE -
- EXPLICATIONS -
• La photorésistance
La photorésistance est un composant dont la résistance varie lorsque l'intensité lumineuse augmente.
On voit donc bien que si la résistance augmente, la tension aussi, et inversement. Or on récupère cette tension sur la pin A0 de l'Arduino, avec la fonction analogRead() qui transcrit l'information sous forme de nombre de 0 à 1023 (2^10 bits, 1024 valeurs) : 5V = 1023, 0V = 0, etc.
On peut utiliser telle quelle la valeur reçue mais pour cette fois, on va ré-étalonner les valeurs de manière à ce qu'une basse tension corresponde à une basse luminosité, et inversement, ceci grâce à la fonction map()
• L'amplificateur opérationnel
L'amplificateur opérationnel joue ici le rôle de comparateur. Il calcule la différence de tension entre ses deux entrées : si elle est positive (la valeur lue sur la photorésistance est supérieure au seuil fixé par le potentiomètre), la sortie passe à l'état HAUT (allumage des LEDs) ; si elle est négative, la sortie est à l'état BAS (extinction des LEDs).
Essayez de tourner le potentiomètre pour changer la valeur du seuil, vous verrez les LEDs s'éteindre ou s'allumer en fonction !
C'est tout pour cette fois ! J'espère que ce tutoriel vous aura plu, et bonne bidouille en attendant le prochain !
Aujourd'hui nous allons apprendre à fabriquer un détecteur de luminosité avec seuil de fonctionnement et affichage.
Ce montage sera constitué d'un capteur de luminosité, de trois LEDs pour l'affichage, et d'un potentiomètre qui vous servira à fixer le seuil de fonctionnement. Plus clairement, quand la valeur mesurée à l'aide de la photorésistance sera inférieure à la valeur de consigne donnée par le potentiomètre, notre montage n'affichera rien sur les LEDs.
Nous aurons donc besoin d'un amplificateur opérationnel, qui jouera le rôle de comparateur entre le seuil fixé et la valeur lue sur la photorésistance.
- MATÉRIEL -
- Arduino Uno (x1)
- Photorésistance (x1)
- Résistance 1 KOhm (x2)
- Résistance 150 Ohms (x4)
- Résistance 10 KOhms (x1)
- Amplificateur Opérationnel LM358 (x1)
- LEDs (x3)
- Potentiomètre rotatif (x1)
- Breadboard (x2)
- SCHÉMA -
- CODE -
- Code: Tout sélectionner
/*
Starter Kit - Chapitre 2 (nouvelle version)
Détecteur de luminosité avec affichage à LEDs et seuil de déclenchement.
*/
// Déclaration des pins auxquelles sont attachées les différents composants
#define photo 0 // photorésistance > A0
#define pot 1 // potentiomètre > A1
#define rouge 2 // LED rouge > D2
#define jaune 3 // LED jaune > D3
#define vert 4 // LED verte > D4
#define AOP 12 // sortie du comparateur > D12
// Déclaration des variables relatives à la photo-résistance
unsigned int luminosite = 0;
unsigned int lum;
// Déclaration du seuil déterminé par le potar
unsigned int seuil = 0;
void setup()
{
pinMode(rouge, OUTPUT); // Positionner les pins reliées aux LEDs en sortie
pinMode(jaune, OUTPUT);
pinMode(vert, OUTPUT);
pinMode(AOP,INPUT); // Positionner la pin en sortie du comparateur en entrée
}
void loop()
{
seuil = analogRead(pot);
luminosite = analogRead(photo); // Valeur reçue sur la photoresistance
lum = map(luminosite, 0, 1023, 1023, 0); // Ré-étalonnage
if(digitalRead(AOP) == LOW) // Si on est en dessous du seuil de détection fixé
{ // par le potentiometre circulaire, éteindre l'affichage
digitalWrite(rouge, LOW);
digitalWrite(jaune, LOW);
digitalWrite(vert, LOW);
}
else
{
digitalWrite(rouge, LOW); // RAZ affichage
digitalWrite(jaune, LOW);
digitalWrite(vert, LOW);
if (lum > 100) // allumage des LEDS progressivement en fonction
{ // de la luminosité (seuils à personnaliser si besoin)
digitalWrite(vert, HIGH);
if (lum > 300)
{
digitalWrite(jaune, HIGH);
if (lum > 600)
{
digitalWrite(rouge, HIGH);
}
}
}
}
delay(250); // Attendre 1/4 seconde avant de recommencer
}
- EXPLICATIONS -
• La photorésistance
La photorésistance est un composant dont la résistance varie lorsque l'intensité lumineuse augmente.
Loi d'Ohm a écrit:U = R x I, avec U : tension aux bornes du composant (V), R : résistance du composant (Ω), I : intensité du courant traversant le composant (A).
On voit donc bien que si la résistance augmente, la tension aussi, et inversement. Or on récupère cette tension sur la pin A0 de l'Arduino, avec la fonction analogRead() qui transcrit l'information sous forme de nombre de 0 à 1023 (2^10 bits, 1024 valeurs) : 5V = 1023, 0V = 0, etc.
On peut utiliser telle quelle la valeur reçue mais pour cette fois, on va ré-étalonner les valeurs de manière à ce qu'une basse tension corresponde à une basse luminosité, et inversement, ceci grâce à la fonction map()

• L'amplificateur opérationnel
L'amplificateur opérationnel joue ici le rôle de comparateur. Il calcule la différence de tension entre ses deux entrées : si elle est positive (la valeur lue sur la photorésistance est supérieure au seuil fixé par le potentiomètre), la sortie passe à l'état HAUT (allumage des LEDs) ; si elle est négative, la sortie est à l'état BAS (extinction des LEDs).
Essayez de tourner le potentiomètre pour changer la valeur du seuil, vous verrez les LEDs s'éteindre ou s'allumer en fonction !
C'est tout pour cette fois ! J'espère que ce tutoriel vous aura plu, et bonne bidouille en attendant le prochain !