Sensor de velocidad (Tacometro)

Necesito sensar la velocidad de un motor DC con un fototransistor y mostrarla en un display, alguien sabe como se hace?

exactamente eso, pero me falta la parte del pic :cry: y no se como se hace
rpm.JPG
 
A medida que semueve el motor genera una onda cuadrada en la salida del fototransistor. Mientras más rápido se mueva el motor, mayor será la frecuencia de la onda cuadrada y su relación es proporcional. Así que lo que vas a tener que hacer es un medidor de frecuencia. Por ejemplo, podés contar el tiempo entre flancos.

Saludos
 
para implementar lo que describe curopatula, necesitas hacer un encoder, que no es mas que una rueda con un agujero o varios, de acuerdo a la resolución que quieras tener, la velocidad a la que quieras que se actualice el sistema y la velocidad maxima a la que gire el mismo.

Ejemplo (pon tus numeros aqui), un motor que gira a maximo 3600 RPM, tiene que actualizar el display cada .5 segundos y tiene que tener una resolucion de 1/2 RPM:

primero, vemos que tanta resolución se necesita:
velocidad maxima 3600 rpm/60seg/minuto= 60 rev por segundo, de ahi 30 rev cada 1/2 segundo, a esta velocidad 1/2 RPM se vuelven 1/240avo de revolucion, tu encoder necesita tener una resolución de 240 marcas por vuelta.

Segundo, ya tenemos nuestra rueda y sensor optico, ahora viene lo "fácil", ponemos el micro a monitorear la rueda un tiempo determinado, por ejemplo, contar el tiempo que necesitas para medir cien marcas, esto te da un valor en microsegundos, por ejemplo (regresando a nuestro ejemplo, a maxima velocidad te da 7000 microsegundos aprox (1/60avo de segundo para dar una vuelta, entre 240 vueltas por marca, por cien marcas), luego, lo comparas con una tabla que puedes calcular.
ejemplo de la tabla:
tiempo microsegundos RPM
7000 3600
8000 3125
etcetera

la otra opcion es medir la frecuencia del sistema (el intervalo entre marca y marca), pero la historia es mas o menos la misma, tienes un tiempo determinado entre marca y marca (en nuestro ejemplo 69 microsegundos), si mides un intervalo de un milisegundo por ejemplo serian 14.4 marcas a maxima velocidad, y tienes que hacer tu tabla con base en estos tiempos (tu limite es la velocidad del micro, tienes que tomar un tiempo suficiente para que puedas detectar la diferencia que necesites,
 
los pines del PIC tienes que programarlos como entradas o salidas, (obviamente vas a necesitar el PIC, el programador y una suite de programación, lo que va a ser un fastidio si no manejas nada de nada), luego el PIC necesita un circuito para trabajar, el cual es sencillo, un cristal de reloj, dos capacitores para desacoplarlo, un boton de reset y una fuente regulada de 5 volts. (todo esto lo puedes conseguir por Internet)
finalmente necesitas pasarle un billete a alguien que te haga el codigo (dolares solamente, mitad a la entrega mitad ahora :LOL:)
Dame algo de tiempo y te hago el programa.
 
Esto es lo que necesitas:
http://www.josepino.com/pic_projects/?tachometer2.jpc
Y aprender sobre micros :)

"primero, vemos que tanta resolución se necesita:
velocidad maxima 3600 rpm/60seg/minuto= 60 rev por segundo, de ahi 30 rev cada 1/2 segundo, a esta velocidad 1/2 RPM se vuelven 1/240avo de revolucion, tu encoder necesita tener una resolución de 240 marcas por vuelta"
No se que calculaste ahi!... cualquier encoder sirve...

"los pines del PIC tienes que programarlos como entradas o salidas, (obviamente vas a necesitar el PIC, el programador y una suite de programación, lo que va a ser un fastidio si no manejas nada de nada)"
No hay que tenerle miedo a los micros... el programador es muy facil de hacer (no son mas de 10 componentes), y para escribir el programa podès bajar el MPLAB desde la pagina de MICROCHIP.
 
a ver fernandoae... si tenemos un encoder de lo mas sencillo, es decir una rueda con una marca, en 1/2 segundo vas a medir 30 pasos por la marca, sin embargo, no vas a poder distinguir entre 30 vueltas enteras, 29.995... rps (1/2 RPM por debajo) o 30.0041 (1/2 rpm por arriba), porque los tiempos son, aunque distintos, muy muy cercanos, la resolución del encoder luego entonces, tiene que ser tal que nuestra 1/2 RPM quede marcada, bien, ahora, necesitamos hacer la resolución tal que cada 1/2 segundo nos de un reporte (como lo definí en el ejemplo), nuestra variación se vuelve 1/240 avo de vuelta, por lo que será bueno tener una marca en ese espacio, (e incluso si nos basamos en el teorema de Nyquist para un sampleo efectivo, ya que lo que calculamos son frecuencias en ultima instancia, deberia de ser el doble de esto), eso es por lo que propongo un encoder de 240 marcas.
si tenemos un encoder con mas marcas o con menos, el sampleo va a ser menos eficiente y el error va a aumentar, si usamos un tiempo de reporte mas alto o bajo, si cambiamos el tiempo del sampleo, el numero de marcas necesarias va a cambiar, ese es un concepto básico en el diseño de instrumental, el tener la base para obtener la resolución necesaria.

yo manejo el MPASM de microchip, pero si no manejas la suite (o cualquier lenguaje de programación para el caso), aprenderlo, en visperas de una prueba importante y aprender los requerimientos especificos del mismo, (por ejemplo, la sintaxis de algunas ordenes, el acostumbrarse a poner ,1 o ,0 en algunas otras, que hay que poner un . antes de los numeros decimales, un 0x antes de los numeros en hex, hacer cambios de bancos, etcetera), va a ser un fastidio, por eso es más fácil que "compre" el programa, o el chip ya cargado, no por que no se pueda, pero todo requiere tiempo, que en este caso creo que no hay.
 
"tiene que ser tal que nuestra 1/2 RPM quede marcada"
Ahora entiendo por que toda esa explicaciòn... vos pensàs que se quiere medir POSICION...pero lo que se quiere medir es VELOCIDAD.
Con que se genere un pulso por vuelta es suficiente para medir VELOCIDAD.
 
no solo es la posicion, la velocidad (RPM = Revoluciones Por Minuto) se mide cuantificando el cambio de POSICION por un tiempo determinado (en las palabras de Isaac Newton: w=d(Tau)/dt), por lo que para medir la velocidad necesitas determinar dos posiciones dadas en un tiempo conocido, o medir el tiempo que se necesita para llegar de una posicion conocida a otra tambien conocida.

ahora, regresando a nuestro problema, el numero de marcas en el encoder te lo va a dar la resloución que necesites por el tiempo que quieras hacer tus mediciones, (para regresar al parrafo anterior, tener tus distancias conocidas y medir el tiempo que te toma en cambiar de una a otra, o contar las posiciones que pasas en un tiempo conocido)

no se trata de medir posiciones, para eso se tiene que usar un encoder con codificacion Gray, (en donde la posición te la da el numero de marcas que cortan un grupo de optointerruptores en paralelo y con un patron de numeración Gray, el cual solo cambia un bit por paso 00->01->11->10->00 en vez del normal 00->01->10->11->00, para que el sistema sepa si paso de la posición 0 a la 1 o de la 1 a la 1/2, y en que sentido lo hizo)
 
HACE FALTA UN SOLO PULSO POR VUELTA PARA MEDIR VELOCIDAD!
Lo que tenès que hacer es tomar el tiempo entre un y otro y realizar la conversiòn a RPM.
Y si se tratara de la rueda de un auto sabiendo la circumferencia de la misma podès medir la distancia recorrida aparte de la velocidad del vehiculo.
 
fernandoae dijo:
HACE FALTA UN SOLO PULSO POR VUELTA PARA MEDIR VELOCIDAD!
Lo que tenès que hacer es tomar el tiempo entre un y otro y realizar la conversiòn a RPM.

Fernando:
Para medir velocidad debes tener en cuenta el período de muestreo que le pongas al procesador. Si estás mirando la velocidad del motor cada 10 milisegundos, con un pulso por vuelta no vas a ninguna parte si las velocidades son bajas. Como dice karl, la velocidad se calcula por diferencia entre "posiciones" sucesivas divididas en el período de muestreo del procesador, y vos necesitas que a la mínima velocidad a medir haya al menos un pulso de diferencia entre dos lecturas consecutivas, ya que en caso contrario la velocidad es cero. Si no vas a hacer control de velocidad, donde esto es algo crítico, lo mismo debes tener en cuenta esto, por que los displays van a tener una lectura oscilatoria derivada de la ausencia de cuentas.

Por supuesto que podes usar un pulso por vuelta, pero a bajas velocidades el tiempo de actualización de la lectura va a ser excesivo. Por ejemplo, si el motor va a 1 RPM, vas a demorar 1 minuto en mostrar esa velocidad, por que antes no vas a tener información. Es un caso extremo, pero muestra la idea.

Saludos!
 
"Necesito sensar la velocidad de un motor DC con un fototransistor y mostrarla en un display, alguien sabe como se hace? "

Ahi dice que es un motor dc, y al no tener reducciòn seguro gira a mas de 500 vueltas... eso es suficiente para tener una velocidad de actualizaciòn alta.
Y teniendo el pic destinado unicamente para medir el tiempo y mostrar en unos displays la velocidad no hay problema con el tiempo de muestreo, se puede poner a 4Mhz sin dramas.
En estos momentos no me quedan displays, estoy esperando a que lleguen los azules... cuando los tenga armo el tacòmetro y les muestro que si funciona con 1 ppv.

El circuito que propuse dice:
"This is an improved version of the Tachometer created specially to measure up to 9,999 RPM"
Si se fijan posee UNA entrada de señal y cristal de 10 MHZ
 
chamo hazlo sin pic puedes usa dos contadores 7490 y un latch 74373 haz un contador de 0 a 99 y mediante un arreglo pones la escala del tacometro dependiendo del numero de vueltas q quieres sensar es sencillo yo tengo ese proyecto hecho
 
puedes utilizar un lm2907 para poder realizar tu tacometro y un icl7107 para la parte del display (en 7 segmentos), en las datasheets vienen los diagramas de conexion para lo que tu necesitas
 
para implementar lo que describe curopatula, necesitas hacer un encoder, que no es mas que una rueda con un agujero o varios, de acuerdo a la resolución que quieras tener, la velocidad a la que quieras que se actualice el sistema y la velocidad maxima a la que gire el mismo.

Ejemplo (pon tus numeros aqui), un motor que gira a maximo 3600 RPM, tiene que actualizar el display cada .5 segundos y tiene que tener una resolucion de 1/2 RPM:

primero, vemos que tanta resolución se necesita:
velocidad maxima 3600 rpm/60seg/minuto= 60 rev por segundo, de ahi 30 rev cada 1/2 segundo, a esta velocidad 1/2 RPM se vuelven 1/240avo de revolucion, tu encoder necesita tener una resolución de 240 marcas por vuelta.

Segundo, ya tenemos nuestra rueda y sensor optico, ahora viene lo "fácil", ponemos el micro a monitorear la rueda un tiempo determinado, por ejemplo, contar el tiempo que necesitas para medir cien marcas, esto te da un valor en microsegundos, por ejemplo (regresando a nuestro ejemplo, a maxima velocidad te da 7000 microsegundos aprox (1/60avo de segundo para dar una vuelta, entre 240 vueltas por marca, por cien marcas), luego, lo comparas con una tabla que puedes calcular.
ejemplo de la tabla:
tiempo microsegundos RPM
7000 3600
8000 3125
etcetera

la otra opcion es medir la frecuencia del sistema (el intervalo entre marca y marca), pero la historia es mas o menos la misma, tienes un tiempo determinado entre marca y marca (en nuestro ejemplo 69 microsegundos), si mides un intervalo de un milisegundo por ejemplo serian 14.4 marcas a maxima velocidad, y tienes que hacer tu tabla con base en estos tiempos (tu limite es la velocidad del micro, tienes que tomar un tiempo suficiente para que puedas detectar la diferencia que necesites,

OYE tengo una duda... es con respecto al calculo q haces... para el número de marcas q debe tener el encoder... en tu ejemplo:

3600 RPM (velocidad máxima)
0.5 segundos (tiempo de actualización del sistema)
0.5 RPM (resolución)

obviamente de 0.5 RPM = 1/120 rev/seg
si eso lo multiplicas x 0.5 seg
obtienes 1/240 rev donde supuestamente debe haber una marca.... y de ahi es q deben haber unas 240 marcas.

Pero mi pregunta ahora va con respecto al los datos q supuestamente basas tus calculos.. digo como es q esos 3600 RPM (v.máx) influyen en el calculo de las marcas para el encoder?..... si me respondes te lo agradezco.. o si cualquiera me lo responde

P.D: Todavia no puedo enviar Mensajes Privados... asi q no te lo puedo preguntar directamente.
 
Hola kurtx: Como no te responde karl, lo hago yo:
Suponte que el motor gira a 1RPM, significa (1/60)RPS por lo tanto
(1/2)RPM=(1/120)RPS, si tenemos 240 marcas (240 pulsos) por vueltas significa que a la velocidad de (1/120)RPS contaremos 2 pulsos por cada segundo, pero como queremos que el display se refresque cada medio segundo, significa que contaremos solo 1 pulso. Resumiendo: Si nuestro contador cuenta 1 pulso cada 1/2 segundo significa que la velocidad es de 1/2 RPM.
Si tenemos menos de 240 pulsos estamos jodidos.
Ahora con lo que no estoy de acuerdo es cuando karl dice: "si tenemos un encoder con mas marcas o con menos, el sampleo va a ser menos eficiente y el error va a aumentar"
Saludos.
 
chamo hazlo sin pic puedes usa dos contadores 7490 y un latch 74373 haz un contador de 0 a 99 y mediante un arreglo pones la escala del tacometro dependiendo del numero de vueltas q quieres sensar es sencillo yo tengo ese proyecto hecho

Hola randymaiden necesito que por favor me ayudes con este proyecto lo que tienes es lo que necesito un medidor de velocidad en elct. digital, si me lo puedes enviar te lo agradezco,. saludos.
 
Atrás
Arriba