Buen dia amigos, soy nuevo en esto de los microcontroladores y empieza a gustarme mucho, ahora mismo estoy en un miniproyecto de un sistema de riego y estoy teniendo algunos problemas.
El primero de ellos es con el sensor de humedad yl-69 con su pata analogica... el codigo que tengo me dice que va de 0 a 1023 donde 0 es seco y 1023 es humedad, resulta que mi sensor marca al reves, cuando esta seco me marca 1023 y cuando esta mojado me marca aprox 350 (no llega a 0), esto lo imprimo en una lcd 20x4 donde me marca la humedad en porcentaje pero debido a este problema cuando esta seco me marca 99% de humedad y cuando esta sumergido en agua me marca 30% de humedad...
#include <18f4550.h>
#device adc=10
#use delay(clock=4M)
#fuses XT,NOWDT
#define D0 enable
#define D1 rs
#define D2 rw
#define D4 D4
#define D5 D5
#define D6 D6
#define D7 D7
#include <lcd4202.c>
#include <KBD1.c>
void main()
{
int16 q;
float T;
int humedad;
char k;
int hmin;
int hmax;
setup_adc_ports(AN0);
setup_adc(ADC_CLOCK_INTERNAL);
lcd_init();
kbd_init();
port_b_pullups(TRUE);
menu:
printf(lcd_putc,"\f Tipo de planta:");
k=0;
while(K==0)
{
k=kbd_getc();
switch (k)
{
case '1':
hmin=60;
hmax=80;
break;
case '2':
hmin=45;
hmax=80;
break;
case '3':
hmin=20;
hmax=30;
break;
}
}
principal:
while(true)
{
k=kbd_getc();
set_adc_channel(0);
delay_us(20);
q=read_adc();
T=5.0*q/1024;
humedad=(100*T)/5;
lcd_gotoxy(1,1);
printf(lcd_putc, "Humedad = %3d%% ", humedad);
lcd_gotoxy(1,3);
printf(lcd_putc,"H.Min:%2d%%H.Max:%2d%%",hmin,hmax );
k=kbd_getc();
if (k=='A'){
goto menu;
}
if(humedad <= hmin)
{
lcd_gotoxy(1,2);
printf(lcd_putc,"bomba on ");
}
else if(humedad >= hmax )
{
lcd_gotoxy(1,2);
printf (lcd_putc,"bomba off ");
}
}
}
Este es mi codigo, espero me puedan ayudar.
Att: Gilberto Ramirez