Qu'est-ce qu'un phototransistor ? Comment le faire fonctionner ?

Introduction

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 :

  • la photorésistance qui est une résistance dont la valeur change en fonction de la lumière qu’elle reçoit. 
  • le capteur photodiode  qui joue le même role que le phototransistor mais qui comporte une diode à la place du transistor. Néanmoins le phototransistor est plus sensible qu’une photodiode, donc plus précis.
plus

Avantage du phototransistor

  •  Pour le même taux de lumière, le phototransisitor produira plus de courant qu’une photodiode.
  • Par rapport à une photodiode, le temps de réponse d’un phototransistor est plus rapide.
  • Les photo-transistors peut insensibles au bruit sonore.
  • Les photo-transistors sont moins coûteux que la photodiode  et la photorésistance.
moins

Inconvénient du phototransistor

  • L’efficacité du phototransistor diminue avec les interférences du champ électromagnétique.
  • Les phototransistors ne fonctionnent pas correctement à fréquence élevée.

Le symbole de la phototransistor

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.

Afficher valeur phototransistor sur le moniteur série

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 :

Détecteur d'obscurité

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
}

Suiveur solaire

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
}