Autor Tema: TMR0 Y TMR1!!!!R.P.M.!!!!!  (Leído 5143 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2568
RE: TMR0 Y TMR1!!!!R.P.M.!!!!!
« Respuesta #15 en: 28 de Junio de 2004, 13:50:00 »
No así:

#int_RTCC

RTCC_isr()
{
pulsos=get_timer1();
interrupcion++;
if(interrupcion==100)
{
//pulsos=get_timer1();
velocidad=pulsos*60;
printf("%lu ",pulsos);
printf("%lu ",velocidad);
//delay_ms(1000);
interrupcion=0;
set_timer1(0);
set_rtcc(178);
}
else
{
set_rtcc(178);
set_timer_1(pulsos)
}
}

El 178 es porque en la fórmula es 256, no 255.

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2568
RE: TMR0 Y TMR1!!!!R.P.M.!!!!!
« Respuesta #16 en: 29 de Junio de 2004, 04:25:00 »
Pikman podrías publicar aquí como lo hiciste empleando el módulo CCP?

Empleando un cristal de 4MHz y un Preescaler=1, la diferencia más grande entre dos capturas del TMR1 con flancos ascendentes, es de 65535us que dá una frecuencia mínima de 15,25Hz

Empleando un cristal de 4MHz y un Preescaler=8, la diferencia más grande entre dos capturas del TMR1 con flancos ascendentes, es de 524ms que dá una frecuencia mínima de 1,9Hz


¿Como hiciste para medir frecuencias de 1Hz por ejemplo?

La única posibilidad que le veo es coger un cristal más pequeño (fosc menor)

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2568
RE: TMR0 Y TMR1!!!!R.P.M.!!!!!
« Respuesta #17 en: 30 de Junio de 2004, 09:47:00 »
Ya he dado con la solución empleando el módulo CCP1.

Se me ha ocurrido otra forma de trabajar con frecuencias más bajas de 1,9Hz sin tener que reducir la frecuencia del cristal, y es empleando un encoder con más radios, por ejemplo 4.

Además es conveniente emplear 4 radios en lugar de uno ya que el error que se comete por pérdida de un pulso sería de +/- 15 r.p.m. en el caso de 4 radios y de +/- 60 r.p.m. en caso de dibujar un radio.

Desconectado Xa2

  • PIC12
  • **
  • Mensajes: 58
RE: TMR0 Y TMR1!!!!R.P.M.!!!!!
« Respuesta #18 en: 01 de Julio de 2004, 06:58:00 »
Muy buena Pocher!! Ese metodo tb se puede realizar con la interrupcion del timer no???
Por curiosidad como seria con el modulo CCP???
bueno usando el metodo del timer0 y timer1, la multiplicación seria pulsos*15, ya que son 4 radios!!
Y ya está, no??"
Si pudieras resolverme las dudas que te he puesto te lo agradecería!!
PD: que sabes sobre resistencas shunt para sacar la corriente del motor??? cualquier cosa me valdria
Saludos y gracias soys la ostia, como ayudais

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2568
RE: TMR0 Y TMR1!!!!R.P.M.!!!!!
« Respuesta #19 en: 02 de Julio de 2004, 00:29:00 »
Sí eso es Xa2, hay que multiplicar con 4 radios, la velocidad por 15 para obtenerla en r.p.m.

El programita con el TMR1 - TMR0 sí que es capaz de medir velocidades de 1rev/s sin necesidad de poner 4 radios, sin embargo para cuestión de mejor resolución por pérdida de un pulso sí que es conveniente hacerlo con 4 radios ó más.

Respecto a sacar por LCD la intensidad de consumo del motor empleando una resistencia shunt, este tema ya lo tienes tratado, tenía el título de "Amperímetro digital", más o menos y creo recordar que estaba en el subforo de ensamblador (todo sobre microcontroladores). Ayer y anteayer el buscador no funcionaba, es una lástima ya que con él te saldría enseguida.

Gracias Pikman, lo probaré.

Un saludo

Desconectado epogor

  • PIC10
  • *
  • Mensajes: 6
Re: TMR0 Y TMR1!!!!R.P.M.!!!!!
« Respuesta #20 en: 02 de Septiembre de 2011, 13:01:40 »
hola soy nuevo en este tema de los pic, estaba viendo este contador de rpm, y queria preguntar por que configuran los timer de esta manera:

setup_timer_0 ( RTCC_INTERNAL | RTCC_DIV_128); //habilito interrupcion-prees 128
set_rtcc(177);          //10ms -> 10000us -> 10000/128=78 -> 255-78=177

setup_timer_1(T1_EXTERNAL | T1_DIV_BY_1);// habil interr. de pulsos
set_timer1(0);

 al poner set_rtcc(177);  que esta haciendo, habilita la interrupcion cada 10ms? y la segunda pregunta es: RTCC_DIV_128 es para configurar el preescalador.
desde ya gracias por compartir tan buena info. :o :o