Autor Tema: Ayuda con un sensor infrarrojo y PIC  (Leído 4940 veces)

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

Desconectado alluzin

  • PIC10
  • *
  • Mensajes: 21
Ayuda con un sensor infrarrojo y PIC
« en: 29 de Noviembre de 2011, 02:38:40 »
Hola   q tal?
 Estoy   atorado con mi  proyecto de  titulación  ya que un  sensor infrarrojo no es  detectado a tiempo por un pic 18f4550, el sensor  si  funciona y  si manda la  señal al pic  esto ya lo verifique. Este  sensor es el que  me  da  entrada a una  rutina  mediante un  función  IF. si  el  sensor  manda  un  1 debería de entrar de inmediato a la  rutina, pero  esto no es  así, ya que  después  de  unos  segundos   de  estar interrumpiendo la señal el  pic  ejecuta  esta  rutina y yo  quiero  que  entre  de inmediato  al interrumpirse la señal del   sensor.
Les   dejo  mi programa  a ver  si me pueden  ayudar  a resolver mi problema, El  programa  toma  muestras  del  ADC y  después las manda  a la pc por  USB CDC a una aplicación en Labview, la  cual  genera un registro  de los valores  tomados por  ADC del  pic.
Código: [Seleccionar]
do{
                     
                     
                      dato=usb_cdc_getc();                     //espera a recibir un datos por el puerto cdc_usb
                                         
                      switch(dato) {                           // compara el dato para ejecutar accion
                 
                     
                                                                                           
                                 
                      case 'a':                             
                     
                                if(input(PIN_A1) == 1)
                                  {
                                       
                                    set_adc_channel(0);
                                    ref2=algoritmo();
                                    peso=(ref2-ref)*factor;
                                    bajo=make8(peso,0);
                                    alto=make8(peso,1);
                                    printf(usb_cdc_putc,"%c",set);
                                    delay_ms(5);
                                    printf(usb_cdc_putc,"%c",bajo);
                                    delay_ms(5);
                                    printf(usb_cdc_putc,"%c\n",alto);
                                    lcd_gotoxy(1,1);
                                    lcd_putc('\f');
                                    printf(lcd_putc,"Peso= %lu gramos",peso);
                                     delay_ms(1000);
                                                                                                             
                                 }
                                                           
                                  else
     {
     printf(lcd_putc,"Esperando");
                                     delay_ms(3000);
     }
                                   
                                break;                               
                                }
                             
       }while (TRUE); // bucle infinito.
 

Desconectado NoSepComo

  • PIC18
  • ****
  • Mensajes: 305
Re: Ayuda con un sensor infrarrojo y PIC
« Respuesta #1 en: 29 de Noviembre de 2011, 04:50:18 »
Hola, cuando el pic no atiende a los procesos del main suele ser porque alguna interrupción esté acaparando su atención, vigila que no esté pasando eso. Lo que puedes hacer para asegurarte es comentar el código que vaya asociado a las interrupciones y probar sencillamente si el PIC atiende bien la entrada del sensor.
Si no vuelve a algo más básico y simplemente hazte un programita para encender un led cuando se active el sensor, parece una tontería, pero seguro que si vas añadiendo cosas desde ahí lo solucionas o por lo menos averiguas que es lo que casca.

Desconectado tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506
Re: Ayuda con un sensor infrarrojo y PIC
« Respuesta #2 en: 29 de Noviembre de 2011, 06:07:10 »
Citar
si  el  sensor  manda  un  1 debería de entrar de inmediato a la  rutina

Yo todos los sensores infrarrojos que use (PIR) funcionan por 0, estan dando un 1 continuamente y cuando detectan presencia se ponen a 0, miralo por si acaso.


Desconectado NoSepComo

  • PIC18
  • ****
  • Mensajes: 305
Re: Ayuda con un sensor infrarrojo y PIC
« Respuesta #3 en: 29 de Noviembre de 2011, 06:20:51 »
Hola, yo uso uno de PEPPERl+FUCHS que puede funcionar por nivel alto o por nivel bajo, según que conexionado hagas de él.

Desconectado Vtronic

  • PIC16
  • ***
  • Mensajes: 121
Re: Ayuda con un sensor infrarrojo y PIC
« Respuesta #4 en: 29 de Noviembre de 2011, 13:25:17 »
y si mandas ese uno a una interrupcion?

Desconectado Geo

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 922
    • Mexchip
Re: Ayuda con un sensor infrarrojo y PIC
« Respuesta #5 en: 29 de Noviembre de 2011, 15:54:07 »
Dos cosas, si la función usb_cdc_getc() espera a recibir datos, ahí estará ocupado el PIC un tiempo y por eso no detecta de inmediato el cambio de estado del pin al que está conectado el detector.
Segunda, si no hay señal del detector, haces un retardo de 3000 ms, por lo que en el mejor de los casos, una vez que no hay detección, esperarás 3 seg para poder detectar la activación del detector, el cual, si tienes suerte se activará exactamente cuando en tu programa estés verificando el estado del pin, de lo contrario, esperarás otros 3 s. Ese retardo es demasiado y creo que es la causa de tus problemas.
La imaginación es el límite.
Visita mi blog, en inglés o en español :).
Mini curso de introducción a VHDL en MEXCHIP :-/