Pages: [1] 2   Go Down
Author Topic: lecture de température via arduino(PRG type)  (Read 2735 times)
0 Members and 1 Guest are viewing this topic.
+33 76500
Offline Offline
Jr. Member
**
Karma: 0
Posts: 75
Arduinaute du dimanche
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

bonjours a tous , je suis en train de finaliser un projet de thermostat via arduino, et après pas mal de recherche sur le net, de boulot personnel, mon projet touche à sa fin.

Au cas où d'autre personne ferais quelque chose du même genre je partage mes base du code.

utilisation de sonde de type CTN sur un pont diviseur



partie initialisation

Code:
//////////////////////////////////// les entrées sorties ////////////////////////////////////
int SB=1;                                           // pin sonde température sol
int R1=11000;                                       // valeur de la resistance fixe du pont diviseur en ohm
//////////////////////////////////// gestion de la sonde  sol ////////////////////////////////////
int BR1=27275;                                      // Résistance de la sonde mesure 1
int BR2=13677;                                      // Résistance de la sonde mesure 2  
int BR3=721;                                        // Résistance de la sonde mesure 3
float BT1=4;                                        // température mesure 1
float BT2=19.5;                                     // température mesure 2  
float BT3=92.8;                                     // température mesure 3
float BR=0;                                         // variable résistance sonde de témpérature sol
float BRB=0;                                        // variable signal sonde intérieur
const int numReadingsB = 10 ;                       // Nombre de relevés pour la moyenne signal
int readingsB [ numReadingsB ] ;                    // Variable lecture pour la sonde sol
int indexB = 0 ;                                    // position dans la création de la moyenne
int totalB = 0 ;                                    // Total en cours
int averageB = 0 ;                                  // La moyenne

R1 est la valeur de la résistance que vous aurez judicieusement choisis pour le couplage avec la CTN

BR1 et BT1 sont des valeurs déterminé lors d'expérimentation
BR2 et BT2 sont des valeurs déterminé lors d'expérimentation
BR3 et BT3 sont des valeurs déterminé lors d'expérimentation

const int numReadingsB = 10 ; est la nombre de valeur utilisé pour le lissage, 10 mesure est un bon compromis entre stabilité et réactivité.


partie void setup

Code:
for ( int thisReadingR = 0 ; thisReadingR < numReadingsR ; thisReadingR ++ )
readingsR [ thisReadingR ] = 0 ;

c'est la gestion du lissage par  moyenne évolutive


partie void loop

Code:
//////////////////////////////////// calcul de moyenne de la sonde intérieur ////////////////////////////////////
totalR = totalR - readingsR [ indexR ] ;            
readingsR [ indexR ] = analogRead ( SR ) ;   // read from the sensor:
totalR = totalR + readingsR [ indexR ] ;             // add the reading to the total:          
indexR = indexR + 1 ;                              // advance to the next position in the array:
if ( indexR >= numReadingsR )                      // if we're at the end of the array...
indexR = 0 ;                                      // ...wrap around to the beginning:
averageR = totalR / numReadingsR ;                  // calculate the average:  
RRB=averageR;

//////////////////////////////////// calcul de la température intérieur via stein hart, pont diviseur et gestion des caractéres pour le processing ////////////////////////////////////
RR=((R1*RRB)/(1023-RRB));  
double RY1=1/(RT1+273.15);
double RY2=1/(RT2+273.15);
double RY3=1/(RT3+273.15);
double RL1=log(RR1);
double RL2=log(RR2);
double RL3=log(RR3);
double RV2=(RY2-RY1)/(RL2-RL1);
double RV3=(RY3-RY1)/(RL3-RL1);
double RC=((RV3-RV2)/((RL3-RL2))*((1/(RL1+RL2+RL3))));
double RB=RV2-(RC*((RL1*RL1)+(RL1*RL2)+(RL2*RL2)));
double RA=RY1-((RB+(RL1*RL1)*RC)*RL1);
double RT=((1/(RA+(RB*log(RR))+(RC*((log(RR))*(log(RR))*(log(RR))))))-275.5);

Tous le calcul via les équation de stein hart pour les ctn.
RT et la valeur de température final.
Attention dans le dernier calcul il y a la valeur 275.5, normalement c'est 273.5, mais j'ai une dérive de 2°

« Last Edit: October 24, 2010, 12:10:20 pm by FP24V » Logged

Je ne conçois que trés peu, je recycle beaucoup les codes que je trouve.

Geneva
Offline Offline
Faraday Member
**
Karma: 30
Posts: 3231
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset



Merci de partager tes expériences.
« Last Edit: October 24, 2010, 12:32:26 pm by jfs » Logged

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

Geneva
Offline Offline
Faraday Member
**
Karma: 30
Posts: 3231
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset



C'est une partie d'un projet domotique ?
« Last Edit: October 24, 2010, 12:32:02 pm by jfs » Logged

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

+33 76500
Offline Offline
Jr. Member
**
Karma: 0
Posts: 75
Arduinaute du dimanche
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

c'est mieux??

bon pour répondre à ta question, il s'agit de remplacer tous les thermostat (mal positionner et merdique).

Le but est de  géré via processing la température de chaque piéces, gérer le jours nuits avec un abonnement tempo (affichage des compteurs, conso instantané..) et +++
Logged

Je ne conçois que trés peu, je recycle beaucoup les codes que je trouve.

Geneva
Offline Offline
Faraday Member
**
Karma: 30
Posts: 3231
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

C'est cool...  ;D (ça reste entre nous)

Projet intéressant.

Tu vas commander quoi comme types de vannes ? et de quelle manière ?

Avec Processing tu comptes faire une interface graphique ?

ça fait beaucoup de questions...  ;D
« Last Edit: October 24, 2010, 12:47:46 pm by jfs » Logged

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

+33 76500
Offline Offline
Jr. Member
**
Karma: 0
Posts: 75
Arduinaute du dimanche
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

j'ai déja fait l'interface graphique pour la premiére partie, si je savais comment déposer une video je montrerai bien
Logged

Je ne conçois que trés peu, je recycle beaucoup les codes que je trouve.

Geneva
Offline Offline
Faraday Member
**
Karma: 30
Posts: 3231
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Tu la mets sur Youtube et ensuite tu l'insères avec le 5ème bouton depuis la gauche lorsque tu écris ton message (au dessus du H sur fond jaune)
Logged

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 94
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonsoir FP24V,

Je vais également démarrer un projet de thermostat / pièce (via Arduino Mega 2560 et DS1820) .

Pour être autonome en cas de pb de PC, j'intègre à l'Arduino les plages des températures programmées en fonction des jours de la semaine. Je cherche des idées d'algorithme, pas encore super claire dans ma tête.

Aurais-tu des infos à partager ?

Merci.
As-tu travaillé
Logged

+33 76500
Offline Offline
Jr. Member
**
Karma: 0
Posts: 75
Arduinaute du dimanche
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

désolé de donner seulement maintenant signe de vie.

alors voici la vidéo, merci pour l'astuce.

et kaffi, j'ai pas compris ce que tu voulais??
[media]http://www.youtube.com/watch?v=8QsGki7PvIA[/media]
Logged

Je ne conçois que trés peu, je recycle beaucoup les codes que je trouve.

0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 94
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonsoir FP24V,

En fait, je suis en train d'écrire le programme de mon thermostat. J'aimerais avoir un max de souplesse. Chaque jour de la semaine doit pouvoir être programmé comme on l'entend (plage, températures basses et hautes...).
Je cherche comment organiser mon programme. Si tu voulais partager ton algorithme ou ton code, cela me donnerait des idées.
Logged

+33 76500
Offline Offline
Jr. Member
**
Karma: 0
Posts: 75
Arduinaute du dimanche
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

pas de soucis, mais mon code ne gére absolument pas le temps, mon systéme de chauffage ne me le permet pas.

Maintenant je vai voir si une idée me viens pour la gestion du temps.
tu veux piloter avec le therminal de l'arduino ou processing.
« Last Edit: November 06, 2010, 03:44:43 am by FP24V » Logged

Je ne conçois que trés peu, je recycle beaucoup les codes que je trouve.

0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 94
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
tu veux piloter avec le therminal de l'arduino ou processing.
Que veux-tu dire ?

Mon but : la carte Arduino lis la température de la pièce via un DS1820 et active ou pas un relais de chauffage. Le tout sur base de plages horaires programmées dans l'Arduino. A terme, raccordement au PC pour programmer les plages et récupérer les courbes de températures.
Logged

+33 76500
Offline Offline
Jr. Member
**
Karma: 0
Posts: 75
Arduinaute du dimanche
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

je m'explique plus.

quand tu va vouloir piloter ton thermostat, tu veux le aire avec le terminal de l'arduino ou bien avec une interface graphique comme processing?,

dans tous les cas il y a un prb que je ne sais pas résoudre, c'est lors d'une reconnexion l'arduino reboot, est perd les réglages volatiles
Logged

Je ne conçois que trés peu, je recycle beaucoup les codes que je trouve.

0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 66
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

pour eviter le reboot regarde du coté de DTR et RTS ... utilise pySerial smiley-wink  
Logged

0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 94
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

@FP24V,
pilotage via un clavier et un afficheur LCD reliés à l'Arduino.
Concernant les réglages, il suffit de les sauvegarder en eeprom pour éviter les soucis.
Logged

Pages: [1] 2   Go Up
Jump to: