Cours:ArduinoTemperature

De troyesGEII
Révision datée du 3 juillet 2024 à 15:18 par Bjacquot (discussion | contributions) (affichage sur leds couleur)
Aller à : navigation, rechercher

Mesure de température par CTN

Principe

La mesure d'une grandeur physique (température, pression, vitesse ...) nécessite l'utilisation d'un capteur. Il s'agit d'un composant dont le comportement varie en fonction de la valeur mesurée.


Parmi les capteurs de température, nous allons nous intéresser aux thermistances :

  • le préfixe thermi indique qu'il est sensible à la température
  • le suffixe stance indique qu'il s'agit d'une résistance
Une thermistance est un capteur dont la valeur de résistance dépend de la température

On distingue les thermistances :

  • CTN : la valeur de la résistance diminue lorsque la température augmente
  • CTP : la valeur de la résistance augmente lorsque la température augmente
Symbole du composant Valeur de la résistance en fct de la température pour une CTN
SymbolesCTNCTP.png CaracteristiqueCTN.png


Sur le shield arduino, nous utilisons une CTN


On constate sur la courbe précédente que la valeur de la CTN n'est pas linéaire en fonction de la température.

la mesure de température ou la compensation dans une grande variété d'applications.


Usage : Les thermistances sont utilisées pour

  • la mesure de température
  • détection de surchauffe
  • la compensation en température ( compensation de la variation de la caractéristique de composants lorsque la température change)


Exemple : note d’application


Utilisation : avec un pont diviseur

On place la CTN dans un pont diviseur (cf figure ci dessous).

Lorsque la température change :

  • la valeur (résistance) de la CTN change
  • donc la tension Vθ change
  • la mesure cette tension permet d'en déduire la valeur de la température.
DiviseurCTN.png
  • R1 résistance fixe
  • Rθ résistance variable en fonction de la température
  • Vθ tension image de la température
  • Vcc tension d’alimentation du montage
  • gnd tension de référence (masse 0V)


Analyse

Nous allons exprimer les différentes relations et compléter progressivement une feuille de calcul sur un tableur.

  • Créer une feuille de calcul ( par ex : https://docs.google.com/spreadsheets/create?hl=fr )
    • mettre une colonne température exprimée en °C (de -30° à 100°C par ex)
    • ajouter une 2nde colonne en y calculant la température exprimée en K
  • on peut alors calculer la valeur de Rθ en fonction de la température dans une 3ème colonne
    • EquationRteta.png
    • R25°C = 8200Ω, β = 3480 K, T25°C = 273+25 , avec θ en K
    • le tracé de la courbe (Rθ en fonction de θ ) permet de vérifier qu'il s'agit bien d'une CTN
  • ajout de Vθ
    • exprimer la valeur de Vθ en fonction de Rθ
    • on trouvera la valeur de R1 sur le schéma de la carte
    • ajouter une colonne avec Vθ sur votre feuille de calcul
  • mesure de Vθ à l'aide du CAN
    • SymbolCAN.png
      https://fr.wikipedia.org/wiki/Convertisseur_analogique-num%C3%A9rique
    • un CAN convertit linéairement une tension (pour nous entre 0 et 5V ) en un nombre ( pour nous entre 0 et 1023)
    • on repère les broches utilisables pour le CAN sur les cartes arduino par le préfixe A : A0|A1|A2 ...
    • ajouter la colonne donnant la valeur du CAN en fonction de Vθ
    • de façon général N=Vθ/q avec q=Vref/(2n-1) le quantum et n la résolution du CAN (8 ou 10 bits)


Programmation

SchemaShieldNano.png

Nous avons exploré dans les Tps précédents les e/s binaires. Ici nous nous intéresserons aux entrées analogiques et utiliserons la fonction analogRead() permettant de lire l'état d'une des entrées analogiques.

Vous utiliserez la liaison série afin de vérifier le bon fonctionnement de votre programme


afficher la valeur du can sur liaison série

L'exemple suivant permet de lire la valeur du Convertisseur Analogique Numérique (CAN) sur la broche A2.

// the setup routine runs once when you press reset:
void setup()
{
  // initialize serial communication at 9600 bits per second:
  Serial.begin(9600);
}
// the loop routine runs over and over again forever:
void loop()
{
  // read the input on analog pin 2:
  int sensorValue = analogRead(A2);
  // print out the value you read:
  Serial.println(sensorValue);
}

Question.jpg Modifier le programme pour afficher la valeur sur la broche qui nous intéresse !

Remarque :

  • ça peut être intéressant de ralentir un peu tout ça !
  • ajouter un peu de texte, cf Serial.print() (ou Serial.println() pour un retour à la ligne après le message)

Remontons à la température

On reprend alors les calculs en inversant les équations et en affichant les valeurs succseives sur la liaison série :

  • calculer et afficher Vθ sur la liaison série
  • on peut ensuite calculer la valeur de Rθ
  • puis la valeur de la température en K
  • et enfin la valeur de la température en °C

plage de température

on souhaite avoir une indication visuelle de la température à l'aide des 2 leds :

  • si T<0°C, on allume la led de gauche
  • si 0°C<T<10°C on allume la led de droite
  • si T>10°C on allume les 2 leds