Autor Tema: Problema con higrometro yl-69  (Leído 1848 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado zokter

  • PIC10
  • *
  • Mensajes: 12
Problema con higrometro yl-69
« en: 22 de Noviembre de 2015, 16:01:29 »
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...
Código: [Seleccionar]
#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

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Problema con higrometro yl-69
« Respuesta #1 en: 22 de Noviembre de 2015, 16:35:59 »
Y si haces :

     q=read_adc();
     q=1023-q;

Eso te va a dar el complemento de tu numero.

Creo que ese es tu problema.. Igual no consegui ningun datasheet de ese sensor
« Última modificación: 22 de Noviembre de 2015, 16:38:14 por KILLERJC »

Desconectado zokter

  • PIC10
  • *
  • Mensajes: 12
Re:Problema con higrometro yl-69
« Respuesta #2 en: 22 de Noviembre de 2015, 17:05:22 »
Gracias por la pronta respuesta, la probare enseguida. Otra cosa, sabes como le podria hacer para que mi cero% se ubique en mi minimo (osea 350) y mi cien% en los 1023, osea que el rango sea de 300 a 1023, de antemano muchas gracias

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Problema con higrometro yl-69
« Respuesta #3 en: 22 de Noviembre de 2015, 17:12:05 »
Hace una linea..
para x = 300 -> y = 0,
para x= 1023 -> y = 1023

Resultado:

y = \frac{341*x}{241} - \frac{102300}{241}

y = 1.415*x - 424.48

O directamente podes hacerlo todo junto.... en este caso x seria lo que tomas directo del ADC sin hacer le complemetno

para x = 1023 -> y= 0%
para x = 300 -> y = 99%

y = \frac{33759}{241} - \frac{33*x}{241}

y = 140.08 - 0.137*x


Recien me doy cuenta que lo hice para 300... pero espero que me entiendas

Para calcular la recta entre 2 puntos
http://www.wolframalpha.com/widgets/view.jsp?id=82138b11a724b94d18df2e083d8b7b55
« Última modificación: 22 de Noviembre de 2015, 17:18:36 por KILLERJC »

Desconectado zokter

  • PIC10
  • *
  • Mensajes: 12
Re:Problema con higrometro yl-69
« Respuesta #4 en: 22 de Noviembre de 2015, 17:15:09 »
Te lo agradezco mucho amigo, daré por solucionado este tema, sos grande