r pi motorcd z · laboratorio de control automÁtico “control digital de velocidad de un motor cd...
TRANSCRIPT
![Page 1: R PI motorCD z · LABORATORIO DE CONTROL AUTOMÁTICO “Control digital de velocidad de un motor CD con PSoC” ... directo y actúa directamente sobre la señal de error; pues el](https://reader030.vdocumento.com/reader030/viewer/2022040916/5e90330da9a9b24e261ce4f6/html5/thumbnails/1.jpg)
INSTITUTO TECNOLÓGICO DE COSTA RICA
ESCUELA DE INGENIERÍA ELECTRÓNICA
LABORATORIO DE CONTROL AUTOMÁTICO
“Control digital de velocidad de un motor CD con PSoC”
Eduardo Interiano
Cartago, abril 2017
)(zPI
)(ˆ zGO
)(zmotorCD)(zR
2.1
)(z
![Page 2: R PI motorCD z · LABORATORIO DE CONTROL AUTOMÁTICO “Control digital de velocidad de un motor CD con PSoC” ... directo y actúa directamente sobre la señal de error; pues el](https://reader030.vdocumento.com/reader030/viewer/2022040916/5e90330da9a9b24e261ce4f6/html5/thumbnails/2.jpg)
![Page 3: R PI motorCD z · LABORATORIO DE CONTROL AUTOMÁTICO “Control digital de velocidad de un motor CD con PSoC” ... directo y actúa directamente sobre la señal de error; pues el](https://reader030.vdocumento.com/reader030/viewer/2022040916/5e90330da9a9b24e261ce4f6/html5/thumbnails/3.jpg)
i
Índice
Capítulo 1: Introducción .............................................................................................................. 1
1.1 Descripción de la planta ................................................................................................... 1
1.2 Descripción del problema................................................................................................. 1
1.3 Objetivos del diseño ......................................................................................................... 2
Capítulo 2: Implementación del controlador ............................................................................... 3
2.1 Arquitectura de control..................................................................................................... 3
2.1 Restricciones de diseño .................................................................................................... 3
2.2 Controlador PI diseñado para la planta ............................................................................ 3
2.3 Controlador PI a implementar en forma discreta ............................................................. 4
2.4 Implementación digital con PSoC 5LP ............................................................................ 4
2.4.1 Condiciones y restricciones del diseño ..................................................................... 5
2.4.2 Selección de las configuraciones para el control ...................................................... 5
2.4.2.1 La base de tiempos ............................................................................................ 6
2.4.2.2 Conversión analógico-digital ............................................................................. 9
2.4.2.3 Múltiples entradas analógicas .......................................................................... 11
2.4.2.4 Salida analógica de control .............................................................................. 13
2.4.2.5 Botones pulsadores .......................................................................................... 16
2.4.2.6 Salidas digitales ............................................................................................... 18
2.4.3 Asignación de las patillas........................................................................................ 19
2.5 Implementación del programa de control....................................................................... 20
2.5.1 Selección del tipo de aritmética .............................................................................. 20
2.5.2 Escalado de las variables de entrada y salida .......................................................... 20
2.5.3 Programación del control digital ............................................................................. 21
2.5.3.1 La rutina de control por interrupciones ........................................................... 21
2.5.4 Implementación del controlador en la placa de desarrollo 050 .............................. 24
Capítulo 3: Análisis de resultados ............................................................................................. 27
3.1 Pruebas de funcionamiento ............................................................................................ 27
3.1.1 Ajuste de la constante KP ....................................................................................... 27
3.1.2 Ajuste de la constante KI ........................................................................................ 27
3.1.3 Pruebas con escalón de entrada............................................................................... 28
3.2 Verificando el cumplimiento de objetivos ..................................................................... 28
![Page 4: R PI motorCD z · LABORATORIO DE CONTROL AUTOMÁTICO “Control digital de velocidad de un motor CD con PSoC” ... directo y actúa directamente sobre la señal de error; pues el](https://reader030.vdocumento.com/reader030/viewer/2022040916/5e90330da9a9b24e261ce4f6/html5/thumbnails/4.jpg)
ii
3.2.1 Respuesta ante cambios en la entrada de referencia ............................................... 28
3.2.2 Respuesta ante cambios en la entrada de perturbación ........................................... 29
3.2.3 Respuesta con parámetros desajustados .................................................................. 30
3.3 Verificando la implementación digital ........................................................................... 31
Capítulo 4: Conclusiones ........................................................................................................... 33
Capítulo 5: Recomendaciones ................................................................................................... 34
Capítulo 6: Referencias .............................................................................................................. 35
Apéndice I: Programa completo del regulador PI para PSoC en C .............................................. 36
Apéndice II: Diagramas de bloques del regulador PI en PSoC 5LP............................................. 42
![Page 5: R PI motorCD z · LABORATORIO DE CONTROL AUTOMÁTICO “Control digital de velocidad de un motor CD con PSoC” ... directo y actúa directamente sobre la señal de error; pues el](https://reader030.vdocumento.com/reader030/viewer/2022040916/5e90330da9a9b24e261ce4f6/html5/thumbnails/5.jpg)
iii
Índice de figuras
Figura 1.1: Fotografía de la planta hps5130 ................................................................................... 1
Figura 2.1: Estructura del lazo de control mostrando el modelo que se ve desde el regulador ...... 3
Figura 2.2: Base de tiempos e interrupción para el control PI en PSoC 5LP ................................. 6
Figura 2.3: Ventana de configuración del componente Timer del PSoC ........................................ 7
Figura 2.4: Ventana de configuración del reloj de 1MHz para el temporizador ............................ 8
Figura 2.5: Formas de onda de la implementación fija del temporizador (8 bits) .......................... 9
Figura 2.6: Ventana de configuración de la interrupción Isr_Timer .............................................. 9
Figura 2.7: Ventana de configuración del convertidor ADC D- del PSoC ................................ 10
Figura 2.8: Diagrama de la referencia de tensión externa del kit-050 PSoC ................................ 11
Figura 2.9: Etapa de entradas analógicas ...................................................................................... 12
Figura 2.10: Selección del modo de operación 5V o 3.3V de las entradas analógicas y digitales
del PSoC en la placa de desarrollo 050 ......................................................................................... 12
Figura 2.11: Ventana de configuración del selector analógico de dos entradas AMux ................. 13
Figura 2.12: Esquema de la salida analógica de control con VDAC8 y OpAmp ......................... 13
Figura 2.13: Ventana de configuración del convertidor digital-analógico VDAC8 ..................... 14
Figura 2.14: Esquema de la salida analógica de control con DVDAC, PGA y OpAmp .............. 15
Figura 2.15: Ventana de configuración del DVDAC .................................................................... 15
Figura 2.16: Esquema de la salida analógica de control con DVDAC y OpAmp con ganancia 2 16
Figura 2.17: Diagrama de los botones pulsadores para la operación del regulador PI ................ 17
Figura 2.18: Esquema electrónico del pulsador conectado a la patilla P6[1] en la placa de
desarrollo....................................................................................................................................... 17
Figura 2.19: Configuración de las patillas digitales de entrada para los pulsadores .................... 18
Figura 2.20: Diagrama de la conexión del LED4 disponible en la placa de desarrollo 050 ......... 18
Figura 2.21: Ventana de configuración de las patillas digitales de salida .................................... 19
Figura 2.22: Resumen de la asignación de patillas del PSOC en la placa de desarrollo 050 ....... 20
Figura 2.23: Fotografía de la placa de desarrollo PSoC 5LP ejecutando el control PI ................. 24
Figura 3.1: Captura de la pantalla LCD durante el ajuste de la constante proporcional KP ........ 27
Figura 3.2: Captura de la pantalla LCD durante el ajuste de la constante integral KI .................. 28
Figura 3.3: Respuesta de velocidad ante una entrada escalón de 4krpm y comportamiento ante
perturbaciones ............................................................................................................................... 29
![Page 6: R PI motorCD z · LABORATORIO DE CONTROL AUTOMÁTICO “Control digital de velocidad de un motor CD con PSoC” ... directo y actúa directamente sobre la señal de error; pues el](https://reader030.vdocumento.com/reader030/viewer/2022040916/5e90330da9a9b24e261ce4f6/html5/thumbnails/6.jpg)
iv
Figura 3.4: Respuesta ante escalón con los parámetros del regulador PI completamente
desajustados y con saturación a 4V de la acción de control. ........................................................ 30
Figura 3.5: Respuesta ante escalón con los parámetros del regulador PI completamente
desajustados. ................................................................................................................................. 31
Figura 3.6: Periodo de la interrupción y duración del algoritmo de control del PI ...................... 32
![Page 7: R PI motorCD z · LABORATORIO DE CONTROL AUTOMÁTICO “Control digital de velocidad de un motor CD con PSoC” ... directo y actúa directamente sobre la señal de error; pues el](https://reader030.vdocumento.com/reader030/viewer/2022040916/5e90330da9a9b24e261ce4f6/html5/thumbnails/7.jpg)
v
Prólogo
Este trabajo es el segundo de una serie de ejemplos de diseño, o Diseños de Referencia,
destinados a proporcionar a los estudiantes del curso EL-5409 Laboratorio de Control
Automático ejemplos reales de diseño e implementación de diferentes tipos de controles
electrónicos automáticos.
Estos trabajos ejemplifican todas las facetas del desarrollo e implementación de un proyecto de
control; mostrando así a los estudiantes, cómo se espera que ellos a su vez desarrollen el
proyecto final en dicho curso, haciendo hincapié en la metodología y buenas prácticas de diseño
y construcción.
Con este aporte se espera que los estudiantes realicen mejor sus proyectos y en mucho menos
tiempo; aplicando adecuadamente la teoría, integrando los conocimientos previos y los
particulares del control automático y evitando los errores comunes que se han detectado durante
los años de impartir este curso.
La planta hps5130 ha sido utilizada con éxito durante varios semestres en el Laboratorio de
Control Automático para la realización de los llamados proyectos cortos: “Identificación del
sistema motor hps5130” [3] y “Control de velocidad del sistema motor hps5130” [2]. En estos
proyectos cortos, los estudiantes deben realizar el experimento con el interruptor (4) hacia la
derecha, ver la Figura 1.1, lo cual produce un sistema con un resultado completamente diferente
al mostrado en este documento y por lo tanto no se está dando aquí la solución a ninguno estos
experimentos.
En este segundo ejemplo, se trata de mostrar el diseño de un control PI similar al del ejemplo de
diseño 1 descrito en [3]; pero, en este caso la implementación se realizó en una placa de
desarrollo 050 para PSoC1 5LP de la empresa Cypress. Para una descripción detallada de esta
placa 050, consulte [7].
Como este ejemplo 2 presenta una variante de implementación del control descrito en [3], la
primera parte de cualquier proyecto en el Laboratorio de Control Automático, que consiste en
encontrar los modelos analítico y empírico se ha omitido, así como la parte del diseño del
controlador; pero, éstas pueden revisarse de ser necesario en [3].
1 PSoC: Programmable System on Chip. Sistema híbrido programable contenido en un mismo circuito integrado
![Page 8: R PI motorCD z · LABORATORIO DE CONTROL AUTOMÁTICO “Control digital de velocidad de un motor CD con PSoC” ... directo y actúa directamente sobre la señal de error; pues el](https://reader030.vdocumento.com/reader030/viewer/2022040916/5e90330da9a9b24e261ce4f6/html5/thumbnails/8.jpg)
![Page 9: R PI motorCD z · LABORATORIO DE CONTROL AUTOMÁTICO “Control digital de velocidad de un motor CD con PSoC” ... directo y actúa directamente sobre la señal de error; pues el](https://reader030.vdocumento.com/reader030/viewer/2022040916/5e90330da9a9b24e261ce4f6/html5/thumbnails/9.jpg)
1
Capítulo 1: Introducción
1.1 Descripción de la planta
La planta hps5130 dispone de los elementos necesarios para realizar un control de velocidad o un
control de torque de un motor de CD de imán permanente. Los controles se pueden realizar de
forma independiente o como controles anidados.
Los elementos principales de la planta son un motor de CD (2) de 12V y un generador de CD (8)
también de 12V que se encuentran directamente acoplados. Adicionalmente la planta posee un
amplificador de potencia (1), para accionar el motor con señales de ±5V o ±10V; un
tacogenerador con un amplificador de ganancia 2V/1000min-1, como sensor de velocidad angular
(6); un sensor de corriente (7) con su respectivo amplificador de ganancia 10V/A; un codificador
en cuadratura (9), acoplado también al eje del motor-generador e interruptores para crear
electrónicamente una perturbación de carga al generador (5) y para simular un cambio en el
momento de inercia (4).
Figura 1.1: Fotografía de la planta hps5130
1.2 Descripción del problema
El problema consiste en crear un control electrónico que debe ser capaz de mantener la velocidad
constante establecida para sistema; aun ante perturbaciones en la carga del motor; perturbaciones
tales como: cargar, (con una bombilla incandescente), el generador acoplado; o también las
producidas al oponer un torque por fricción al eje de salida del motor.
Este documento se enfoca en la implementación de un control PI digital para la velocidad
angular del motor de CD en una placa de desarrollo basada en PSoC 5LP, las etapas de obtener
los modelos y del diseño del controlador PI pueden revisarse en los capítulos 2 y 3 en [3].
![Page 10: R PI motorCD z · LABORATORIO DE CONTROL AUTOMÁTICO “Control digital de velocidad de un motor CD con PSoC” ... directo y actúa directamente sobre la señal de error; pues el](https://reader030.vdocumento.com/reader030/viewer/2022040916/5e90330da9a9b24e261ce4f6/html5/thumbnails/10.jpg)
2
1.3 Objetivos del diseño
Entre los objetivos de control para el diseño se tienen: un sobreimpulso menor al 3%, un tiempo
de estabilización del 2% menor a 150ms y un error de estado estacionario de 0%. El punto de
operación del motor deberá ser de 4krpm y deberá soportar las perturbaciones producidas al
accionar la carga eléctrica acoplada al generador.
Además, el control debe ser implementado de forma digital en un PSoC 5LP para que sirva como
ejemplo de realización de un regulador digital en este tipo de plataforma.
![Page 11: R PI motorCD z · LABORATORIO DE CONTROL AUTOMÁTICO “Control digital de velocidad de un motor CD con PSoC” ... directo y actúa directamente sobre la señal de error; pues el](https://reader030.vdocumento.com/reader030/viewer/2022040916/5e90330da9a9b24e261ce4f6/html5/thumbnails/11.jpg)
3
Capítulo 2: Implementación del controlador
2.1 Arquitectura de control
En la Figura 2.1 se ha copiado de nuevo la arquitectura del control descrita en [3] para recordarla
fácilmente al hacer referencia a ésta. El control PI a implementar se encuentra en el camino
directo y actúa directamente sobre la señal de error; pues el diagrama de bloques se ha reducido a
su forma de realimentación unitaria. La entrada y salida del regulador PI deben admitir una
tensión máxima de 5V, ya que la señal de velocidad se ha divido a la mitad con un divisor en su
entrada. Para más detalles revisar [3].
Figura 2.1: Estructura del lazo de control mostrando el modelo que se ve desde el regulador
Con esta factorización el modelo de la planta completa incluyendo al motor puede ser escrito
como:
𝑝𝑙𝑎𝑛𝑡𝑎𝐶𝐷(𝑠) = 1.2 ∗30.86
(𝑠 + 24.6)
2.1 Restricciones de diseño
En la Tabla 2.1 se ha copiado las restricciones de diseño dadas en [3] para tenerlas a mano.
Tabla 2.1: Condiciones establecidas para el control
Condición Tiempo de
estabilización Sobreimpulso
Error de estado
estacionario
Valor 150ms 3% 0%
2.2 Controlador PI diseñado para la planta
La estructura del regulador PI diseñado en [3] se muestra a continuación. Es una forma paralela
ideal expresada en la forma transformada de Laplace.
𝑃𝐼(𝑠) = 𝐾𝑃 +𝐾𝐼
𝑠
1.2R(s) Ω(s)+
-
)(sPI
)(ˆ sGO
)(smotorCD
![Page 12: R PI motorCD z · LABORATORIO DE CONTROL AUTOMÁTICO “Control digital de velocidad de un motor CD con PSoC” ... directo y actúa directamente sobre la señal de error; pues el](https://reader030.vdocumento.com/reader030/viewer/2022040916/5e90330da9a9b24e261ce4f6/html5/thumbnails/12.jpg)
4
El regulador PI diseñado en [3], expresado en forma numérica es:
𝑃𝐼(𝑠) = 0.75 +18
𝑠
2.3 Controlador PI a implementar en forma discreta
El controlador en tiempo discreto a implementar es en realidad una aproximación al controlador
en tiempo continuo. La aproximación empleada en [3] para la integral es la backward Euler,
donde se sustituye el integrador en Laplace por su equivalente discreto: 1
𝑠=
𝑇𝑆∗𝑧
(𝑧−1); con TS como
el periodo de muestreo, establecido para este caso en 5ms.
𝑃𝐼(𝑧) =𝑀(𝑧)
𝐸(𝑧)= 𝐾𝑃 +
𝐾𝐼𝑇𝑆𝑧
(𝑧 − 1)
La implementación del regulador será en paralelo, como se ha mantenido en las ecuaciones
anteriores. Cada término se procesa por separado y se separan en:
𝑀𝑃(𝑧) = 𝐾𝑃𝐸(𝑧)
𝑀𝐼(𝑧) =𝐾𝐼𝑇𝑆𝑧
(𝑧 − 1)𝐸(𝑧)
Transformando al dominio del tiempo discreto se obtienen las ecuaciones de diferencia que serán
implementadas, como se muestra en el punto 2.5.3.1, en el sistema PSoC:
𝑚𝑃(𝑘) = 𝐾𝑃𝑒(𝑘)
𝑚𝐼(𝑘) = 𝐾𝐼𝑇𝑆𝑒(𝑘) + 𝑚𝐼(𝑘 − 1)
𝑝𝑖(𝑘) = 𝑚𝑃(𝑘) + 𝑚𝐼(𝑘)
2.4 Implementación digital con PSoC 5LP
Ya que entre los objetivos de control se encuentra definido que el control debe ser implementado
de forma digital en un PSoC 5LP, el aspecto a definir es la estructura del control dentro de las
posibilidades de la placa de evaluación KIT-050 para PSoC 5LP.
Se tiene predefinido y calculado el regulador PI en [3] y allí se ejemplificó con éxito un control
digital PI con un periodo de muestreo de 5ms; implementado en aritmética de punto fijo y con
salida PWM. Dicha implementación fue el resultado principalmente de las limitaciones del
procesador seleccionado, un pequeño microcontrolador de 8 bits. El PSoC 5LP en cambio, tiene
abundantes, flexibles y variados recursos de hardware de entrada y salida, junto a un procesador
de 32 bits ARM Cortex-M3 que corre a una frecuencia de 24MHz; por lo que se tiene una gran
paleta de posibilidades para la implementación. Ya que existe suficiente potencia de cálculo
como para que se pueda producir la salida de control dentro del presupuesto de tiempo de 1/10
de periodo de muestreo, establecido de 5ms, esto es, en menos de 500µs, se escoge entonces,
para este ejemplo, una implementación del regulador PI en aritmética de punto flotante. También
![Page 13: R PI motorCD z · LABORATORIO DE CONTROL AUTOMÁTICO “Control digital de velocidad de un motor CD con PSoC” ... directo y actúa directamente sobre la señal de error; pues el](https://reader030.vdocumento.com/reader030/viewer/2022040916/5e90330da9a9b24e261ce4f6/html5/thumbnails/13.jpg)
5
se selecciona una salida por DAC, recurso que no estaba disponible en la implementación
original. En la figura A1 del Apéndice II se muestra el esquema gráfico completo de la
implementación del regulador PI en PSoC 5LP.
2.4.1 Condiciones y restricciones del diseño
Debido a que el PSoC opera a una tensión máxima de 5V se mantendrá el uso de la entrada de
5V al amplificador de la planta y también se utilizará un atenuador para reducir la salida de
velocidad de la planta a la mitad, de tal forma, que los requisitos de entrada y salida para el
sistema PSoC serán de 0 a 5V. Para el ajuste de las constantes del PI se utilizará el
potenciómetro que posee la placa de desarrollo. Ya que se requiere el ajuste de dos constantes,
deberá implementarse una forma de ajuste secuencial utilizando el único potenciómetro
disponible. La Tabla 2.2 resume los requisitos de entrada-salida para el sistema PSoC.
Tabla 2.2: Definición de las entradas y salidas requeridas para el PSoC
Señal Descripción Tipo y rango de operación
Entrada Medición de velocidad angular Analógica de 0 a 5V
Entrada Ajuste de constantes Analógica de 0 a 5V
Salida Señal de tensión para el amplificador
del motor
Analógica, de 0 a 5V
Entrada Pulsador del escalón/guardar Digital, con “pull-up”, activa en bajo
Entrada Pulsador de selección de modo Digital, con “pull-up”, activa en bajo
Salida Escalón para sincronización/pruebas Digital, activa en alto
Salida Tiempo de ejecución del algoritmo
de control.
Digital, activa en alto
Salida LED de estado Digital, activa en alto
Para producir el escalón de velocidad de 4krpm, que se aplicará como señal de referencia al
control, se usará un pulsador normalmente abierto conectado a una entrada digital. Una salida
digital será utilizada para sincronizar el disparo del osciloscopio. Otra salida digital será usada
para producir una señal periódica que sirve para medir el periodo de muestreo y el tiempo de
ejecución del algoritmo de control.
NOTA: Podría haberse utilizado directamente la señal producida por el pulsador para disparar el
osciloscopio; pero, los interruptores mecánicos presentan rebote por lo que la señal de disparo
generada será una copia limpia, con la polaridad correcta y sin rebote de la producida por el
pulsador del escalón.
2.4.2 Selección de las configuraciones para el control
El diseño en PSoC debe tomar en cuenta varios aspectos especiales de la herramienta de
desarrollo llamada Creator, que se instala en una máquina con sistema operativo Windows:
a) Los componentes internos del PSoC se colocan en una o varias hojas. Al momento de
colocarse tienen una configuración por defecto.
![Page 14: R PI motorCD z · LABORATORIO DE CONTROL AUTOMÁTICO “Control digital de velocidad de un motor CD con PSoC” ... directo y actúa directamente sobre la señal de error; pues el](https://reader030.vdocumento.com/reader030/viewer/2022040916/5e90330da9a9b24e261ce4f6/html5/thumbnails/14.jpg)
6
b) Los componentes del PSoC, a diferencia de un componente electrónico convencional,
poseen una interfaz programática de aplicación llamada API para todas las funciones del
componente.
c) La configuración por defecto de los componentes puestos de forma gráfica se puede
realizar dentro de una ventana de configuración que se abre al darle doble clic al
componente, por ejemplo la Figura 2.7 para el ADC. También se puede configurar todo
componente a través de su API.
d) Todos los componentes del PSoC tienen una hoja de datos como cualquier componente
electrónico. La hoja de datos contiene una descripción funcional; la descripción de los
modos de operación; descripción de patillas de entradas y salidas; las características
eléctricas de CD y AC; y la descripción de la API del componente. Es imperativo leer la
hoja de datos para poder utilizar adecuadamente cada componente.
e) Algunos componentes se conectan entre sí con líneas analógicas o digitales, como en
cualquier programa de captura de esquemáticos, como en la Figura 2.2; pero, en la
mayoría de los casos, las conexiones entre componentes no son visibles de forma gráfica;
pues, se realizan de manera programática en lenguaje C, a través de variables
compartidas y a veces también por DMA.
f) Todos los componentes deben iniciarse dentro del programa principal en C de previo a su
uso. Para esto, la API de cada componente provee la función
NombredeCadaComponente_Start(), que no recibe parámetros, ni los devuelve.
Vea la etapa de inicio del proceso principal, main, en el Apéndice I.
2.4.2.1 La base de tiempos
Para el control digital se requiere de una base de tiempos adecuada para ejecutar el algoritmo de
control periódicamente, en este caso a 5ms. Es preferible que el algoritmo se ejecute siempre en
el momento indicado por la base de tiempos, sin retardos; por lo que el uso de una interrupción
con baja latencia es recomendable y será utilizada en este caso junto con un temporizador de
hardware de 16 bits, que se alimenta con un reloj de 1MHz derivado del reloj maestro de 24MHz
basado en cristal del kit PSoC 050. En la Figura 2.2 muestra el diagrama esquemático del
temporizador y la Figura 2.4 pueden verse los ajustes descritos para el reloj.
Figura 2.2: Base de tiempos e interrupción para el control PI en PSoC 5LP
![Page 15: R PI motorCD z · LABORATORIO DE CONTROL AUTOMÁTICO “Control digital de velocidad de un motor CD con PSoC” ... directo y actúa directamente sobre la señal de error; pues el](https://reader030.vdocumento.com/reader030/viewer/2022040916/5e90330da9a9b24e261ce4f6/html5/thumbnails/15.jpg)
7
En la Figura 2.3se muestra la ventana de configuración del componente Timer. Para producir un
periodo de 5ms a partir del reloj de 1MHz se requiere definir un periodo de 5000 cuentas.
Figura 2.3: Ventana de configuración del componente Timer del PSoC
![Page 16: R PI motorCD z · LABORATORIO DE CONTROL AUTOMÁTICO “Control digital de velocidad de un motor CD con PSoC” ... directo y actúa directamente sobre la señal de error; pues el](https://reader030.vdocumento.com/reader030/viewer/2022040916/5e90330da9a9b24e261ce4f6/html5/thumbnails/16.jpg)
8
Figura 2.4: Ventana de configuración del reloj de 1MHz para el temporizador
La generación de la interrupción con el temporizador puede realizarse interna o externamente. En
este caso como ejemplo se utilizó la salida TC de fin del conteo, cuyo diagrama de tiempos en
relación con las otras señales del temporizador se muestra en la Figura 2.5. La señal TC es activa
en alto y dura un ciclo de reloj.
![Page 17: R PI motorCD z · LABORATORIO DE CONTROL AUTOMÁTICO “Control digital de velocidad de un motor CD con PSoC” ... directo y actúa directamente sobre la señal de error; pues el](https://reader030.vdocumento.com/reader030/viewer/2022040916/5e90330da9a9b24e261ce4f6/html5/thumbnails/17.jpg)
9
Figura 2.5: Formas de onda de la implementación fija del temporizador (8 bits)
En la Figura 2.6 puede verse la configuración de la interrupción isr_Timer, en la que para no
dejar nada al azar se selecciona el flanco positivo como la señal de disparo de la interrupción.
Figura 2.6: Ventana de configuración de la interrupción Isr_Timer
2.4.2.2 Conversión analógico-digital
Para procesar las entradas analógicas, el PSoC 5LP posee dos convertidores ADC de 12 bits del
tipo de aproximaciones sucesivas (SAR) y un ADC D- de 20 bits. El ADC D- es mucho
![Page 18: R PI motorCD z · LABORATORIO DE CONTROL AUTOMÁTICO “Control digital de velocidad de un motor CD con PSoC” ... directo y actúa directamente sobre la señal de error; pues el](https://reader030.vdocumento.com/reader030/viewer/2022040916/5e90330da9a9b24e261ce4f6/html5/thumbnails/18.jpg)
10
más flexible y permite el ajuste de la resolución entre 8 y 20 bits, con una tasa de muestreo
inversamente proporcional a la resolución. Para poder muestrear lo suficientemente rápido, y ya
que no es necesaria una resolución alta, se configurará el ADC a 12 bits a 10000 muestras por
segundo. Para medir más de una entrada con un selector debe usarse el modo Multi-Sample. Esto
también implica que antes de cada lectura del ADC debe de realizase una detención completa de
la conversión, luego la selección de la entrada, en seguida debe reiniciarse la conversión para
finalmente medir el resultado de ésta.
Figura 2.7: Ventana de configuración del convertidor ADC D- del PSoC
![Page 19: R PI motorCD z · LABORATORIO DE CONTROL AUTOMÁTICO “Control digital de velocidad de un motor CD con PSoC” ... directo y actúa directamente sobre la señal de error; pues el](https://reader030.vdocumento.com/reader030/viewer/2022040916/5e90330da9a9b24e261ce4f6/html5/thumbnails/19.jpg)
11
Para poder admitir señales de 0-5V, el ADC D- podría utilizar una referencia interna basada
en la tensión de alimentación, con lo que la conversión sería ratimétrica, esto es proporcional a la
tensión de alimentación, en el rango de 0-VDD, lo cual no sería exacto. Para lograr medidas
exactas es preferible utilizar una referencia interna de precisión de 1.024V, con lo cual se podría
medir de manera independiente a la tensión de alimentación del PSoC. Se utilizará por lo tanto la
referencia interna de 1.024V, con la opción de un multiplicador por 6 lo que hará que el ADC
pueda admitir tensiones entre 0 y 6.144V. Además se hará uso de la opción que filtra la
referencia interna con un condensador externo para evitar el ruido; lo que en la placa de
desarrollo 050 implica la selección de la patilla P3.2 para este fin. Como se muestra en la Figura
2.8, un extracto del diagrama esquemático de la placa de desarrollo 050 de Cypress, solo la
patilla P3[2] está conectada a través de R37 al filtro formado por los condensadores C28 y C32.
Ninguna de las resistencias R34 y R73 se encuentran soldadas en la placa; por lo que la opción
de utilizar la patilla P0[3] para salida del filtro no es aplicable en este caso.
Figura 2.8: Diagrama de la referencia de tensión externa del kit-050 PSoC
Con 12 bits de resolución en el ADC, el error de cuantificación, que es equivalente a ±1/2 LSB,
será menor ±1rpm, lo cual a la velocidad de operación de 4krpm representará únicamente un
error de ±0.016%.
2.4.2.3 Múltiples entradas analógicas
Para la operación del regulador PI se requiere medir dos entradas analógicas: a) La
realimentación de velocidad, para el control y b) El valor de ajuste del potenciómetro, para
definir las constantes de operación KP y KI en el modo de calibración. Se utilizará entonces un
selector analógico AMux configurado para dos entradas. Como se muestra en la Figura 2.9 en la
entrada 0 del selector analógico existe un circuito acondicionador de señal que consiste en un
divisor de tensión, que sirve para atenuar la señal de realimentación de velocidad al 50% y que
en conjunto con el condensador de 1µF forma un filtro antisolapamiento con constante de tiempo
de 3.4ms, para disminuir el ruido de las escobillas del tacómetro que mide la velocidad angular.
NOTA: Los componentes en color azul son externos al circuito integrado PSoC. Algunos, como
el potenciómetro R56, ya se encuentran soldados y conectados en la placa de desarrollo, los otros
deben se añadidos, en este caso sobre la pequeña placa de prototipos incluida en la placa de
desarrollo.
![Page 20: R PI motorCD z · LABORATORIO DE CONTROL AUTOMÁTICO “Control digital de velocidad de un motor CD con PSoC” ... directo y actúa directamente sobre la señal de error; pues el](https://reader030.vdocumento.com/reader030/viewer/2022040916/5e90330da9a9b24e261ce4f6/html5/thumbnails/20.jpg)
12
Figura 2.9: Etapa de entradas analógicas
Para seleccionar el modo de operación de las entradas analógicas y digitales del PSoC 5LP en la
placa de desarrollo 050 se dispone de dos selectores tipo puente. Para operación a 5V ambos
tienen que colocarse como lo indica la primera línea de la nota en la Figura 2.10, lo que por
cierto es la posición de fábrica en la que se encuentran los selectores en una placa nueva.
Figura 2.10: Selección del modo de operación 5V o 3.3V de las entradas analógicas y digitales del
PSoC en la placa de desarrollo 050
En la Figura 2.11 se muestra la ventana de configuración del componente selector analógico
llamado AMux. Las opciones seleccionadas fueron escogidas son las recomendadas en la hoja de
datos para este caso de selección exclusiva de una de las dos entradas, ambas en modo común.
![Page 21: R PI motorCD z · LABORATORIO DE CONTROL AUTOMÁTICO “Control digital de velocidad de un motor CD con PSoC” ... directo y actúa directamente sobre la señal de error; pues el](https://reader030.vdocumento.com/reader030/viewer/2022040916/5e90330da9a9b24e261ce4f6/html5/thumbnails/21.jpg)
13
Figura 2.11: Ventana de configuración del selector analógico de dos entradas AMux
2.4.2.4 Salida analógica de control
Para la salida de la señal de control se puede usar un convertidor digital a analógico de 8 bits,
llamado VDAC8. La impedancia de salida de este circuito es muy alta; por lo que se separa y
amplifica con un amplificador operacional con ganancia unitaria, como se muestra en la Figura
2.12.
Figura 2.12: Esquema de la salida analógica de control con VDAC8 y OpAmp
El VDAC8 se puede configurar para una ganancia de 16mV/bit, como se muestra en la Figura
2.13 con lo cual, su salida máxima será de 4.08V la que claramente es inferior a 5V. Como el
escalón de prueba para la entrada de referencia del controlador PI está limitado a 4V, hay que
garantizar que la acción de control no superará los 4V en ningún momento, incluyendo durante
las perturbaciones. En este caso, con la selección adecuada de los parámetros del controlador PI
está garantizado que la acción de control no superará los 4V. Como puede verse en la Figura 3.3
donde se aprecia la respuesta del sistema ante el escalón de 4krpm y ante perturbaciones, la
acción de control no alcanza los 4V aun ante perturbaciones.
![Page 22: R PI motorCD z · LABORATORIO DE CONTROL AUTOMÁTICO “Control digital de velocidad de un motor CD con PSoC” ... directo y actúa directamente sobre la señal de error; pues el](https://reader030.vdocumento.com/reader030/viewer/2022040916/5e90330da9a9b24e261ce4f6/html5/thumbnails/22.jpg)
14
Figura 2.13: Ventana de configuración del convertidor digital-analógico VDAC8
Si se desea producir una salida más cercana a los 5V, se puede usar un DVDAC de 9 bits, que
posee una ganancia de 8mV/bit y su salida se puede amplificar por dos con un amplificador de
ganancia programable o PGA para lograr una ganancia de 16mV/bit. Como la impedancia de
salida de este amplificador programable también es muy alta, debe separarse y amplificarse con
un amplificador operacional con ganancia unitaria, como se muestra en la Figura 2.14. El
DVDAC usa un truco llamado dither para, usando un VDAC8 internamente, producir una salida
con una resolución de hasta 12 bits. Para eliminar el ruido inherente al dither, se recomienda
colocar un pequeño condensador externo en la salida del DVDAC. En el programa final,
disponible en [8] se utilizó la configuración de la Figura 2.14 con lo que se pudo producir una
acción de control de 4.8V máximo, lo cual es más que suficiente en este caso. Las pruebas
además demostraron que el condensador no es necesario para esta aplicación; ya que el motor de
CD se comporta como un filtro pasa bajas, ejerciendo de hecho la función de filtrado.
En la Figura 2.15 se muestra la configuración de DVDAC para una resolución de 9 bits y una
ganancia de 8mV/bit. El bloque encapsula y esconde todas las operaciones necesarias para hacer
el dithering, simplificando grandemente el trabajo del ingeniero.
![Page 23: R PI motorCD z · LABORATORIO DE CONTROL AUTOMÁTICO “Control digital de velocidad de un motor CD con PSoC” ... directo y actúa directamente sobre la señal de error; pues el](https://reader030.vdocumento.com/reader030/viewer/2022040916/5e90330da9a9b24e261ce4f6/html5/thumbnails/23.jpg)
15
Figura 2.14: Esquema de la salida analógica de control con DVDAC, PGA y OpAmp
Figura 2.15: Ventana de configuración del DVDAC
Si se quiere ahorrar el PGA, éste se puede suprimir; pero, entonces el amplificador operacional
de salida debe tener ganancia 2 ajustada por dos resistencias externas, como se muestra en la
![Page 24: R PI motorCD z · LABORATORIO DE CONTROL AUTOMÁTICO “Control digital de velocidad de un motor CD con PSoC” ... directo y actúa directamente sobre la señal de error; pues el](https://reader030.vdocumento.com/reader030/viewer/2022040916/5e90330da9a9b24e261ce4f6/html5/thumbnails/24.jpg)
16
Figura 2.16. Como no hay escasez de recursos en este diseño, esta opción no se utilizó; pues
implicaba el uso de dos resistencias externas y con el PGA esto no es necesario.
Si se desea generar una señal analógica de salida más grande o bipolar, por ejemplo de ±10V, el
estándar en sistemas de control industriales, se puede utilizar un amplificador operacional
externo que admita alimentaciones de unos ±15V; pero, este no es el caso.
Figura 2.16: Esquema de la salida analógica de control con DVDAC y OpAmp con ganancia 2
2.4.2.5 Botones pulsadores
Se requieren dos entradas, una para el botón pulsador de selección de modo de operación
(DISPLAY_SELECT) y otro para el botón de doble función escalón/guardar (START). En la
Figura 2.17 se muestra el diagrama electrónico requerido para estas entradas activas en bajo.
![Page 25: R PI motorCD z · LABORATORIO DE CONTROL AUTOMÁTICO “Control digital de velocidad de un motor CD con PSoC” ... directo y actúa directamente sobre la señal de error; pues el](https://reader030.vdocumento.com/reader030/viewer/2022040916/5e90330da9a9b24e261ce4f6/html5/thumbnails/25.jpg)
17
Figura 2.17: Diagrama de los botones pulsadores para la operación del regulador PI
La placa de desarrollo 050 contiene dos pulsadores de propósito general, uno conectado a la
patilla P15[5] y otro en la patilla P6[1]. La Figura 2.18 muestra un recorte del esquemático de la
placa de desarrollo 050 donde puede observarse la conexión del pulsador conectado a la patilla
P6[1]. El pulsador conectado a la patilla P15[5] está conectado de idéntica forma. Para garantizar
un estado en la patilla cuando el pulsador no se encuentra presionado se requiere una resistencia
de pull-up que no se encuentra presente en la placa de desarrollo.
Figura 2.18: Esquema electrónico del pulsador conectado a la patilla P6[1] en la placa de desarrollo
Se podrían colocar resistencias externas de pull-up, como se describió en el punto 2.4.2.2 para el
acondicionador de señal del convertidor ADC; pero, existe una forma más fácil, que se muestra
en la Figura 2.19, donde puede verse la configuración de la estructura de las patillas digitales de
entrada. Al seleccionar el modo Resistive pull-up, se conectará una resistencia interna desde la
patilla a la tensión de alimentación VDD, lo cual garantizará el estado alto en la entrada digital.
![Page 26: R PI motorCD z · LABORATORIO DE CONTROL AUTOMÁTICO “Control digital de velocidad de un motor CD con PSoC” ... directo y actúa directamente sobre la señal de error; pues el](https://reader030.vdocumento.com/reader030/viewer/2022040916/5e90330da9a9b24e261ce4f6/html5/thumbnails/26.jpg)
18
Figura 2.19: Configuración de las patillas digitales de entrada para los pulsadores
2.4.2.6 Salidas digitales
Se necesitan salidas digitales para mediciones de tiempo de ejecución del algoritmo de control y
para sincronizar el disparo del osciloscopio al momento de capturar las formas de onda de la
respuesta ante escalón. También se requiere una salida digital para activar el LED4 que parpadea
cuando el sistema se encuentra listo para recibir una entrada escalón a través del pulsador
START. En la Figura 2.20 se muestra el esquemático del LED4 conectado a la patilla P6[3] en la
placa de desarrollo 050. Las otras dos salidas digitales y los LED asociados siguen la misma
forma, poseen una resistencia limitadora de 330Ω y se activan en alto.
Figura 2.20: Diagrama de la conexión del LED4 disponible en la placa de desarrollo 050
La Figura 2.21 muestra un ejemplo de la configuración de las patillas digitales de salida como
Strong drive, de tal forma que puedan suplir corriente de salida para activar los LED.
![Page 27: R PI motorCD z · LABORATORIO DE CONTROL AUTOMÁTICO “Control digital de velocidad de un motor CD con PSoC” ... directo y actúa directamente sobre la señal de error; pues el](https://reader030.vdocumento.com/reader030/viewer/2022040916/5e90330da9a9b24e261ce4f6/html5/thumbnails/27.jpg)
19
Figura 2.21: Ventana de configuración de las patillas digitales de salida
2.4.3 Asignación de las patillas
Todos los dispositivos PSoC poseen múltiples funciones en cada una de las patillas, al asignar
una función a una de ellas, las otras funciones ya no estarán disponibles. La disponibilidad de las
funciones no es totalmente ortogonal; esto es, hay algunas patillas que tienen funciones
especializadas y a la hora de asignar las patillas hay que comenzar por las que tienen más
restricciones, en este caso las patillas para salidas y entradas analógicas de los amplificadores
operacionales. También, la placa del kit 050 tiene algunas patillas con usos predefinidos, por
ejemplo: las del manejo del LCD; la entrada del potenciómetro; la salida para el filtro de la
referencia interna de tensión del ADC; los dos pulsadores de propósito general; las salidas para
un par de LED; las utilizadas por puerto de comunicación USB y otras más. Para la asignación
de cualquier patilla a una función, siempre es conveniente revisar con detenimiento la
documentación de la placa de desarrollo [4]. La Figura 2.22 muestra el resumen de la asignación
de patillas del regulador PI en PSoC 5LP sobre la placa de desarrollo 050 de Cypress.
![Page 28: R PI motorCD z · LABORATORIO DE CONTROL AUTOMÁTICO “Control digital de velocidad de un motor CD con PSoC” ... directo y actúa directamente sobre la señal de error; pues el](https://reader030.vdocumento.com/reader030/viewer/2022040916/5e90330da9a9b24e261ce4f6/html5/thumbnails/28.jpg)
20
Figura 2.22: Resumen de la asignación de patillas del PSOC en la placa de desarrollo 050
2.5 Implementación del programa de control
2.5.1 Selección del tipo de aritmética
Con la restricción de producir la acción de control en menos de 500s, en cualquier
microcontrolador de bajo rendimiento no se intentaría utilizar aritmética de punto flotante, sería
demasiado lento; pero, en este caso, se tiene un procesador de 32 bits ARM Cortex-M3 que
ejecuta a 24MHz por lo que los cálculos se realizarán en aritmética de punto flotante.
2.5.2 Escalado de las variables de entrada y salida
Con El potenciómetro se introducirán al sistema las constantes KP y KI. Loa valores máximos
que se van a representar con el potenciómetro totalmente girado en el sentido de las manecillas
del reloj son: KP = 1 y KI = 40; por lo que 3333 cuentas del ADC será equivalentes a 1 para KP y
a 40 para KI, en tiempo continuo, y 0.2 en tiempo discreto a 5ms. En realidad, debido a pequeñas
pérdidas de tensión al alimentar la placa desde un puerto USB, el valor máximo que alcanza la
salida del potenciómetro es de unos 4.8V por lo que se satura en 3170 cuentas el valor para las
constantes.
Por otro lado, el valor de la velocidad se mide directamente en voltios con una relación de 1V =
1krpm. Para esto se emplean funciones de la API del ADC con valores corregidos, al iniciar el
ADC, para el desplazamiento del cero y la pendiente o ganancia.
Para escalar la salida se tiene que cada bit representa 16mV y simplemente se debe dividir el
valor de tensión a producir entre 0.016 para obtener el valor entero que se debe escribir al DAC8.
En realidad, se multiplica por el recíproco de 16mV, o sea 62.5, luego se convierte a entero y se
satura a un valor entre 0 y 255.
![Page 29: R PI motorCD z · LABORATORIO DE CONTROL AUTOMÁTICO “Control digital de velocidad de un motor CD con PSoC” ... directo y actúa directamente sobre la señal de error; pues el](https://reader030.vdocumento.com/reader030/viewer/2022040916/5e90330da9a9b24e261ce4f6/html5/thumbnails/29.jpg)
21
2.5.3 Programación del control digital
Para la simulación y programación del control digital se utilizó el programa gratuito “Creator
v4”; que se puede descargar desde la página de www.cypress.com [6] fabricante del sistema de
desarrollo utilizado. Una limitación de este programa gratuito es que funciona en Windows. El
programa completo se encuentra en el apéndice I.
El programa principal consta de varias partes:
a) Una sección de definiciones de parámetros, constantes y variables
b) La definición del proceso de interrupciones que ejecuta el algoritmo de control y que
posee varias partes que se compilan condicionalmente dependiendo de si están activados
algunos componentes de hardware o no en las hojas de esquemáticos.
c) Un procedimiento para hacer que un proceso se ejecute una sola vez por cada presión
de uno de los pulsadores.
d) Un proceso principal que consta de dos partes: La iniciación condicional de todos los
componentes de hardware activos en las páginas de diagramas y un lazo infinito, que en
este caso es el programa principal basado en una máquina de estados con una sección de
comunicaciones por USB que no es empleada a fondo en este prototipo.
2.5.3.1 La rutina de control por interrupciones
La rutina encargada de realizar el algoritmo de control tiene varias partes y se ha optimizado para
una duración mínima:
a) Elimina el rebote de los pulsadores pasando cada señal por un filtro pasa bajas con una
constante de tiempo de 10ms (dos interrupciones de 5ms). Se realiza la operación AND
sobre dos muestras consecutivas separadas por dos periodos de muestreo; por lo tanto,
solamente señales con una duración en alto de 10ms o más atraviesan el filtro,
eliminando así los rebotes del pulsador. Se muestra a continuación la sección para el
pulsador START.
/* Desplazamiento en memoria y lectura de la entrada */
step_2 = step_1;
step_1 = !(CyPins_ReadPin(START_0));
step = (step_1 && step_2);
/* La salida se activa solo si estuvo en alto τ > T */
b) Señaliza la activación del pulsador START para iniciar el escalón y sincronizar el
disparo del osciloscopio.
![Page 30: R PI motorCD z · LABORATORIO DE CONTROL AUTOMÁTICO “Control digital de velocidad de un motor CD con PSoC” ... directo y actúa directamente sobre la señal de error; pues el](https://reader030.vdocumento.com/reader030/viewer/2022040916/5e90330da9a9b24e261ce4f6/html5/thumbnails/30.jpg)
22
/* Señaliza el escalón para sincronizar */
if ( (step && idle) == true)
CyPins_SetPin(STEP_LED_0);
else
CyPins_ClearPin(STEP_LED_0);
c) Lectura de la realimentación de velocidad y cálculo del error.
/* Lee la velocidad actual en krpm */
/* Lee el canal de velocidad */
AMux_Select(SPEED_CHANNEL);
data = ADC_Read16();
/* Convierte las cuentas a voltios 1V = 1krpm */
yk = ADC_CountsTo_Volts((int32) data);
/* Establece el escalón e inicia el cálculo del PI */
if (step == true) {
ek = REFERENCE - yk; // Siga la referencia
}
else {
ek = 0 - yk; // Detenga el motor
ik = 0;
}
d) Procesamiento del algoritmo PI en paralelo, junto con escalado temporal de las
variables para minimizar el tiempo de ejecución.
/* Cálculo del algoritmo de control */
/* Parte integral, el término más a la derecha es ik_1 */
ik = KI*ek + ik;
/* Acción total de control PI */
mk = KP*ek + ik;
d) Verificación de límites para la acción de control y envío por el DVDAC.
/* No puede haber valores negativos. El máximo es 300 */
/* Escala mk al rango del DVDAC 16mV/bit */
vdac = (int16) (mk*VDAC_FACTOR);
/* Satura el valor del DVDAC */
![Page 31: R PI motorCD z · LABORATORIO DE CONTROL AUTOMÁTICO “Control digital de velocidad de un motor CD con PSoC” ... directo y actúa directamente sobre la señal de error; pues el](https://reader030.vdocumento.com/reader030/viewer/2022040916/5e90330da9a9b24e261ce4f6/html5/thumbnails/31.jpg)
23
if (vdac > VDAC_MAX) {
vdac = VDAC_MAX;
}
else if (vdac < 0) {
vdac = 0;
}
/* Escribe el valor saturado al DVDAC */
DVDAC_SetValue( (uint8) vdac);
e) Rutina “anti-windup” por saturación del término integral para el próximo ciclo.
/* Satura el término integral para el siguiente ciclo */
if (ik > MAXINTEGRAL)
ik = MAXINTEGRAL;
else
if (ik < -MAXINTEGRAL) ik = -MAXINTEGRAL;
f) Durante la fase de pruebas, también se prende y apaga, con el periodo de la
interrupción, una señal, llamada ISR_LED, testigo de la duración del algoritmo de
control.
/* Indica inicio del proceso con la lectura de la velocidad */
CyPins_SetPin(ISR_LED_0);
{
/* Proceso del algoritmo PI descrito arriba */
}
/* Fin del proceso después de sacar el valor del DAC */
CyPins_ClearPin(ISR_LED_0);
![Page 32: R PI motorCD z · LABORATORIO DE CONTROL AUTOMÁTICO “Control digital de velocidad de un motor CD con PSoC” ... directo y actúa directamente sobre la señal de error; pues el](https://reader030.vdocumento.com/reader030/viewer/2022040916/5e90330da9a9b24e261ce4f6/html5/thumbnails/32.jpg)
24
2.5.4 Implementación del controlador en la placa de desarrollo 050
Una descripción completa y detallada de la placa de desarrollo 050 se encuentra en [7].
Figura 2.23: Fotografía de la placa de desarrollo PSoC 5LP ejecutando el control PI
En la fotografía de la placa de desarrollo mostrada en la Figura 2.23 se puede observar la pantalla
LCD con el mensaje de bienvenida al energizar el sistema y los valores pre-programados para las
constantes. Con estos valores el sistema no trabaja adecuadamente, se han colocado así para
forzar a que deban ser ajustados con los valores adecuados para obtener un funcionamiento
correcto, vea en la Figura 3.5 la respuesta que se obtiene con estos parámetros.
También, en la fotografía de la Figura 2.23, pueden verse las terminales para los puntos de
prueba de las señales importantes en el circuito: VOUT, SPEED, GND; los pulsadores SELECT
y SAVE/START, y el potenciómetro para ajustes, POT.
![Page 33: R PI motorCD z · LABORATORIO DE CONTROL AUTOMÁTICO “Control digital de velocidad de un motor CD con PSoC” ... directo y actúa directamente sobre la señal de error; pues el](https://reader030.vdocumento.com/reader030/viewer/2022040916/5e90330da9a9b24e261ce4f6/html5/thumbnails/33.jpg)
25
Este modo inicial se reconoce, además del mensaje en pantalla, porque el LED4 parpadea varias
veces por segundo, indicando que se encuentra en espera de
a) Un cambio de modo de operación al pulsar el botón SELECT para entrar al modo de
configuración de constantes; o
b) El inicio de un experimento con el escalón de entrada al presionar el botón START.
![Page 34: R PI motorCD z · LABORATORIO DE CONTROL AUTOMÁTICO “Control digital de velocidad de un motor CD con PSoC” ... directo y actúa directamente sobre la señal de error; pues el](https://reader030.vdocumento.com/reader030/viewer/2022040916/5e90330da9a9b24e261ce4f6/html5/thumbnails/34.jpg)
![Page 35: R PI motorCD z · LABORATORIO DE CONTROL AUTOMÁTICO “Control digital de velocidad de un motor CD con PSoC” ... directo y actúa directamente sobre la señal de error; pues el](https://reader030.vdocumento.com/reader030/viewer/2022040916/5e90330da9a9b24e261ce4f6/html5/thumbnails/35.jpg)
27
Capítulo 3: Análisis de resultados
3.1 Pruebas de funcionamiento
La Tabla 3.1 muestra los valores de las constantes a ajustar. Como se trata de ejemplificar el
control digital, usaremos las constantes escaladas con el periodo de muestreo TS = 5ms. La
constante proporcional no se modifica; pues no depende de TS.
Tabla 3.1: Parámetros y escalas para los ajuste de las constantes del regulador PI
Parámetro KP KI
Límites para los parámetros en t-continuo 0 - 1 0 - 40
Escala 4.65V/1 4.65V/40
Valores del PI en tiempo continuo 0.75 18
Valores del PI en tiempo discreto @ 5ms 0.75 0.09
Los valores que se ajustan para las constantes del PI son directamente legibles en las unidades
utilizadas para el control digital y la constante KI ha sido escalada con un periodo de muestreo
de 5ms. Al usar un convertidor ADC de 12 bits, el error de cuantificación es aproximadamente
de ±0.6mV; que equivale en el ajuste de la constante KP entre 0-1 a una variación de ±0.0001 y
en el ajuste de KI entre 0-0.2 a una variación de ±0.000025 por lo que el ajuste de los valores se
puede lograr con facilidad hasta en el cuarto decimal. Además el controlador PI es bastante
robusto y pequeñas desviaciones entre los valores ajustados y los valores calculados no
influencian mucho el resultado del control.
3.1.1 Ajuste de la constante KP
Para ajustar las constantes, estando en el modo inicial, mostrado en la Figura 2.23, con el LED4
parpadeando, se debe presionar el pulsador SELECT. La pantalla LCD mostrará ahora una
imagen como la de la Figura 3.1. El valor mostrado a la derecha del símbolo es el valor actual
del parámetro, el valor mostrado a la izquierda es el valor futuro, el cual se puede ajustar
libremente con el potenciómetro POT. Este valor será copiado a la derecha, si se presiona el
botón SAVE, con lo que quedará guardado para el resto de la sesión y hasta que a) Se dé un
RESET a la placa; o b) Se modifique utilizando este procedimiento descrito.
Figura 3.1: Captura de la pantalla LCD durante el ajuste de la constante proporcional KP
3.1.2 Ajuste de la constante KI
La función del pulsador SELECT es secuencial y si, estando en el modo de ajuste de la constante
proporcional, se presiona una vez más, se entra al modo de configuración de la constante integral
![Page 36: R PI motorCD z · LABORATORIO DE CONTROL AUTOMÁTICO “Control digital de velocidad de un motor CD con PSoC” ... directo y actúa directamente sobre la señal de error; pues el](https://reader030.vdocumento.com/reader030/viewer/2022040916/5e90330da9a9b24e261ce4f6/html5/thumbnails/36.jpg)
28
KI, como se muestra en la Figura 3.2. El proceso de ajuste es el mismo que se describió para la
constante proporcional KP, solo que los límites están ajustados para este caso particular.
Figura 3.2: Captura de la pantalla LCD durante el ajuste de la constante integral KI
Presionando una vez más el pulsador SELECT, se regresa al modo principal de operación, desde
el cual se pueden realizar los experimentos de aplicar un escalón de entrada de 4krpm al sistema
cada vez que se presiona el pulsador START.
3.1.3 Pruebas con escalón de entrada
Una vez ajustadas las constantes se realizaron las pruebas de operación para obtener las curvas
de funcionamiento ante un escalón de 4krpm en la entrada de referencia, de tal forma que se
pudiesen verificar los objetivos del control tales como: el tiempo de estabilización, el
sobreimpulso y el error de estado estacionario. Además se sometió el sistema a perturbaciones al
encender la bombilla y luego apagarla y se graficó la respuesta. También con ayuda del
osciloscopio se midió el periodo de muestreo y el tiempo de ejecución del algoritmo de control.
En el siguiente capítulo se procede a analizar los resultados obtenidos en las pruebas. Todo esto
se describe con detalle en el siguiente punto.
3.2 Verificando el cumplimiento de objetivos
Se verifica en esta parte el cumplimiento de las especificaciones de control establecidas por
medio de pruebas que consisten en cambios en la entrada y perturbaciones de carga. Se realizan
y registran mediciones de las variables involucradas con ayuda de un osciloscopio digital.
3.2.1 Respuesta ante cambios en la entrada de referencia
Se muestra en la Figura 3.3 la captura de la respuesta de velocidad ante un escalón equivalente a
4krmp en la entrada de referencia. El valor medido corresponde a la entrada al regulador, que
está atenuada al 50%; por lo que la escala es de 1V/krpm. Esta señal se mide en la patilla llamada
VOUT en el diagrama de la figura A1 del Apéndice II.
El escalón de entrada alcanza los 5V; este valor no corresponde realmente a la señal de
referencia; pues este escalón es una señal digital que lo que define es el instante en el cual se
aplica la referencia interna de 4krpm al sistema y sirve para sincronizar la captura en el
osciloscopio. Esta señal es medida en la patilla llamada STEP_LED en el diagrama de la figura
A1 del Apéndice II.
![Page 37: R PI motorCD z · LABORATORIO DE CONTROL AUTOMÁTICO “Control digital de velocidad de un motor CD con PSoC” ... directo y actúa directamente sobre la señal de error; pues el](https://reader030.vdocumento.com/reader030/viewer/2022040916/5e90330da9a9b24e261ce4f6/html5/thumbnails/37.jpg)
29
Figura 3.3: Respuesta de velocidad ante una entrada escalón de 4krpm y comportamiento ante
perturbaciones
Puede observarse en la gráfica que ante un escalón en la entrada de referencia, equivalente a
4krpm, el tiempo de estabilización, medido con ayuda de los cursores, es de 150ms y que no hay
sobreimpulso apreciable, ni error de estado estacionario; confirmando así el cumplimiento de los
objetivos de control establecidos. La curva de velocidad alcanza los 4V, que equivale a 4krpm.
También se puede observar la acción de control cuya salida se encuentra por debajo de los 4V en
todo momento. Esta señal presenta un salto en sincronía con la entrada escalón para luego
alcanzar un valor de estado estacionario cuando el motor alcanza las 4krpm. Esta señal se mide
en la patilla llamada SPEED, conectada al divisor de tensión formado por R_1 y R_2 en el
diagrama de la figura A1 del Apéndice II.
3.2.2 Respuesta ante cambios en la entrada de perturbación
Puede apreciarse al centro de la imagen de la Figura 3.3, la respuesta del sistema ante las
perturbaciones producidas al encender la bombilla conectada al generador, al aplicar una carga al
motor y al eliminar la carga. Al aplicar la perturbación, que se manifiesta como una perturbación
de entrada a la planta, la velocidad disminuye aproximadamente unas 500rpm. La acción de
control aumenta y el motor recupera la velocidad a su valor nominal al cabo de unos 150ms,
eliminando efectivamente el efecto de la perturbación. La última prueba realizada consistió en
apagar la bombilla, la acción de control disminuye hasta el valor antes de la perturbación y se
observa, a la salida, el fenómeno contrario a la aplicación de perturbación: el motor aumenta
momentáneamente su velocidad unas 500rpm, para alcanzar la velocidad nominal de 4kprm al
cabo de otros 150ms.
![Page 38: R PI motorCD z · LABORATORIO DE CONTROL AUTOMÁTICO “Control digital de velocidad de un motor CD con PSoC” ... directo y actúa directamente sobre la señal de error; pues el](https://reader030.vdocumento.com/reader030/viewer/2022040916/5e90330da9a9b24e261ce4f6/html5/thumbnails/38.jpg)
30
3.2.3 Respuesta con parámetros desajustados
En la Figura 3.4 se muestra, para contrastar con la respuesta con el regulador bien ajustado, la
respuesta del sistema con los parámetros del regulador PI totalmente desajustados. La respuesta
de velocidad del sistema está subamortiguada. El sobreimpulso es de aproximadamente el 25%,
limitado probablemente por el rango de entrada del ADC; pero, la salida alcanza el valor final
deseado, gracias a la acción de la componente integral del regulador. El tiempo de estabilización
es aproximadamente el doble del tiempo que con el regulador ajustado correctamente, unos
300ms. La acción de control se ha saturado a propósito a 4V para mostrar que esto podría ocurrir
de no haber tomado las precauciones necesarias con la salida del convertidor DAC, ver la etapa
de salida mostrada en la Figura 2.12. La Figura 3.5 es similar, tiene los parámetros desajustados;
pero, en esta no se ha alcanzado la saturación del DAC; pues, utiliza la etapa de salida mostrada
en la Figura 2.16, la cual satura en 4.8V.
Figura 3.4: Respuesta ante escalón con los parámetros del regulador PI completamente
desajustados y con saturación a 4V de la acción de control.
![Page 39: R PI motorCD z · LABORATORIO DE CONTROL AUTOMÁTICO “Control digital de velocidad de un motor CD con PSoC” ... directo y actúa directamente sobre la señal de error; pues el](https://reader030.vdocumento.com/reader030/viewer/2022040916/5e90330da9a9b24e261ce4f6/html5/thumbnails/39.jpg)
31
Figura 3.5: Respuesta ante escalón con los parámetros del regulador PI completamente
desajustados.
3.3 Verificando la implementación digital
Para verificar la operación de la implementación del algoritmo de control digital se recurre a la
captura de las señales digitales y con ayuda del osciloscopio se miden los tiempos para
comprobar que cumplen con las especificaciones de periodo de muestreo y duración del
algoritmo de control.
La Figura 3.6 muestra la captura de la señal testigo, llamada ISR_LED en el diagrama de la
figura A1 del Apéndice II, que se enciende al iniciar al algoritmo de control y se apaga al
finalizar éste. De la periodicidad de la onda se puede determinar el periodo de muestreo, que se
encuentra en 5ms y del tiempo en alto se determina la duración del algoritmo de control. El
tiempo en alto representa la duración, que se encuentra en 164s, por debajo del presupuesto de
tiempo de 500s, una décima del periodo de muestreo; y por lo tanto cumple con esta restricción.
![Page 40: R PI motorCD z · LABORATORIO DE CONTROL AUTOMÁTICO “Control digital de velocidad de un motor CD con PSoC” ... directo y actúa directamente sobre la señal de error; pues el](https://reader030.vdocumento.com/reader030/viewer/2022040916/5e90330da9a9b24e261ce4f6/html5/thumbnails/40.jpg)
32
Figura 3.6: Periodo de la interrupción y duración del algoritmo de control del PI
![Page 41: R PI motorCD z · LABORATORIO DE CONTROL AUTOMÁTICO “Control digital de velocidad de un motor CD con PSoC” ... directo y actúa directamente sobre la señal de error; pues el](https://reader030.vdocumento.com/reader030/viewer/2022040916/5e90330da9a9b24e261ce4f6/html5/thumbnails/41.jpg)
33
Capítulo 4: Conclusiones
Como se analizó en la sección de resultados, se cumplieron los objetivos del control a nivel de
sistema: a) Tiempo de estabilización inferior a 150ms; b) Sobreimpulso inferior al 3%; c) Cero
error de estado estacionario; y d) Eliminación de las perturbaciones.
También se cumplió con los criterios utilizados para el control digital: a) Periodo de muestreo de
5ms; b) Duración del algoritmo de control inferior a una décima del periodo de muestreo, en este
caso, aproximadamente 164µs.
Por lo tanto, para esta aplicación del control de velocidad constante de un motor de CD de imán
permanente de la planta hps5130, se considera acertada y demostrada la realización de un control
digital con PSoC 5LP en la placa de desarrollo 050 de Cypress.
![Page 42: R PI motorCD z · LABORATORIO DE CONTROL AUTOMÁTICO “Control digital de velocidad de un motor CD con PSoC” ... directo y actúa directamente sobre la señal de error; pues el](https://reader030.vdocumento.com/reader030/viewer/2022040916/5e90330da9a9b24e261ce4f6/html5/thumbnails/42.jpg)
34
Capítulo 5: Recomendaciones
Para lograr buenos resultados del control digital, se requiere:
a) Obtener un modelo numérico suficientemente aproximado a la dinámica de la planta para que
el diseño posterior del controlador tenga validez.
b) Realizar un diseño del control realista; esto es, no exigiendo condiciones imposibles de
cumplir, y verificar en simulación los resultados de la salida y la acción de control para estar
seguros de que el control y el sistema físico podrán responder adecuadamente.
c) Escoger un tiempo de muestreo adecuado a la dinámica de la planta para garantizar que el
sistema tendrá tiempo suficiente para reaccionar ante los cambios en la acción de control y que
ésta no va a presentar exigencias de cambio exageradas al sistema.
d) Al implementar el sistema de control digital tomar las precauciones necesarias para evitar el
ruido y el solapamiento de la señal, lo que implica:
i) Una buena alimentación sin ruido para el PSoC que incluye: regulación y filtrado de
VCC; buena distribución de tierras, con separación en la placa de las tierras analógica y
digital con unión en un único punto; múltiples condensadores de desacoplo entre VCC y
tierra lo más cerca de las entradas de alimentación de chip y finalmente filtrado de la
referencia interna de tensión para el convertidor ADC.
ii) Un acondicionamiento de las señales de entrada al convertidor ADC que mide las
variables, con un filtro pasabajas antisolapamiento que tenga una frecuencia de corte una
década más alta que el ancho de banda del sistema de control.
e) Para que la implementación digital del algoritmo de control sea equivalente al control
continuo, el algoritmo de control debe ejecutarse en tiempo real dentro de una interrupción
periódica que cumpla con:
i) El periodo de muestreo definido durante el diseño, con una duración temporizada
estrictamente, sin variaciones de tiempo.
ii) Una programación optimizada para su ejecución en menos de una décima del tiempo
de muestreo. En este caso, debido a la gran potencia de cálculo del PSoC 5LP, se pudo
utilizar con éxito aritmética de punto flotante.
![Page 43: R PI motorCD z · LABORATORIO DE CONTROL AUTOMÁTICO “Control digital de velocidad de un motor CD con PSoC” ... directo y actúa directamente sobre la señal de error; pues el](https://reader030.vdocumento.com/reader030/viewer/2022040916/5e90330da9a9b24e261ce4f6/html5/thumbnails/43.jpg)
35
Capítulo 6: Referencias
[1] Interiano, E., agosto 2013, “Identificación del sistema motor hps5130”. En línea, disponible
en: http://www.ie.tec.ac.cr/einteriano/Control/Laboratorio/ProyectosCortos
[2] Interiano, E., abril 2017, “Control de velocidad del sistema motor hps5130”. En línea,
disponible en: http://www.ie.tec.ac.cr/einteriano/Control/Laboratorio/ProyectosCortos
[3] Interiano, E., febrero 2015, “Control Digital de un Servo de Velocidad”. En línea, disponible
en: http://www.ie.tec.ac.cr/einteriano/Control/Clase
[4] CY8CKIT-050 PSoC® 5LP Development Kit. En línea, disponible en:
http://www.cypress.com/documentation/development-kitsboards/cy8ckit-050-psoc-5lp-
development-kit , consultado en abril 2017.
[5] PSoC® 5LP: CY8C58LP Family Datasheet: Programmable System-on-Chip (PSoC®). En
línea, disponible en: http://www.cypress.com/documentation/datasheets/psoc-5lp-cy8c58lp-
family-datasheet-programmable-system-chip-psoc, consultada en abril 2017.
[6] PSoC® Creator™ Integrated Design Environment (IDE). En línea, disponible en:
http://www.cypress.com/products/psoc-creator-integrated-design-environment-ide
[7] “CY8CKIT-050 Kit Guide.pdf”. En línea, disponible en:
http://www.cypress.com/file/45276/download
[8] Ejemplo “MotorControl.cywk.zip”. En línea, disponible en
www.ie.tec.ac.cr/einteriano/Control/Laboratorio
![Page 44: R PI motorCD z · LABORATORIO DE CONTROL AUTOMÁTICO “Control digital de velocidad de un motor CD con PSoC” ... directo y actúa directamente sobre la señal de error; pues el](https://reader030.vdocumento.com/reader030/viewer/2022040916/5e90330da9a9b24e261ce4f6/html5/thumbnails/44.jpg)
36
Apéndice I: Programa completo del regulador PI para PSoC en C
/* =============================================
* PI motor control
* Copyright Eduardo Interiano, 2017
* All Rights Reserved
* UNPUBLISHED, LICENSED SOFTWARE.
*
* PROPRIETARY INFORMATION
* WHICH IS THE PROPERTY OF Eduardo Interiano.
*
* Remember to set the heap to 0x200 minimum in
* SYSTEM tab for floating point number printing
* =============================================
*/
#include "project.h"
#include "stdbool.h"
#include "stdio.h"
#include "usbuartio.h"
/* Global constants */
#define PWM_MAX 499 // PWM 100% (499) with Tpwm = 500us @ 1MHz (500 counts)
#define PWM_FACTOR 100 // 100 counts/volt with Tpwm = 500us @ 1MHz
#define SPEED_CHANNEL 0 // Mux input for speed feedback
#define POT_CHANNEL 1 // Mux input for PI constants setting
#define VDAC_FACTOR 62.5 // 1bit/0.016mV
#define VDAC_MAX 300 // 4.8V max. with DVDAC 9 bits and PGA x2
#define POT_CONST 3100 // Max. counts to 100%
/* PI algorithm constants */
#define REFERENCE 4 // 4krpm @ 1V por krpm
#define MAXINTEGRAL 4.7 // Limits the integral part to 4.7V
#define DEB_COUNTS 2 // 5ms counts for debounce
#define TS_FACTOR 1 // 5ms counts for Ts = 5ms
/* Global variables */
char displayStr[20] = {'\0'};
/* isr global variables */
volatile bool select_1 = false; // Memory variables for DISPLAY_SELECT button debouncing
volatile bool select_2 = false;
volatile bool Select = false; // Debounced DISPLAY_SELECT button state
volatile bool step_1 = false; // Memory variables for START/SAVE button debouncing
volatile bool step_2 = false;
volatile bool step = false; // Debounced START/SAVE button state
volatile int8 debounce = DEB_COUNTS; // Counter for debouncing when Timer runs faster than 10ms
volatile int8 factor = TS_FACTOR; // Counter for Ts = 5ms when Timer runs faster than 5ms
/* Buttons variables */
bool idle = true; // Signals when step input can be applied
bool run = false; // Clock to advance Display state machine
bool save = false; // flag to preserve PI constants adjustment
/* Button sync enumerated type */
enum DebounceState {WAIT, RUN, PRESS};
/* PI algorithm global variables */
float KP = 0.21; // Proportional default constant
float KI = 0.158; // Integral default constant @ 5ms
volatile float ik = 0; // Integral action and memory
/* Interrupt prototype */
CY_ISR_PROTO(isr_Timer_Handler);
![Page 45: R PI motorCD z · LABORATORIO DE CONTROL AUTOMÁTICO “Control digital de velocidad de un motor CD con PSoC” ... directo y actúa directamente sobre la señal de error; pues el](https://reader030.vdocumento.com/reader030/viewer/2022040916/5e90330da9a9b24e261ce4f6/html5/thumbnails/45.jpg)
37
// Interrupt handler declaration
CY_ISR(isr_Timer_Handler)
{
/* ISR PI algoritm local variables */
float yk = 0; // speed feedback
float ek = 0; // speed error
float mk = 0; // total control action
int16 vdac = 0; // For VDAC output
int16 data = 0; // For ADC reading
#if (PWM_Resolution)
int16 pwm = 0; // For PWM output
#endif
/* Debounces the switches */
if (--debounce <= 0) {
select_2 = select_1;
select_1 = !(CyPins_ReadPin(DISPLAY_SELECT_0));
Select = (select_1 && select_2);
step_2 = step_1;
step_1 = !(CyPins_ReadPin(START_0));
step = (step_1 && step_2);
/* Signals step edge for oscilloscope sync */
if ( (step && idle) == true)
CyPins_SetPin(STEP_LED_0);
else
CyPins_ClearPin(STEP_LED_0);
debounce = DEB_COUNTS;
}
/* Performs the PID algorithm every 5ms when in idle state */
if ( (--factor <= 0) && (idle == true)) {
factor = TS_FACTOR;
// Signals the start of the PI algorithm for time compliance measurements
CyPins_SetPin(ISR_LED_0);
// Reads speed value
AMux_Select(SPEED_CHANNEL);
data = ADC_Read16();
/* Converts the counts to volts 1V = 1krpm */
yk = ADC_CountsTo_Volts((int32) data);
/* Set the reference step */
if (step == true) {
ek = REFERENCE - yk; // Follow the reference
}
else {
ek = 0 - yk; // Stop the motor
ik = 0;
}
/* PI control algorithm calculation */
/* Integral part, the rightmost term is also ik_1 */
ik = KI*ek + ik;
/* Total PI control action */
mk = KP*ek + ik;
![Page 46: R PI motorCD z · LABORATORIO DE CONTROL AUTOMÁTICO “Control digital de velocidad de un motor CD con PSoC” ... directo y actúa directamente sobre la señal de error; pues el](https://reader030.vdocumento.com/reader030/viewer/2022040916/5e90330da9a9b24e261ce4f6/html5/thumbnails/46.jpg)
38
/* PWM conditional use */
#if defined CY_PWM_PWM_H
/* Scales mk to PWM range */
pwm = (int16) (mk*PWM_FACTOR);
/* Saturates the PWM value */
if (pwm > PWM_MAX) {
pwm = PWM_MAX;
}
else if (pwm < 0) {
pwm = 0;
}
PWM_WriteCompare(pwm); // Outputs PWM saturated value
#endif
/* DVDAC conditional use */
#if defined CY_DVDAC_DVDAC_H
/* Scales mk to DVDAC range */
vdac = (int16) (mk*VDAC_FACTOR);
// saturates the DVDAC value
if (vdac > VDAC_MAX) {
vdac = VDAC_MAX;
}
else if (vdac < 0) {
vdac = 0;
}
DVDAC_SetValue(vdac); // Outputs DVDAC saturated value
#endif
// Indicates the end of the PI algorithm
CyPins_ClearPin(ISR_LED_0);
/* Saturates the integral term for the next period */
if (ik > MAXINTEGRAL)
ik = MAXINTEGRAL;
else
if (ik < -MAXINTEGRAL) ik = -MAXINTEGRAL
}
} // CY_ISR
/* State machine for single step button action */
bool ButtonSync(enum DebounceState* DebounceButton, bool button) {
/* Local variable */
bool buttonstate = false;
/* Button sync */
switch (*DebounceButton) {
case WAIT:
*DebounceButton = button? RUN:WAIT;
break;
case RUN:
*DebounceButton = PRESS;
buttonstate = true;
break;
case PRESS:
*DebounceButton = button? PRESS:WAIT;
break;
default: *DebounceButton = WAIT;
} // switch
return buttonstate;
} // ButtonSync
![Page 47: R PI motorCD z · LABORATORIO DE CONTROL AUTOMÁTICO “Control digital de velocidad de un motor CD con PSoC” ... directo y actúa directamente sobre la señal de error; pues el](https://reader030.vdocumento.com/reader030/viewer/2022040916/5e90330da9a9b24e261ce4f6/html5/thumbnails/47.jpg)
39
int main(void)
{
/* USBUART conditional use */
#if defined CY_USBFS_USBUART_H
/* USB variable definitions */
uint16 usbcount;
uint8 usbbuffer[USBUART_BUFFER_SIZE];
uint8 *usbp; // pointer for usbbuffer
char *usbc; // pointer for displayStr
/* Pointers to usbbuffer and displayStr for USB communication */
usbp = &usbbuffer[0];
usbc = &displayStr[0];
#endif
/* PI constants adjustment variables */
int16 pot; // For ADC reading
float potf; // P and I adjust temp variable
/* Definitions of state machines */
enum AdjustState {IDLE, ADJUST_P, ADJUST_I} AdjustMachine = IDLE;
enum DebounceState ButtonSave = WAIT;
enum DebounceState ButtonSelect = WAIT;
/* Startup code for all blocks */
AMux_Start();
ADC_Start();
Timer_Start();
LCD_Start();
/* Correction for ADC_CountsTo_Volts */
ADC_SetOffset(-1); // -1mV offset correction
ADC_SetGain(673); // 0.9895 gain correction
/* QuadDec conditional use */
#if defined CY_QUADRATURE_DECODER_QuadDec_H
QuadDec_Start();
#endif
/* PWM conditional use */
#if defined CY_PWM_PWM_H
PWM_Start();
#endif
/* DVDAC conditional use */
#if defined CY_DVDAC_DVDAC_H
DVDAC_Start();
PGA_Start();
Opamp_Start();
#endif
/* UART conditional use */
#if defined CY_UART_UART_H
UART_Start();
UART_PutString("PI Control v1.0\n\r");
#endif
/* USBUART conditional use */
#if defined CY_USBFS_USBUART_H
/* Start USBFS operation with 5-V operation. */
USBUART_Start(USBFS_DEVICE, USBUART_5V_OPERATION);
#endif
/* Interrrup process init with StartEx not simple Start */
isr_Timer_StartEx(isr_Timer_Handler);
/* Enable global interrupts. */
CyGlobalIntEnable;
![Page 48: R PI motorCD z · LABORATORIO DE CONTROL AUTOMÁTICO “Control digital de velocidad de un motor CD con PSoC” ... directo y actúa directamente sobre la señal de error; pues el](https://reader030.vdocumento.com/reader030/viewer/2022040916/5e90330da9a9b24e261ce4f6/html5/thumbnails/48.jpg)
40
/* Infinite loop */
for(;;)
{
/* Sync action buttons for single step */
save = ButtonSync(&ButtonSave,step);
run = ButtonSync(&ButtonSelect,Select);
/* Display state machine uses run and save flags */
switch (AdjustMachine) {
case IDLE:
idle = true;
LCD_Position(0,0);
LCD_PrintString("PI control v1.0 ");
// Show the KP and KI constants in the LCD
sprintf(displayStr,"KP=%.3fKI=%.3f ",KP,KI);
LCD_Position(1,0);
LCD_PrintString(displayStr);
/* Advance the machine state */
AdjustMachine = run? ADJUST_P:IDLE;
/* Blink LED4 every 100ms to signal IDLE state */
CyPins_SetPin(LED4_0);
CyDelay(25);
CyPins_ClearPin(LED4_0);
CyDelay(75);
break;
case ADJUST_P:
idle = false;
LCD_Position(0,0);
LCD_PrintString("Proporcional ");
/* Advance the machine state */
AdjustMachine = run? ADJUST_I:ADJUST_P;
/* Process the proportional constant of the PI */
AMux_Select(POT_CHANNEL);
pot = ADC_Read16();
if (pot < 0) pot = 0; else if (pot > POT_CONST) pot = POT_CONST;
potf = (float) pot/POT_CONST;
/* Display the KP constant new value -> old value */
sprintf(displayStr,"%.4f -> %.4f ",potf,KP);
LCD_Position(1,0);
LCD_PrintString(displayStr);
/* Save the KP value if the START/SAVE button was pressed */
if (save == true) {
KP = potf;
}
break;
![Page 49: R PI motorCD z · LABORATORIO DE CONTROL AUTOMÁTICO “Control digital de velocidad de un motor CD con PSoC” ... directo y actúa directamente sobre la señal de error; pues el](https://reader030.vdocumento.com/reader030/viewer/2022040916/5e90330da9a9b24e261ce4f6/html5/thumbnails/49.jpg)
41
case ADJUST_I:
idle = false;
LCD_Position(0,0);
LCD_PrintString("Integral ");
/* Advance the machine state */
AdjustMachine = run? IDLE:ADJUST_I;
/* Process the integral constant of the PI */
AMux_Select(POT_CHANNEL);
pot = ADC_Read16();
if (pot < 0) pot = 0; else if (pot > POT_CONST) pot = POT_CONST;
potf = (0.2*pot)/POT_CONST;
/* Display the KI constant new value -> old value */
sprintf(displayStr,"%.4f -> %.4f ",potf,KI);
LCD_Position(1,0);
LCD_PrintString(displayStr);
/* Save the KI value if the START/SAVE button was pressed */
if (save == true) {
KI = potf;
}
break;
default: AdjustMachine = IDLE;
} // switch
/* USBUART conditional use */
#if defined CY_USBFS_USBUART_H
// Read data from USB_Uart
USB_Uart_Init();
usbcount = USB_Uart_Read(&usbp);
// Echo received data to USB
if (usbcount > 0) {
USB_Uart_Write(usbcount,&usbp);
LCD_Position(1,0);
sprintf(displayStr,"%d chars",usbcount); // Does not work, Overwritten in static IDLE
LCD_PrintString(displayStr);
if (usbcount > 1) USB_Uart_PrintLn(&usbc);
}
#endif
} // for
} // main
/* [] END OF FILE */
![Page 50: R PI motorCD z · LABORATORIO DE CONTROL AUTOMÁTICO “Control digital de velocidad de un motor CD con PSoC” ... directo y actúa directamente sobre la señal de error; pues el](https://reader030.vdocumento.com/reader030/viewer/2022040916/5e90330da9a9b24e261ce4f6/html5/thumbnails/50.jpg)
42
Apéndice II: Diagramas de bloques del regulador PI en PSoC 5LP
Figura A1: Diagrama principal completo del regulador PI en PSoC 5LP
![Page 51: R PI motorCD z · LABORATORIO DE CONTROL AUTOMÁTICO “Control digital de velocidad de un motor CD con PSoC” ... directo y actúa directamente sobre la señal de error; pues el](https://reader030.vdocumento.com/reader030/viewer/2022040916/5e90330da9a9b24e261ce4f6/html5/thumbnails/51.jpg)
43
Figura A2: Diagrama de comunicaciones opcionales del regulador PI en PSoC 5LP
![Page 52: R PI motorCD z · LABORATORIO DE CONTROL AUTOMÁTICO “Control digital de velocidad de un motor CD con PSoC” ... directo y actúa directamente sobre la señal de error; pues el](https://reader030.vdocumento.com/reader030/viewer/2022040916/5e90330da9a9b24e261ce4f6/html5/thumbnails/52.jpg)
44
Figura A3: Diagrama de configuración de los relojes del PSoC 5LP para utilizar el USBUART
EIS/eis
2017