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. Est-ce que vous avez vu ce qui s'est passé sur cette vidéo? Lorsque je tournais ma main au-dessus de mon montage, dans un sens, c'est la lampe verte qui s'allumait, et lorsque je tournais dans l'autre sens, c'est la lampe rouge qui s'allumait. Je ne vais pas vous donner le programme qui permet de réaliser cela, à vous d'essayer de réfléchir, à vous de le réaliser si vous pouvez. Bon travail.