Hola arielmdq, por lo que leo de tu último mensaje deduzco lo siguiente:
Ya sabemos lo siguiente:
El alternador posee 6 "juegos" de campos en el rotor-estator, esto serían 12 polos sumando los norte y sur.
De lo anterior se sabe que 1 revolución del alternador produce 6 pulsos de salida.
Tu medición de frecuencia a arrojado 276 Hz Entonces podemos deducir lo siguiente:
276 / 6 = 46 RPS ----> 46 x 60 =
2760 RPM del alternador
* RPS es revoluciones por segundo
* 276 es la frecuencia que mediste en Hz
* 6 son la cantidad de campos del alternador
* 60 son los segundos por cada minuto
Por lo que tu alternador montado en el banco estaría girando a 2760 revoluciones por minuto.
Ahora, con un prescaler seteado en divisor por 2 que es lo que te recomiendo teniendo estos nuevos datos, el contador puede contar hasta los ( 256 - 1) x 2 = 510 Pulsos, supongamos una rata de refresco de 1 segundo, eso nos daría:
255 / 3 = 85 ----> 85 x 60 =
5100 RPM* 255 es la máxima lectura posible para el TMR0
* El 3 se consigue de dividir el número de campos por el valor del prescaler, en este caso 6 / 2 = 3
* 60 son los segundos por cada minuto
Por lo que con el prescaler configurado en divisor por 2 podríamos contar hasta 5100 revoluciones por minuto en el alternador, estas que son más que suficiente para esta aplicación.
Ahora calculemos la resolución de este sistema:
1 / 3 = 0.333 Hz ----> 0.333 x 60 =
20 RPM esto sería en el alternador.
* 1 Lectura mínima posible del TMR0
* El 3 se consigue de dividir el número de campos por el valor del prescaler, en este caso 6 / 2 = 3
* 60 son los segundos por cada minuto
Por lo tanto, con prescaler seteado en 2 la máxima resolución a la que puedes aspirar es de 20 RPM en el alternador, esto sería una lectura de RPM con saltos de a 20, algo como 100, 120, 140 RPM.
Ahora calculemos con un prescaler seteado en 8 (Tal como tú lo tienes ahora)
1 / ( 6 / 8 ) = 1.333 RPS ----> 1.333 x 60 =
80 RPM esto sería en el alternador
* 1 Lectura mínima del TMR0
* 6 Cantidad de campos del alternador
* 8 Valor del prescaler
* 60 son los segundos por cada minuto
O sea, con prescaler seteado en divisor por 8, la máxima resolución a la que podemos aspirar es de 80 RPM, o sea las lecturas saltarían de 80 en 80, consiguiendo: 80, 160, 240, etc.
Aproximadamente lo que tu estas consiguiendo.
Por lo tanto prescaler debe de ir seteado en 2, con una división mayor perdemos resolución y con una división menor limitamos la capacidad de lecturas hasta 2550 RPM en el alternador, lo cual puede ser muy poco y ni siquiera leería al alternador montado en el banco de pruebas.
Otra cosa que sucede es que para probarlo en proteus y me de la frecuencia del alternador con la cantidad de pulsos que cuenta, esta tengo que triplicarla .Osea cuando hago la prueba real ,el timer 0 mide 10 pulsos , la frecuencia esta a 276Hz preo en proteus para que me cuente 10 pulsos tengo que poner la frecuencia a 828 hz .
Esto se deberá a que la funcion del timer0 lee de alto a bajo y al tener el detector de cruce por cero necesita que pase 3 veces por cero para leer un pulso ?
Recuerda que tu tienes manera de setearlo cuando estas en la vida real, no se si implementaste esta posibilidad dentro de Proteus?
Otra cosa que te recomiendo, es que las lecturas se actualicen cada aproximadamente un segundo, actualizarlas más rápidamente (para ganar velocidad) haría que pierdas resolución y hacerlo más lentamente (para ganar resolución) hará el sistema muy lento.
En este caso de la prueba en el banco la actualización se haría cada aproximadamente 0.5 segundos por el hecho de tener una polea multiplicadora por 2, pero siempre es mejor contar durante un segundo y luego dividir por dos, así consigues más resolución y estabilidad de lectura.
Ejemplo: (presta atención porque estas son las cuentas que debes de hacer con el PIC)
Datos de inicio:
Frecuencia: 276 Hz
Relación de transmisión: 1:2 (multiplicadora)
Tasa de refresco: 1 seg.
Prescaler: Divisor por 2
Durante 1 segundo el TMR0 contará:
276 / 2 =
138 pulsos (este es el dato que leeras de TMR0 cada segundo)
* 276 es la frecuencia medida en Hz
* 2 valor del prescaler
Calculos:
Valor TMR0 / (cantidad de campos / valor prescale) = Hz
138 / ( 6 / 2 ) =
46 RPSRPS x 60 seg = RPM del alternador
46 x 60 =
2760 RPMRPM del alternador / relación de multiplicación = RPM del motor
2760 /
2 =
1380 RPM del motorComo verás los cálculos son bien sencillos, y uso prescaler en 2 para que la lectura sea cada 1 segundo, también se puede hacer que la lectura sea cada 0.5 seg y no usar prescaler, pero la tasa de refresco muy rápida en el display se torna molesta a la vista y aparte, con la lectura cada un segundo ya estamos haciendo un promedio de 2, por lo que la indicación se torna más estable.
La resolución mínima de este método sería de:
1 / 3 = 0.333 Hz ----> 0.333 x 60 =
20 RPM esto sería en el alternador.
* 1 Lectura mínima posible del TMR0
* El 3 se consigue de dividir el número de campos por el valor del prescaler, en este caso 6 / 2 = 3
* 60 son los segundos por cada minuto
20 RPM / 2 Rel = 10 RPM
* 2 Rel. es la relación de multiplicación
Por lo que estarías en torno de una resolución de unas 10 RPM, o sea indicaciones en pasos de a 10, puedes obviar el 0 y indicar RPM x 10 en el tablero.
Para setear tu tacómetro, con los pulsadores externos, lo que debes de variar en la medida de lo posible, es el valor de la relación de multiplicación, o sea el valor del "2" del último cálculo (el colocado en rojo), con esto mantendrás el tiempo de lectura en 1 segundo y te permite calibrar el tacómetro. Incrementa o decrementa este valor en pasos de 0.05 o 0.02 (este valor será el de tu agrado, no es estricto) para permitir el ajuste. Por supuesto, cuanto más "fino" sea el incremento, más fino será el ajuste y por supuesto más lento de ajustar.
Espero te sea de ayuda. Ya me contarás.
Un saludo.
Atte. CARLOS.