Go Down

Topic: lecture de température via arduino(PRG type) (Read 2 times) previous topic - next topic

FP24V

Oct 24, 2010, 03:04 pm Last Edit: Oct 24, 2010, 07:10 pm by FP24V Reason: 1
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: [Select]

//////////////////////////////////// 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: [Select]
for ( int thisReadingR = 0 ; thisReadingR < numReadingsR ; thisReadingR ++ )
readingsR [ thisReadingR ] = 0 ;


c'est la gestion du lissage par  moyenne évolutive


partie void loop

Code: [Select]
//////////////////////////////////// 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°

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

Jean-François

#1
Oct 24, 2010, 05:31 pm Last Edit: Oct 24, 2010, 07:32 pm by jfs Reason: 1


Merci de partager tes expériences.
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

Jean-François

#2
Oct 24, 2010, 06:07 pm Last Edit: Oct 24, 2010, 07:32 pm by jfs Reason: 1


C'est une partie d'un projet domotique ?
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

FP24V

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 +++
Je ne conçois que trés peu, je recycle beaucoup les codes que je trouve.

Jean-François

#4
Oct 24, 2010, 07:33 pm Last Edit: Oct 24, 2010, 07:47 pm by jfs Reason: 1
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
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

FP24V

j'ai déja fait l'interface graphique pour la premiére partie, si je savais comment déposer une video je montrerai bien
Je ne conçois que trés peu, je recycle beaucoup les codes que je trouve.

Jean-François

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)
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

kafifi

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é

FP24V

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]
Je ne conçois que trés peu, je recycle beaucoup les codes que je trouve.

kafifi

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.

FP24V

#10
Nov 06, 2010, 09:42 am Last Edit: Nov 06, 2010, 09:44 am by FP24V Reason: 1
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.
Je ne conçois que trés peu, je recycle beaucoup les codes que je trouve.

kafifi

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.

FP24V

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
Je ne conçois que trés peu, je recycle beaucoup les codes que je trouve.

goabonga

pour eviter le reboot regarde du coté de DTR et RTS ... utilise pySerial ;)  

kafifi

@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.

Go Up