TODOPIC

FORO TÉCNICO => Foro Técnico => Mensaje iniciado por: martino84 en 14 de Febrero de 2012, 15:27:57

Título: Antirrebote por hardware
Publicado por: martino84 en 14 de Febrero de 2012, 15:27:57
Hola a todos, estoy haciendo un dataloguer (si es que asi se llama) para controlar el tiempo que un tractor esta funcionando, cada ves que arranca y para guardo el tiempo que estuvo funcionando. Como necesitaba una senal electrica para saber cunado esta en marcha (minutos y horas los segundos son despreciables) encontre una sanal que viene del bulbo de presion de aceite, que cuando esta apagado tengo 12v y cuando arranca se pone a tierra, hasta ahi todo bien. el problema surgio cuando en la primera prueba de arranque del tractor y vi los datos guardados tenia 1 o 2 tiempos de cero minutos, despues lo que estuvo funcionando el tractor y despues 1 o 2 tiempos de cero minutos, por lo que llegue a la conclusion de que tengo rebotes antes y despues del arranque. Por soft tengo delays de 200ms que por lo general utilizo para pulsadores pero al parecer este es muy largo y no quiero poner mas retardos de tiempo por que quiero ir ampliando el equipo para que realice otras tareas y no valla a ser que despues eso me signifique mucho tiempo. Por eso me decidi a hacer el antirrebote por hard.
Lo que no se es como hacer el antirrebote para que aguante mas o menos unos 500ms mas o menos y tampoco donde colocarlo, pense en poner directamente un capacitor con una resistencia en serie todo eso en paralelo a la entrada del transistor. Eso esta bien? la verdad que estoy medio verde con el tema.
El circuito que tengo por ahora para tomar le senal del bulbo asi no me afecte el microcontrolador es el siguiente (PIC16F877a es el que utilizo por lo tanto necesito senales de 5V). Ademas si tienen algo para aportar al circuito es bienvenido.

Título: Re: Antirrebote por hardware
Publicado por: tapi8 en 14 de Febrero de 2012, 15:55:33
No puedes meterle 12V al diodo del opto directamente, una R de 1K debe valer y te puedes ahorrar el transistor. Mira aqui un ejemplo:

http://picmania.garcia-cuervo.net/proyectos_aux_opto.php

Título: Re: Antirrebote por hardware
Publicado por: martino84 en 14 de Febrero de 2012, 16:00:34
perdon  :oops: , si le puse una resistencia solo que me olvide en el dibujo, es una buena idea la verdad es que estoy verde en esto de disenar.
Y a ese circuito como le podria hacer un antirrebote por hardware?

PD: tambien me olvide de poner la resistencia de pullup que va en el pic
Título: Re: Antirrebote por hardware
Publicado por: Picuino en 14 de Febrero de 2012, 16:33:17
http://www.ladelec.com/practicas/con-analogica/271-antirrebote-basico.html

Saludos.
Título: Re: Antirrebote por hardware
Publicado por: mtristan en 14 de Febrero de 2012, 16:36:50
.


Podrías probar con la resistencia de 1k, y un capacitor de 100uF y ver que resulta. La constante de tiempo del filtro sería R*C=100ms. Si seguís con problemas, probá con un valor de C mayor. También te sugiero que conectes el optoacoplador a una entrada del pic que sea Schmitt-trigger (http://es.wikipedia.org/wiki/Disparador_Schmitt) (por ej, en el 16F628A, todo el puerto A), o en su defecto a un integrado con entradas tipo Schmitt-trigger, como el 74HC14 (séxtuple inversor).

Saludos.

Título: Re: Antirrebote por hardware
Publicado por: MerLiNz en 14 de Febrero de 2012, 17:36:02
Y no es mas sencillo aumentar el tiempo siempre que dicha señal del sensor sea +12? Es decir, cuando esta el tractor parado en la señal hay 0V (entre el presostato y la bombilla). Y una vez lo arrancas este marcaria +12. No te haria falta poner nada antirebote ya que lo que puedes hacer es que cada X tiempo (tu decides) se comprueba que dicha señal sea +12, si es asi incrementas el contador, en caso contrario no lo incrementas.

Para pasar los 12V a 5V con unas resistencias y transistor te vale, aunque se convertiria el +12V en 0V y el 0V en +5V (lo contrario), aunque puedes montar 2 transistores pero creo que con 1 tendrias de sobra sabiendo que la señal es invertida.
Título: Re: Antirrebote por hardware
Publicado por: KALLITOS en 14 de Febrero de 2012, 23:10:15
Hola, lo que yo hago es hacer antirebotes por soft usando timer del pic.

Coloco timer a 10ms, habilito interrupcion de timer y cuento 2 para asegurarme de por lo menos 10 ms, pasadas las 2 int habilito un flag para leer las teclas que son pullup (normalmente uso portb) si estan en alto pongo un flag a 1.
En el codigo hago un test del pin a leer and flag de tecla algo asi

if(!input(tecla) && flag_tecla)
{
flag_tecla = 0;
hago codigo
}


en una funcion que solo se puede entrar si el flag del timer esta en 1, verifico si la tecla se soltó

if(input(tecla))flag_tecla = 1;

Espero capten la idea.

saludos

Título: Re: Antirrebote por hardware
Publicado por: martino84 en 14 de Febrero de 2012, 23:36:19
muchas gracias a todos por las respuestas  ((:-))
 voy a ir probando lo que me dijeron y les comento como me fue, por el momento voy a cambiar el circuito por el que me propuso tapi8 y despues voy a probar lo del capacitor de mtristan.
Título: Re: Antirrebote por hardware
Publicado por: cicloide2 en 08 de Junio de 2013, 21:52:11
Hola te dejo informacion que me brindo el Ing. Erik, este es por hardware.