Autor Tema: Problema con Sensor de movimiento  (Leído 7690 veces)

0 Usuarios y 3 Visitantes están viendo este tema.

Desconectado jumu

  • PIC12
  • **
  • Mensajes: 83
Problema con Sensor de movimiento
« 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...

Desconectado fantaxmax

  • PIC16
  • ***
  • Mensajes: 107
    • Libertycraft - Minecraft
Re: Problema con Sensor de movimiento
« Respuesta #1 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!
"El presente es suyo, El futuro es mio" N.T.
El conocimiento es gratuito e ilimitado, solo debes saber donde buscarlo.

Desconectado jumu

  • PIC12
  • **
  • Mensajes: 83
Re: Problema con Sensor de movimiento
« Respuesta #2 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

Desconectado fantaxmax

  • PIC16
  • ***
  • Mensajes: 107
    • Libertycraft - Minecraft
Re: Problema con Sensor de movimiento
« Respuesta #3 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!
"El presente es suyo, El futuro es mio" N.T.
El conocimiento es gratuito e ilimitado, solo debes saber donde buscarlo.

Desconectado jumu

  • PIC12
  • **
  • Mensajes: 83
Re: Problema con Sensor de movimiento
« Respuesta #4 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??

Desconectado KALLITOS

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1256
Re: Problema con Sensor de movimiento
« Respuesta #5 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
A un microcontrolador hay que sacarle hasta el ultimo byte....(YO)

Cómo puede ser que un pic24EP512 me quede corto de memoria, señores de MICROCHIP saquen pics con más memoria flash

Más de 45 mil lineas de codigo y aun no termino el equipo, asu mare!!

S34ML08G1TFI200 no necesito mas memoria externa.

Desconectado jumu

  • PIC12
  • **
  • Mensajes: 83
Re: Problema con Sensor de movimiento
« Respuesta #6 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

Desconectado jumu

  • PIC12
  • **
  • Mensajes: 83
Re: Problema con Sensor de movimiento
« Respuesta #7 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
« Última modificación: 26 de Septiembre de 2012, 19:18:20 por jumu »

Desconectado fantaxmax

  • PIC16
  • ***
  • Mensajes: 107
    • Libertycraft - Minecraft
Re: Problema con Sensor de movimiento
« Respuesta #8 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);"
"El presente es suyo, El futuro es mio" N.T.
El conocimiento es gratuito e ilimitado, solo debes saber donde buscarlo.

Desconectado KALLITOS

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1256
Re: Problema con Sensor de movimiento
« Respuesta #9 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:
A un microcontrolador hay que sacarle hasta el ultimo byte....(YO)

Cómo puede ser que un pic24EP512 me quede corto de memoria, señores de MICROCHIP saquen pics con más memoria flash

Más de 45 mil lineas de codigo y aun no termino el equipo, asu mare!!

S34ML08G1TFI200 no necesito mas memoria externa.

Desconectado jumu

  • PIC12
  • **
  • Mensajes: 83
Re: Problema con Sensor de movimiento
« Respuesta #10 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

Desconectado fantaxmax

  • PIC16
  • ***
  • Mensajes: 107
    • Libertycraft - Minecraft
Re: Problema con Sensor de movimiento
« Respuesta #11 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
"El presente es suyo, El futuro es mio" N.T.
El conocimiento es gratuito e ilimitado, solo debes saber donde buscarlo.

Desconectado jumu

  • PIC12
  • **
  • Mensajes: 83
Re: Problema con Sensor de movimiento
« Respuesta #12 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 :)

Desconectado fantaxmax

  • PIC16
  • ***
  • Mensajes: 107
    • Libertycraft - Minecraft
Re: Problema con Sensor de movimiento
« Respuesta #13 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!
« Última modificación: 27 de Septiembre de 2012, 17:16:56 por fantaxmax »
"El presente es suyo, El futuro es mio" N.T.
El conocimiento es gratuito e ilimitado, solo debes saber donde buscarlo.

Desconectado fantaxmax

  • PIC16
  • ***
  • Mensajes: 107
    • Libertycraft - Minecraft
Re: Problema con Sensor de movimiento
« Respuesta #14 en: 27 de Septiembre de 2012, 17:22:57 »
PD: el video lo hice sin el segundo while
"El presente es suyo, El futuro es mio" N.T.
El conocimiento es gratuito e ilimitado, solo debes saber donde buscarlo.


 

anything