Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

16/05/2014 #1


Información Uso de Optoacoplador Ranurado
Buenas,
busque en el foro pero no pude encontrar información específica del mi problema.
Necesito medir la velocidad de un motor, interrumpiendo la señal de un optoacoplador ranurado, con esto con ayuda de las interrupciones de la placa arduino, medir cada vez que se interrumpe el pulso.
Estoy usando un disco con 36 divisiones, osea que con 36 pulsos da una vuelta. Debido a que la velocidad es baja, entre 5 y 10 rpm, necesito medirla mas o menos cada 5 pulsos.

El priblema, es que el optocoplador, cada vez que pasa el eje, o inclusive manualmente interrumpo la señal del LED infrarrojo, se cuentan en ocasiones mas de 100 pulsos. No como mas solucionar el problema, trate de utilizar un sensor de efecto hall, pero sucede lo mismo, cuando el iman se acerca, se cuentan muchos pulsos por vez.

Agradeceria algún tipo de consejo sobre como evitar eso.

Muchas gracias.
16/05/2014 #2
Moderador general

Avatar de Fogonazo

Antirebote por software
16/05/2014 #3


me parece que tienes que hacer un anti-rebote por la baja revolucion o prueba haciendo un retardo en la lectura del pulso.
16/05/2014 #4


Hola fen2006.
Gracias por tu sugerencia. La cuestion es que tengo que utilizar interrupciones en la arduino para leer los pulsos, porque el programa debe ejecutar otras ordenes mientras tanto. Trate de usar un retarde despues de leer un pulso, pero al implementar interrupciones en arduino, no es posible utilizar "delays" dentro de la funcion que se llama al leer la interruoción.
16/05/2014 #5

Avatar de Gudino Roberto duberlin

Hola, es verdad que no es conveniente usar delays cuando se trabaja con interrupciones, pero puedes hacer lo sig:
Cada vez que se atiende la interrupción, accionas un temporizador, luego si la entrada del optoacoplador estuvo en el nivel dado un tiempo superior al acumulado por el contador, incrementas una variable, y reseteas el contador para esperar la sig. interrupción, de lo contrario si el nivel de la entrada sensor no estuvo el tiempo suficiente admitido, el contador debe resetearse y repetir proceso.
16/05/2014 #6


Gudino Roberto duberlin dijo: Ver Mensaje
Hola, es verdad que no es conveniente usar delays cuando se trabaja con interrupciones, pero puedes hacer lo sig:
Cada vez que se atiende la interrupción, accionas un temporizador, luego si la entrada del optoacoplador estuvo en el nivel dado un tiempo superior al acumulado por el contador, incrementas una variable, y reseteas el contador para esperar la sig. interrupción, de lo contrario si el nivel de la entrada sensor no estuvo el tiempo suficiente admitido, el contador debe resetearse y repetir proceso.
Muchas gracias por tu recomendación,
me parece interesante, y creo que podria ser bastante util, pero no comprendo muy bien como implementarla. No soy muy diestro con estos temas.
Deberia crear un bucle while mientras la entrada del optoacoplador esta en el nivel alto, y despues comprar con la función millis() el tiempo antes y despues del bucle while?

Gracias
17/05/2014 #7

Avatar de Scooter

Pues no se como lo hiciste. A mi 0 problemas en la misma aplicación; una ranura cada 5° a mas de 7000rpm. Honestamente pensaba que iba a dar mas problemas.
El circuito era un 7414 (creo) el inversor trigger justo junto al optoacoplador y luego el arduino estaba como a 20~30cm
Me sorprendió el nulo ruido detectado, la verdad.

Bueno en el arduino iba a generar una interrupción ; nada de whiles ni detección de flanco. Que trabaje el chip .

Al final lo abandonamos por ser muy frágil y volvimos a un sensor inductivo.
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.