Broches du TMP36

Broches du TMP36

Aujourd’hui, nous nous pencherons sur l’utilisation d’une sode de température TMP36 sur un Arduino.

Pour le projet de station météo “home made”, il nous faut des capteurs. Nous allons commencer par un capteur très simple, économique, et facile à utiliser avec le TMP36.

Branchement

En fait, ce capteur est tellement simple, que ce billet risque d’être très court! L’image de gauche donne même toutes les informations nécessaires.
Pour lire ce capteur, il faut une entrée analogique. Sur un Arduino, ce seront les broches A0 à A5. Sur un Raspberry Pi, il faudra utiliser un MCP3008 ou un autre convertisseur analogique vers numérique.

Ce capteur donne la température de -50 à 125°C, et est alimenté via du courant continu entre 2.7V et 5.5V pour une consommation de 0.05mA. Ce n’est donc pas ce capteur qui videra les batteries de votre montage.

Dans la forme que j’ai utilisée, il y a un coté arrondi, et un coté plat. Si le coté plat est vers vous, alors la broche de gauche ira sur le +5V de votre Arduino, ou sur le +3.3V du Raspberry Pi. La broche centrale ira sur votre entrée analogique, par exemple le A0 du Arduino, ou une broche d’entrée du MCP3008 connecté à votre Raspberry Pi. Enfin, la broche de droite sera connectée à la masse (0V) de votre circuit.

Et voila! Le branchement est fini!

Programme

Quand au code, c’est très simple : il suffit de lire la tension  retournée par la broche centrale, et de calculer la correspondance en °C. Voici un exemple de code Arduino permettant de lire la température, et de l’afficher dans le moniteur série: voici un premier programme lisant une valeur toutes les 100ms, puis affichant cette valeur.

Ici, nous afficherons la température toutes les 100ms. Si vous essayez cet exemple, vous vous rendrez compte qu’il y a des variations sur la valeur retournée. Et celles ci peuvent être assez importantes. Pour résoudre ce problème, nous allons lisser les valeurs en faisant la moyenne de plusieurs mesures (cliquez ici pour voir la source). Pour cela, il suffira d’utiliser la fonction readAvgTemp(int pin, int waitDelay, int count) que je vous fournis dans le code. Le premier paramètre est la broche analogique sur laquelle vous avez branché le TMP36, le second est le délai entre deux mesures successives, et le troisième le nombre de mesures. Par exemple, readAvgTemp(A0, 1,100) retournera la moyenne de 100 mesures faites à 1ms d’écart. L’exécution prendra donc logiquement 100ms au total. Plus le nombre de mesures sera élevé, plus la valeur sera stable. Bien sur, si vous prenez des mesures sur 5 minutes, vous ne saisirez pas les variations rapides de température. En général les variations de températures prennent au moins quelques secondes pour faire effet.

Tous les codes sources sont sur le GitHub du projet Milapli.

Si le Github est inaccessible, voici le premier code :

int tempPin=A0;

float readTemp(int pin)

{

float bv=analogRead(pin);

float mv=bv*5/1024.0;

float temperatureC = (mv – 0.5) * 100 ;

return temperatureC;

}

float readAvgTemp(int pin, int waitDelay, int count)

{

int k=0;

float sum=0.0;

for(k=0;k<count;k++)

{

sum=sum + readTemp(pin);

delay(waitDelay);

}

float avg=sum/(float)count;

return avg;

}

void setup()

{

Serial.begin(9600);

}

void loop()

{

Serial.print(“Temperature : “);

Serial.println(readTemp(tempPin));

delay(100);

}

Réseaux sociaux