Optimiseur de chauffage - MICRO-INFO. ------------------------------------- Descriptions des tâches suite à la réunion du 22/12/2010 -------- Entrées: -------- - Heure & Date = HH:MM & jj/mm/aaaa - Température Extérieure = Temp_Ext - Température Intérieure = Temp_Int - Température Chaudière = Temp_Eau - Température ECS = Temp_ECS - Température de Consigne = Temp_Cons - Encodeur - Molette = Molette - Encodeur - Bouton = Bouton - Switch rétro-éclairage = LcdLedOn - Numéro de Cycle = Num_Cycle - Cycle = Cycle -------- Sorties: -------- - Affichage Date & Heure = HH:MM & jj/mm/aaaa - Température Extérieure = Temp_Ext - Température Intérieure = Temp_Int - % Utilisation = Conso - LedA = Mode veille (Jaune) - LedB = Mode Nuit (Rouge) - LedC = Mode Jour (Verte) - LedD = Mode Horloge (Bleue) - Led1 = Circulateur d'eau de la chaudière (Rouge) - Led2 = Circulateur d'ECS (Rouge) - Led3 = Chaudière ON ou vanne_3_voies ouverte (Rouge) - Led4 = Fermeture vanne_3_voies ou cde analogique (Rouge) - Sortie Régulation = Commande chaudière ou ouverture vanne_3_voies -------------- Sous-Routines: -------------- SUB Changement_Temp_De_Consigne SUB Calcul_Temp_Eau SUB MENU ------------------------ Variables et constantes: ------------------------ Heure = Heures Minute = Minutes Seconde = Secondes Date = Jour du mois Mois = Mois de l'année Annee = Année de 0 à 99 JourSem = Jour de la semaine Temp_Ext = Température extérieure (Byte) Temp_Int = Température intérieure Temp_Eau = Température chaudière Temp_ECS = Température eau chaude sanitaire Temp_Cons_ECS = Température de consigne ECS Temp_Cons = Temp. de consigne prend la valeur Temp_Jour ou Temp_Nuit Temp_Jour = Température programmée pour le jour Temp_Nuit = Température programmée pour la nuit Temp_Int_Max = Température intérieure maximum (Byte) Temp_Int_Min = Température intérieure minimum (Byte) Flag_Temp_Int_Max = Drapeau Température intérieure maximum (Bit) Flag_Temp_Int_Min = Drapeau Température intérieure minimum (Bit) Flag_Derogation = Drapeau pour le suivi d'une dérogation en Mode horloge Hys_Temp_Ambiante = Hystérésis de la température de la pièce de référence Hys_ECS = Hystérésis de la température de l'ECS Hys_Eau = Hystérésis de la température de l'Eau ( chaudière ) Molette = Encodeur à molette ( impulsions ) MoletteCompteur = Compteur/décompteur des impulsions de l'encodeur Bouton = Bouton sur encodeur Tempobtn = Temporisation pour tester la durée d'appuis sur le bouton LcdLedOn = Rétro-éclairage du LCD LcdLedBtn = Bouton de commande du rétro-éclairage du LCD Num_Cycle = Numéro du Cycle (1 à 4) Cycle = Var. de 96 bits contenant le N° du cycle et la plage horaire Conso = Pourcentage d'utilisation de la chaudière sur 24 heures Mode = Mode de 1 à 4 (lié aux Leds A,B,C,D) Regul = Sortie Régulation (lié aux Leds 1,2,3,4) LedA = Mode veille (Jaune) LedB = Mode Nuit (Rouge) LedC = Mode Jour (Verte) LedD = Mode Horloge (Bleue) Led1 = Circulateur d'eau de la chaudière (Rouge) Led2 = Circulateur d'ECS (Rouge) Led3 = Chaudière ON ou vanne_3_voies ouverte (Rouge) Led4 = Fermeture vanne_3_voies ou commande analogique (Rouge) ----------- Les Cycles: ----------- Il y a un total de 4 cycles, donc 4 x 96 bits / 12 Octets Dim Cycle(12,7,4) As Byte --> Cycle(336) --> Voir en EEprom dont : - Cycle = 3ième indice - JourSem = 2ième indice - (Heure X 4) + (Minute/15) = 1er indice Cycle * 84 + JourSem * 12 + Heure/2 ( OCTET ) Heure - (2 * INT(Heure/2)) + Minute/15 ( bit ) \__________ ___________/ 0 --> Temp_Nuit \/ 1 --> Temp_Jour * 4 Exemple: Soit à programmer le Cycle1 pour mettre le chauffage en fonctionnement le mardi à 07h15 et l'arrêter à 11h30, nous aurons: §§§ à complèter §§§ -------------------------------------------- Calcul de la température d'eau du chauffage. -------------------------------------------- Nous avons: - Chaudière -> ON/OFF -> Vanne_3_voies -> Analogique -> OUVERT/FERME - ECS -> ON/OFF - Circulateur -> ON/OFF -------------------- Programme principal. -------------------- Note:-Interrupt provoqué par la Molette = Incrémente MoletteCompteur -Interrupt provoqué par le Tempo = Incrémente Tempobtn (pour mesurer 1 sec) - Début BOUCLE - Lecture Temp_ECS - Lecture Temp_Int - Lecture Molette - Lecture Bouton - Lecture LcdLedOn - Lecture Horloge ( DS3231 sur Bus I2C ) - Calcul du 1/4 heure et en déduire la température de Consigne (Temp_Cons) qui peut-être Temp_Jour ou Temp_Nuit, pas oublier le Flag_Derogation -->Derogabit. - Si Temp_Int >= Temp_Int_Max -->( Temp_JOUR ou Temp_Nuit + Hys_Temp_Ambiante ) Temp_Int_Max = Temp_Int \ = Temp_Cons / FinSi ---------------- - Si Temp_Int <= Temp_Int_Min -->( Temp_JOUR ou Temp_Nuit - Hys_Temp_Ambiante ) Temp_Int_Min = Temp_Int \ = Temp_Cons / FinSi ---------------- - Si Temp_Int = Temp_Cons Si Chaudière = ON Flag_Temp_Int_Max = 1 Sinon Flag_Temp_Int_Min = 1 FinSi Temp_Int_Min & Temp_Int_Max = Temp_Cons FinSi - Si Flag_Temp_Int_Min = 1 & Flag_Temp_Int_Max = 1 GOSUB Calcul_Temp_Eau -->(Calcul de la température de la chaudière) FinSi - Si Temp_Int > Temp_Cons + Hys_Temp_Ambiante Chaudière = OFF (Led3 OFF) Sinon Chaudière = ON (Led3 ON) FinSi - Si Temp_ECS > Temp_Cons_ECS + Hys_ECS ECS = OFF (Led2 OFF) Sinon ECS = ON (Led2 ON) FinSi - Si Molette # GOSUB Changement_Temp_De_Consigne FinSi - Si Mode = Horloge ET Bouton = Court Si Temp_Cons = Temp_Jour Temp_Cons = Temp_Nuit Sinon Temp_Cons = Temp_Jour -->(Changement de T° de Consigne (Jour <-> Nuit)) Finsi Flag_Derogation = 1 ( à remettre à 0 à la fin de la plage horaire ) FinSi - Si Bouton = Long GOSUB MENU FinSi - Si Bouton = Court ET Molette # Mode = Mode + 1 Si Mode = 5 Mode = 1 FinSi FinSi - Calcul du % d'utilisation (Conso) de la chaudière et Régulation - Mise à jour de l'Affichage - Retour début de BOUCLE Fin du programme principal ********************************************************************************