• Aucun résultat trouvé

Première partie

Dans le document III. Les Transistors (enfin) 136 (Page 124-130)

Contenu masqué n°2

35. Les Diodes, suite

36.1. Arduinomètre : Thermomètre avec diode pour sonde

36.1.1. Première partie

Nous avons abordé le sujet des diodes du point de vue de leur rôle principal, c’est-à-dire de ne laisser passer le courant que dans un sens. Il existe plus de types de diodes qu’il y a de jours dans l’année : des diodes pour des tensions élevées, des diodes qui supportent les intensités élevées, des diodes rapides et j’en passe... Comme toujours il faut chercher la documentation technique pour ’sa’ diode afin de savoir comment l’utiliser.

Et dans cette documentation on trouve parfois des informations intéressantes... Nous avons déjà parlé beaucoup de la chute de tension pour les LEDs – or une LED est quand-même une diode.

Cette chute de tension est de l’ordre de 0,5 à 0,7v pour la plupart des diodes. Mais si on creuse dans la documentation, les fabricants avouent parfois que tout n’est pas aussi simple.

Pour beaucoup de diodes, la chute de tension n’est pas fixe – et peut varier en fonction de plusieurs paramètres. Regardons cette courbe, tirée de la documentation 1N4148 de chez Fairchild Semiconductors :

Figure 36.4. – Chute de tension en fonction du courant et de la température Cette courbe nous renseigne sur deux phénomènes :

— la chute de tension varie en fonction de l’intensité (dans des limites bien précises) ;

la chute de tension varie en fonction de la température de la diode.

La fonction Température/Intensité n’est pas très évidente avec cette courbe, mais si on prend quelques valeurs en suivant la ligne verticale qui correspond à une intensité de 500 uA, nous avons ceci :

Figure 36.5. – Chute de tension en fonction de la température C’est une fonction assez linéaire d’environ -2mV (-0,002v) par °C.

Donc, il devrait être possible de fabriquer un thermomètre Arduino avec une diode pour sonde. 

Comment faire ?

Pour les plus impatients d’entre vous on va tout de suite à l’essentiel : 36.1.1.0.1. Le schéma

II. Modélisation

Figure 36.6. – Branchement de la diode C’est tout ? Eh oui !

D’après la courbe ci-dessous on voit qu’il faut une faible intensité pour ’voir’ le phénomène.

Dans ce montage, l’intensité à travers la diode, c’est combien ? (réponse en bas)

À cette faible intensité la diode ne risque pas de se chauffer elle-même et on peut lire la chute de tension directement par l’Arduino.

Mais il reste un problème de taille : comment calibrer ce montage ? Deux possibilités...

1. Calibration avec au moins deux températures connues (et donc un autre thermomètre) ; 2. Approximation et triche...

(Moi, j’adore la deuxième !)

On va les aborder dans le désordre, parce que l’option 2 est rapide et facile à mettre en œuvre.

36.1.1.0.2. Approximation et triche Il nous faut au moins un point de repère – une valeur connue de chute de tension pour une température donnée. À partir d’un point il est possible de travailler en ’extrapolant’ (on va faire comme si la variation de chute de tension est exactement -2mV/°C).  C’est de l’approximation.

Si on regarde à nouveau la courbe de chute de tension, on voit que cette chute de tension est aussi fonction de l’intensité. Cela veut dire qu’on peut varier la valeur de tension ’lue’ par l’Arduino simplement en variant l’intensité qui traverse la diode. Chouette ! On sait maintenant (car nous avons avalé la loi d’ohm en long et en travers) qu’on peut varier l’intensité en variant la résistance en série. Si on remplaçait la résistance de 10 kOhms par une résistance variable (potentiomètre) ? Comme ceci :

Figure 36.7. – La diode en série avec un potentiomètre

?

Encore une résistance fixe en série ! Pourquoi ?

Si on ne mettait qu’une résistance variable, et si on réglait cette résistance à bout de course cotée +5v notre pauvre diode se trouverait branchée directement entre le +5v et 0V/GND – sans rien pour limiter l’intensité. Elle ne durerait pas longtemps comme ça. J’ai mal juste en l’imaginant !

Donc la résistance de 4,7 kOhms est là pour protéger notre diode. L’intensité maximum sera de combien d’ampères ? (réponse en bas)

Maintenant il suffit de régler la résistance variable jusqu’à avoir une chute de tension bien précise.

Exemple : regardez la 1ère courbe : une valeur de chute de tension avec l’intensité d’environ 1mA et une température d’environ 20° c’est 600mV.

Voici notre montage sur une platine :

Figure 36.8. – Montage de notre capteur de température fait maison

On va se mettre dans une pièce où on sait que la température est de 20° (le salon), on va laisser notre Arduino et la platine d’expérimentation s’acclimater pendant un quart d’heure (sur la table du salon : ça fait réagir la famille et donne un sujet de discussion) et on va régler la résistance variable pour que la valeur retournée par analogRead() corresponde à 600mV.

Voici un bout de logiciel pour le réglage : 1 /*

2 Montage pour faire un thermomètre avec une diode pour sonde 3 Premier partie : réglage avec potentiomètre

4 La diode est montée en sens 'conduction' (cathode branche sur GND)

II. Modélisation

5 avec une résistance fixe de 4.7k et une résistance variable de 6 préférence de 10k en serie.

78 On cherche à régler le montage pour que le résultat de analogRead();

9 donne 558 (environ 600mV) a 20°C 1011 Avril 2014 MOOC Fabrication Numérique 1213 */

14 // Définition des broches

15 #define Diode A0 // broche de la diode 16 #define LED 13 // broche de la led 1718 // variables:

19 int DiodeValue = 0; // la valeur de la diode 20 float Result = 0.0; // pour les calculs 21

22 void setup() {

23 pinMode(LED, OUTPUT);

24 Serial.begin(9600);

25 // Réference maximum pour le convertisseur ADC = 1,1v 26 // au lieu des 5v par défaut.

27 analogReference(INTERNAL);

28 }

2930 void loop() {

31 DiodeValue = analogRead(Diode); // Lire la valeur 32 Serial.print("Valeur : ");

33 Serial.print(DiodeValue);

34 // allumer la LED si la valeur est 558 35 if (DiodeValue == 558 ) {

36 digitalWrite(LED, HIGH); } 37 else {

38 digitalWrite(LED, LOW);

39 }

40 // conversion de la valeur en tension. 1,075 = 1,1v/1023 41 Result = DiodeValue * 1.075;

42 Serial.print("\t environ ");

43 Serial.print(Result);

44 Serial.println(" mV");

45 delay(2000);

46 }

Quelques détails sur ce code : Les nouvelles instructions :

— analogReference(INTERNAL) : Configure la tension de référence utilisée avec les entrées analogiques.

36.1.1.0.3. Tension de référence La chute de tension que nous voudrions mesurer est d’environ un demi-volt, et toujours inférieure à 1V (c’est le fabricant qui nous le dit). Par défaut, le Convertisseur Analogique -> Numérique (CAN ou ADC en anglais) de l’Arduino nous donne une valeur de 1023 pour une tension en entrée de 5v. Cela veut dire qu’une valeur de 1 dans cette échelle équivaut ( 5/1023 ) = 0,0049v ou presque 5mV. La chute de tension que nous allons mesurer varie de 2mV/°C et donc la résolution de lecture sera de presque +/- 3°C...

Mais l’Arduino possède des talents cachés... On peut lui demander, au lieu des 5v par défaut, de se référer à une valeur de tension de 1,1v avec la fonction analogReference(INTERNAL) Maintenant une valeur de 1023 retournée paranalogRead() correspond à 1,1v. Ce qui nous donne une résolution de lecture de 10231.1 = 0.001075V : moins de 2mV. C’est beaucoup mieux ! 36.1.1.0.4. Suite(s) Dans la deuxième partie on va fabriquer une sonde flexible et étanche afin de pouvoir mesurer la température dans des conditions contrôlées, mais aussi afin de faciliter l’étalonnage pour augmenter la fiabilité et la précision.

En attendant, réfléchir à comment convertir notre valeur de tension en valeur de température...

— Réponse 1 : I = UR = 10000Ω5V = 0.5mA (ou 500 uA si vous préférez...)

— Réponse 2 : 4700Ω5V = 1.06mA Merci à Glenn Smith pour ce cours !

36.2. Travaux pratiques

Dans le document III. Les Transistors (enfin) 136 (Page 124-130)

Documents relatifs