TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: jumu en 25 de Septiembre de 2012, 18:38:24

Título: Problema con Sensor de movimiento
Publicado por: jumu en 25 de Septiembre de 2012, 18:38:24
buenas tardes a todos...pues tengo un sensor de movimiento de mikroelektronika con un lcd16x2...lo que quiero hacer es que cuando el sensor detecte movimiento se encienda un led y salga en la lcd un mensaje que diga Presencia o No Presencia dependiendo de la situacion...y que me mantenga el led encendido por cierto tiempo hasta que no haya movimiento...ya lo comence y pongo el codigo aqui
Código: [Seleccionar]
#include <16F887.h>
#Fuses HS,NOWDT,NOPROTECT,PUT
#Use delay(clock=4000000)
#include <lcd.c> 


void main(void)
{
   lcd_init();
   lcd_gotoxy(1,1);
   printf(LCD_PUTC,"Sensor Motion");
   while(true)
   {
      if(input(pin_a0)==1)
      {
         output_high(pin_a2);
         lcd_gotoxy(1,2);
         printf(LCD_PUTC,"Presencia...");
         delay_ms(2000);
      }
      else
      {
         lcd_gotoxy(1,2);
         printf(LCD_PUTC,"No Presencia...");
         delay_ms(2000);
      }
      delay_ms(1000);
   }
}
pero lo que consigo solamente es que el led se mantenga encendido y el lcd siempre mostrando presencia...no se que tengo mal en el codigo si alguien me puede ayudar les agradeceria...
Título: Re: Problema con Sensor de movimiento
Publicado por: fantaxmax en 25 de Septiembre de 2012, 21:19:39
Código: C
  1. #include <16F887.h>
  2. #Fuses HS,NOWDT,NOPROTECT,PUT
  3. #Use delay(clock=4000000)
  4. #define LCD_DATA_PORT getenv("SFR:PORTB")
  5. #include <lcd.c>  //Asegurate que este bien conectado el LCD
  6.  
  7.  
  8. void main(void)
  9. {
  10.    lcd_init();
  11.    LCD_PUTC("\fSensor Motion");
  12.    while(true)
  13.    {
  14.       if(input(pin_a0)==1)
  15.       {
  16.          output_high(pin_a2);
  17.          LCD_PUTC("\fPresencia...");
  18.          delay_ms(2000);
  19.          output_low(pin_a2);
  20.       }
  21.       else
  22.       {
  23.          LCD_PUTC("\fNo Presencia...");
  24.          delay_ms(2000);
  25.       }
  26.       //delay_ms(1000); no lo considero nescesario.
  27.    }
  28. }

con eso deberia funcionarte,

Saludos!
Título: Re: Problema con Sensor de movimiento
Publicado por: jumu en 26 de Septiembre de 2012, 15:42:11
muchas gracias me sirvio bastante, y tambien lo que hice fue ponerle una resistencia de 10k en la salida del sensor para quitar el voltaje que tenia de salida que era de 1.5 a 2.5 y con la resistencia bajo a 0.9 y ahora si se activa cuando quiero :D muchas gracias
Título: Re: Problema con Sensor de movimiento
Publicado por: fantaxmax en 26 de Septiembre de 2012, 16:33:45
Que bueno que te funcionara, la resistencia que colocaste es pull-down o en serie? si tenias problemas por activacion, por voltaje no deseado, deberia ser pull-down, para mantener la salida del sensor siempre en 0v.

Saludos!
Título: Re: Problema con Sensor de movimiento
Publicado por: jumu en 26 de Septiembre de 2012, 18:56:55
hola fantaxmax bueno mira lo que yo quiero hacer es que el sensor cuando detecte movimiento se encienda un led blanco... esto lo vi en unos baños de un restaurante...y quiero hacerlo con pic...pero el problema es que no se como mantener ese 1 logico(5V) del sensor y cuando no haya gente que se ponga en 0 logico(0V)...por que medi y cuando hay movimiento si me tira 4.95V pero despues baja a cero...entonces no se como mantenerlo para que me dure... o le subo el tiempo en que mantengo encendido el led??
Título: Re: Problema con Sensor de movimiento
Publicado por: KALLITOS en 26 de Septiembre de 2012, 18:59:51
Lo que debes hacer es un contador de tiempo, cuando llega pulso 1 inicia el conteo y enciende el led, no importa si el sensor se va a 0 el led estara encendido mientras dure el tiempo, terminado el tiempo apaga el led, si durante el conteo nuevamente se pone a 1 el sensor coloca a 0 el contador de tiempo.

saludos
Título: Re: Problema con Sensor de movimiento
Publicado por: jumu en 26 de Septiembre de 2012, 19:03:18
huy me dejaste en la luna hahaha...como seria eso para programarlo...me gustaria hacer eso...para una amiga que tiene una maqueta de arquitectura y para mi que me ayuda :D
Título: Re: Problema con Sensor de movimiento
Publicado por: jumu en 26 de Septiembre de 2012, 19:16:10
bueno yo hice fue esto...los cambios los voy a poner en negrita...me dicen si esta bien ahorita voy a probar a ver que tal...
Código: [Seleccionar]
while(true)
   {
      [b]contador++;[/b]
      if(input(pin_a0)==1)
      {
         [b]contador=0;[/b]
         output_high(pin_a1);
         lcd_gotoxy(11,2);
         LCD_PUTC("ON ");
      }
      else
      {
         output_low(pin_a1);
         lcd_gotoxy(11,2);
         LCD_PUTC("OFF");
         delay_ms(2000);
      }
   }

bueno creo que me hacen falta unas cosas...ya pruebo
Título: Re: Problema con Sensor de movimiento
Publicado por: fantaxmax en 26 de Septiembre de 2012, 19:26:26
Imagino que el led lo tienes conectado a el pin a2, entonces si quieres que este, ejemplo 5 segundos encendido el led modificamos la x a 5000, o 10 segundos= 10000

Código: C
  1. #include <16F887.h>
  2. #Fuses HS,NOWDT,NOPROTECT,PUT
  3. #Use delay(clock=4000000)
  4. #define LCD_DATA_PORT getenv("SFR:PORTB")
  5. #include <lcd.c>  //Asegurate que este bien conectado el LCD
  6.  
  7.  
  8. void main(void)
  9. {
  10.    lcd_init();
  11.    LCD_PUTC("\fSensor Motion"); //escribes en pantalla
  12.    while(true) //entras a un bucle infinito
  13.    {
  14.       if(input(pin_a0)==1)//al detectar movimiento entra aqui, la salida del sensor subio a uno
  15.       {
  16.          output_high(pin_a2);//encendemos el led
  17.          LCD_PUTC("\fPresencia...");//escribimos en la pantalla
  18.          delay_ms(x);//creamos la demora del led, para que se mantenga encendido durante x segundos, este tiempo debes editar para cambiar el tiempo de encendido del led
  19.          output_low(pin_a2);//apagamos el led
  20.       }
  21.       else //si la salida del sensor es 0 entra aqui
  22.       {
  23.          LCD_PUTC("\fNo Presencia...");//escribe en la pantalla
  24.          delay_ms(200);//crea una demora de 200 milisegundos mucho tiempo resta fiabilidad al sensado
  25.       }
  26.       //al terminar las operaciones anteriores, vuelve al inicio, a comprobar el estado del sensor
  27.    }
  28. }

creo que con eso y una resistencia de pull-down (resistencia a tierra) en la salida del sensor te va a funcionar como quieres, un consejo, creo que el pic que ocupas es muy grande para la simpleza del proyecto te recomendaria usar pics de 8 pines y eliminar el lcd, a no ser que le añadas mas funciones, pero es solo un consejo.
en cuanto a la salida del sensor no es necesario mantenerla en 5v, al momento de subir a 5v el pic lo detectara, e iniciara la rutina de encendido y apagado del led, segun el tiempo que especificaste en "delay_ms(x);"
Título: Re: Problema con Sensor de movimiento
Publicado por: KALLITOS en 26 de Septiembre de 2012, 19:43:48
huy me dejaste en la luna hahaha...como seria eso para programarlo...me gustaria hacer eso...para una amiga que tiene una maqueta de arquitectura y para mi que me ayuda :D

Presentame a tu amiga, no te rompas el coco, yo se lo hago "literalmente dicho"  :mrgreen:
Título: Re: Problema con Sensor de movimiento
Publicado por: jumu en 27 de Septiembre de 2012, 02:27:29
Para la próxima te la mando hahaha  :mrgreen: pero ayudarme...no se co programar el temporizador  x_x ya muchos inventos hice en el codigo hahahaha
Título: Re: Problema con Sensor de movimiento
Publicado por: fantaxmax en 27 de Septiembre de 2012, 10:49:20
te vuelvo a proponer, con el mismo codigo que pusiste de primera, y unas cuantas limadas y el sistema te va a funcionar como deseas

Código: C
  1. #include <16F887.h>
  2. #Fuses HS,NOWDT,NOPROTECT,PUT
  3. #Use delay(clock=4000000)
  4. #define LCD_DATA_PORT getenv("SFR:PORTB")
  5. #include <lcd.c>  //Asegurate que este bien conectado el LCD
  6.  
  7.  
  8. void main(void)
  9. {
  10.    lcd_init();
  11.    LCD_PUTC("\fSensor Motion"); //escribes en pantalla
  12.    while(true) //entras a un bucle infinito
  13.    {
  14.       if(input(pin_a0)==1)//al detectar movimiento entra aqui, la salida del sensor subio a uno
  15.       {
  16.          output_high(pin_a2);//encendemos el led
  17.          LCD_PUTC("\fPresencia...");//escribimos en la pantalla
  18.          delay_ms(x);//creamos la demora del led, para que se mantenga encendido durante x segundos, este tiempo debes editar para cambiar el tiempo de encendido del led
  19.          output_low(pin_a2);//apagamos el led
  20.       }
  21.       else //si la salida del sensor es 0 entra aqui
  22.       {
  23.          LCD_PUTC("\fNo Presencia...");//escribe en la pantalla
  24.          delay_ms(200);//crea una demora de 200 milisegundos mucho tiempo resta fiabilidad al sensado
  25.       }
  26.       //al terminar las operaciones anteriores, vuelve al inicio, a comprobar el estado del sensor
  27.    }
  28. }

a mi parecer esta bastante bien explicado, solo debes modificar la x por la cantidad de tiempo que deseas encendido el led
Título: Re: Problema con Sensor de movimiento
Publicado por: jumu en 27 de Septiembre de 2012, 14:17:27
Bueno ese me funciono pero se me apaga aun así cuando estoy moviendo la mano digamos...entonces agarre la idea de KALLITOS de ha en un contador para el tiempo y cada ves que se mueva y tenga 5V el contador se reinice a 0 y cuando no haya movimiento cuente digamos a 60 y se apague el led...Pero ese contador no se como hacerlo...voy a ir probando a ver que tal me va...y si alguno sabe como hacer ese contador que me explique muchas gracias :)
Título: Re: Problema con Sensor de movimiento
Publicado por: fantaxmax en 27 de Septiembre de 2012, 16:20:23
hola, pues mira lo del contador es lo mismo que te presento yo, lo cual presentaste tu y yo modifique ligeramente, el programa que te presento lo pase a un micro, un 16f690, como el sensor no lo tengo, y el lcd tampoco, lo he hecho solo con el led, mira te dejo un video, el sensor virtual es una salida del pickit, al haber movimento, en ese caso se mantiene en uno la salida del pickit, el led se mentiene encendido



como vez aqui, al enviar un pulso por el pickit2, el programa enciende el led y lo apaga inmediatamente termina el delay, en tu caso es el tiempo que desear encendido el led, yo al programa como vez mas abajo le cargue 5.000 milisegundos, lo cual equivale a 5 segundos, si deseas 60 segundos, bueno haz el calculo, 60.000 milisegundos

el codigo es el siguiente,

Código: C
  1. #include "main.h"//fuses y cabecera pic
  2.  
  3.  
  4. void main(void)
  5. {
  6.    //lcd_init();
  7.    //LCD_PUTC("\fSensor Motion"); //escribes en pantalla
  8.    while(true) //entras a un bucle infinito
  9.    {
  10.       if(input(pin_a0)==1)//al detectar movimiento entra aqui, la salida del sensor subio a uno
  11.       {
  12.          output_high(pin_c0);//encendemos el led
  13.          //LCD_PUTC("\fPresencia...");//escribimos en la pantalla
  14.          while(input(pin_a0)){if(!input(pin_a0)){break;}}/*con esto el pic dejara encendido el led el tiempo que el sensor este en alto, una vez que baje, iniciara una cuenta regresiva para apagar el led*/
  15.          delay_ms(5000);//creamos la demora del led, para que se mantenga encendido durante x segundos, este tiempo debes editar para cambiar el tiempo de encendido del led
  16.          output_low(pin_c0);//apagamos el led
  17.       }
  18.       else //si la salida del sensor es 0 entra aqui
  19.       {
  20.          //LCD_PUTC("\fNo Presencia...");//escribe en la pantalla
  21.          delay_ms(200);//crea una demora de 200 milisegundos mucho tiempo resta fiabilidad al sensado
  22.       }
  23.       //al terminar las operaciones anteriores, vuelve al inicio, a comprobar el estado del sensor
  24.    }
  25. }

en base es el mismo programa solo que deje como comentario lo que no uso, y coloque mis pines diponibles del pic.

espero el video te ayude! Saludos!
Título: Re: Problema con Sensor de movimiento
Publicado por: fantaxmax en 27 de Septiembre de 2012, 17:22:57
PD: el video lo hice sin el segundo while
Título: Re: Problema con Sensor de movimiento
Publicado por: jumu en 27 de Septiembre de 2012, 19:37:45
pregunta fantaxmax...cuando pongo a contar una variable...lo hace cada segundo??
Título: Re: Problema con Sensor de movimiento
Publicado por: fantaxmax en 27 de Septiembre de 2012, 19:45:53
pregunta fantaxmax...cuando pongo a contar una variable...lo hace cada segundo??

muestrame el codigo que usas para contar la variable
Título: Re: Problema con Sensor de movimiento
Publicado por: jumu en 27 de Septiembre de 2012, 19:53:23
Código: [Seleccionar]
void main(void)
{
   lcd_init();
   saludo();
   LCD_PUTC("\fSensor Motion");
   lcd_gotoxy(1,2);
   LCD_PUTC("Presencia:");
   
   while(true)
   {
      if(input(pin_a0)==1)
      { 
         cont++;
         output_high(pin_a1);
         lcd_gotoxy(11,2);
         LCD_PUTC("ON ");
         do
         {
            cont=0;
         }while(input(pin_a0)==1);
      }
      if(cont>=3)
      {
         output_low(pin_a1);
         lcd_gotoxy(11,2);
         LCD_PUTC("OFF");
      }
     
   }
}
Título: Re: Problema con Sensor de movimiento
Publicado por: fantaxmax en 27 de Septiembre de 2012, 20:25:59
probe el programa en mi pic, y como sospeche el led queda encendido. te recomiendo cambiar de posicion el cont++; junto al cont=0; intercambiar lugares, respecto al do no le veo mucho uso, cambialo por un while, de hecho el mismo while que esta al final del do, hazle los cambios que te digo y avisame
Título: Re: Problema con Sensor de movimiento
Publicado por: jumu en 27 de Septiembre de 2012, 20:33:10
pues intercambie el cont=0 con el cont++ y solo me encendia cuando habia 5V del sensor...y en ves de poner while puse if y me queda encendido...lo que quiero es que cuando el cont sea igual a 3 se apague...
Título: Re: Problema con Sensor de movimiento
Publicado por: fantaxmax en 27 de Septiembre de 2012, 20:40:54
Código: C
  1. void main(void)
  2. {
  3.    lcd_init();
  4.    saludo();
  5.    LCD_PUTC("\fSensor Motion");
  6.    lcd_gotoxy(1,2);
  7.    LCD_PUTC("Presencia:");
  8.    
  9.    while(true)
  10.    {
  11.       if(input(pin_a0)==1)
  12.       {  
  13.          cont=0;
  14.          output_high(pin_a1);
  15.          lcd_gotoxy(11,2);
  16.          LCD_PUTC("ON ");
  17.          while(input(pin_a0)==1)
  18.          {
  19.             cont++; // incrementa la variable cont
  20.             delay_ms(1000); // con este delay haces que cuente cada 1 segundo
  21.             if(cont==3)
  22.       {
  23.          output_low(pin_a1);
  24.          lcd_gotoxy(11,2);
  25.          LCD_PUTC("OFF");
  26.       }
  27.        
  28.       }
  29.       }
  30.      
  31.    }
  32. }

prueba con esa modificacion, voy a pasarlo al pic para probarlo tambien.
Título: Re: Problema con Sensor de movimiento
Publicado por: fantaxmax en 27 de Septiembre de 2012, 20:51:03
pues lo probe, y una vez que se activa el sensor, inicia el conteo y al llegar a tres lo apaga, y si el pulso desaparece antes de los tres segundos queda activado, hasta que se vuelve a activar durante tres segundos y se apaga, y no creo que quieras que funcione asi, al parecer quieres dejar el nombre sensor motion en la pantalla, modifico el programa que presente antes para que esccriba en la pantalla como lo quieres en este ultimo.

Código: C
  1. void main(void)
  2. {
  3.    lcd_init();
  4.    LCD_PUTC("\fSensor Motion"); //escribes en pantalla
  5.    lcd_gotoxy(1,2);
  6.    LCD_PUTC("Presencia:");
  7.    while(true) //entras a un bucle infinito
  8.    {      
  9.       if(input(pin_a0)==1)//al detectar movimiento entra aqui, la salida del sensor subio a uno
  10.       {
  11.          output_high(pin_a1);//encendemos el led
  12.          lcd_gotoxy(11,2);
  13.          LCD_PUTC("ON");//escribimos en la pantalla
  14.          while(input(pin_a0)){if(!input(pin_a0)){break;}}/*con esto el pic dejara encendido el led el tiempo que el sensor este en alto, una vez que baje, iniciara una cuenta regresiva para apagar el led*/
  15.          delay_ms(5000);//creamos la demora del led, para que se mantenga encendido durante x segundos, este tiempo debes editar para cambiar el tiempo de encendido del led
  16.          output_low(pin_a1);//apagamos el led
  17.       }
  18.       else //si la salida del sensor es 0 entra aqui
  19.       {
  20.          lcd_gotoxy(11,2);
  21.          LCD_PUTC("OFF");//escribe en la pantalla
  22.          delay_ms(200);//crea una demora de 200 milisegundos mucho tiempo resta fiabilidad al sensado
  23.       }
  24.       //al terminar las operaciones anteriores, vuelve al inicio, a comprobar el estado del sensor
  25.    }
  26. }

recuerda que en este programa si deseas que el led este encendido 3 segundos debes cambiar el 5000(5 seg) por 3000(3 seg) o la cantidad de segundos que desees por 1000.
Título: Re: Problema con Sensor de movimiento
Publicado por: jumu en 28 de Septiembre de 2012, 00:14:00
bueno me has ayudado bastante fantaxmax de verdad hay varias formas de hacer esto...pero no se si tienes la idea bn clara...yo no quiero que dure el tiempo del delay...porque ya lo hice y asi no es como lo queria...yo lo que quiero es que cada ves que haya movimiento un contador vuelta a 0 y cuando no haya movimiento va a seguir el contador a cierto numero contado el led se apaga...eso es lo que quiero pero no se que tengo mal o no se...voy a seguir probando muchas gracias por tu tiempo :D y pues a ver si conseguimos eso :D
Título: Re: Problema con Sensor de movimiento
Publicado por: fantaxmax en 28 de Septiembre de 2012, 00:57:49
con esa explicacion puedo traducirlo a codigo de programa

Código: C
  1. void main(void)
  2. {
  3.    lcd_init();
  4.    saludo();
  5.    LCD_PUTC("\fSensor Motion");
  6.    lcd_gotoxy(1,2);
  7.    LCD_PUTC("Presencia:");
  8.    
  9.    while(true)
  10.    {
  11.       if(input(pin_a0)==1)
  12.       {  
  13.          cont=1;
  14.          output_high(pin_a1);
  15.          lcd_gotoxy(11,2);
  16.          LCD_PUTC("ON ");
  17.        }
  18.        
  19.        while(cont!=0) // este while funciona de contador
  20.          {
  21.             cont++; // incrementa la variable cont
  22.             delay_ms(1000); // con este delay haces que cuente cada 1 segundo, tambien puede ser una medida menor, como tu quieras
  23.             if(cont==x) // x= numero de segundos del contador, ya que hay un delay de un segundo arriba, si ese delay no esta, el led se apagara inmediatamente al bajar la salida del sensor
  24.                   {
  25.                    output_low(pin_a1);
  26.                    lcd_gotoxy(11,2);
  27.                    LCD_PUTC("OFF");
  28.                    cont=0;
  29.                    break;
  30.                    }
  31.          }
  32.      
  33.    }
  34. }

creo que eso es lo que quieres, pruebalo en tu placa haber que tal
Título: Re: Problema con Sensor de movimiento
Publicado por: jumu en 28 de Septiembre de 2012, 01:13:52
mucha gracias fantaxmax me sirvio...pero no se si me podrias explicar un poco la ultima parque porque lo mandas a cero el cont??...perdon por la ignorancia x_x
Título: Re: Problema con Sensor de movimiento
Publicado por: fantaxmax en 28 de Septiembre de 2012, 12:43:49
mucha gracias fantaxmax me sirvio...pero no se si me podrias explicar un poco la ultima parque porque lo mandas a cero el cont??...perdon por la ignorancia x_x

te explico el programa, y no te disculpes por no saber, nadie nace sabiendo, y la unica manera de aprender es preguntando, y haciendo

Código: C
  1. void main(void)
  2. {
  3.    lcd_init();
  4.    saludo();
  5.    LCD_PUTC("\fSensor Motion");
  6.    lcd_gotoxy(1,2);
  7.    LCD_PUTC("Presencia:");
  8.    
  9.    while(true)
  10.    {
  11.       if(input(pin_a0)==1)
  12.       {  
  13.          cont=1; //con esto le idicamos al while que debe comenzar a contar, ya que va a contar solo cuando cont no sea cero
  14.          output_high(pin_a1); //encendemos el led
  15.          lcd_gotoxy(11,2);
  16.          LCD_PUTC("ON ");
  17.        }
  18.        
  19.        while(cont!=0) // este while funciona de contador
  20.          {
  21.             cont++; // incrementa la variable cont
  22.             delay_ms(1000); // con este delay haces que cuente cada 1 segundo, tambien puede ser una medida menor, como tu quieras
  23.             if(cont==x) // x= numero de segundos del contador, ya que hay un delay de un segundo arriba, si ese delay no esta, el led se apagara inmediatamente al bajar la salida del sensor
  24.                   {
  25.                    output_low(pin_a1); //apagamos el led
  26.                    lcd_gotoxy(11,2);
  27.                    LCD_PUTC("OFF");
  28.                    cont=0; //al colocar el cont a 0 le decimos el while que debe dejar de contar, y que debe dejar a la cpu seguir sensando
  29.                    break;
  30.                    }
  31.          }
  32.      
  33.    }
  34. }

como vez el contador solo comenzara a contar una vez que la cpu detecte la salida del sensor y coloque cont a 1, con ese uno en el cont, el contador (while) comprobo que conto ya no es cero, entonces esa es la orden para comenzar a contar, el while cuenta normalmente y va verificando que el numero que lleva contado sea igual al que tu definiste en x, cuando se cumple el contador debe apagar el led, y debe detenerse a si mismo, entonces, el pone a cont a 0, y se termina el conteo, y la cpu puede seguir sensando, si cont no la pusieramos a cero, la cpu al salir del contador volveria a entrar al while del contador, pero en este caso, no se cumpliria la que cont==x, porque nunca volvio a empezar desde 1 en este caso, y tu pic dejaria de responder, se quedaria "colgado".
Título: Re: Problema con Sensor de movimiento
Publicado por: jumu en 28 de Septiembre de 2012, 14:40:34
ya entendi :D muchas gracias fantaxmax por tu ayuda...entendi todo perfecto...ahora ya se un poco mas :D de verdad muchas gracias por tu tiempo y explicarme :D
Título: Re: Problema con Sensor de movimiento
Publicado por: jumu en 28 de Septiembre de 2012, 19:23:14
bueno ahora tengo otro problema x_x...quiero cambiar el pic a un 16f84a...y solo cambio la parte de arriba de include en proteus me funciona la simulacion...pero en real no...le puse un oscilador de 4MHz con dos capacitores de 33pF...y no me agarra no hace lo que tiene que hacer es el mismo codigo...y aqui lo pongo...no se si tengo algo mal en los fuses o que...
Código: [Seleccionar]
#include <16F84A.h>
#Fuses XT,NOWDT,NOPROTECT,PUT
#Use delay(clock=4000000)

int cont;

void main(void)
{

   while(true)
   {
      if(input(pin_a2)==1)
      {
         cont=1;
         output_high(pin_a3);
      }
      while(cont!=0)
      {
         cont++;
         delay_ms(1000);
         if(cont==5)
         {
            output_low(pin_a3);
            cont=0;
            break;
         }
      }
   }
}
Título: Re: Problema con Sensor de movimiento
Publicado por: fantaxmax en 28 de Septiembre de 2012, 19:39:53
los condensadores son los mismos que usaste con el otro pic?, probaste a colocarle condensadores de 22pf?, en los fuses no creo que este el error, prueba a cambiarle los condensadores
Título: Re: Problema con Sensor de movimiento
Publicado por: jumu en 28 de Septiembre de 2012, 20:24:56
sii son los mismos...estube leyendo que podia poner un oscilador de 10MHz que tengo varios aqui y con los capacitores de 33pf...y pense que podia usar esos capacitores con un oscilador de 4MHz...el problema es que no tengo capacitores de 22pf...probare ponerle el oscilador de 10 y cambiar en los fuses el XT por el HS
Título: Re: Problema con Sensor de movimiento
Publicado por: jumu en 28 de Septiembre de 2012, 20:41:09
no se si es la protoboard o que pero aveces me funciona y aveces no...no se que estara mal :S
Título: Re: Problema con Sensor de movimiento
Publicado por: fantaxmax en 28 de Septiembre de 2012, 20:55:41
probablemente sea la protoboard, nunca han sido buenas las protoboards para probar circuitos de alta frecuencia, prueba a ordenar un poco el circuito, usar la menor cantidad de puentes, y me cuentas que tal, probaria el programa yo aca pero no tengo 16f84a, Saludos!
Título: Re: Problema con Sensor de movimiento
Publicado por: KALLITOS en 28 de Septiembre de 2012, 20:56:06
Prueba cambiando el fuse PUT por NOPUT.
No olvides poner condensador 104 entre vcc y gnd del pic.
Título: Re: Problema con Sensor de movimiento
Publicado por: jumu en 28 de Septiembre de 2012, 21:31:10
para este circuito no uso puente solo para alimentacion y para la señal del sensor...y me sigue lo mismo...estoy empezando a pensar que es la protoboard...probare en otras partes de la proto para verificar eso muchas gracias
Título: Re: Problema con Sensor de movimiento
Publicado por: fantaxmax en 28 de Septiembre de 2012, 21:43:56
sigue el consejo de KALLITOS, si es que no lo has hecho, y como tu dices cambia de lugar en la protoboard, o puede ser el pic el defectuoso, lo cual lo dudo, prueba a tambien a reprogramar el pic, cuentanos que tal

Saludos!
Título: Re: Problema con Sensor de movimiento
Publicado por: jumu en 28 de Septiembre de 2012, 22:08:04
bueno les cuento que hice lo que dijo kallitos y nada con el 16f84a...pero lo grabe en otro pic el 16f887 y funciona a la perfeccion...hasta mañana veo si cambio la proto porque ahorita ninguna de las dos que tengo me funciono...entonces hasta mañana vere si es eso...ojala sea eso no mas :D muchas gracias mañana les cuento que tal...
Título: Re: Problema con Sensor de movimiento
Publicado por: fantaxmax en 29 de Septiembre de 2012, 00:06:23
bueno les cuento que hice lo que dijo kallitos y nada con el 16f84a...pero lo grabe en otro pic el 16f887 y funciona a la perfeccion...hasta mañana veo si cambio la proto porque ahorita ninguna de las dos que tengo me funciono...entonces hasta mañana vere si es eso...ojala sea eso no mas :D muchas gracias mañana les cuento que tal...

de por casualidad, tendrias otro 84a, para descartar que no sea el pic, porque si el mismo codigo te funciona en un 877, a mi parecer, el pic esta dañado
Título: Re: Problema con Sensor de movimiento
Publicado por: jumu en 29 de Septiembre de 2012, 18:00:24
lastimosamente no tengo otro 84a...y hoy que cambie de proto pues no me sirvio no me funciono...puede que sea el pic...aunque cuando le grabo el programa lo graba bien y todo pero no se cual sera el problema
Título: Re: Problema con Sensor de movimiento
Publicado por: fantaxmax en 29 de Septiembre de 2012, 18:11:09
si ya no te funciono en otra proto, y te funciona otro pic en la misma protoboard es el pic, lamentablemente, deberas comprar otro 84a, o usar el 877
Título: Re: Problema con Sensor de movimiento
Publicado por: jumu en 29 de Septiembre de 2012, 18:28:21
pero ahorita probando el 887 en otra proto...no me funciono :s...no se onda con estas cosas...que sera??
Título: Re: Problema con Sensor de movimiento
Publicado por: jumu en 29 de Septiembre de 2012, 18:33:08
aunque es raro que este dañado porque desde que lo compre hace como 3 o 4 meses...y hasta ahora lo agarro...y estaba metido en la cajita que vino con esponja antiestatica....no se cual sera el problema :s
Título: Re: Problema con Sensor de movimiento
Publicado por: fantaxmax en 29 de Septiembre de 2012, 18:47:19
mmmm mi poca experiencia me dice que lo mas seguro sea el pic dañado, pero si no lo has usado, y los has tenido guardado, es dificil que se dañe a no ser que viniera dañado, ahora si el 877 tambien te funciona raro, puede ser que tu fuente haya sufrido algun daño, variando su voltaje, haberlo aumentado sobre los 5.7v o bajandolo mas alla de los 3v, comprueba el voltaje de la fuente que ocupas, si es que ocupas fuente, no se como lo alimentas

Saludos!
Título: Re: Problema con Sensor de movimiento
Publicado por: jumu en 30 de Septiembre de 2012, 14:47:59
Yo lo alimento directamente del puerto USB de la compu...hice un conector para que entrara en la barra de alimentación de la proto...pero voy a probar mejor alimentándolo de una fuente que hice...a ver si es eso...muchas gracias xD