ITSS – MODULO PWM PARA CONTROL DE MOTORES
MODULO PWM PARA CONTROL DE MOTORES Eduardo Luis Romero León e-mail:
[email protected]
1. INTRODUCCION.
anchura de pulso del tren de
Métodos para regular la velocidad de un
pulsos de la señal.
motor eléctrico: Periodo de la señal
valor medio
Intercalar una resistencia, aunque este sistema desperdicia energía.
Modular
la
alimentación procedimiento
tensión
de
mediante
el
de
Modulación
por Anchuras de Pulsos (PWM).
Actuar
sobre
una
De pulso
frecuencia
cuando se trata de un motor de alterna, aunque esto no siempre es posible.
1.1
MODULACION ANCHURA DE (PWM)
POR PULSO
PWM son las siglas de <
Modulation>>
o
<
>. Los comerciales
microcontroladores incorporan
Anchura
una
función hardware se utiliza para conseguir una salida analógica a partir de una señal digital, atravez de la variación del valor eficaz de la señal. Pulso mas ancho, valor eficaz es mayor que para un pulso mas estrecho por lo cual varía la
Variable
Tren de pulsos de anchura variable. 1.2 CONTROL DE MOTORES MEDIANTE PWM. El movimiento del motor eléctrico se consigue por la variación de un campo eléctrico o magnético, dependiendo del tipo del motor y así obtener un campo rotatorio. Según el tipo de motor, variando dicha corriente de alimentación se consigue variar la velocidad del motor.
1.3 DISPOSITIVOS DSPIC30F PARA APLICACIONES DE CONTROL DE MOTORES. La familia de los dsPIC30F dsPIC30F existe dos
subfamilias
destinadas
al
control de motores, una es de
ITSS – MODULO PWM PARA CONTROL DE MOTORES
gama
baja
y
la
otra
gama
2. ESTRUCTURA GENERAL
superior. Los dispositivos de la gama baja
El modulo PWM de gama superior
incorporan módulos PWM de 6
dispone de 4 generadores PWM y cada
salidas, mientras que los de gama
uno de ellos dispone de dos patitas para
superior son de 8 salidas. La
la salida de las señales de anchura de
diferencia
pulso
entre
los
módulos
variable
que
controlaran
el
reside en el número de canales de
funcionamiento del motor.
PWM, el número de patitas de
También tiene 2 patitas de fallo y 2
fallo y el número de generadores
generadores de tiempo muerto.
de tiempo muerto.
2.1 Características
PWM De 6 salidas
PWM De 8 salidas
6 3
8 4
1
2
1
2
Patitas E/S Generadores PWN Patitas de fallo Generadores de tiempo muerto
REGISTROS DE CONFIGURACION Y CONTROL
Los registros de configuración y los registros que controlan recursos específicos del módulo, registros se deberían carga con los valores apropiados en función del tipo de señal que se desee obtener. Estos registros están conectados al bus de datos del sistema.
Existen tres bits de configuración para
Tipos de módulos PWM
configurar el estado de Reset inicial y la Para la simplificar la descripción del modulo
PWM
se
hace
referencia
polarización de las patitas de entrada y salida, estos bits se encuentran en el registro
únicamente a los de gama superior.
de
configuración
de
dispositivos FBORPOR. Las aplicaciones más interesantes en el
PTCON: Registro de control de la base
control
de tiempo.
de
motores
mediante
los
dsPIC30F se destacan:
Motores de inducción trifásicos
PTEN: Cuando PTEN=1 la base de
Motores síncronos de reluctancia
tiempo esta activada y cuando se pone
variable
a 0 se desactiva.
Motores de corriente continua sin
15
13
9
0
escobillas
Sistemas
de
interrumpida (UPS)
alimentación
PTE N
0
PTSID L
0……. 0
Registro PTCON
PTOP S
PTCKP S
PTMO D
ITSS – MODULO PWM PARA CONTROL DE MOTORES
PTSIDL: cuando PTSIDL=1 se para la base de tiempo y si se pone a 0 vuelve a
PWMCON2 15
12
7
2
0
funcionar.
PTOPS: 4 bits que sirven para seleccionar
SEVOPS 0……0
0…….0
OSYNC UDIS
el valor de preescalado (1:1, 1:2,….. 1:16)
SEVOPS: 4 bits que sirven para PTCKPS:
2
bits
que
sirven
para
seleccionar el preescalado del periodo de
seleccionar el postescalado del disparador.
entrada del reloj (1:1, 1:4, 1:16, 1:64).
OSYNC: Cuando se pone a 1, la salida PTMOD:
2
bits
que
sirven
para
esta sincronizada con la base de tiempo y
seleccionar el modo de funcionamiento
si está a cero salida produce el siguiente
de la base de tiempo.
ciclo.
Modo normal (00)
UDIS: cuando se pone a 1 deshabilita la
Modo de evento único (01)
actualización de PWM y si pone a 0
Modo
habilita.
ascendente/descendente
(10)
con doble interrupción (11)
15
PWMCONx: Registros de control
P M O D 4
P M O D 3
7
DTBPS
15 11 0 … … 0
DTCON1
Modo ascendente/ descendente
DTB
0
DTAPS
DPA
0 P M O D 2
P M O D 1
P U N 4 H
P E N 3 H
P E N 2 H
P E N 1 H
P E N 4 L
P E N 3 L
P E N 2 L
P E N 1 L
PMOD4-PMOD1: Indica el modo de salida del par de patitas PWM.
PEN4H-PEN1H:
Activan
las
DTBPS: 2 bits para seleccionar el preescalado del tiempo muerto de la unidad B.
DTB: 6 bits sin signo que indican el valor del tiempo muerto de la unidad B.
DTAPS: 2 bits para seleccionar el preescalado del tiempo muerto de la unidad A.
patitas
DTCON 2
PWMxH como salidas si se pone a 1.
PEN4L-PEN1L: Activan las patitas PWMxL como salidas si se ponen a 1.
15
0 … 0 .
8
7 D
0 D D
T A
4
S
D D
T T 1
4
S A
3
S
D
D 2
1
T T 1
3
S A
2
S
D T
T 1
S
T A
S I
1
S
ITSS – MODULO PWM PARA CONTROL DE MOTORES
PTDIR
DTS4A: bit de selección del tiempo. DTS4I: bit de selección del tiempo para la señal inactiva PWM4.
esta
‘1’,
lo
hará
de
forma
descendente. La base de tiempo se activa o desactiva a través del bit 15 de PTCON. El usuario podrá definir la base de tiempo estableciendo el periodo y el ciclo de
DTS3A: bit de selección del tiempo para
trabajo deseado, valores que deberán
la señal inactiva PWM3.
cargar en los registros PTPER y PDCx. Hemos de recordar que el dsPIC posee 4
DTS3I: bit de selección del tiempo para la
canales, por lo que puede disponer de
señal inactiva PWM3.
hasta cuatro ciclos de trabajo diferentes.
DTS2A: bit de selección del tiempo para la señal inactiva PWM2.
3.1 PRINCIPIO DE FUNCIONAMIENTO DE LA BASE DE TIEMPO
DTS2I: bit de selección del tiempo para la
El
señal inactiva PWM2.
incrementando el valor de su registro
DTS1A: bit de selección del tiempo para
asociado (PTMR), con cada pulso de la
la señal inactiva PWM1.
temporizador
empieza
a
contar
señal de reloj que le llega. La frecuencia del reloj puede ser definida por el
DTS1I: bit de selección del tiempo para la
usuario y podrá ser tan pequeña con la
señal inactiva PWM1.
frecuencia de trabajo del dsPIC (FCY).
3. GENERACION DE LA BASE DE TIEMPO
Este valor contenido en el registro PTMR se compara cada TCY (periodo de trabajo del dsPIC) con el periodo de la señal
La base de tiempo establece los instantes
deseada
en que finalizan los ciclos de trabajo, así
PTPER. En el momento en el que el valor
como los instantes de comienzo de un
del temporizador coincida con el valor
nuevo periodo para la señal de salida
cargado en PTPER, comenzara un nuevo
deseada.
periodo.
La base de tiempo del PWM está provista
Al
de un temporizador de 15 bits con un
temporizador se compara cada TCY/2 con
preescalado y un postescalado. Los 15
el valor del ciclo de trabajo deseado en el
bits del temporizador son accesibles a
registro PDCx. En el momento que el
través del registro PTMR. Además el bit
valor del temporizador coincida con el
PTDIR de este registro indica la dirección
valor cargado en el registro PDCx, la
de la cuenta del temporizador. Si PTDIR
salida cambiara de estado. Si estaba en el
está ‘0’, contara ascendentemente y si
nivel alto, pasara a nivel bajo y viceversa.
introducido
mismo
tiempo,
en
el
el
registro
valor
del
ITSS – MODULO PWM PARA CONTROL DE MOTORES
3.2 MODOS DE FUNCIONAMIENTO DE BASE DE TIEMPO
puesto a 0 con lo que la base de tiempo queda deshabilitada. El postescalado no
La base de tiempo del PWM se puede configurar para cuatro modos distintos de funcionamiento mediante los bits PTMOD del registro de control PTCON. Estos dos son:
tiene ningún efecto cuando se trabaja en este modo.
3.5 MODO DE ASCENDENTE/DESCENDENTE
CONTEO
En este modo la base de tiempo cuenta
Modo normal.
en sentido ascendente hasta que se
Modo de evento único
alcanza el valor del periodo contenido en
Modo de conteo
el registro PTPER. En ese momento el
ascendente/descendente
temporizador comenzara a contar en
Modo de conteo
sentido de descendente. Cuando el valor
ascendente/descendente ascendente/descendente con
del registro PTMR alcanza el valor 0 se
doble interrupción.
genera una interrupción y comienza la
cuenta ascendente. El bit PTDIR del registro PTMR que es de solo lectura,
3.3 MODO NORMAL
indica l dirección de conteo. En este
Este modo, la base de tiempo de PWM
modo se puede utilizar el postescalado
cuenta ascendentemente hasta que se
para
alcanza el valor del periodo contenido en
interrupciones.
el registro PTPER. Cuando sucede esto, se resetea el registro PTMR, comienza de nuevo la cuenta y se genera una interrupción. Esta secuencia se mantiene
reducir
la
frecuencia
3.6 MODO DE ASCENDENTE/DESCENDENTE DOBLE INTERRUPCIÓN
de
las
CONTEO CON
mientas en bit PTEN del registro PTCON
El funcionamiento en este modo es
esté activo. El postescalado puede ser
idéntico
utilizado en este modo para reducir la
diferencia que las interrupciones se
frecuencia de las interrupciones.
generan cuando el temporizador llega a
su cuenta ascendente en el que el bit PTEN del registro PTCON es puesto a 1. En el instante que el PTMR alcanza el periodo
(PTPER),
con
la
única
del periodo.
En este modo el temporizador comienza
del
anterior
cero y también cuando alcanza el valor
3.4 MODO DE EVENTO ÚNICO
valor
al
el
temporizador (PTMR) se resetea, se genera una interrupción y el bit PTEN es
3.7 PREESCALADO Y POSTESCALADO DELA BASE DE TIEMPO Preescalado El prescalado lo soporta un divisor de pulsos que está a la salida del reloj y
ITSS – MODULO PWM PARA CONTROL DE MOTORES
divide el número de pulsos de este,
Para calcular el valor adecuado que hay
permitiendo hacer más rápida la señal de
que cargar en PTPER y en PDCx para
salida PWM. El factor de división puede
conseguir la señal de salida deseada se
elegirse entre: 1:1; 1:4; 1:16; o 1:64 que
deben aplicar las siguientes formulas
se selecciona mediante los bits PTCKPS
del registro de control PTCON.
PTPER=
El contador del preescalado se pone a ‘0’
Mediante esta fórmula se obtiene el
cuando
valor del periodo de la señal de salida
ocurre
cualquiera
de
las
deseada que hay que cargar en el
siguientes situaciones:
registro
Escritura del registro PTMR
Escritura del registro PTCON
Reseteo de cualquier dispositivo
posescalada
de
manera
permite escalar desde1:1 hasta 1:16), que
frecuencia
se
de
de
la
PDCx=PTPER. Ciclo trabajo (%)
opcional con un control de 4 bits (que lo
función
y el pre escalado seleccionado
que detecta cuando el PTMR llega a 0)
con
en
frecuencia deseada para la señal (FPWM)
La salida del detector de cero (que es el ser
PTPER
frecuencia de trabajo de Dspic (FCY, la
3.8 POSTESCALADO
puede
-1
puede
acelerar
generación
de
la la
interrupciones. El postescalado es útil cuando el ciclo de tarea de PWM no
Mediante esta fórmula se calcula el valor del ciclo de trabajo de la señal de salida deseada que hay que cargar en el registro PDCx, o lo que es lo mismo, la anchura deseada de los pulsos de la señal de salida. Este valor es función del ciclo de trabajo, dado en tanto por ciento del periodo de la señal y del valor cargado en PTPER hallado la formula anterior.
necesita ser actualizado cada ciclo PWM. En la figura siguiente se muestra las Al igual que el preescalado, el contador del postescaldo se pone a ‘0’ cuando se
frecuencias máximas y mínimas que se pueden conseguir conseguir para la señal señal de salida
produce cualquiera de las siguientes situaciones:
Escritura del registro PWM
Escritura del registro PTCON
Reset de cualquier dispositivo
4. SELECCIÓN DE PERIODO Y DEL CICLO DE TRABAJO
Pre escalado 1 4 16 64
FPWM Máxima 10MHz 2.5MHz 625MHz 156MHz
FPWM Mínima 610MHz 152.6MHz 38.2MHz 9.6MHz
Fig. Frecuencias para el pre escalado
ITSS – MODULO PWM PARA CONTROL DE MOTORES
EJEMPLO 1
ascendente/descendente
Se desea obtener de 50Hz de frecuencia, con un ciclo de trabajo del 75% por el canal 1 del módulo PMW de un Dspic que trabaja a 20MHz.
Fig. Tipos de de señales de salida salida para para cada cada modo de funcionamiento de la base de tiempo
Calcular los valores con lo que hay que cargar el registro de periodo PTPER y el registro PDCx correspondiente
PTPER=
-1=24.999
El valor que hay que cargar en el registro PTPER Es: 110000110100111
2. Ciclo de trabajo PDC1=24.999*75=18.749 El valor que hay que cargar en el registro PDC1 es: 100100100111101
Nota: Se podría haber elegido otro pre escalado para resolver el ejercicio
5.1
El periodo y el ciclo de tarea de las señales de salida de los canales PWM, viene especificados en los registros PTPER y PDCx respectivamente. El periodo es el mismo para todos los canales pero el ciclo de trabajo es específico de cada uno de ellos Si el valor cargado en el registro PDCx es cero, la salida correspondiente estará inactiva durante todo el periodo PWM y ducho valor es mayor que el contenido en el registro PTPER, la salida estará durante todo el periodo
5.2
5. TIPOS DE SALIDA
SEÑALES
DE
Este tipo de salida de los generadores PWM depende del modo de funcionamiento establecido para la base de tiempo. Para cada modo de funcionamiento, el tipo de señal de salida será diferente, como se muestra en la figura siguiente.
Modo de funcionamiento de la base de tiempo Normal Evento único Conteo
Tipo de señal de salida Flanco alineado Pulso único Pulso único
FLANCO ALINEADO
PULSO ÚNICO
Cuando la base está configurada en el modo de funcionamiento en el modo de funcionamiento de evento único, lavase de tiempo a funcionar en el instante en el que el bit PTEN sea puesto en “1”. En ese momento, el PTMR comienza su cuenta ascendente y al mismo tiempo se activa por el nivel alto las señales se salida de los canales que se encuentran habilitados, Estas señales permanecerán activas hasta que el temporizador PTMR alcance el valor del ciclo de trabajo de cada canal. Por lo tanto, la duración de los pulsos de la señal de salida de cada canal está determinada por el valor del registro PDCx correspondiente correspondiente
5.3
CENTRO ALINEADO
ITSS – MODULO PWM PARA CONTROL DE MOTORES
Las Señales de centro alineado son generadas por el módulo PWM cuando la base de tiempo está configurada en cualquier de los dos modos ascendente/ descendente. Cuando el temporizador PTMR comienza la cuenta ascendente, se activa las salidas de los canales PWM habilitados: En el momento en que el PTMR alcanza el valor del ciclo de trabajo de un canal PWM, la señal de dicho canal se desactiva
7. GENERACION DE TIEMPO MUERTO La generación de tiempo muerto se habilita automáticamente siempre que el dsPIC trabaja en modo complementario. El dsPIC no puede ser las salidas salidas PWMxH y PWMxL conmuten al mismo tiempo, por ello introduce un tiempo muerto o tiempo de espera entre la activación /desactivación de una y la desactivación/activación desactivación/activación de la otra.
7.1 GENERADORES MUERTO
6. MODOS DE SALIDA Como se puede apreciar todos los PWM tienen dos salidas diferentes, la alta PWMxH y la baja PWMxL. El módulo PWM puede ser configurado.
6.1
MODO INDEPENDIENTE
DE
TIEMPO
Cada canal de PWM tiene un generador de tiempo muerto en el cual se puede cargar dos valores diferentes para determinar dicho tiempo muerto. El tiempo muerto está determinado por los bits DTSxA (señal activa) y DTSxI (señal
En el modo independiente las salidas de un mismo canal son iguales. Este modo es seleccionado activando el bit PMOD correspondiente en el registro PWMCON1. Los generadores de tiempos muertos son deshabilitados cuando se trabaja en este modo.
6.2
MODO COMPLEMENTARIO
En el modo complementario, la salida PWMxL, es la inversa de PWMxH. Este modo se selecciona poniendo a cero el bit PMODx correspondiente del registro PWMCON1. Cuando el dsPIC trabaja en este modo se puede introducir en la señal tiempos muertos, que son cortos periodos de tiempo durante los cuales ambas salidas estarán inactivas
inactiva e inversa) del registro DTCON2. En función de estos bits se carga el valor de la unidad A o B en un contador descendente de 6 bits. De esta forma cuando comienza un ciclo de trabajo (flanco ascendente) se podrá en marcha el contador y se retrasará el inicio de la señal activa (PWMxH) hasta que este llegue a cero de la misma manera
se
retrasara el final de la señal inactiva (PWMxL). Imagen. Efecto del tiempo sobre la salida PWM.
7.2 CALCULO DE LOS VALORES DE TIEMPO MUERTO Los valores de tiempo muerto que se cargaran en DTB y en DTA vienen definido por la fórmula:
ITSS – MODULO PWM PARA CONTROL DE MOTORES
10.3 DISPARO ESPECIAL
El módulo PWM tiene un disparador especial
Existen cuatro posibles valores de pre
que le permite sincronizar la base de tiempo
escalado (1:1, 1:2, 1:4, 1:8) para la entrada
con el convertidor analógico-digital.
de reloj que permiten establecer el rango El tiempo de adquisición y conversión A/D
adecuado para los tiempos muertos.
puede ser programado para que se produzca en cualquier punto del periodo PWM. El
8. OTROS RECURSOS MODULO PWM
DEL
Este disparador tiene asociado un post
Las señales de salida de los canales de PWM y
disparo y puede ser utilizada opcionalmente por el módulo A/D.
10.1 CAMBIO MANUAL
(PWMxH
módulo PWM siempre producirá la señal de
PWMxL)
normalmente
evolucionan de manera automática según el
escalado que permite un escalado de 1:1 a 1:16. El post escalado es útil cuando no se realiza conversiones A/D cada ciclo PWM.
tipo de configuración que se haya cargado en los registros correspondientes. Estas salidas
Se escribe en el registro SEVTCMP.
Se representa un dispositivo
pueden ser “1” o a”0” por el programador “manualmente”.
El dsPIC posee un registro dedicado a este
EL registro OVDCON encargado de controlar este recurso. Posee 8 bits (POVDxH y POVDxL) por quién es controlada la salida, por el módulo PWM o por el programador y otros 8 bits (POUTxH y POUTxL).
recurso, es el SEVTCMP dispone de 15 bits en los que se carga el valor que se compara con PTMR
(recordar
que
PTMR
es
un
temporizador de 15 bits). El bit SEVDIR sólo se utiliza en caso de de que la base base de tiempo trabaje en modo ascendente/descendente e
El cambio manual se puede sincronizar con la
indica si el disparo se produce en la cuenta
generación de la base de tiempo para que las
ascendente
salidas
descendentes (SEVDIR=1).
evolucionen
según
el
tiempo
controlado por el registro PTMR.
10.2 PATITAS DE FALLO El módulo PWM dispone de 2 patitas de fallo FLTA# y FLTB# que son patitas de entrada activas por nivel bajo. Cada patita tiene su
15
(SEVDIR=0)
o
en
14
SEVTDIR
las
0 SEVTCMP
Figura: registro SEVTCMP
10.4 MODOS SLEEP E IDLE
propio vector de interrupción. Cuando el dsPIC funciona en modo Sleep, el Los registros que controlan este recurso son
reloj del sistema se detiene y la CPU deja de
FLTACON y FALTBCON. Estos registros son
ejecutar instrucciones. En cuanto al módulo
idénticos y cada uno controla a su patita
PWM, mantendrá las señales de salida en el
correspondiente.
mismo estado en el mismo estado en el que
ITSS – MODULO PWM PARA CONTROL DE MOTORES
estaban antes de entrar
en Sleep, es
importante que este estado sea seguro, lo cual es responsabilidad del programador. Para entrar en sleep es PWRSAV y una de las formas de despertar del sleep es a través de las interrupciones provocadas por las patitas de fallo. El modo IDLE, anuqué la CPU detenga la ejecución
de
instrucciones,
existe
la
posibilidad de que el módulo PWM siga funcionando poniendo a 0 el bit PTSILD del registro PTCON.