Capteur en sortie de vanne Capteur dans la piscine Servomoteur commandant la vanne Alim V Capteur dans le tuyau
Température Tuyau > Température Piscine Chauffer Refroidir Garder la position
Lire température: Piscine et Tuyau Sortie < Température mini Oui 1) Chauffer l’eau : Ouvrir vanne non Sortie > Température max 2) Refroidir l’eau: Fermer la vanne Oui 3) Garder la position: Stopper le moteur non Tuyau > Piscine nonOui 2) Refroidir l’eau: Fermer la vanne
Travail du convertisseur: sortie=(*adr1)*2; piscine=(*adr2)*2; tuyau=(*adr3)*2; if(sortie<tmin+ecartMin) { ecartMin=2; *portb = 0b ; ecartMax=0; } tmin=30; tmax=32; 2829^3031^3233^3435^ ^ ^ ^ ^360 30°C32°C34°C36°C Conversion (°C): Réel (°C): Réel (mV): S’active quand sortie est inférieur à 30 (<=28) Continue jusqu’à ce que sortie atteigne 31 S’active quand sortie est inférieur à 30 (<=28) Continue jusqu’à ce que sortie atteigne 31
if(sortie>tmax-ecartMax) { ecartMax=2; *portb = 0b ; ecartMin=0; } S’active quand sortie est supérieur à 32 (>=33) Continue jusqu’à ce que sortie atteigne 30 S’active quand sortie est supérieur à 32 (>=33) Continue jusqu’à ce que sortie atteigne 30 Travail du convertisseur: sortie=(*adr1)*2; piscine=(*adr2)*2; tmin=30; tmax=32; 2829^3031^3233^3435^ ^ ^ ^ ^360 30°C32°C34°C36°C Conversion (°C): Réel (°C): Réel (mV):
else { ecartMax= 0; ecartMin=0; *portb = 0b ; } On n’alimente plus le servomoteur Si les deux conditions ne sont pas valides On n’alimente plus le servomoteur Si les deux conditions ne sont pas valides Travail du convertisseur: sortie=(*adr1)*2; piscine=(*adr2)*2; tmin=30; tmax=32; 2829^3031^3233^3435^ ^ ^ ^ ^360 30°C32°C34°C36°C Conversion (°C): Réel (°C): Réel (mV):
#include Regis.h char *portb,*adr1,*adr2, *adr3; char *option,*adctl; int z, y, x, tuyau, sortie, piscine, tmin, tmax, ecartMin, ecartMax; void main() { option=OPTION; adctl=ADCTL; portb=PORTB; adr1=ADR1; adr2=ADR2; adr3=ADR3; ecartMin=0; ecartMax=0; tmin=30; tmax=32; while(1) { *option=0b ; *adctl=0b ; while( *adctl == 0b ) { z = *adr1; sortie = z * 2; y = *adr2; piscine = y * 2; x=*adr3; tuyau=x*2; } if(tuyau > piscine) { if(sortie < tmin+ecartMin) { ecartMin = 2; *portb = 0b ; ecartMax = 0; } else if(sortie > tmax-ecartMax) { ecartMax =2; *portb = 0b ; ecartMin = 0; } else { ecartMax = 0; ecartMin =0; *portb = 0b ; } }}} Déclaration de la base de registre, déclaration et initialisation des variables. Lecture et conversion des données envoyées par les capteurs de température Conditions qui commandent le servomoteur de la vanne