TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: bosstezo en 12 de Mayo de 2005, 17:41:00
-
necesito diseñar un ckto q controle la velocidad de un motor dc pero q a la vez muestre su correspondiente velocidad en una pantalla lcd.
yo tengo la parte del programa del pwm pero me falta la parte de la velocidad.
pienso medir la velocidad de esta forma:
utilizar el timer0 configurado para 1seg. en ese segundo se debe reconocer unos pulsos constantes generados por un optoacoplador. este optoacoplador generará 8 pulsos cada vez q el motor complete una vuelta. una vez q el timer termine el seg de debe hacer la conversion de el numero de pulsos q se reconocieron a el valor de un minuto mediante conversiones matematicas.
la verdad es una idea bastante insuficiente pero la verdad es q hasta ahora estoy aprendiendo a utilizar los timers. estoy utilizando el pic 18f452.
mi pregunta es si voy por buen camino o si estoy muy perdido ¿cuantos timers tengo q utilizar?
agradeceria mucho a q me pudiera ayudar
-
La idea es buena. Para medir la velocidad yo dibujé un círculo de plástico con varios diámetros en negro, le hice un agujero en el centro y lo pegué al eje del motor, luego puse un optoacoplador de ranura entre el círculo para medir los pulsos y al PIC.
Este proyecto ya se hizo y se llegó a buen puerto, me acuerdo porque ayudé a su realización. Búscalo que debe de estar aquí en este subFORO de C o en el de proyectos.
Un saludo
-
Escrito originalmente por pocher
La idea es buena. Para medir la velocidad yo dibujé un círculo de plástico con varios diámetros en negro, le hice un agujero en el centro y lo pegué al eje del motor, luego puse un optoacoplador de ranura entre el círculo para medir los pulsos y al PIC.
Este proyecto ya se hizo y se llegó a buen puerto, me acuerdo porque ayudé a su realización. Búscalo que debe de estar aquí en este subFORO de C o en el de proyectos.
Un saludo
gracias. lo buscare y en cuanto lo tenga aviso resultados.
-
Pues iba a poner un nuevo post pero creo que mi duda embona aqui ...
Estoy en un proyecto usando motores con PWM de los de modelismo (FUTABA S28) y en las webs encontre que se controlan de la siguiente manera ...
T = 20 ms (creo que puede variar de 11 a 20 ms)
El duty para posicionar 0° es 500 us
El duty para posicionar 180° es 2 ms
ahora ... si quiero una resolucion de 0.1 grados y tomando en cuenta el registro (8 bits) PR2
Vamos a empezar utilizando un xtal de 4Mhz asi que vamos a las formulas :
Tdel pwm = (1/clock)*4*t2div*(period+1) despejo y obtengo:
period = (Tpwm / ( (1/clock) * 4 * t2div)) - 1
PR2 = (11 ms / ((1/4000000) * 4 * 1 )) - 1 = 10999
¬ _ ¬ (creo que no alcanza 1 byte de este registro)
y asi jugando y jugando llegue a la conclusion de que los valores mas convenientes de Osc = 1.4000 Mhz con prescaler de 16 asi :
PR2 = (11 ms / ((1/1400000) *4 * 16 )) - 1 = 239.625
ahora los dutys
Duty = valor * (1 / 1400000) * ( 4 ) * t2div
bueno, evitamos espacio de texto asi que cha-chan ...
valor1 = 11 para duty igual a .5 ms valor2 = 43.75 para duty 2 ms
ahora ... mi resolucion del motor seria de ... 180 / (43-11) ...
5.625 grados es mucho ... como logro aumentar la precision ???
-
una pregunta mas... lo q pasa es q necesito realizar el programa en base a mc18 y pues no he encontrado ejemplos de programas con este sistema. en q foro o en q páginas podria conseguir ejemplos?? (sobre todo donde se utilizen los timers)
-
Parece que la solucion es un arreglo de timers asi se puede lograr una mayor resolucion