Gracias por el aporte gente..
pero totalmente de acuerdo.. un iman es demasiado para la helice.. ademas de que si el iman se escapa mata a alguien.. por algo lo quiro hacer con un ir receptor y transmisor.. pero nombre el cny70 porque es reflectivo y tiene unas prestaciones muy buenas para mi uso..
la pregunta es...
en el timer 0 hago la pregunta, cada cuanto...??? o en un while dentro del main?... como se q me va a contar las rpm precisamente.. ?? no sera superior la frecuencia de la helcie y a lo mejor la helice da 4 vueltas y el pic solo cuenta una...
Yo lo había programado en asm para tener un control preciso del tiempo. Que la hélice de 4 vueltas y el PIC solo cuente 1 también depende de la velocidad de respuesta del sensor.
En el datasheet del PIC vas a encontrar la máxima frecuencia soportada por el timer 0. Para el 16F628 si lo utilizas con prescaler es de 50MHz y sin prescaler es de 4.1MHz. (Suponiendo que estás trabajando con cristal de 20MHz)
Si haces el cálculo 4.1M pulsos por segundo multiplicado por 60 te da que soporta una velocidad de 246 millones de rpm...
Si estás trabajando en C no se puede tener un control muy preciso del tiempo así que se puede recurrir a algunos trucos...
por ejemplo se podría contar los pulsos de la hélice con el timer0 y contar pulsos internos con el timer1. Cuando la cuenta del timer1 llegue al segundo transcurrido, lees el valor obtenido por el timer0 y luego hacés los cálculos correspondientes.
También podés usar el módulo CCP para capturar una frecuencia de entrada, que sería la proveniente de la hélice. La idea sería contar pulsos internos mientras dure un período de tu señal de entrada, luego sabiendo cuanto dura cada pulso interno y sabiendo cuantos pulsos contaste ya sabés el período de la señal. Hacés 1/período y tenés la frecuencia de entrada. Multiplicas por 60 y dividís por la cantidad de palas de tu hélice, y ya tenés las RPM.