Bonjour.
Nous continuons le cours, comprendre les microcontrôleurs.
Nous avons déjà parlé de capteurs et de nombreuses
familles qu'il existe, qu'on peut brancher sur des microcontrôleurs.
Aujourd'hui, nous allons étudier en détail un
capteur et regarder comment le mettre en œuvre.
Quelques généralités sur la terminologie, tout d'abord.
On parle de transducteur lorsqu'on est en face d'un composant qui
fournit un signal de sortie dans une grandeur physique donnée,
en réponse à une autre grandeur physique qui est le signal d'entrée.
On voit, ici, qu'on a une grandeur physique, elle passe par
le transducteur, et il en ressort une autre grandeur physique, mais
ces grandeurs vont être liées. On utilise les termes de
capteurs et d'actuateurs lorsque la grandeur physique
de sortie, pour le capteur, est une grandeur électrique,
et lorsque la grandeur physique d'entrée, pour un actuateur,
est une grandeur électrique.
Et on comprend bien que autour
des microcontrôleurs, on va brancher des capteurs.
Il sera possible, alors, de lire
une grandeur physique, on obtiendra son équivalent
électrique, et des actuateurs, à partir
d'une grandeur électrique fournie par le microcontrôleur.
On va pouvoir retourner à une grandeur physique.
Tout ça a l'air
un peu compliqué, mais un pou, un bouton-poussoir, c'est un capteur.
Un interrupteur de fin de course, comme on en a déjà vus, c'est un capteur.
Une LDR, cette resistance
qui varie selon l'intensité lumineuse, c'est aussi un capteur.
L'intensité lumineuse est la grandeur physique d'entrée,
la résistance électrique est la grandeur de sortie.
Pour les actuateurs, et bien, une simple diode lumineuse, c'est aussi un actuateur.
On a une tension électrique, ou un courant
électrique qui permet d'avoir une luminosité en sortie.
Un moteur, c'est aussi un actuateur. Nous allons nous intéresser
aujourd'hui, spécifiquement, à un capteur de distance
qui se présente de la manière suivante.
On y trouve une diode lumineuse et un photo-transistor.
On les reconnaît parce que la diode
lumineuse a un boîtier transparent, alors que le
transistor a un boîtier qui n'est pas
tout à fait transparent, qui est légèrement gris.
On voit
que ces deux composants sont mis parallèlement l'un
à l'autre, mais ils ne se voient pas, et on comprend
bien que la diode lumineuse va émettre une certaine
lumière et le capteur va recevoir une certaine lumière.
Ce schéma-là montre le brochage en regardant
le capteur depuis l'arrière, et on voit qu'il y a bien une diode lumineuse
anode, cathode, et un photo-transistor avec son
collecteur et son émetteur. Qu'est-ce qu'un photo-transistor?
C'est un transistor qui apparemment n'a pas de base.
Il a bien le collecteur et l'émetteur, et vous vous souvenez que on peut décrire
le fonctionnement d'un transistor en disant, la résistance entre le collecteur
et l'émetteur va diminuer s'il y a un courant dans la base.
Or, ici, il n'y a pas de courant dans la base, mais c'est la lumière incidente, les
photons qui vont exciter ce transistor et qui
joueront en quelque sorte le même rôle que le
courant de base.
Si la lumière est intense, la résistance va diminuer.
Le courant pourra facilement passer entre le collecteur et l'émetteur.
S'il n'y a pas de lumière, très peu
de courant pourra passer entre le collecteur et l'émetteur.
Une petite remarque concernant cette diode lumineuse qui se trouve, ici.
Elle émet de la lumière
mais nous ne pouvons pas la voir, il s'agit d'une LED infrarouge.
Ça correspond donc à des longueurs d'ondes plus grandes que la lumière visible.
Vous me direz que c'est un petit peu ennuyeux, parce que c'est
difficile de savoir si elle marche ou si elle ne marche pas.
Et bien, il existe une solution très
simple, c'est de prendre un appareil de photo.
Par exemple, celui qu'on trouve
dans un téléphone portable, et vous verrez que
cet appareil de photo voit parfaitement bien la
lumière qui provient de ce capteur infrarouge, on
la voit sous une forme légèrement violette, généralement.
Comment faire pour mettre en œuvre ce dispositif avec un microcontrôleur?
Pour la LED, c'est évidemment très simple.
C'est le schéma traditionnel : une résistance
de limitation, notre LED en série. On va calculer la valeur de la résistance,
de telle manière qu'un courant de l'ordre de dix milliampères puisse fonctionner.
L'intérêt de l'avoir reliée sur une patte du
microcontrôleur, c'est qu'on va pouvoir allumer cette diode lumineuse
lorsqu'on en a besoin et l'éteindre lorsqu'on ne l'utilise
plus, ce qui va réduire la consommation du système.
Pour le photo-transistor,
ça semble un petit peu plus compliqué.
Il ne s'agit pas d'une mesure tout ou rien, il
s'agit d'une mesure qui varie,
la résistance de notre photo-transistor varie.
On aurait pu mettre un diviseur de tension et chercher à utiliser
une entrée analogique d'un microcontrôleur capable de mesurer, donc, une valeur,
par exemple, entre zéro et trois volts.
Ici, on a utilisé une technique très différente.
On a curieusement mis un condensateur entre le collecteur et l'émetteur,
donc, entre la patte du microcontrôleur qui fera la mesure et la masse.
Pourquoi donc ce condensateur? Peut-être vous souvenez-vous
de cours d'électricité où on vous a parlé
de la décharge d'un condensateur à travers une résistance.
C'est l'occasion de vous poser la question.
Quelle est la forme de la courbe
de décharge du condensateur à travers la résistance?
Est-ce une droite, est-ce une
exponentielle décroissante, ou est-ce un escalier?
Alors,
la réponse, c'est que c'est bien une exponentielle décroissante.
Dans notre montage, le condensateur est fixe
mais la résistance varie, puisqu'il s'agit du photo-transistor.
On va donc avoir une décharge relativement rapide s'il y a beaucoup de lumière
sur le photo-transistor, une décharge plus lente si il y a peu de lumière.
Comment faire pour mesurer, en
quelque sorte, ce signal en décroissance exponentielle?
Et bien, une des manières, c'est simplement
de le lire avec l'entrée du microcontrôleur.
Un microcontrôleur, si la valeur est
supérieure à une tension de seuil, qui est généralement à peu près
la moitié de la tension d'alimentation, le système rend une valeur à un.
Si on est en-dessous de cette valeur, c'est une valeur zéro qu'on rend.
Donc, si j'applique le scénario suivant, je
charge la capacité, je la laisse se décharger.
Je vais
obtenir un signal sur l'entrée qui va passer à zéro à un instant donné,
et cet instant varie selon la résistance de notre photo-transistor,
par conséquent, selon la lumière incidente sur le photo-transistor.
C'est intéressant de signaler qu'on a fait une mesure doublement indirecte.
La distance qu'on souhaitait mesurer
a été transformée en intensité lumineuse; plus l'objet
est proche, plus il va renvoyer une luminosité importante.
On va ensuite, passer de l'intensité lumineuse à la résistance
électrique grâce au photo-transistor, et ensuite, on va passer
de la résistance électrique à un temps de décharge du condensateur
grâce à notre montage utilisant le condensateur et le photo-transistor.
Et il se trouve qu'on sait parfaitement bien mesurer un temps.
On l'a déjà vu, on pourra appliquer la méthode.
Essayons d'écrire cette procédure qui va faire cette mesure de distance.
J'ai commencé par définir les pattes que je vais utiliser.
J'ai utilisé
les pattes zéro et un du port P un, et
il est nécessaire de spécifier le out, le dir et le
in, puisque dans le cas de ce montage, nous alons bien
utiliser tantôt cette patte en sortie, tantôt cette patte en entrée.
Voilà la procédure elle-même, elle va nous rendre une distance.
Ici, return distance est une variable locale qui
a ce nom-là, qui est initialisée à zéro.
Il va falloir commencer par mettre la patte en
sortie, puis la mettre à un pour charger le condensateur.
On attend un petit moment pour être sûr qu'il est chargé.
Ensuite, cette même patte, on va la mettre
en entrée, en agissant sur le dir. De la même manière, on va agir
sur le dir de la LED, de telle manière que la LED infrarouge soit en sortie.
On va, ici, l'allumer, et on est prêt pour la boucle de mesure.
On a décidé d'obtenir une valeur sur huit bits,
on va donc faire 255 lectures pour que le maximum
soit bien 255 et non pas 256 qui n'existerait pas sur un nombre
de huit bits, donc, de zéro à 254. J'attends
un certain temps pour cadencer cette boucle,
et ensuite si on est encore dans la situation
où le bit du capteur est à un, on incrémente
distance, sinon on ne l'incrémente pas. On va donc, finalement, avoir à la fin
le résultat, dans cette variable distance. Et ça fonctionne.
Ici, j'ai réalisé un petit montage avec un plaque d'expérimentation.
Vous reconnaissez un processeur; on a utilisé, ici, le modèle à 14 pattes.
Dans notre cas,
les boutons ne sont pas utilisés.
Voilà nos deux capteurs de distance, et
je vous propose de regarder la vidéo suivante.