bonjour, je demande au expert de m'aider a finir mon mini-projet,
le mini-projet consiste à automatiser une serre (greenhouse) mais ça concerne juste la température et l'humidité du sol.
j'utilise MikroC pour programmer le PIC (16f877) et proteus pour simulation et réalisation de la PCB.
voilà une description de l'automatisation:
On suppose que le voltage est de 2.9V à 15°C et 3.2v à 18°C ils correspondent aux deux valeurs numériques de: 2.9*51=148 et 3.2*51=163.
Donc mon programme doit contrôler AN0 lorsqu'elle est au-dessus de de 163 et au-dessous de 148.
Concernant l'humidité du sol, on sait que sa résistance augmente lorsqu'il est mouillé et on va supposer qu'il va donner une lecture de 2.6V (dans AN1) =====> 2.6*51=133 on considère donc le sol est mouillé à ce voltage.
voilà un description succincte de mon mini-projet, et voici mon programme en mikroC que j'ai écrit: (veuillez me le corrigerr SVP) et il me reste comment déclarer les dex variables (température & humidité) afin de les afficher sur un afficheur LCD.
merci d'avance ^^
Code:void main() // programme principal { trisa=0; trisc=1; while (1) { if (porta.f0<148) // si la temmpératue est inférieure à 15°C { portc.f1=1; // alors on allume le chauffage } else if (148<porta.f0<163) // sinon, si la température est entre 15°C et 17°C { portc.f1=0; // alors on éteint le chauffage portc.f2=0; // et on laisse le ventilateur éteint } else if (porta.f0>163) // si la température est supérieur à 17°C { portc.f2=1; // alors on allume le ventilateur } if (porta.f1>133) // si la terre est sèche { portc.f2=1; // alors on ouvre l'électrovanne delay_ms(500); // pendant 5 seconde portc.f2=0; // et on la ferme delay_ms(500); // pendant 5 seconde } } } // Lcd pinout settings sbit LCD_RS at RB0_bit; sbit LCD_EN at RB1_bit; sbit LCD_D4 at RB2_bit; sbit LCD_D5 at RB3_bit; sbit LCD_D6 at RB4_bit; sbit LCD_D7 at RB5_bit; // Pin direction sbit LCD_RS_Direction at TRISB0_bit; sbit LCD_EN_Direction at TRISB1_bit; sbit LCD_D4_Direction at TRISB2_bit; sbit LCD_D5_Direction at TRISB3_bit; sbit LCD_D6_Direction at TRISB4_bit; sbit LCD_D7_Direction at TRISB5_bit; void affichage() // programme d'affichage { Lcd_Init(); Lcd_Out(1, 1, "La température est:"); Lcd_Out(2, 1, "Le taux d'humidité est:"); Lcd_Cmd(_LCD_CURSOR_OFF); } :)
-----