Sonde de température LED Arduino nano + PT1000

Sonde de température LED Arduino nano + PT1000

platine en 3d

Sommaire:

  1. Description du montage
  2. Liste des composants
  3. Schéma et Typon
  4. Détails du programme
  5. Bonus boîtier à imprimer

  1. Description du montage:

    Le montage suivant est composer de 12 leds et la possibilité de brancher deux sondes de température pt100 ou pt1000. Un boîtier imprimé en 3d pour finaliser le montage. L’ alimentation est en 12v DC. 8 niveaux de température prédéfinis modifiables, les 2 derniers niveaux font clignoter les leds de plus en plus vite. Conçu initialement  pour un ami qui fait de l’auto cross ce petit boîtier lui permet de récupérer les informations de température moteur eau et huile.

  2. Liste des composants:

  3. Schéma et Typon

    image typon
    pour récuperer le typon cliquer sur l’image et téléchargez le PDF

    schéma

  4. Détails du programme

1.Pour commencer ouvrez Arduino et collez le sketch suivant:

Code source:

int sonde_1_on=1;// activation sonde 1
int niveau_1_1=20; // température niveau 1
int niveau_2_1=40; // température niveau 1
int niveau_3_1=60; // température niveau 1
int niveau_4_1=80; // température niveau 1
int niveau_5_1=90; // température niveau 1
int niveau_6_1=100; // température niveau 1
int niveau_7_1=110; // température niveau 1
int niveau_8_1=120; // température niveau 1
int valeur_lu_basse1=781;// valeur lu basse sonde 1
int valeur_lu_haute1=718; // valeur lu haute sonde 1
int temperature_basse_correspondante1=0;// valeur basse sonde 1 
int temperature_haute_correspondante1=90; // valeur haute sonde 1
int sonde_2_on=0;// activation sonde 1
int niveau_1_2=20; // température niveau 2
int niveau_2_2=40; // température niveau 2
int niveau_3_2=60; // température niveau 2
int niveau_4_2=80; // température niveau 2
int niveau_5_2=90; // température niveau 2
int niveau_6_2=100; // température niveau 2
int niveau_7_2=110; // température niveau 2
int niveau_8_2=120; // température niveau 2
int valeur_lu_basse2=781;// valeur lu haute sonde 2
int valeur_lu_haute2=718;// valeur lu haute sonde 2
int temperature_basse_correspondante2=0;// valeur basse sonde 2
int temperature_haute_correspondante2=90;// valeur haute sonde 2
int sensorValue1 = 0; //pas touche au programme
int sensorValue2 = 0;//pas touche au programme
int temperature1 = 0;//pas touche au programme
int temperature2 = 0;//pas touche au programme
float f1 = 0;//pas touche au programme
float t1 = 0;//pas touche au programme
float f2 = 0;//pas touche au programme
float t2 = 0;//pas touche au programme
int led1= A2;//pas touche au programme
int led2=12;//pas touche au programme
int led3=11;//pas touche au programme
int led4=10;//pas touche au programme
int led5=9;//pas touche au programme
int led6=8;//pas touche au programme
int led7= 7;//pas touche au programme
int led8=6;//pas touche au programme
int led9=5;//pas touche au programme
int led10=4;//pas touche au programme
int led11=3;//pas touche au programme
int led12=2;//pas touche au programme
unsigned long currentmillis;//pas touche au programme
long previousmillis1;//pas touche au programme
long previousmillisserial1;//pas touche au programme
unsigned long previousmillis2;//pas touche au programme
unsigned long previousmillisserial2;//pas touche au programme
void temperature(int f, int niveau1, int niveau2, int niveau3, int niveau4, int niveau5, int niveau6, int niveau7, int niveau8,int led1,int led2,int led3,int led4,int led5,int led6);//pas touche au programme
void setup() 
{
Serial.begin(9600);//pas touche au programme
pinMode(led1,OUTPUT);//pas touche au programme
pinMode(led2,OUTPUT);//pas touche au programme
pinMode(led3,OUTPUT);//pas touche au programme
pinMode(led4,OUTPUT);//pas touche au programme
pinMode(led5,OUTPUT);//pas touche au programme
pinMode(led6,OUTPUT);//pas touche au programme
digitalWrite(led1,HIGH);//pas touche au programme
digitalWrite(led2,HIGH);//pas touche au programme
digitalWrite(led3,HIGH);//pas touche au programme
digitalWrite(led4,HIGH);//pas touche au programme
digitalWrite(led5,HIGH);//pas touche au programme
digitalWrite(led6,HIGH);//pas touche au programme
delay(5000);//pas touche au programme
digitalWrite(led1,LOW);//pas touche au programme;
digitalWrite(led2,LOW);//pas touche au programme
digitalWrite(led3,LOW);//pas touche au programme
digitalWrite(led4,LOW);//pas touche au programme
digitalWrite(led5,LOW);//pas touche au programme
digitalWrite(led6,LOW);//pas touche au programme
}
void loop() 
{
currentmillis=millis();

if (currentmillis-previousmillis1>=500)
{
sensorValue1 = analogRead(A1);
previousmillis1=millis();
sensorValue2 = analogRead(A0);
previousmillis2=millis();
temperature1=map(sensorValue1, valeur_lu_basse1,valeur_lu_haute1,temperature_basse_correspondante1,temperature_haute_correspondante1);
f1 = temperature1; // Float conversion
temperature2=map(sensorValue2, valeur_lu_basse2,valeur_lu_haute2,temperature_basse_correspondante2,temperature_haute_correspondante2);
f2 = temperature2; // Float conversion
}

if (currentmillis-previousmillisserial1>=800)
{
previousmillisserial1=millis();
Serial.print("valeur temp 1 :");
Serial.println(sensorValue1);
Serial.print("temperature resultante 1 :");
Serial.println(f1);
Serial.print("valeur temp 2 :");
Serial.println(sensorValue2);
Serial.print("temperature resultante 2 :");
Serial.println(f2);
}

if (currentmillis-previousmillisserial2>=800)
{
if (sonde_1_on==1)
{
temperature(f1, niveau_1_1, niveau_2_1, niveau_3_1, niveau_4_1, niveau_5_1, niveau_6_1, niveau_7_1, niveau_8_1,led1,led2,led3,led4,led5,led6);
}
if (sonde_2_on==1)
{
temperature(f2, niveau_1_2, niveau_2_2, niveau_3_2, niveau_4_2, niveau_5_2, niveau_6_2, niveau_7_2, niveau_8_2,led7,led8,led9,led10,led11,led12);
}
}
void temperature(int f, int niveau1, int niveau2, int niveau3, int niveau4, int niveau5, int niveau6, int niveau7, int niveau8,int led1,int led2,int led3,int led4,int led5,int led6) //allume un appareil en fonction d'un etat
{
if(f> niveau1)
{ 
if (digitalRead(led1==0))
{
digitalWrite(led1,HIGH);
}
}
if(f> niveau2)
{ 
if (digitalRead(led2==0))
{
digitalWrite(led2,HIGH);
}

}
if(f> niveau3)
{ 
if (digitalRead(led3==0))
{
digitalWrite(led3,HIGH);
}
}
if(f> niveau4)
{ 
if (digitalRead(led4==0))
{
digitalWrite(led4,HIGH);
}
}
if(f> niveau5)
{ 
if (digitalRead(led5==0))
{
digitalWrite(led5,HIGH);
}
}
if(f> niveau6)
{ 
if (digitalRead(led6==0))
{
digitalWrite(led6,HIGH);
}
}
if((f> niveau7)and (f1<niveau8))
{ 
if( (digitalRead(led6==0))and(digitalRead(led5==0))and(digitalRead(led4==0))and(digitalRead(led3==0))and(digitalRead(led3==0))and(digitalRead(led3==0)))
{
digitalWrite(led1,HIGH);
digitalWrite(led2,HIGH);
digitalWrite(led3,HIGH);
digitalWrite(led4,HIGH);
digitalWrite(led5,HIGH);
digitalWrite(led6,HIGH);
delay(500);
digitalWrite(led1,LOW);
digitalWrite(led2,LOW);
digitalWrite(led3,LOW);
digitalWrite(led4,LOW);
digitalWrite(led5,LOW);
digitalWrite(led6,LOW);
delay(500);
}
}
if(f> niveau8)
{ 
if( (digitalRead(led6==0))and(digitalRead(led5==0))and(digitalRead(led4==0))and(digitalRead(led3==0))and(digitalRead(led3==0))and(digitalRead(led3==0)))
{
digitalWrite(led1,HIGH);
digitalWrite(led2,HIGH);
digitalWrite(led3,HIGH);
digitalWrite(led4,HIGH);
digitalWrite(led5,HIGH);
digitalWrite(led6,HIGH);
delay(100);
digitalWrite(led1,LOW);
digitalWrite(led2,LOW);
digitalWrite(led3,LOW);
digitalWrite(led4,LOW);
digitalWrite(led5,LOW);
digitalWrite(led6,LOW);
delay(100);
}
}
if(f< niveau1)
{ 
if (digitalRead(led1==1))
{
digitalWrite(led1,LOW);
}
}
if(f< niveau2)
{ 
if (digitalRead(led2==1))
{
digitalWrite(led2,LOW);
}

}
if(f< niveau3)
{ 
if (digitalRead(led3==1))
{
digitalWrite(led3,LOW);
}
}
if(f< niveau4)
{ 
if (digitalRead(led4==1))
{
digitalWrite(led4,LOW);
}
}
if(f< niveau5)
{ 
if (digitalRead(led5==1))
{
digitalWrite(led5,LOW);
}
}
if(f< niveau6)
{ 
if (digitalRead(led6==1))
{
digitalWrite(led6,LOW);
}
}
}

2.Activation des Sondes

Pour activer les sondes remplacer les 0 par des 1 dans l’exemple ci-dessous la sonde est active la sonde 2 est inactive.


int sonde_1_on=1;// activation sonde 1 
int sonde_2_on=0;// activation sonde 2 

3.Réglages de la plage de température

Pour régler les différentes plages de température modifier les lignes suivante du sketch: les niveaux 7 et 8 sont les températures ou l’ensemble des leds commencent à clignoter


int niveau_1_1=20; // température niveau 1 sonde1
int niveau_2_1=40; // température niveau 2 sonde1 
int niveau_3_1=60; // température niveau 3 sonde1 
int niveau_4_1=80; // température niveau 4 sonde1
int niveau_5_1=90; // température niveau 5 sonde1 
int niveau_6_1=100; // température niveau 6 sonde1 
int niveau_7_1=110; // température niveau 7 sonde1 clignotement 500ms
int niveau_8_1=120; // température niveau 8 sonde1 clignotement 100ms 
int niveau_1_2=20; // température niveau 1 sonde2
int niveau_2_2=40; // température niveau 2 sonde2
int niveau_3_2=60; // température niveau 3 sonde2 
int niveau_4_2=80; // température niveau 4 sonde2 
int niveau_5_2=90; // température niveau 5 sonde2
int niveau_6_2=100; // température niveau 6 sonde2 
int niveau_7_2=110; // température niveau 7 sonde2 
int niveau_8_2=120; // température niveau 8 sonde2

4.Étalonnage des sondes

1.Téléversez le programme dans votre Arduino.
2.Commencez par préparer un verre de glaçon avec de l’eau d’un coter, et une casserole d’eau à bouillir de l’autre.
3.Ouvrez le moniteur Série sur 9600baud.
4.Plongez dans un premier temps votre sonde dans le verre d’eau et relevé dans le moniteur série la ligne “valeur temp 1 :XXX”.
5.Ensuite répété l’opération dans  la casserole d’eau en train de bouillir.
6.Entrez ces information dans le sketch Arduino précédemment copier au niveau des lignes suivante:


 int valeur_lu_basse1=781;// valeur lu basse sonde 1 
 int valeur_lu_haute1=718; // valeur lu haute sonde 1
 

6.puis ré-téléversez le programme.
7.Voila!!! Votre sonde 1 est calibrée, répétez l’opération pour la sonde 2

5. Bonus boitier imprimer en 3d

boite temperature capot temp

Pour télécharger les fichiers rendez-vous à l’adresse suivantes: Boitier montage sonde pt 1000

Une question? Un problème avec le montage venez en parler dans le forum section électronique ou dans les commentaires.

Laisser un commentaire
Précédent Suivant