Un phototransistor est un capteur de lumière qui va récupérer le niveau de lumière ambiant et le restituer sous forme de signal électrique. C’est un semi-conducteur qui se trouve souvent en deux ou trois broches. Le phototransistor permet de capter de la lumière grâce à un transistor.
Dès qu’une lumière IR (infrarouge), visible ou UV (ultraviolet) est détectée, le dispositif modifie le flux de courant circulant entre un émetteur et un collecteur, en fonction de la lumière et du niveau d’intensité reçus.
Il deux autre type de capteur lumineux :
Comme on peut voir le symbole corresponds à celui du transistor avec deux flèches en plus qui rentre vers celui-ci. Les deux flèches indiquent que la lumière est captée par le transistor et convertit en tension.
On va maintenant voir comment afficher la valeur de la tension relevée par le phototransistor. On l’affichera sur le moniteur série.
int phototransistor_broche = A0; // Broche de la phototransistor
int Luminosite = 0; // permet de récupére la luminosité de la pièce
void setup() {
Serial.begin(9600); // On initialise le moniteur série
}
void loop() {
Luminosite = analogRead(phototransistor_broche); // On lit la valeur du phototra
Serial.print("La valeur de la phototransistor est :"); // On affiche la valeur sur le moniteur série
Serial.println(Luminosite);
delay(150); // On fait une pause entre deux mesures
}
Voici le résultat sur le moniteur série :
On va maintenant voir comment faire un détecteur d’obscurité. Pour cela on va utiliser une phototransistor et à partir d’un certain seuil d’obscurité que l’on va déterminer, la carte arduino va allumer une led.
Voici le schéma du circuit :
int broche_led = 9; // Broche de la led
int phototransistor_broche = A0; // Broche de la phototransistor
int Luminosite = 0; // permet de récupére la luminosité de la pièce
void setup() {
pinMode(broche_led , OUTPUT);// On assigne la led en sortie
}
void loop() {
Luminosite = analogRead(phototransistor_broche); // On lit la valeur du phototra
Luminosite = map(Luminosite, 0, 1023, 255, 0); // On change les bornes de la variable afin de l'adapter à la led
analogWrite(broche_led,Luminosite);//On assigne la valeur PWM à la led
}
On va maintenant voir comment modifier la position d’un servomoteur en fonction de la luminosité captée par le phototransistor. Cela peut vous servir pour modifier la position d’un panneau solaire en fonction du soleil par exemple.
#include <Servo.h> // Librairie du servomoteur
int phototransistor = A0;// La broche du phototransistor
int Valeur_phototransistor = 0; // La valeur du phototransistor
Servo Servomoteur; // Le servomoteur
void setup() {
pinMode(phototransistor, INPUT); // On initialise du phototransistor comme une entrée pour récupérere les valeurs de celle-ci
Servomoteur.attach(9); // On initalise le servomoteur sur la borne 9.
}
void loop() {
Valeur_phototransistor = analogRead(phototransistor); // On récupère la mesure du phototransistor
Valeur_phototransistor = map(Valeur_phototransistor, 0,13,0,180); // On convertit cette valeur entre 0V et 5V pour correspondre à la led
Servomoteur.write(Valeur_phototransistor); // On assigne la valeur au servomoteur
delay(300);// pause entre chaque mesure
}