Descriptions des tâches pour l'optimiseur du chauffage version simplifiée. -------------------------------------------------------------------------- Modifié le 14/10/2011 suite à la réunion M-I du 12/10/2011. Modifié le 27/10/2011 suite à la réunion M-I du 26/10/2011. Modifié le 09/11/2011. Modifié le 13/11/2011 suite à la réunion M-I du 09/11/2011. Liste des variables: -------------------- TeauC ' Température calculée de l'eau du chauffage. TCons ' Température de consigne ( Dip-Switches ). DipSw ' Nombre binaire de 0 à 15 suivant la position des 4 switches. TeauM ' Température mesurée de l'eau du chauffage (Sonde 1Wire). Te ' Température extérieure (Sonde 1Wire). Ti ' Température intérieure (Sonde 1Wire). TiMin ' Température intérieure Minimale. TiMax ' Température intérieure Maximale. TiMoy ' Température intérieure Moyenne. TiTh1 ' Temp. int. basculement de Thermostat = 1. TiTh0 ' Temp. int. basculement de Thermostat = 0. Pente ' Pente de courbe de chauffe. Pivot ' Température d'eau pour température extérieure de 0 C°. CycleCourbe ' Index 0 ou 1 permet de déterminer si un cycle a été complété. Thermostat ' Pin Entrée = 0 (contact Ouvert) ou Entrée = 1 (contact fermé). ThermostatOld ' Valeur précédente de Thermostat. TempoOld ' Variable pour la durée de commande vanne. TempInter ' Compteur pour les Interruptions. Relais1 ' Led1 et circulateur d'eau. Relais2 ' Led2 et Brûleur si System = 0 ou ' Led2 et Ouverture de la Vanne à 3 voies si System = 1. Relais3 ' Led3 et fermeture de la Vanne à 3 voies. OW_Nombre ' Nombre d'éléments sur le bus 1Wire. OW_ID(3,8) ' Identifiants des circuits, 3 représente le nombre de circuits ' et 8 représente les 8 bytes pour l'identifiant unique. OW_Erreur ' Drapeau d'erreur pour les fonctions 1Wire. TempL(3) ' Lecture de l'octet 'Low' des 3 sondes. TempH(3) ' Lecture de l'octet 'High' des 3 sondes. i ' Variable de travail. j ' Variable de travail. Liste des constantes: --------------------- Teau1 ' Température maxi d'eau donnée par le constructeur de chaudière. Te1 ' Température extérieure suivant la région (voir fichier xls). HysEau ' Hystérésis pour la température de l'eau du chauffage. Tempo ' Constante définie par l'utilisateur. System ' 0 = Brûleur et 1 = Vanne à 3 voies. Liste des tâches: ----------------- Programme Principal. ******************** - Initialiser le micro-contrôleur AtMega16 ou 32. - Créer et initialiser les variables: System = 1 ' Choix entre 0 = Brûleur ou 1 = Vanne 3 voies. Teau1 = 80 ' Température maximale (voir constructeur). Te1 = -9 ' Valeur définie pour la région de Liège. HysEau = 5 ' Hystérésis pour l'eau de chauffage. TCons = 20 ' Température de consigne au démarrage. CycleCourbe = 0 ' Valeur au démarrage. ThermostatOld = 0 ' Valeur au démarrage. (mettre des valeurs par défaut lors du premier démarrage du µ-Contrôleur, ensuite celles-ci pourront être modifiées via la connexion série et le PC. - Initialiser et lire les températures des 3 Sondes 1Wire (DS18B20-PAR). - System 0 ou 1 ' Prédéfini suivant le système à optimiser. Si System = 1 ' Optimisation par vannes à 3 voies ( Voir NB2 ). Démarrer Les Interruptions' Uniquement pour la commande de vanne à 3 voies, ' il faut choisir un Overflow du timer provoquant ' une interruption plus ou moins à chaque seconde. Tempo ' Valeur à définir pour une durée de 1 seconde. TempInter ' Variable de comptage par Interruption. TempoOld ' Variable pour la durée de commande de la vanne. Tempo = 2 ' 2 secondes pour la commande de la vanne 3 voies. Relais3 = ' Commande de la fermeture de la vanne et on allume ' la Led3. Pause 75 secondes ' Fermeture totale = uniquement l'eau de retour. Relais3 ' Arrêt de la commande de la fermeture de la vanne ' et on éteint la Led3. Relais2 = ' Commande de l'ouverture de la vanne et on allume ' la Led2. Pause 22 secondes ' Ouverture à environ 30% = mélange faible de l'eau ' départ chaudière et important de l'eau de retour. Relais2 ' Arrêt de la commande d'ouverture de la vanne et ' on éteint la Led2. FinSi Début de la boucle infinie Lire de l'état de la Pin Thermostat Si Thermostat = 1 ' Si on a besoin de chaleur. Aller à la routine LitSondeT ' Lecture des DS18B20-PAR en 1Wire. Si ThermostatOld = 0 ' on a pas eu de cycle de chauffe. TiTh1 = Ti ' Temp. intérieure au moment ou le FinSi ' thermostat est en demande de chaleur. Si Ti < TiMin ' Si temp. int. est < que TiMini. TiMin = Ti ' Temp. intérieure minimum = Ti. FinSi ThermostatOld = 1 ' Mise en mémoire de Thermostat. Si CourbeCycle = 1 ' on a eu un cycle de chauffe. Aller à la routine CourbeDeChau ' Adaptater la "courbe de chauffe". FinSi Aller à la routine CommandeChauffage ' Commande du chauffage. Sinon Si ThermostatOld = 0 ' On a pas eu de cycle de chauffe. TiTh0 = Ti ' Temp. intérieure au moment ou le ' thermostat n'est plus en demande FinSi ' de chaleur. Si ThermostatOld = 1 ' Aller à la routine LitSondeT ' Lecture des DS18B20-PAR en 1Wire. Si Ti > TiMax ' Si temp. int. est > que Ti max. TiMax = Ti ' Temp. intérieure maximum = Ti. FinSi TiMoy = (TiMin + TiMax)/2 ' Calcul de la temp. int. moyenne. CourbeCycle = 1 ' On a eu un cycle de chauffe. ThermostatOld = 0 ' FinSi FinSi Aller à la routine Communication ' Teste si le PC "demande" des infos. Fin de la boucle infinie ******************************************************************************* Liste des Sous-Routines ******************************************************************************* Routine LitSondeT ' Lecture des sondes de températures. ------------------------------------------------------------------------------- Lire la sonde Teau ' Température eau du chauffage. Lire la sonde Ti ' Température intérieure. Lire la sonde Te ' Température extérieure. Aller à la routine CalculTempMoy ' Routine de calcul de la temp. moyenne. Fin de LitSondeT ------------------------------------------------------------------------------- Routine CourbeDeChau ' Calcul la courbe de chauffe. ------------------------------------------------------------------------------- TCons = (TiTh0 + TiTh1)/2 ' Calcul de la température de consigne. TeauC = Pente X Te + Pivot '(y = ax + b). Si TiMoy > TCons ' Diminution de la Pente. Pivot = Pivot ' Pivot = 63,125°C. Pente = (Teau1-(TiMoy-TCons)-Pivot)/Te1 Sinon ' Teau1 = 80°C , Te1 = -9°C. Si TiMoy < TCons ' Déplacement du point Pivot vers le haut. Pente = Pente ' Pente = -1,875. Pivot = Pivot + (TCons-TiMoy) TeauC = Pente X Te1 + Pivot Si TeauC => Teau1 Pente = (Teau1 - Pivot) / Te1 Finsi FinSi FinSi CourbeCycle = 0 ' Réinitialise la variable. Fin de CourbeDeChau ------------------------------------------------------------------------------- Routine CommandeChauffage ' Commande du chauffage. ------------------------------------------------------------------------------- Si Ti < TCons ' Si la temp. intér. est < la temp. de consigne. Relais1 = ' Commande du relais de la pompe du chauffage et ' on allume la Led1 rouge. Finsi Si TeauM = Ti ' Si la température d'eau = la temp. intérieur, Relais1 = ' arrêt du relais de la pompe du chauffage et ' on éteint la Led1 rouge. Finsi Si System = 0 ' 0 = commande du brûleur. Si TeauM < TeauC - HysEau Relais2 = ' Brûleur en marche et allumage de la Led2 rouge. Sinon Si TeauM > TeauC + HysEau Relais2 = ' Arrêt du brûleur et extinction de la Led2 rouge. FinSi FinSi Sinon ' 1 = Système géré par commande de vanne 3 voies Si TeauM < TeauC - HysEau Si TempoOld > 0 ' Test si la temporisation toujours active. Relais3 = ' Un seul relais de vanne activé en même temps. Relais2 = ' Ouverture de la vanne et Led2 rouge ON. FinSi Si TempoOld = 0 ' Test la fin de la temporisation. Relais2 = ' Arrêt de la commande vanne et Led2 rouge OFF. TempoOld = Tempo ' Remise à la valeur initiale. FinSi FinSi Si TeauM > TeauC + HysEau Si TempoOld > 0 ' Test si la temporisation toujours active. Relais2 = ' Un seul relais de vanne activé en même temps. Relais3 = ' Fermeture de la vanne et Led3 rouge ON. FinSi Si TempoOld = 0 ' Test la fin de la temporisation. Relais3 = ' Arrêt de la commande vanne et Led3 rouge OFF. TempoOld = Tempo ' Remise à la valeur initiale. FinSi Finsi Finsi Fin de CommandeChauffage ------------------------------------------------------------------------------- Routine Interruptions ' Provoque l'incrémentation de TempInt. ------------------------------------------------------------------------------- Arrêter les Interruptions TempInter = TempInter + 1 ' Incrémente TempoInt Si TempInter = Tempo ' Test si durée est atteinte en seconde TempoOld = TempoOld - 1 ' Décrémente Tempo FinSi Redémarrer les Interruptions Fin de Interruptions ------------------------------------------------------------------------------- Routine Communication ' Communication avec le PC via le port série. ------------------------------------------------------------------------------- Si Port RS232 connecté Communication sur le port série Finsi Fin de Communication ------------------------------------------------------------------------------- Note:- La sonde 1Wire pour Ti est placée dans le boîtier du thermostat afin de reproduire la même courbe de température. VANNE A TROIS VOIES: -------------------- Vanne Honeywell motorisée achetée sur Ebay: Moteur de commande: ML6420A3015-3, payé 117,00 € avec les frais de port. Vanne: V5013N1063, 1" 3-Way Globe Mixing Valve, payé 103,00 € avec les frais de port. Spécifications du constructeur: Alimentation : 220 volts AC 50Hz Course du piston : 20 m/m Durée du déplacement : 1 minute Tests: Durée du déplacement de 0 à 100% (20 m/m de course): 72 secondes NB2: **** Pour l'initialisation de la vanne à 3 voies, on commande la vanne dans le sens de fermeture totale d'arrivée d'eau chaude de la chaudière, donc 100% du retour des radiateurs, pour une durée de 75 secondes afin d'être certain d'atteindre la butée, il n'y a pas de risque, car la commande est protégée par une fin de course. Ensuite, on commande la vanne en sens inverse pour une durée de 22 secondes afin de la positionner à environ 30%. Pour la suite, c'est l'opti- miseur qui pilotera la vanne à 3 voies. Chaque seconde de commande de la vanne représente une variation de 100/72 = 1,39 % ou une course de 20/72 = 0,28 mm. Remarques: 1) - Sachant que la température de la chaudière est réglée au minimum à 65°C pour les raisons connues, on choisit une petite ouverture (30%), car il est préférable d'envoyer dans les radiateurs de l'eau tiède en place d'eau trop chaude afin d'éviter que les radiateurs qui seraient dans le cas contraire, très chauds mettent un certains temps pour refroidir et contrarie la régulation (coup de chaleur). Il en est de même pour une chaudière, celle-ci démarre avec une température assez basse et chauffe progressivement. 2) - Lors du câblage des relais, si cela est possible au niveau des contacts, prévoir que si certains contacts resteraient "collés", l'autre relais ne puisse pas s'enclencher. *******************************************************************************