TODOPIC
Microcontroladores PIC => dsPIC => Mensaje iniciado por: marqueses en 16 de Diciembre de 2011, 06:45:32
-
Hola,
Estoy trantando de realizar el control de un motor mediante PWM. En los dspic33fjXXXMCXXX ya viene implementado el modulo Motor Control PWM, que difiere de los modulos de los pic18. Estoy programando en CCS y no consigo hacer funcionar el modulo, aunque compilar compila.
setup_motor_pwm(1,MPWM_FREE_RUN | MPWM_SINGLE_PULSE, 1000);
set_motor_unit( 1,MPWM_INDEPENDENT , MPWM_FORCE_L_1,MPWM_FAULT_NO_CHANGE,0);
set_motor_pwm_duty(1,0,0xfff);
set_motor_pwm_event(1,1000);
Si alguien tiene experiencia con estas funciones y sabe como funcionan, por favor, que las explique cuanto pueda, ya que en el manual de ccs no dejan nada claro.
Gracias y saludos!
-
Si consideras que la configuración es correcta podrías revisar si las instrucciones cargan correctamente los registros necesarios para ese caso mediante debug. Si no tienes idea, a leer el datasheet... Otra posibilidad es definir los registros #word ... y configurarlo "manualmente"
Saludos!
-
yo tengo experiencia pero con C30. Yo te recomendaria configurar el periferico a nivel regstro para comenzar. Te da un gran etendimeinto de periferico.
saludos!
-
Hola,
tras haberme currado los registros y hacer mis propias funciones he descubierto que el codigo que pusé, que es el que viene de ejemplo en el manual de CCS, viene mal. Viene mal en el sentido de que los parametros que se introducen en las funciones están mal escritos, ya que en las opciones de algunas funciones en lugar de estar separados por "|" están separados por comas, lo que indica que ya es otro parametro. En fin, un lio de narices que hacen desde CCS.
Si alguien ha estado queriendo trabajar con este modulo, que tenga cuidado y se fije en las funciones e intente trabajar a partir de ellas, en lugar de los ejemplos.
Ya que estamos en faena, el PWM me funciona, pero lo que no controlo es como obtener el ancho de la señal que yo quiera y el duty cicle de esa señal, ¿alguien puesto en pwm podria explicar como obtener, por ejemplo, una señal de 5ms y un duty cicle del 80% (4ms en alto)?
Gracias!
Adjunto codigo que funciona, por si a alguien le sirve de ayuda
setup_motor_pwm(1,MPWM_FREE_RUN , 10000);
set_motor_unit( 1,1,MPWM_INDEPENDENT | MPWM_ENABLE | MPWM_FORCE_L_1,0,0);
set_motor_pwm_duty(1,1,1000);
-
En el foro hay varias explicaciones de como trabajar con el pwm, frecuencia, resolucon y ciclo de trabajo, etc....
Saludos
-
En el foro hay varias explicaciones de como trabajar con el pwm, frecuencia, resolucon y ciclo de trabajo, etc....
Saludos
No para el Motor Control Module de los dspic33FJ, al menos llevo una semana buscando y no he encontrado nada.
Saludos.