70 likes | 204 Views
Automatisation de la direction de l’eau. Capteur en sortie de vanne. +. Alim. Capteur dans la piscine. -. 230V. 230V. Capteur dans le tuyau. Servomoteur commandant la vanne. Etude du PROBLEME. Température Tuyau > Température Piscine. Chauffer. Refroidir. Garder la position.
E N D
Automatisation de la direction de l’eau Capteur en sortie de vanne + Alim Capteur dans la piscine - 230V 230V Capteur dans le tuyau Servomoteur commandant la vanne
Etude du PROBLEME • Température Tuyau > Température Piscine Chauffer Refroidir Garder la position
Organisation du programme Lire température: Piscine et Tuyau non Tuyau > Piscine Oui Sortie < Température mini non Oui Oui Sortie > Température max non 2)Refroidir l’eau: Fermer la vanne 3) Garder la position: Stopper le moteur 2)Refroidir l’eau: Fermer la vanne 1) Chauffer l’eau : Ouvrir vanne
Travail du convertisseur: Description du programme sortie=(*adr1)*2; piscine=(*adr2)*2; tuyau=(*adr3)*2; tmin=30; tmax=32; Réel (°C): 280 28 290^300 29^30 310^320 31^32 330^340 33^34 35^36 350^360 Réel (mV): 30°C 32°C 34°C 36°C Conversion (°C): Condition 1 : Ouvrir vanne (chauffer) if(sortie<tmin+ecartMin) { ecartMin=2; *portb = 0b00000001; ecartMax=0; } S’active quand sortie est inférieur à 30 (<=28) Continue jusqu’à ce que sortie atteigne 31
Travail du convertisseur: Description du programme sortie=(*adr1)*2; piscine=(*adr2)*2; tmin=30; tmax=32; Réel (°C): 280 28 29^30 290^300 31^32 310^320 33^34 330^340 35^36 350^360 Réel (mV): 30°C 32°C 34°C 36°C Conversion (°C): Condition 2 : Fermer vanne (refroidir) if(sortie>tmax-ecartMax) { ecartMax=2; *portb = 0b00000010; ecartMin=0; } S’active quand sortie est supérieur à 32 (>=33) Continue jusqu’à ce que sortie atteigne 30
Travail du convertisseur: Description du programme sortie=(*adr1)*2; piscine=(*adr2)*2; tmin=30; tmax=32; Réel (°C): 280 28 29^30 290^300 31^32 310^320 33^34 330^340 35^36 350^360 Réel (mV): 30°C 32°C 34°C 36°C Conversion (°C): Sinon : On laisse le réglage obtenu avant else { ecartMax= 0; ecartMin=0; *portb = 0b00000000; } On n’alimente plus le servomoteur Si les deux conditions ne sont pas valides
Programme final #includeRegis.h char *portb,*adr1,*adr2, *adr3; char *option,*adctl; int z, y, x, tuyau, sortie, piscine, tmin, tmax, ecartMin, ecartMax; voidmain() { option=OPTION; adctl=ADCTL; portb=PORTB; adr1=ADR1; adr2=ADR2; adr3=ADR3; ecartMin=0; ecartMax=0; tmin=30; tmax=32; while(1) { *option=0b10000000; *adctl=0b00010000; while( *adctl== 0b00010000) { 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 = 0b00000001; ecartMax = 0; } else if(sortie>tmax-ecartMax) { ecartMax =2; *portb = 0b00000010; ecartMin = 0; } else { ecartMax = 0; ecartMin =0; *portb = 0b00000000; } }}} 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