Table des matières

Régulation du système de refroidissement

Choix du système de mesure

La plaque de refroidissement se compose de 16 modules pelletier. Afin de garder une température homogène sur l'ensemble de la surface, chaque module doit être asservie sur la même température. Pour cela nous avons besoin de 16 points de mesure, 1 sur chaque module pelletier.

Pour mesurer une température il existe beaucoup de capteurs différents, mais pour notre application nous avons choisis d'utiliser des thermistances. Une thermistance est une résistance dont la valeur varie en fonction de la température. Comme il nous fallait un capteur petit et bien en contact avec la plaque de cuivre, nous avons choisis une thermistance cms de taille 0805 : MURATA NCP21WB473J03RA THERMISTANCE CTN 47KOHM 5% 0805 datasheet

La datasheet nous donne la plage de température du composant : -40°C à 125°C

En pratique, la plage de température qui nous intéresse est -40°C (1743.085kΩ) à 25°C (47.000kΩ)

Lecture de la température avec un arduino méga

L'arduino méga dispose de 16 entrées analogique, ce qui est juste assez pour lire nos valeurs de température. Pour mesurer la valeur de la résistance, nous devons d'abord mesurer la tension à ses bornes. Pour cela on utilise un diviseur de tension.

Dans notre cas :

U2 = U*(R2/R1+R2)

Ce qui veut dire que l'on veut que le ratio (R2/R1+R2) soit proche de 1 quand la température atteint les -40°C et proche de 0 quand la température atteint les 25°C. Donc on choisit R1=174kΩ.

“Validation” du procédé : https://docs.google.com/spreadsheets/d/16jfbhUxjG8zpAMmwWLcatincFUO-LKYWzyxC279tAF4/edit#gid=0

#define KEL_TO_CEL(x) (x-273.15)
 
#define B 3864.173306
#define T0 298.15
#define R0 47000.0
#define R1 174000.0
 
#define NB_CTN 8
float T[NB_CTN];
 
void setup() {
  Serial.begin(9600);
}
 
void loop() {
  for (int i=0 ; i<NB_CTN ; i++) {
    float U = analogRead(i) / 1023.0; // Take 100ms
    float R = U*R1 / (1.0-U);
    T[i] = 1.0 / (log(R/R0) / B + 1.0/T0);
  }
 
  for (int i=0 ; i<NB_CTN ; i++) {
    Serial.print(KEL_TO_CEL(T[i]));
    Serial.print(" ");  
  }
  Serial.println();
 
  delay(1000);
}