Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Automático
Contenido
Capítulo 1: Introducción ...................................................................................................... 1
Capítulo 2: Aumento de resolución ..................................................................................... 3
2.1 ¿Cómo obtener más resolución de un convertidor DAC? .................................... 3
2.1.1 Limitaciones del dithering ................................................................................ 4
2.2 ¿Cómo aumentar la resolución de un convertidor ADC? .................................... 4
2.2.1 Con un DAC ..................................................................................................... 4
2.2.2 Con una señal triangular ................................................................................... 4
2.2.3 Con ruido .......................................................................................................... 4
Capítulo 3: Arduino ............................................................................................................. 5
3.1 ¿Cómo trabajar con interrupciones en Arduino?.................................................. 5
3.2 ¿Cómo aumentar la resolución del PWM en un Arduino Uno?........................... 6
3.3 ¿Cómo puedo ejecutar varios procesos por interrupciones a diferentes intervalos
de tiempo en un Arduino? .................................................................................................. 7
Capítulo 4: Cypress PSoC ................................................................................................... 9
4.1 ¿Cómo calibrar el ADC de un PSoC? .................................................................. 9
4.2 ¿Cómo seleccionar la tensión de operación del PSoC en el kit 050?................... 9
4.3 ¿Cómo utilizar interrupciones en un PSoC? ........................................................ 9
4.4 ¿Cómo usar DMA en un PSoC?......................................................................... 13
4.5 ¿Cómo utilizar el filtro digital en un PSoC 5LP?............................................... 13
4.6 ¿Cómo eliminar el rebote de un interruptor pulsador en un PSOC? .................. 13
4.7 ¿Cómo sacar por una patilla una señal interna de referencia de tensión? .......... 14
4.7.1 Con un operacional ......................................................................................... 14
4.7.2 Con un multicanalizador (mux) ...................................................................... 15
4.7.3 Con un VDAC + operacional ......................................................................... 15
4.7.4 Truco en PSoC 4 ............................................................................................. 16
4.8 ¿Cómo producir una tensión analógica variable con un PSoC?......................... 16
4.9 ¿Cómo enviar datos desde el PSoC a una computadora?................................... 17
4.9.1 En la placa 050 por el puerto RS-232 ............................................................. 17
4.9.2 En la placa 050 por el puerto USB ................................................................. 18
4.9.3 En la placa 059 por la conexión de programación del KITPROG ................. 19
4.9.4 En la placa 059 por el puerto USB del TARGET .......................................... 20
4.9.5 Placa 042 Pioneer kit ...................................................................................... 21
4.9.6 En cualquier placa vía Bluetooth .................................................................... 21
i
4.10 ¿Cómo comunicar un Arduino con un PSoC? ................................................... 22
4.10.1 De manera analógica desde el Arduino al PSoC ............................................ 22
4.10.2 De manera analógica desde el PSoC al Arduino ............................................ 22
4.10.3 De manera digital............................................................................................ 22
4.11 ¿Cómo usar un MPU6050 en un PSoC? ............................................................ 23
4.12 ¿Cómo medir la tensión de alimentación del PSoC 5LP? .................................. 23
4.13 ¿Cómo crear un nuevo componente en PSoC? .................................................. 26
Capítulo 5: Mediciones ..................................................................................................... 27
5.1 ¿Cómo calibrar las puntas de prueba de un osciloscopio? ................................. 27
5.2 ¿Cómo medir señales bipolares con un ADC unipolar? .................................... 27
5.3 ¿Cómo medir una señal bipolar que tiene superpuesta un valor de CD positivo?
28
5.4 ¿Cómo medir el periodo de muestreo al cual se ejecuta un algoritmo de control
digital? 29
5.5 ¿Cómo medir el tiempo que dura el procesamiento de un algoritmo de control?
30
5.6 ¿Cómo puedo optimizar mi algoritmo de control si tarda más de lo esperado? 30
5.7 ¿Cómo medir la posición angular de un eje con un codificador óptico
incremental?...................................................................................................................... 31
5.8 ¿Cómo medir la velocidad angular de un eje con un codificador óptico
incremental?...................................................................................................................... 34
5.9 ¿Cómo medir con un sensor conectado en puente de Wheatstone? ................... 37
5.10 ¿Cómo medir temperatura con un RTD? ........................................................... 37
5.11 ¿Cómo medir la corriente de consumo de un dispositivo?................................. 37
5.12 ¿Cómo eliminar el offset en las mediciones? ..................................................... 37
Capítulo 6: Conversiones .................................................................................................. 39
6.1 ¿Cómo medir adecuadamente una señal analógica? .......................................... 39
6.2 ¿Cómo escoger el ancho de palabra de un convertidor ADC? ........................... 39
6.3 ¿Cómo limitar en banda una señal analógica? ................................................... 39
6.4 ¿Cómo diseñar un filtro antisolapamiento (antialiasing) analógico? ................ 39
6.5 ¿Cómo reducir la frecuencia de muestreo de una señal ya obtenida? ................ 39
6.6 ¿Cómo aumentar la frecuencia de muestreo de una señal ya obtenida? ............ 39
6.7 ¿Cómo producir salidas bipolares con un DAC unipolar? ................................. 39
Capítulo 7: Ruido .............................................................................................................. 41
7.1 ¿Cómo reducir la posibilidad de que se induzca ruido en el cable de un sensor?
41
ii
7.2 ¿Cómo reducir la inducción de ruido al transmitir señales? .............................. 42
7.2.1 Modo diferencial............................................................................................. 42
7.2.2 Modo unipolar ................................................................................................ 42
7.2.3 Tierras de por medio ....................................................................................... 42
7.3 ¿Cómo reducir el ruido inducido en los cables de alimentación CD de un circuito?
42
7.4 ¿Cómo reducir la posibilidad de inducir ruido en otro circuito?........................ 42
7.5 ¿Cómo evitar el ruido en un circuito impreso? .................................................. 42
7.6 ¿Cómo evitar que el ruido producido por motores u otros elementos afecte un
sistema de control? ........................................................................................................... 42
7.7 ¿Cómo reducir el ruido de una señal después de muestreada? .......................... 42
7.8 ¿Qué es un filtro de media móvil? ..................................................................... 42
7.9 Cómo implementar un filtro de media móvil ..................................................... 43
7.10 ¿Cómo implementar un filtro digital de primer orden?...................................... 44
7.11 ¿Cuál filtro es mejor para eliminar el ruido, el de media móvil o el de primer
orden? 44
7.12 ¿Cómo implementar un filtro digital para eliminar una frecuencia (notch filter)?
44
Capítulo 8: Conversiones de tensión CD-CD.................................................................... 45
8.1 ¿Cómo alimentar eficientemente un circuito CD de baja tensión desde una fuente
CD de mayor tensión? ...................................................................................................... 45
8.2 ¿Cómo alimentar un circuito CD que requiere de mayor tensión desde una fuente
CD de menor tensión? ...................................................................................................... 47
8.3 ¿Cómo producir a partir de una tensión CD no regulada una tensión CD fija y
regulada a un valor similar al de la entrada? .................................................................... 48
Capítulo 9: Medición de parámetros ................................................................................. 49
9.1 ¿Cómo medir la inductancia de un circuito o motor CD? .................................. 49
9.2 ¿Cómo medir la resistencia de un circuito o motor CD? ................................... 49
9.3 ¿Cómo medir la fricción dinámica de un motor de CD?.................................... 49
9.4 ¿Cómo medir la fricción estática de un motor de CD? ...................................... 49
9.5 ¿Cómo medir la inercia rotacional de un motor de CD? .................................... 49
9.6 ¿Cómo medir la inercia rotacional de un péndulo simple? ................................ 49
Capítulo 10: Implementación de controladores en tiempo discreto ................................ 51
10.1 ¿Cuál es la estructura básica de un control en tiempo discreto? ........................ 51
Para el control en tiempo discreto es fundamental que el algoritmo de control se ejecute
periódicamente con un periodo constante igual al usado para el diseño del controlador. 51
iii
10.2 ¿Cómo implementar un controlador proporcional en tiempo discreto? ............. 53
10.3 ¿Cómo implementar un controlador integral en tiempo discreto? ..................... 53
10.4 ¿Cómo evitar el windup en un controlador integral? ......................................... 56
10.5 ¿Cómo implementar un controlador derivativo ideal en tiempo discreto? ........ 59
10.6 ¿Cómo implementar un controlador derivativo con filtro en tiempo discreto? . 59
10.7 ¿Cómo se implementa un regulador PID tradicional en tiempo discreto? ......... 60
10.8 ¿Cómo se implementan otras variantes de regulador PID en tiempo discreto? . 61
10.9 ¿Cómo implementar un controlador de realimentación de estados en tiempo
discreto? ............................................................................................................................ 63
10.10 ¿Cómo diseñar un controlador para una planta que tiene un tiempo muerto? ... 63
10.11 ¿Cómo escoger el periodo de muestreo TS para el algoritmo de control en tiempo
discreto? ............................................................................................................................ 64
Capítulo 11: Control de motores de CD .......................................................................... 65
11.1 ¿Cómo controlar eficientemente la velocidad de un motor de CD de imán
permanente? ...................................................................................................................... 65
11.2 ¿Cómo controlar la dirección de un motor de CD? ............................................ 67
11.2.1 Puente H basado en un L298N ....................................................................... 68
11.3 ¿Cómo duplicar la corriente de un puente H doble? .......................................... 70
11.4 ¿Cómo medir la corriente que consume un motor de CD? ................................ 71
11.5 ¿Cómo limitar la corriente consumida por un motor de CD? ............................ 71
11.6 ¿Cómo escoger la frecuencia del PWM de potencia? ........................................ 71
11.7 ¿Cómo producir una tensión CD de potencia a partir de un valor almacenado en
memoria? .......................................................................................................................... 73
11.8 Cómo producir una señal sinusoidal con PWM? ............................................... 76
11.9 ¿Por qué producir un PWM simétrico en lugar de uno asimétrico?................... 77
11.10 ¿Cómo conectar interruptores de fin de carrera en un sistema de traslación con
motor CD? ........................................................................................................................ 78
Capítulo 12: Corrección de no linealidades ..................................................................... 79
12.1 ¿Cómo evitar o combatir la fricción estática en motores CD? ........................... 79
12.2 ¿Cómo linealizar la señal de un sensor?............................................................. 79
Capítulo 13: Misceláneos ................................................................................................ 83
13.1 ¿Cómo controlar la posición de un servo RC? ................................................... 83
13.2 ¿Cómo puedo ejecutar varios procesos por interrupciones a diferentes intervalos
de tiempo? ........................................................................................................................ 84
13.3 ¿Cómo limitar la tensión y la corriente de una fuente Agilent? ......................... 84
13.4 ¿Cómo aislar las tierras entre dos circuitos? ...................................................... 84
iv
13.5 ¿Cómo conectar las tierras entre circuitos de control y de potencia? ................ 84
13.6 ¿Cómo conectar las tierras entre la sección digital y la sección analógica de un
circuito electrónico mixto? ............................................................................................... 84
13.7 ¿Cómo eliminar el rebote mecánico de un interruptor pulsador? ...................... 85
13.7.1 Eliminación del rebote en hardware .............................................................. 85
13.7.2 Eliminación del rebote en software ................................................................ 87
13.8 ¿Cómo hacer una máquina de estados finitos en lenguaje C?............................ 88
13.9 ¿Cómo hacer que al presionar un botón se ejecute una operación solo una vez?
90
13.10 ¿Qué son los números Qm.n? ............................................................................. 91
13.11 ¿Cómo escoger la resolución para un tipo Qm.n? .............................................. 92
13.12 ¿Cómo convertir números en punto flotante a Qm.n y viceversa? .................... 93
13.12.1 Realizando los cálculos manualmente ........................................................ 93
13.12.2 Con el precompilador de C ......................................................................... 93
13.13 ¿Cómo realizar operaciones aritméticas con números Q.m.n? .......................... 94
13.13.1 Realizando los cálculos manualmente ........................................................ 94
13.13.2 Con una biblioteca especializada ................................................................ 94
Capítulo 14: Referencias .................................................................................................. 97
v
Índice de figuras
Figura 2.1: Ejemplo de dithering con 2 bits extra .................................................................. 3
Figura 4.1: Esquema de interrupción periódica por hardware ............................................. 10
Figura 4.2: Ventana de configuración de interrupciones...................................................... 11
Figura 4.3: Formas de onda típicas del componente Timer de un PSoC 5LP ...................... 11
Figura 4.4: Eliminador de rebote como componente en un PSoC ....................................... 14
Figura 4.5: Señal de referencia externa con operacional ...................................................... 14
Figura 4.6: Opciones para una tensión de referencia interna ............................................... 15
Figura 4.7: Generación de una tensión de referencia externa con un VDAC ...................... 15
Figura 4.8: Opciones de configuración para el VDAC ........................................................ 16
Figura 4.9: Esquema de convertidor DAC con amplificador operacional de salida ............ 16
Figura 4.10: Esquema de convertidor digital-analógico con dithering y amplificador de salida
.............................................................................................................................................. 17
Figura 4.11: Diagrama del UART en el KIT 050 para transmisión por el puerto RS-232... 18
Figura 4.12: Detalle de las conexiones al convertidor TTL/RS232 y del conector P7 ........ 18
Figura 4.13: Componente USBUART del kit 050 ............................................................... 19
Figura 4.14: Detalle de los puertos USB del kit 050 ............................................................ 19
Figura 4.15: El kit 059 de Cypress ....................................................................................... 20
Figura 4.16: Conexiones del componente UART conectado para utilizar el KITPROG como
convertidor a USB ................................................................................................................ 20
Figura 4.17: Restablecimiento de conexiones para el UART entre el KITPROG y el
TARGET .............................................................................................................................. 20
Figura 4.18: Conexiones del componente UART de un PSoC 4 en el kit 042..................... 21
Figura 4.19: Conexiones para utilizar el KITPROG como puente serie-USB en el kit 042 21
Figura 4.20: Temporizador del PSoC usado para medir la duración de eventos ................. 23
Figura 4.21: Configuración de un temporizador de PSoC para medir el ancho de pulsos. .. 23
Figura 4.22: Referencia VDDA en la entrada del ADC para medir la tensión de alimentación
.............................................................................................................................................. 24
Figura 4.23: Configuración del ADC para leer valores iguales o mayores a VDDA........... 25
Figura 5.1: Acondicionamiento de señal bipolar para medición con ADC unipolar ........... 27
Figura 5.2: Señal de ángulo superpuesta sobre un valor CD ................................................ 28
Figura 5.3: Formas de convertir una señal superpuesta sobre un valor CD ......................... 29
Figura 5.4: Oscilograma para medir el periodo de muestreo .............................................. 29
vii
Figura 5.5: Medición del tiempo de ejecución del algoritmo de control digital .................. 30
Figura 5.6: Discos de codificadores ópticos ......................................................................... 32
Figura 5.7: Señales de un codificador incremental en cuadratura ........................................ 33
Figura 5.8: Implementación de la máquina de estados del decodificador de cuadratura de un
PSoC de Cypress en modo 1x. ............................................................................................. 34
Figura 6.1: Circuito para producir una salida bipolar con un DAC unipolar ....................... 39
Figura 6.2: Simulación del circuito de la Figura 6.1 ............................................................ 40
Figura 8.1: Diagrama simplificado de un regulador buck .................................................... 46
Figura 8.2: Diagrama simplificado de un regulador boost ................................................... 47
Figura 8.3: a) Imagen de un regulador boost U3V50F9 de 9 V/ 3 A. b) Las gráficas de
eficiencia del regulador U3V50F9 [21] ................................................................................ 48
Figura 10.1: Aproximaciones discretas a la integral ............................................................ 54
Figura 10.2: Simulación de un regulador PI con windup ante una perturbación sostenida.. 57
Figura 10.3: Simulación de un regulador PI con antiwindup por saturación del término
integral. ................................................................................................................................. 58
Figura 10.4: Señales de salida y acción de control ante entrada escalón y perturbaciones de
un control de velocidad constante. ....................................................................................... 59
Figura 10.5: Estructura de un regulador PID en paralelo en el dominio del tiempo discreto
.............................................................................................................................................. 61
Figura 10.6: Estructura de la variante I_PD del regulador PID paralelo en tiempo discreto62
Figura 10.7: Estructura de un control con predictor de Smith en tiempo discreto ............... 64
Figura 11.1: Señal de PWM en el tiempo y su Transformada de Fourier ............................ 65
Figura 11.2: Tensión, corriente y potencia disipada por los conmutadores en un amplificador
clase D .................................................................................................................................. 67
Figura 11.3: Esquema de operación de un puente H con el motor en modo libre y activado
.............................................................................................................................................. 67
Figura 11.4: Operación del puente H para frenar el motor ................................................... 68
Figura 11.5: Puente H basado en L298N. Para utilizar las patillas de ENABLE remueva el
puente negro del canal respectivo y conecte la señal de PWM ............................................ 69
Figura 11.6: Puente H doble basado en el MC33926. .......................................................... 69
Figura 11.7: Conexión de puente H doble en paralelo ......................................................... 70
Figura 11.8: Efecto del cambio de ciclo de trabajo del PWM en la velocidad del motor .... 73
Figura 11.8: Conversión de un valor en memoria a un valor físico en la armadura de un motor
de CD .................................................................................................................................... 74
Figura 11.9: Señal de PWM bipolar modulada de forma sinusoidal .................................... 77
viii
Figura 11.10: PWM asimétrico y simétrico ......................................................................... 77
Figura 11.11: Circuito para conectar los límites de carrera de un desplazamiento lineal .... 78
Figura 12.1: Corriente estimada para la bobina del levitador magnético con una tensión
ruidosa .................................................................................................................................. 81
Figura 13.1: Señal de control de un servo RC ...................................................................... 83
Figura 13.2: Tierras en un circuito de electrónica mixta ...................................................... 85
Figura 13.3: Rebote mecánico de un interruptor pulsador, yendo de alto a bajo ................. 86
Figura 13.4: Eliminador de rebote con dos flip-flops. .......................................................... 86
Figura 13.5: Diagrama de tiempo del eliminador de rebote con dos flip-flops. ................... 87
Figura 13.6: Eliminador de rebote como componente en un PSoC ..................................... 87
Figura 13.7: Diagrama de una máquina de estados finitos para eliminar el rebote [7]. ....... 88
Figura 13.8: Diagrama de estados de una máquina para ejecutar un proceso una única vez
cuando un botón definido se presiona (Detector de flanco positivo). .................................. 90
Figura 13.9: Diagrama de tiempo de la máquina de estado para ejecutar un proceso una única
vez al presionar un botón. ..................................................................................................... 91
Figura 13.10: Formato de los números Q.m.n ...................................................................... 92
ix
Capítulo 1: Introducción
1
Capítulo 2: Aumento de resolución
2.1 ¿Cómo obtener más resolución de un convertidor DAC?
Para obtener más resolución de un convertidor de digital a analógico con un ancho de palabra
de m bits se puede utilizar una frecuencia de actualización 2n veces más rápida que la
frecuencia de muestreo del algoritmo de control, con lo cual se obtiene n bits más de
resolución en el convertidor [1]. Las 2n salidas al convertidor, en cada periodo de muestreo,
deben ser de magnitud tal que su valor promedio sea el valor esperado de un convertidor de
resolución N = m + n. En inglés esto es llamado dithering. Para producir una salida
promediada más suave, es recomendable colocar un condensador de pequeño valor (0.01 -
0.1uF) entre la salida del DAC y tierra para que funcione como filtro pasa bajas. Un
componente con esta habilidad, disponible en PSoC 5LP, se describe en el punto 4.8.
Ejemplo 1: Aumento de resolución en dos bits
Aumentar la resolución de un convertidor DAC, que produce una salida de 0 a 5V, de 8 bits
a 10 bits. Es claro que de la ecuación anterior n = 2; por lo que 2n = 4 y que la resolución
original del convertidor es 5V/256 20mV; exactamente 19.53 mV; pero, para facilitar el
cálculo se trabajará con valores redondeados. La nueva resolución debe ser de 5/1024 5mV
= 20mV/4 aproximadamente; por lo que, si se desea una salida de 105mV, se deben producir
en secuencia cuatro salidas con diferencias de 20mV (ALSB original para 8 bits) de tal forma
que su promedio sea 105mV; esto significa que 4*105mV = 420mV lo cual puede ser
obtenido con 3 salidas de 100mV y una de 120mV.
Tabla 2.1: Ejemplo de dithering con 2 bits extra se obtiene 4 valores intermedios
U [V]
Ts/4
C
Valor medio
t
Ts = Periodo
Figura 2.1: Ejemplo de dithering con 2 bits extra
3
2.1.1 Limitaciones del dithering
Un DAC dithered de N bits, basado en un DAC de 8 bits, por ejemplo, no puede generar
todos los 2N valores de salida únicos. Los últimos X códigos, donde X = 2 (N - 8), generan todos
la misma tensión de salida. Esto se debe al hecho de que el dithering requiere dos valores
adyacentes del DAC de 8 bits para generar una señal de salida promediada. En el caso que
la salida interna de DAC de 8 bits se ajuste al equivalente de 255 (0xFF), ya no hay ningún
valor superior adyacente con el cual promediar.
4
Capítulo 3: Arduino
3.1 ¿Cómo trabajar con interrupciones en Arduino?
Para cada tipo de Arduino se encuentra disponible una biblioteca adicional que lleva por
nombre TimerXYZ, donde XYZ puede ser por ejemplo ONE, THREE o DUE. Dependiendo
de la biblioteca usada y de la plataforma, así son las restricciones de uso de pines para PWM
como se muestra en la Tabla 3.1 [1]. Por ejemplo para Arduino Uno se debe utilizar la
biblioteca TimerOne [2] que usa el temporizador 1 del ATmega168/328. Con esta biblioteca
podemos hacer que un proceso, típicamente el que ejecuta el algoritmo de control digital, se
invoque periódicamente por una interrupción de hardware del temporizador 1.
Los métodos necesarios de la biblioteca TimerOne son:
Timer1.initialize( periodo [µs] );
Este método es imperativo que se ejecute antes de cualquier otro método de esta biblioteca.
Opcionalmente se puede especificar el periodo en microsegundos, por defecto está puesto en
1s. Tenga en cuenta que esto impide el funcionamiento del método analogWrite() en
los pines 9 y 10 del Arduino Uno. Puede ser también que el uso de esta biblioteca interfiera
con otras bibliotecas para Arduino, por ejemplo con la biblioteca Servo que utiliza también
el temporizador 1.
Timer1.attachInterrupt( función, periodo [µs] );
Tabla 3.1: Pines de PWM en diferentes plataformas de Arduino con TimerOne y TimerThree
5
Pines PWM con Pines PWM con
Plataforma
TimerOne TimerThree
Arduino Leonardo 9, 10, 11 5
Arduino Mega 11, 12, 13 2, 3, 5
Wiring-S 4, 5
Sanguino 12, 13
Ejemplo 2: Uso de interrupciones en Arduino para parpadear un LED cada 1/2 segundo
#include <TimerOne.h>
void setup() {
pinMode(LED, OUTPUT);
void TimerInt() {
digitalWrite(LED, digitalRead(LED)^1);
void loop() {
Por defecto un Arduino Uno produce señales de PWM, con la instrucción analogWrite()
con una resolución de 8 bits, o sea 256 niveles entre 0 y 255. Los Arduino Zero y Due pueden
ser configurados para una resolución de PWM de hasta 12 y 16 bits respectivamente.
6
En un Arduino Uno, sin tener que modificar directamente registros internos, se puede utilizar
la biblioteca TimerOne (Timer1); con ella se puede alcanzar resolución de 10 bits para el
PWM, usando las instrucciones pwm() y setPwmDuty() solo que al utilizar esta
biblioteca, el uso de los pines 9 y 10 con la instrucción analogWrite() se atrofia.
7
Capítulo 4: Cypress PSoC
4.1 ¿Cómo calibrar el ADC de un PSoC?
4.2 ¿Cómo seleccionar la tensión de operación del PSoC en el kit 050?
La estructura de la alimentación de un PSoC es muy flexible, posee una entrada de
alimentación separada para las entradas y salidas digitales (VDDD) y otra para la parte
analógica (VDDA). La tensión VDDA se puede seleccionar entre 3.3 V y 5 V con el puente
J11. La tensión VDDD se puede seleccionar entre 3.3 V y 5 V con el puente J10.
El funcionamiento correcto del dispositivo PSoC está garantizado cuando VDDA es mayor
o igual que VDDD. El incumplimiento de esta condición puede tener implicaciones en el
funcionamiento del componente.
Cuando se utiliza la alimentación USB, debe seleccionarse 3.3 V para las alimentaciones
analógica y digital. Esto debido a que el valor de 5 V de la alimentación USB no es exacto y
por ello no es recomendable.
9
Figura 4.1: Esquema de interrupción periódica por hardware
10
Figura 4.2: Ventana de configuración de interrupciones
En este caso, aunque el componente Timer produce en la salida TC (fin de conteo) un único
pulso con la duración de un ciclo de reloj, según su hoja de datos como puede verse en la
Figura 4.3; como ejemplo, se ha seleccionado para en el componente ISR el modo de
activación por flanco de subida.
Figura 4.3: Formas de onda típicas del componente Timer de un PSoC 5LP
Para el manejo de las interrupciones dentro del programa principal del PSoC, se requieren
cuatro pasos:
11
a) La declaración del prototipo del proceso de interrupciones. Esto identifica el
proceso cuyo nombre va como parámetro, en este ejemplo isr_Timer_Handler,
nombre derivado del nombre dado al componente ISR en la Figura 4.1, no como un
proceso cualquiera; sino, como un proceso de atención de interrupciones. Esto facilita
que el usuario pueda escribir su proceso de atención de interrupciones sin preocuparse
por el manejo de bajo nivel de la interrupción, tal como deshabilitación de las
interrupciones al inicio del proceso, o habilitación de las interrupciones al final.
/* Interrupt prototype */
CY_ISR_PROTO(isr_Timer_Handler);
} // CY_ISR
c) Como cualquier otro componente del PSoC, el componente ISR debe iniciarse en
la fase no repetitiva del proceso principal, (main), del programa principal del PSoC.
Esto instalará el vector de interrupciones asociado a la interrupción apuntando al
proceso declarado en el paso a) y programado en el paso b). Solo que el proceso a
utilizar es _StartEx(NombredelProcesodeAtencióndeInterrupcionesDeclarado), no
un simple _Start().
d) Finalmente debe activarse las interrupciones de manera global, antes del inicio del
lazo infinito del proceso main. Este último paso se hace solo una vez, mientras que
los tres pasos anteriores deben realizarse para cada una de las interrupciones a
procesar.
12
int main(void)
{
/* Lazo infinito */
for(;;)
{
} // for
} // main
13
Figura 4.4: Eliminador de rebote como componente en un PSoC
Para más detalles de cómo eliminar el rebote, vea además el punto 13.7 que describe la
técnica de eliminación de rebote por software, también aplicable al PSoC; y otras técnicas de
hardware.
4.7 ¿Cómo sacar por una patilla una señal interna de referencia de
tensión?
4.7.1 Con un operacional
Para producir una tensión de referencia externa en un PSoC 5LP, la forma más simple es
utilizar un amplificador operacional configurado en modo seguidor, como se muestra en la
Figura 4.5. El operacional es necesario ya que la impedancia de la referencia interna es alta.
En la Figura 4.6 se muestran las diferentes opciones existentes para el valor de la tensión de
referencia interna, siendo 1.024 V el valor predeterminado. Este es generado por una
referencia bandgap independiente de la tensión de alimentación y con un coeficiente de
temperatura muy bajo y que se deriva de la diferencia entre la energía de la banda de
conducción y la banda de valencia en el silicio a 0 °C (1.22 eV).
Existen otras opciones que son obtenidas por divisores resistivos desde 1.024 V o desde la
tensión de alimentación analógica, VDDA; así como valores absolutos de GND, VDDA o
VDDD, la tensión de alimentación digital.
14
Figura 4.6: Opciones para una tensión de referencia interna
El VDAC puede ser configurado en dos rangos de salida: de 0 a 1.020 V con una resolución
de 4 mV/bit y de 0 a 4.080 V con una resolución de 16 mV/bit. Existe en los PSOC además
un VDAC dithered o DVDAC que permite una resolución de 1mV/bit, como se describe en
el apartado 4.8.
En la Figura 4.8 se muestran las opciones de configuración de un VDAC de 8 bits, por lo que
cada rango de operación se puede dividir en 256 pasos (de 0 a 255) para producir la referencia
de tensión deseada.
15
Figura 4.8: Opciones de configuración para el VDAC
16
requerirá eventualmente de un amplificador de salida. En la Figura 4.10 se muestra un
circuito con DVDAC de 9 bits y un amplificador separador configurado para ganancia 2. La
hoja de datos del componente DVDAC recomienda el uso de un pequeño condensador
externo de filtro para disminuir el ruido inherente al proceso de dithering. El valor de este
condensador de filtro depende: de la frecuencia de reloj; de la resolución configurada y del
rango de tensión de salida seleccionado.
Los circuitos mostrados producen una salida unipolar, cuyo máximo depende de: a) La escala
de salida del VDAC (1.020V o 4.080V); b) De la ganancia del amplificador operacional y c)
De la tensión de saturación de dicho amplificador.
17
Figura 4.11: Diagrama del UART en el KIT 050 para transmisión por el puerto RS-232
El único detalle es que cada vez son menos las computadoras que poseen un puerto RS-232
y lo usual es que se requiera adicionalmente un adaptador de RS-232 a USB para poder
utilizar este método.
18
Figura 4.13: Componente USBUART del kit 050
La placa del kit 050, como se muestra en la Figura 4.14, posee dos conectores mini USB-B,
el de la derecha, J1, es para programar y el de la izquierda, J2, es para comunicaciones con
el componente USBUART. Este componente tiene predefinido el uso de las patillas P15[6]
y P15[7] que se encuentran directamente conectadas al conector J2. Lo recomendable, para
no tener que estar conectando y desconectando cables, es utilizar dos cables USB y en una
aplicación de emulación de consola, tal como HyperTerminal, PuTTy o similar y seleccionar
el puerto identificado por la PC como el puerto comunicaciones del PSoC.
19
Figura 4.15: El kit 059 de Cypress
Figura 4.16: Conexiones del componente UART conectado para utilizar el KITPROG como
convertidor a USB
20
4.9.5 Placa 042 Pioneer kit
El PSoC 4 posee dos tipos de UART: a) Los obtenidos a través del componente SCB, que
solamente pueden conectar el par (RX, TX) a las patillas (P0[4], P0[5]) o (P3[0], P3[1]) o
(P4[0], P4[1]) respectivamente; b) Un UART estándar con UDB, que puede conectar el par
(RX, TX) a cualquier patilla disponible. Las patillas mostradas en la Figura 4.18, para un
UART estándar, fueron escogidas de entre esos tres conjuntos por compatibilidad con los
UART vía SCB y para hacer juego con la Figura 4.19. Las patillas y el componente pueden
nombrarse de cualquier otra forma, mientras se conecten como se muestra.
El kit 042 también posee un KITPROG, solamente que éste no es separable; sino, que se
encuentra dentro de la única placa del kit. Su funcionamiento es similar al descrito para el
KITPROG del kit 059 y también puede ser utilizado como convertidor serie-USB [13]. Para
esto, deben de realizarse conexiones entre las patillas del UART en el PSoC 4 al KITPROG.
La salida Tx del PSoC 4 debe conectarse a la patilla 9 en el conector J8, llamada P5LP12_6;
y la entrada Rx del PSoC 4 respectivamente a la patilla 10, llamada P5LP12_7. La Tabla 4.2
muestra las velocidades aceptadas por el KITPROG.
Figura 4.19: Conexiones para utilizar el KITPROG como puente serie-USB en el kit 042
21
4.10 ¿Cómo comunicar un Arduino con un PSoC?
4.10.1 De manera analógica desde el Arduino al PSoC
Un Arduino no posee un convertidor de digital a analógico (DAC); pero, puede producir con
la función analogWrite() una señal de PWM, con una resolución de 8 bits, a una
frecuencia máxima de 31250 o 62500 Hz, dependiendo de la patilla utilizada, que luego de
filtrada en paso bajo podría ser equivalente a la salida de un verdadero DAC. Vea además el
apartado 3.2 para conocer como aumentar la resolución del PWM del Arduino UNO.
Para comunicar el Arduino con el PSoC, simplemente habría que convertir esa salida de
PWM filtrada, de analógico a digital, con uno de los convertidores ADC disponibles en el
PSoC, utilizando una resolución adecuada para la producida por el Arduino.
4.10.2 De manera analógica desde el PSoC al Arduino
El PSoC posee varios tipos de convertidores de digital a analógico, como se describe en el
apartado 4.8, con resoluciones de 8 – 12 bits. En el Arduino se puede utilizar el convertidor
de analógico a digital, con una resolución de 10 bits para convertir una señal producida por
el PSoC. Solamente debe considerarse que, para esta aplicación, producir una salida en el
PSoC con más de 10 bits es un desperdicio de tiempo y recursos del PSoC.
4.10.3 De manera digital
4.10.3.1 En serie con UART
Una placa de Arduino tiene al menos un UART físico; pero también puede emular un UART
por software. El Arduino puede comunicarse a velocidades tan altas como 1Mbps cuando
tiene un reloj de 16 MHz. Un PSoC tiene un UART que permite comunicación hasta 4 Mbps.
Para comunicar un Arduino con un PSoC utilizando los UART de cada dispositivo, debe
configurarse una velocidad de comunicación compatible para ambos dispositivos y hay que
conectar de manera cruzada las salidas y entradas de los UART; esto es: la salida Tx del
PSoC debe conectarse a la entrada Rx del Arduino y viceversa, de forma similar a como se
muestra en la Figura 4.17 y en la Figura 4.19 para la conexión serie entre dos PSoC.
4.10.3.2 Con PWM
Esta sería una variante del apartado 4.10.1; pero, sin necesidad de filtrar en paso bajo la salida
PWM del Arduino. En el PSoC se puede configurar un temporizador en modo de captura,
como se muestra en la Figura 4.20 y de esta forma puede ser utilizado para medir el ancho
de un pulso o la duración de eventos. Se debe utilizar un reloj adecuado para la resolución
deseada de la medición y debe seleccionarse también un periodo adecuado para la frecuencia
de la fuente de señal. Por ejemplo con un reloj de 8MHz se tendría una resolución de 125 ns,
que permitiría resolver los 256 pasos en un periodo de 32 µs, para un Arduino cuya frecuencia
de PWM sea de 31250 Hz.
22
Figura 4.20: Temporizador del PSoC usado para medir la duración de eventos
En la Figura 4.21 puede verse la configuración necesaria para medir el ancho de pulsos al
hacer que el temporizador capture el valor del contador en cualquiera de los flancos de la
señal de entrada, subida o bajada, y que interrumpa cada dos capturas, guardando en un
registro FIFO los datos de cada captura, de forma tal que cada periodo interrumpe una vez y
se puede tomar la diferencia entre los valores de captura para determinar el ancho del pulso
con una resolución de 125 ns en este caso.
23
Conocer el valor de la tensión de alimentación de PSoC es importante en aplicaciones que
funcionan con batería y en las cuales, dependiendo del estado de carga de éstas, algunas
funciones podrían alterarse. Al conocer la tensión de alimentación, el sistema puede tomar
las previsiones y ajustes necesarios para, por ejemplo, mantener los resultados dentro de los
valores esperados ante las fluctuaciones de la tensión de alimentación.
Cada kit de PSoC es diferente en cuanto a los componentes pasivos conectados a las patillas
externas de los ADC, así que habrá algunos detalles diferentes respecto a las configuraciones
permitidas para el ADC; pero, la base, como se muestra en la Figura 4.22, es colocar en la
entrada del ADC una referencia VDDA y seleccionar el filtrado de la tensión de referencia,
para minimizar el ruido que podría provenir de motores y otros componentes que se
alimentan también de VDDA y podrían afectar la medición.
Figura 4.22: Referencia VDDA en la entrada del ADC para medir la tensión de alimentación
El modo de conversión se ha dejado en el modo 2-Continuos a 10k muestras por segundo por
simplicidad; pero, no se necesita una velocidad de conversión tan alta y en el caso de utilizar
un selector, para medir varios canales, el modo de conversión debe ser 1 Multi sample y en
lugar de la lectura del ADC con la combinación IsEndConversion y GetResult16(), debe
utilizarse Read16() que realiza todo el proceso completo desde: iniciar la conversión; esperar
por el final de la conversión; retornar el valor leído y detener la conversión.
24
Figura 4.23: Configuración del ADC para leer valores iguales o mayores a VDDA
Un ejemplo del código utilizado para medir y enviar el valor de la tensión de alimentación,
en milivoltios, a través del UART, se muestra a continuación:
void MeasureBattery(void)
{
int16 adcResult;
int32 mvolts;
char strMsg[16]={}; // output UART buffer
ADC_DelSig_1_IsEndConversion(ADC_DelSig_1_WAIT_FOR_RESULT);
adcResult = ADC_DelSig_1_GetResult16();
/* Convert input voltage to milivolts */
mvolts = ADC_DelSig_1_CountsTo_mVolts(adcResult);
/* Transmit battery level in milivolts */
sprintf(strMsg,"BattLevel: %ld \r\n",mvolts);
UART_1_PutString(strMsg);
}
25
4.13 ¿Cómo crear un nuevo componente en PSoC?
26
Capítulo 5: Mediciones
5.1 ¿Cómo calibrar las puntas de prueba de un osciloscopio?
5.2 ¿Cómo medir señales bipolares con un ADC unipolar?
Para medir una señal bipolar con un sistema unipolar, primero se debe de acondicionar la
señal a medir cambiándola de bipolar a unipolar. Esto se logra agregando un valor positivo a
la señal. Este valor positivo es típicamente la mitad del rango de la señal bipolar; esto es: si
la señal de entrada bipolar es de ±10 V, entonces se le agregan +5 V. Como una señal así
transformada tiene una variación entre 0 V y 20 V, lo cual normalmente está fuera del rango
de entrada de la mayoría de los convertidores ADC, habrá también que atenuar esta señal a
los niveles aceptados por el ADC. Posteriormente se convierte la señal de analógica a digital
con un ADC en modo diferencial, dónde la entrada negativa del ADC se ubica en una
referencia de tensión que es típicamente la mitad del rango de conversión, de tal forma que
los valores mayores a esta referencia serán tomados como positivos y los valores inferiores
a la referencia serán interpretados como negativos.
Figura 5.1: Acondicionamiento de señal bipolar para medición con ADC unipolar
En la Figura 5.1 se realizan las dos primeras operaciones del acondicionamiento, conversión
a unipolar y escalado (atenuación) en una misma operación en el Opamp inversor con una
ganancia de -0.2 para la entrada inversora y de 1.2 para la entrada no inversora. Esto produce
una señal de [+4.048 V +0.048 V] ante una entrada de [-10 V +10 V]; esto es:
27
𝐹𝐸𝐸𝐷𝐵𝐴𝐶𝐾 = 1.707 ∗ 1.2 − 𝑉𝑖𝑛 ∗ 0.2
Efectivamente invirtiendo el rango de entrada y atenuándolo 5 veces.
En el ADC la conversión producirá una salida que responde a la ecuación:
5.3 ¿Cómo medir una señal bipolar que tiene superpuesta un valor de
CD positivo?
Esto es exactamente lo que se hace en el punto 5.2, donde se ha superpuesto a propósito un
valor positivo a una señal de entrada bipolar para hacerla unipolar y poder medirla con un
ADC unipolar. En ese caso, se escogieron los valores de las ganancias y tensiones agregadas
para hacer una transformación lineal del rango de entrada hacia el rango del ADC.
Pero, existen otros casos, en los cuales la señal original ya posee un valor CD agregado, como
por ejemplo, en un sensor cuya salida es proporcional a la tensión de alimentación de este, y
que produce, en ausencia de la magnitud medida, una salida de aproximadamente ½ VDD.
En este caso, el ADC debe utilizar como referencia interna la mitad de VDD. En un caso más
general, hay que restar, de la señal, ese valor medio superpuesto: a) Ya sea por programa
después de la conversión con un ADC no diferencial; o b) Utilizando una tensión de
referencia adecuada en la entrada negativa de un ADC diferencial como se muestra en las
Figura 5.3a Figura 5.3b respectivamente.
Ángulo
3.00E+00
2.50E+00
2.00E+00
1.50E+00
1.00E+00
5.00E-01
0.00E+00
0 2 4 6 8 10 12 14 16 18 20
28
a) Modo común con resta posterior b) Modo diferencial con referencia
Figura 5.3: Formas de convertir una señal superpuesta sobre un valor CD
29
5.5 ¿Cómo medir el tiempo que dura el procesamiento de un
algoritmo de control?
Proceda como en la pregunta anterior para producir la forma de onda periódica. En esta señal
el tiempo en alto, , es el tiempo que dura el algoritmo de control en ser ejecutado. Según la
teoría de control automático en tiempo discreto, para que un sistema híbrido de control se
comporte como cuasi-continuo, el tiempo entre la toma del valor de la variable controlada, o
muestreo, y la salida de la acción de control al final del algoritmo de control debe ser menor
o igual a una décima del periodo de muestreo, Ts. La Figura 5.5 muestra una ampliación del
tiempo en alto de la señal periódica de la Figura 5.4 donde se puede leer que el tiempo de
ejecución del algoritmo es de 460us con lo que se puede verificar el cumplimiento de la regla
dada por la ecuación.
𝑻𝒔
𝝉 ≤
𝟏𝟎
Figura 5.5: Medición del tiempo de ejecución del algoritmo de control digital
30
parcial de la acción de control con los valores anteriores de las variables que han sido
preservados.
Tabla 5.1: Comparación de algoritmo sin y con precálculo
t
En la Tabla 5.1 se comparan dos algoritmos para un control. El algoritmo no optimizado
introduce un tiempo relativamente grande entre la obtención del error actual, llamado ek, y
la puesta en la salida de la acción de control, nombrada mk. Ese tiempo incluye el cálculo de
la ecuación de diferencias con tres sumas y tres multiplicaciones más tres asignaciones para
preservar los valores de la salida y del error. El algoritmo optimizado, que utiliza precálculo,
reduce notablemente este tiempo al de una operación de suma y una de multiplicación. Si
despreciamos el tiempo que toman las asignaciones, este algoritmo reduce a la tercera parte
el tiempo entre la obtención del error y la salida de la acción de control. En todo caso, siempre
se realizan las tres sumas y las tres multiplicaciones; pero, ahora la ruta crítica es mucho más
corta, pudiendo el algoritmo optimizado satisfacer que 𝜏 ≤ 𝑇 /10.
d) Si la dinámica del sistema a controlar lo permite, aumente el periodo de muestreo para
cumplir con la regla expresada en la ecuación anterior, realizando también el recálculo del
modelo de la planta y del controlador.
e) Si la duración del algoritmo de control digital es una fracción del periodo de muestreo, T S,
que se aproxima a la unidad, incorpore este retardo fraccional de T S al modelo de la planta
utilizando la transformada Z modificada y rediseñe su controlador tomando en cuenta este
retardo. También puede retardar la salida de la acción de control hasta el inicio del siguiente
ciclo de cálculo del algoritmo de control con lo cual el retardo introducido para la acción de
control será de un periodo de muestreo completo (z-1). La planta debe de ser modificada
incorporando este retardo y debe recalcular el controlador tomando en cuenta este retardo,
por ejemplo, utilizando un predictor de Smith.
31
a) Los absolutos, que proveen directamente el valor del ángulo en una palabra de 8, 10,
12 bits o más; y dónde el valor leído se corresponde siempre con el ángulo medido,
aún si el sensor se ha apagado momentáneamente y vuelto prender. Estos tienen un
disco codificado, con tantos círculos concéntricos como bits se requieran. Cada
círculo, tiene ranuras, huellas o marcas que producen, al leerlo ópticamente, un patrón
alterno de unos y ceros. El código utilizado en los patrones circulares no es
necesariamente el código binario; pues este presenta cambios de varios bits al contar
secuencialmente. Un ejemplo simple de cuatro bits, cuando se cambia de 0111 (7) a
1000 (8) y viceversa, cambian todos los bits, lo cual puede producir que si no todos
cambian simultáneamente, la salida del codificador pase por varios estados con
valores aleatorios al conmutar entre dos códigos adyacentes. Se utiliza mejor un
código gray, en el cual entre dos códigos adyacentes solamente cambia un bit. Bueno
estos codificadores son costosos y dependiendo del número de bits, muy
voluminosos. La Figura 5.6 muestra los discos de dos tipos de codificadores.
b) Los incrementales, que no tienen ningún tipo de memoria, esto es solo pueden
registrar los cambios de posición del disco mientras están energizados. Por lo que no
hay una relación entre el estado del codificador y la posición angular del disco. Estos
codificadores requieren de un proceso de calibración o reposición a cero u otro valor
convenido, cada vez que se encienden. Algunas impresoras utilizan codificadores
incrementales lineales para determinar la posición del carro de impresión. Los discos
de los codificadores incrementales, como el de la derecha en la Figura 5.6 poseen un
único patrón alternado, usualmente en la periferia del disco; aunque hay algunos que
tienen 3 o tres, sirviendo uno de ellos, típicamente el más interno, como índice
absoluto de posición angular del disco para cada revolución. El codificador más usado
para este tipo de discos es el de cuadratura que produce dos señales con un desfase
eléctrico de 90° llamadas A y B que producen un código Gray, como se muestra en
la Figura 5.7. Al girar el disco en el sentido del reloj, la señal A adelanta a la señal B
y cuando el disco gira en sentido contrario al reloj, A atrasa a B. De esta forma, al
decodificar estas señales, se puede determinar la dirección de giro y la posición
relativa. Existen 4 estados por cada marca, o perforación del disco, lo que permite
contar hasta cuatro pulsos por cada ciclo de las señales A y B. Los codificadores se
seleccionan por la cantidad de ranuras o ciclos de las señales A y B que produce por
cada revolución, denominado CPR (Ciclos Por Revolución).
32
CCW CW
AB AB AB AB AB AB AB AB AB AB AB AB AB AB AB AB
10 11 01 00 10 11 01 00 10 11 01 00 10 11 01 00
Index
33
Figura 5.8: Implementación de la máquina de estados del decodificador de cuadratura de un
PSoC de Cypress en modo 1x.
34
calculando la diferencia entre dos valores consecutivos de distancia. Para medir velocidad no
se requiere conocer el valor absoluto de la posición angular.
∆𝜃 𝜃( ) − 𝜃( ) 𝜃( ) − 𝜃( ) 𝑟𝑎𝑑
𝜔( ) ≅ = =
∆𝑡 𝑡( ) − 𝑡( ) 𝑛 ∗ 𝐶𝑃𝑅 ∗ 𝑁𝑥 𝑇 ∗ 𝑛 ∗ 𝐶𝑃𝑅 ∗ 𝑁𝑥 𝑠
e( − e(
∗ ) ∗ )
(1 − 𝜔 𝑇)
Tiempo 𝑌(𝑧) (1 − e( ∗ )
) 𝑧+
= 𝑌(𝑧) (1 − (1 + 𝜔 𝑇)e( ∗ ))
discreto 𝑈(𝑧) (𝑧 − e( ∗ )) =
𝑈(𝑧) (𝑧 − e( ∗ ))
35
Como estos filtros se utilizan comúnmente para filtrar una derivada, se puede combinar
ambos, el derivador y el filtro como se muestra en la Tabla 5.3 y en la Tabla 5.4. En estos
dos casos se ha hecho la transformación a tiempo discreto utilizando el método trapezoidal o
de Tustin, ya que con este se evita el cálculo de exponenciales.
Tabla 5.3: Filtro de primer orden y derivador con filtro de primer orden
𝑌(𝑠) 𝑁 𝑌(𝑠) 𝑠𝑁
Tiempo continuo = =
𝑈(𝑠) (𝑠 + 𝑁) 𝑈(𝑠) (𝑠 + 𝑁)
Tiempo discreto 𝑁𝑇 2𝑁
𝑌(𝑧) 𝑁𝑇 + 2 (𝑧 + 1) 𝑌(𝑧) 𝑁𝑇 + 2 (𝑧 − 1)
= =
𝑈(𝑧) 𝑁𝑇 − 2 𝑈(𝑧) 𝑁𝑇 − 2
(Tustin) 𝑧+ 𝑧+
𝑁𝑇 + 2 𝑁𝑇 + 2
Amplitud [rad]
Velocidad [rad/s]
Velocidad [rad/s]
Tiempo 𝑌(𝑠) 𝑠𝜔
=
continuo 𝑈(𝑠) (𝑠 + 2𝜁𝜔 𝑠 + 𝜔 )
Tiempo 2𝑇𝜔
( 𝑧 − 1)
discreto 𝑌(𝑧) (𝑇 𝜔 + 4𝜁𝑇𝜔 + 4)
=
𝑈(𝑧) (2𝑇 𝜔 − 8) (𝑇 𝜔 − 4𝜁𝑇𝜔 + 4)
(Tustin) 𝑧 + 𝑧 +
(𝑇 𝜔 + 4𝜁𝑇𝜔 + 4) (𝑇 𝜔 + 4𝜁𝑇𝜔 + 4)
37
Capítulo 6: Conversiones
6.1 ¿Cómo medir adecuadamente una señal analógica?
6.2 ¿Cómo escoger el ancho de palabra de un convertidor ADC?
6.3 ¿Cómo limitar en banda una señal analógica?
6.4 ¿Cómo diseñar un filtro antisolapamiento (antialiasing) analógico?
6.5 ¿Cómo reducir la frecuencia de muestreo de una señal ya
obtenida?
6.6 ¿Cómo aumentar la frecuencia de muestreo de una señal ya
obtenida?
6.7 ¿Cómo producir salidas bipolares con un DAC unipolar?
Para producir una salida analógica bipolar con un DAC unipolar se requiere un circuito capaz
de: a) Cambiar el nivel de la señal unipolar (hacia negativo) y b) Amplificar la señal de salida
a los niveles adecuados y producir la corriente de salida suficiente para la aplicación.
Figura 6.1: Circuito para producir una salida bipolar con un DAC unipolar
Salida
Intermedia
DAC
40
Capítulo 7: Ruido
7.1 ¿Cómo reducir la posibilidad de que se induzca ruido en el cable
de un sensor?
Generalmente el ruido actúa en modo común sobre el par de conductores que transmiten la
señal de un sensor, por lo que se puede evitar la inducción del ruido de varias maneras:
a) Utilizando un cable blindado. Este es un tipo de cable con un forro de malla que se
conecta a la referencia solamente en un extremo de señal del cable para evitar el
problema de diferentes potenciales de tierra. Este conductor no conduce corriente. La
malla bloquea el ruido de modo común inducido en los conductores que van en el
interior del cable y conduce cualquier ruido inducido a tierra.
b) Transmitiendo en modo diferencial. Si se transmite con un solo cable referido a
tierra, la transmisión es susceptible a ruido de la conexión común de tierra. En una
transmisión diferencial, el receptor mide la diferencia de tensión entre las dos
entradas, mientras éstas se mantengan dentro del rango de modo común. Esto es
independiente del potencial de la tierra lo que hace este método inmune al ruido. La
fuente de ruido actúa sobre ambos cables en modo común, induciendo ruido de la
misma polaridad en ambos cables; pero, cuando la diferencia se realiza la diferencia,
el ruido se elimina.
c) Utilizando pares trenzados de cable para la transmisión. En una transmisión
balanceada, un cable conduce la corriente en una dirección durante todo el trayecto;
mientras que el otro lo hace en sentido contrario. En principio la tensión inducida en
cada cable es de modo común, esto es tiene la misma polaridad en cada cable y en el
extremo del cable estas dos tensiones se deberían de cancelar. El problema existe
cuando la fuente de interferencia está más cerca de uno de los cables que del otro
durante todo el camino. En este caso no se cancelarían las tensiones inducidas en
ambos cables. Un par trenzado va alternando periódicamente la exposición de cada
uno de los dos cables a la fuente de interferencia haciendo que para cada giro de la
trenza, sobre un mismo cable, cambie la polaridad de la tensión inducida por lo que
la suma algebraica de tales tensiones al final se aproxima a cero en cada cable.
d) Utilizando corriente y no tensión para la trasmisión [8]. En la transmisión de
señales con tensión, las impedancias de carga son típicamente altas en el receptor.
Una pequeña corriente de ruido inducida producirá grandes variaciones debidas al
ruido en la tensión en el receptor. Al utilizar corriente para transmitir la señal de un
sensor se debe tener una baja impedancia en los extremos del cable para mantener las
tensiones de trabajo dentro de límites. Esto significa que las corrientes inducidas ser
reducen debido a la baja impedancia en el receptor y además la corriente de la señal
es muchas veces más grande que la corriente en un sistema de transmisión por tensión.
Por otro lado, la corriente es siempre la misma en un circuito serie, no se degrada
como si lo hace la tensión al recorrer cables largos; por lo que la relación S/N en un
lazo de corriente es mejor. Es estándar, desde 1950, para transmisión de señales en
sistemas de control es el lazo de corriente de 4-20mA.
41
7.2 ¿Cómo reducir la inducción de ruido al transmitir señales?
7.2.1 Modo diferencial
7.2.2 Modo unipolar
7.2.3 Tierras de por medio
1
𝑦(𝑘) = 𝑥(𝑘 − 𝑖)
𝑁
En un sistema en tiempo real, donde las muestras se van adquiriendo una por una, debe
utilizarse la forma causal, la cual solamente requiere datos actuales o pasados. La forma
causal expresada de manera extendida es:
𝑥(𝑘 − 𝑁 + 1) + 𝑥(𝑘 − 𝑁 + 2) + ⋯ + 𝑥(𝑘 − 1) + 𝑥(𝑘)
𝑦(𝑘) =
𝑁
El filtro de media móvil es un filtro pasa bajas que típicamente se emplea para remover el
ruido de una señal en el dominio del tiempo a través de la evaluación del promedio de N
muestras en cada periodo de muestreo T. Como todo filtro, retarda la señal de salida y el
( )
retardo de grupo es: 𝑑 = . Para efectos de comparación, en un filtro de primer orden
el retardo de grupo es d = T/2.
42
7.9 Cómo implementar un filtro de media móvil
Existen varias formas de implementar un filtro de media móvil, unas eficientes y otras
ineficientes; siendo la más ineficiente la que evalúa la suma de las N muestras y calcula el
promedio en cada periodo de muestreo, como lo describe la ecuación de definición del filtro.
En cualquier caso se requiere del almacenamiento de las N-1 muestras anteriores que deben
irse desplazando en cada periodo de muestreo, emulando un registro de desplazamiento.
Este desplazamiento puede realizarse de forma eficiente y de forma ineficiente, siendo la
forma más ineficiente la que, en cada periodo de muestreo, realiza el traslado de los
elementos entre lugares de almacenamiento al estilo de 𝑥(𝑘 − 𝑁 + 𝑖) = x(k − N + i + 1) ,
variando el contador i desde 1 hasta (N-1), ya sea con un código explícito o dentro de un lazo.
La forma más eficiente utiliza una estructura de datos llamada registro circular (ring buffer)
con índices para escritura y lectura, donde los datos realmente no se desplazan; sino que lo
hacen los índices.
Tabla 7.1: Comparación de implementaciones de un filtro de media móvil de 9 etapas
43
7.10 ¿Cómo implementar un filtro digital de primer orden?
7.11 ¿Cuál filtro es mejor para eliminar el ruido, el de media móvil o el
de primer orden?
7.12 ¿Cómo implementar un filtro digital para eliminar una frecuencia
(notch filter)?
Cálculo del filtro:
Matlab
PSoC
Implementación
Programa
DSP
44
Capítulo 8: Conversiones de tensión CD-CD
8.1 ¿Cómo alimentar eficientemente un circuito CD de baja tensión
desde una fuente CD de mayor tensión?
Los reguladores lineales han sido utilizados con frecuencia para realizar esta función en
fuentes de alimentación. El problema es la alta disipación de potencia causada por la
diferencia de tensión entre la alimentación y la salida deseada, multiplicada por la corriente.
𝑃 = (𝑈 − 𝑈 ) ∗ 𝐼
Por ejemplo, un regulador alimentado con 7.0 V y cuya salida es 5 V a 1 A, disipa 2 W, por
lo que requeriría un disipador de potencia.
𝑃 = (7 − 5) 𝑉 ∗ 1 𝐴 = 2 𝑊
𝑃 𝑈 ∗𝐼
𝜂= ∗ 100% = ∗ 100%
𝑃 𝑈 (𝐼 + 𝐼 )
Utilizando como ejemplo los datos de un regulador LM7805 que posee una corriente de
reposo 𝐼 = 0.005 𝐴, la eficiencia es:
5∗1
𝜂= ∗ 100% = 71%
7(1 + 0.005)
Para este regulador, 7 V es la mínima tensión requerida para una salida de 5 V; pues, tiene
una tensión de caída (dropout) de 2 V. El detalle es que la eficiencia depende de la tensión
de alimentación de entrada, por lo que a una tensión de entrada de 20V la eficiencia se reduce
a:
5∗1
𝜂= ∗ 100% = 24.9%
20(1 + 0.005)
𝑈 = 𝜂𝑈 𝐷
46
Tabla 8.1: Comparación de la eficiencia entre un regulador lineal estándar y un reemplazo
directo de conmutación
47
terminales de L1 se invierte y se suma a la tensión Ui para producir un aumento de la tensión
de salida.
𝑈
𝑈 =𝜂
1−𝐷
En la Figura 8.3a se puede ver la fotografía a escala real de un regulador boost comercial que
puede producir una salida de tensión de 9 voltios a 3 A a partir de una entrada nominal de
entre 3.3 V y 7.2V. La Figura 8.3b muestra las curvas de eficiencia, las cuales dependen de
la tensión de alimentación y de la corriente de salida. A una corriente de salida de 1 A se
obtiene al menos un 80% de eficiencia con la tensión mínima de entrada de 3.3 V. Alimentado
con 5 V se obtienen eficiencias mayores al 85% con corrientes de hasta 2 A.
48
Capítulo 9: Medición de parámetros
9.1 ¿Cómo medir la inductancia de un circuito o motor CD?
9.2 ¿Cómo medir la resistencia de un circuito o motor CD?
9.3 ¿Cómo medir la fricción dinámica de un motor de CD?
9.4 ¿Cómo medir la fricción estática de un motor de CD?
9.5 ¿Cómo medir la inercia rotacional de un motor de CD?
9.6 ¿Cómo medir la inercia rotacional de un péndulo simple?
49
Capítulo 10: Implementación de controladores en tiempo
discreto
10.1 ¿Cuál es la estructura básica de un control en tiempo discreto?
Para el control en tiempo discreto es fundamental que el algoritmo de control se ejecute
periódicamente con un periodo constante igual al usado para el diseño del controlador.
La mejor forma de realizar esto es a colocando el código del controlador discreto dentro de
un proceso de interrupción que es activado por un temporizador en hardware a través de una
de las interrupciones del procesador utilizado.
Como ejemplo, el programa principal del sistema de control, en lenguaje C para PSoC, debe
tener entonces las siguientes partes:
a) Una sección para incluir las bibliotecas adicionales requeridas para el proyecto:
#include "stdbool.h"
.
.
#include "stdio.h"
51
/* Prototipo para la interrupción del Timer */
CY_ISR_PROTO(isr_Timer_Handler);
// Algoritmo de control
yk = ADC_Read16(); // Lectura de la realimentación
ek = Ref – yk; // Cálculo del error
ik += KI*ek; // Cálculo de la acción integral
. // Otros cálculos
PWM_WriteCompareValue(pwm); // escritura de la acción de control
} // USB_Uart_PrintLn
52
int main(void)
{
/* Lazo infinito */
for(;;)
{
// Interacción humano-máquina
// Acciones NO en tiempo real
} // for
} // main
𝑝(𝑘) = 𝑃 ∗ 𝑒(𝑘)
8 8 8
7 7 7
6 6 6
5 5 5
4 4 4
3 3 3
2 2 2
1 1 1
0 0 0
0 0.5 1 1.5 2 2.5 3 0 0.5 1 1.5 2 2.5 3 0 0.5 1 1.5 2 2.5 3
t t t
Backward Euler Forward Euler Bilineal o Tustin
En la Tabla 10.1 se muestran las ecuaciones de tres métodos numéricos comunes utilizados
para aproximar la integral. Este controlador posee dos parámetros: la constante de ganancia
integral, llamada I en este ejemplo y el periodo de muestreo, TS.
Tabla 10.1: Comparación de las ecuaciones para los métodos de aproximación discreta a la
integral
𝑇
𝐼(𝑧)(1 − 𝑧 ) = 𝐸(𝑧)𝐼 ∗ 𝑇 𝐼(𝑧)(1 − 𝑧 ) = 𝐸(𝑧)𝑧 𝐼∗𝑇 𝐼(𝑧)(1 − 𝑧 ) = 𝐸(𝑧)(1 + 𝑧 )𝐼
2
Todas las aproximaciones tienen un conjunto de propiedades que las distinguen: Tamaño del
paso, Orden, Error de redondeo y truncamiento, Estabilidad, Paso único o Múltiple, Método
Implícito o Explícito. Describiremos aquí solo dos de las propiedades más importantes, en
54
[10] , [11] y [12] se puede encontrar un análisis y descripción más completa de estas
propiedades.
Tamaño del paso: Para una función del tiempo, esto equivale al periodo de muestreo
TS. Solo se considera en este documento periodos uniformes de muestreo.
Estabilidad: Concepto similar al de los sistemas de control, define si el método
converge a una solución u oscila.
Método Forward Euler: Este método es un método explícito de orden 1 y un paso. La
condición de estabilidad de este método [12], encontrada utilizando una función diferencial
ordinaria de prueba de primer orden, 𝑦̇ = 𝜆𝑦; donde 𝜆 es el valor propio, real negativo para
que el sistema sea estable, es:
|1 + 𝜆𝑇 | < 1
𝑇 < −2 𝜆
El método Forward Euler funciona mejor para tiempos de muestreo pequeños. Para tiempos
de muestreo grandes, este método puede resultar en inestabilidad, incluso al discretizar un
sistema que es estable en tiempo continuo. En sistemas de control, esto usualmente no
representa ningún problema, ya que la recomendación típica para escoger el periodo de
muestreo, tal como se describe en el punto 10.11 recomienda:
𝜏
𝑇 ≤
10
Donde 𝜏 es la constante de tiempo dominante deseada para el sistema. Al cumplir esta regla,
se seleccionan periodos de muestreo mucho más pequeños que el límite para la estabilidad
del método Forward Euler, lo que garantiza que se pueda utilizar este método sin problemas.
Método Backward Euler: Este método es implícito, de orden 1 y paso 1. No tiene
restricciones para el periodo de muestreo. Una ventaja de este método es que al discretizar
un sistema estable de tiempo continuo siempre produce un resultado discreto estable. La
condición de estabilidad de este método, encontrada de forma similar a la del método
Forward Euler, es:
|1 − 𝜆𝑇 | < 1
𝜆𝑇 < 0 𝐨 𝜆𝑇 > 2
Ya que 𝜆 es negativo y TS es positivo, tendremos siempre que 𝜆𝑇 < 0, por lo que este método
es incondicionalmente estable.
Método Bilineal o Trapezoidal: Este es un método de segundo orden. No existe un método
de integración de segundo orden más preciso que el método trapezoidal. Una ventaja del
método trapezoidal es que la discretización de un sistema de tiempo continuo estable
utilizando este método siempre proporciona un resultado estable en tiempo discreto.
55
10.4 ¿Cómo evitar el windup en un controlador integral?
El problema reside en el aspecto físico de los actuadores en un sistema de control; por
ejemplo: una resistencia no puede enfriar, una válvula no puede abrirse más del 100%, una
bomba no puede girar más lento que detenida; pero, un sistema de control mal diseñado puede
intentar hacer eso al sobrepasar los límites de dichos actuadores con la acción de control, con
lo cual la salida no tendría cambios; pues, la planta ya no puede producirlos. Esto podría crear
un error que no puede ser disminuido.
El windup es la acumulación de “acción de control” en el controlador integral debido a un
error muy grande o un error sostenido durante mucho tiempo de la entrada al controlador.
Esta salida del término integral, combinada eventualmente con otros términos, puede llegar
a saturar el actuador y si este valor máximo (o mínimo) no puede eliminar el error, el valor
de la integral seguirá aumentando. Una vez que la salida del controlador alcanza ese punto,
pierde la habilidad para regular al sistema, quedando técnicamente en lazo abierto.
En la Figura 10.2, se muestran las señales de un controlador PI, compuesto por un término
proporcional y un término integral. Se ha limitado la salida de la acción de control hacia la
planta en 4.1V, simulando un actuador que posee tales limitaciones. En t = 0.4s se ha forzado
una perturbación de 2V en la acción de control, a la entrada de la planta, y se puede observar
la aparición de un error sostenido durante el periodo en el la perturbación se encuentra activa.
Poco tiempo después de iniciada la perturbación, la acción de control se satura, inicialmente
por la acción de control proporcional, y unos instantes después por la acción de control
integral.
56
Figura 10.2: Simulación de un regulador PI con windup ante una perturbación sostenida
Puede observarse que la salida del controlador sigue creciendo después de alcanzada la
saturación de la acción de control, debida principalmente a la acción integral cuya salida
sigue aumentando.
En t = 0.8s se hace elimina la perturbación lo que provoca una sobre elongación del 50% en
la salida del sistema, lo que vuelve negativo al error. La acción de control se mantiene
saturada mientras la salida del controlador comienza a disminuir lentamente, seguida en la
misma dirección por la acción integral. Unos 135ms después de eliminada la perturbación,
finalmente la acción de control disminuye por debajo del valor de saturación; la salida, el
error y la acción integral inician su lento retorno a sus valores de equilibrio previos a la
perturbación. El proceso de reacomodo después de eliminada la perturbación es de
aproximadamente 400ms.
Hay más de una docena de métodos para combatir el windup; pero, nos enfocaremos en uno
fácil de implementar en un programa, el método de saturación del término integral que
consiste en eliminar la acción integral una vez superado cierto límite predefinido. En la
Figura 10.3 se muestran las señales del mismo controlador PI cuyo comportamiento se acaba
de describir; solo, que esta vez se ha aplicado una corrección del windup, con el método de
saturación del término integral.
57
Figura 10.3: Simulación de un regulador PI con antiwindup por saturación del término
integral.
Como ejemplo numérico tenemos las señales mostradas en la Figura 10.4, donde se ha
sometido un sistema de control de velocidad a una perturbación moderada en la entrada de la
planta. Puede verse que la acción de control no alcanza siquiera 4V durante la perturbación.
Si se considera que la salida del controlador se satura en 4.85V, se puede determinar que el
error, para esta perturbación, es de aproximadamente 0.6V; entonces, el valor límite para la
integral podría establecerse en 4.1V, admitiendo un error máximo de 1V, un poco mayor al
de la figura, y considerando la ganancia proporcional conocida de 0.75:
58
𝑀𝐴𝑋𝐼𝑁𝑇𝐸𝐺𝑅𝐴𝐿 = 𝑆𝐴𝑇𝑈𝑅𝐴𝐶𝐼Ó𝑁 − 𝐸𝑅𝑅𝑂𝑅𝑀𝐴𝑋𝐼𝑀𝑂 ∗ 𝐺𝐴𝑁𝐴𝑁𝐶𝐼𝐴𝑃𝑅𝑂𝑃𝑂𝑅𝐶𝐼𝑂𝑁𝐴𝐿
Figura 10.4: Señales de salida y acción de control ante entrada escalón y perturbaciones de un
control de velocidad constante.
59
para disminuir el ruido. Este filtro debe poseer una constante de tiempo pequeña comparada
con la constante de tiempo dominante del sistema, o equivalentemente un polo no dominante,
para evitar afectar el comportamiento dinámico del sistema.
Tabla 10.2: Comparación de las ecuaciones para los métodos de aproximación discreta del
filtro derivativo
𝐷𝑁 𝑒(𝑘) − 𝑒(𝑘 − 1)
𝑑(𝑘) = 𝑑(𝑘) =
(1 + 𝑁𝑇 ) 𝑑(𝑘) = 𝐷𝑁 𝑒(𝑘) − 𝑒(𝑘 − 1)
2𝐷𝑁(𝑒(𝑘) − 𝑒(𝑘 − 1)) + (2 − 𝑁𝑇 )𝑑(𝑘 − 1)
𝑑(𝑘 − 1) −𝑑(𝑘 − 1)(𝑁𝑇 − 1)
+ (2 + 𝑁𝑇 )
(1 + 𝑁𝑇 )
Las consideraciones para estos tres métodos son las mismas que para la aproximación a la
integral descrita en el punto 10.6. El método Forward Euler es mejor con periodos pequeños
de muestreo y puede producir oscilaciones con periodos grandes; pero, de nuevo, si el periodo
de muestreo del sistema se escoge según las recomendaciones en el punto 10.11, no debería
haber ningún problema.
60
Figura 10.5: Estructura de un regulador PID en paralelo en el dominio del tiempo discreto
Dentro de un programa, se tendría que evaluar, de forma secuencial, las tres ecuaciones de
diferencia que corresponden a los tres bloques del PID seleccionados y al final realizar la
suma de los tres resultados parciales, por ejemplo, tomando las ecuaciones para las
aproximaciones backward Euler para la integral (tabla 10.1) y para el filtro derivativo (tabla
10.2):
𝑝(𝑘) = 𝑃𝑒(𝑘)
61
𝑃𝐼𝐷(𝑧) = 𝑃(𝑧)[𝑏𝑅(𝑧) − 𝑌(𝑧)] + 𝐼(𝑧)[𝑅(𝑧) − 𝑌(𝑧)] + 𝐷(𝑧)[𝑐𝑅(𝑧) − 𝑌(𝑧)]
Donde, b y c son dos constantes que definen cuánto de la señal de referencia será procesada
por los términos proporcional y derivativo respectivamente. Si b y c se hacen ambos 1, la
estructura queda como en la Figura 10.5, con los tres términos actuando sobre la señal de
error. En cambio sí b y c se hacen ambos 0, los términos proporcional y derivativo actuarán
solo sobre la señal de realimentación, o salida del sistema, quedando la estructura como la de
la Figura 10.6, llamada I_PD. En todos los casos, el término integral actuará sobre la señal
de error.
Figura 10.6: Estructura de la variante I_PD del regulador PID paralelo en tiempo discreto
62
I_PD, como el de la Figura 10.6, tomando las ecuaciones para las aproximaciones backward
Euler para la integral y para el filtro derivativo de la tabla 10.1 y tabla 10.2 respectivamente:
𝑝(𝑘) = 𝑃𝑦(𝑘)
63
Figura 10.7: Estructura de un control con predictor de Smith en tiempo discreto
64
Capítulo 11: Control de motores de CD
11.1 ¿Cómo controlar eficientemente la velocidad de un motor de CD
de imán permanente?
Es sabido que la velocidad angular de un motor de corriente directa (CD) de imán permanente
es proporcional a la tensión de armadura, el problema de controlar la velocidad se reduce
entonces a proporcionar una tensión variable al motor. Esto se puede hacer generando una
señal con la amplitud adecuada para la velocidad requerida y amplificar la potencia de esta
señal (en corriente y tensión) con un amplificador lineal de potencia clase AB. El detalle es
que este método es ineficiente, pues las pérdidas en el amplificador son iguales al producto
de la corriente del motor por la diferencia entre la tensión de alimentación del amplificador
y la tensión de armadura deseada para el motor. La potencia de pérdidas aumenta
significativamente cuando el motor gira a bajas velocidades ya que la caída de tensión en el
amplificador es alta y la corriente también podría ser alta, debido a la poca tensión inducida.
U [V]
A Ciclo de trabajo
Valor medio
C
t
T = Periodo
|M|
65
Una señal rectangular unipolar periódica posee una transformada de Fourier que consiste en
un valor medio, C, y una serie infinita de frecuencias constituida por la fundamental y sus
armónicas impares como se muestra en la parte inferior de la Figura 11.1. Los motores de
CD tienen una respuesta de frecuencia de filtro pasabajas. Si la frecuencia de la onda
rectangular es superior a la frecuencia de corte del motor, la fundamental y las armónicas
serán atenuadas por el motor, rescatando el valor medio, C, de la onda. El motor funcionará
de forma similar a si fuese alimentado por una señal constante del mismo valor C. La línea
punteada en la parte inferior de la Figura 11.1 muestra, de forma ideal, el efecto de filtro
pasabajas efectuado por el motor de CD. Dada la condición anterior, un cálculo simple del
valor medio para la onda rectangular en el dominio del tiempo proporciona la relación entre
el valor medio y el ancho del pulso.
𝐴
𝐶= ∗𝜏
𝑇
Con una señal unipolar, el motor CD girará siempre en una misma dirección y variando el
ciclo de trabajo /T, típicamente entre el 0% y el 100%, se puede variar el valor medio de la
tensión de armadura del motor entre 0 y A voltios y con ello su velocidad desde el reposo al
valor máximo.
La eficiencia de este método reside en el amplificador clase D. Al trabajar en modo de
conmutación, la potencia disipada se compone de tres partes como se muestra, para el caso
de un conmutador con carga resistiva, en la Figura 11.2, y donde, para resaltar su importancia,
se han exagerado el tiempo de subida y de bajada de las señales U e I.
Durante las partes 1 y 2, la potencia disipada es negligible ya que en cada caso una de las dos
variables, U o I, que forman el producto para la potencia se encuentra cerca de cero. Esto es
dependiente de la tecnología del amplificador y en consecuencia de la tensión de saturación
o de la resistencia del conmutador durante el encendido y de las corrientes de fuga del
conmutador durante el apagado. Actualmente, los mejores amplificadores clase D son los
fabricados con transistores MOSFET.
La parte que contribuye significativamente a la potencia disipada es la número 3, durante la
fase de conmutación, ya que ambas señales, U e I, están cambiando y la potencia disipada
presenta picos cuya duración depende del tiempo de subida o de bajada de las señales. Es
claro de esto, que la energía disipada, el área debajo de la curva de potencia, depende
proporcionalmente de los tiempos de subida y bajada de ambas señales U e I. Por ello la
potencia disipada depende proporcionalmente de la frecuencia de la señal de PWM, ya que a
mayor frecuencia, habrá mayor cantidad de conmutaciones y de picos de potencia por unidad
de tiempo, cuya duración es independiente de la frecuencia, solo depende del tiempo de
subida y bajada de las señales.
𝑃 𝛼𝑓
Es por ello que todos los amplificadores clase D y en particular los utilizados para el control
de motores poseen frecuencias máximas de operación para limitar las pérdidas de potencia y
con ello el calentamiento; que es una de las fuentes de deterioro y falla más comunes en
dispositivos semiconductores.
66
U [V] I [A]
1 2 3
A Pd [W]
t
T = Periodo = 1/f
U [V] I [A]
1 2 3
A Pd [W]
t
T = Periodo = 1/f
Figura 11.2: Tensión, corriente y potencia disipada por los conmutadores en un amplificador
clase D
Figura 11.3: Esquema de operación de un puente H con el motor en modo libre y activado
67
Si se cierra la pareja de interruptores inferiores, como a la izquierda en la Figura 11.4, o los
interruptores superiores, a la derecha en la Figura 11.4, el motor se cortocircuita vía tierra o
VCC, respectivamente; con lo que el motor quema la energía cinética en forma de calor y se
detiene (acción de freno).
68
Figura 11.5: Puente H basado en L298N. Para utilizar las patillas de ENABLE remueva el
puente negro del canal respectivo y conecte la señal de PWM
El L298N ya ha sido superado por una nueva generación, mucho más eficiente de puentes H
con MOSFET, por ejemplo los basados en el chip MC33926, que posee una resistencia de
encendido muy baja, en el orden de un par de centenas de mΩ y tiempos de subida y bajada
de un par de µs. Por esto, los nuevos puentes H tienen menos pérdidas y se calientan mucho
menos, lo que los habilita para conducir corrientes de 3A, en régimen permanente, sin
requerir de disipador de calor y también a operar a frecuencias de conmutación más altas, de
hasta 20KHz. En la Figura 11.6 se muestra una placa de puente H basada en el MC33926.
Siempre revise la tabla del control del puente H con el que está trabajando; pues existen
diferentes variantes para todas las funciones.
69
11.3 ¿Cómo duplicar la corriente de un puente H doble?
En un puente H basado en el dispositivo LM298N, el cual es un doble puente H, es posible
colocar los dos puentes en paralelo, con el propósito de duplicar la corriente que se puede
suministrar a la carga. Por supuesto que con esto, el puente doble ahora solamente puede
manejar un motor; pero, con el doble de corriente máxima.
Hay que tener cuidado al conectar correctamente las entradas y salidas de los puentes internos
de tal forma que efectivamente las salidas se encuentren en fase y no en contrafase.
Se puede consultar simplemente la hoja de datos del LM298N, donde se encuentra esta
información de primera mano, o seguir la Tabla 11.2 y la Error! Reference source not
found..
Tabla 11.2: Conexiones a poner en paralelo para duplicar la corriente de un puente H doble
70
11.4 ¿Cómo medir la corriente que consume un motor de CD?
11.5 ¿Cómo limitar la corriente consumida por un motor de CD?
11.6 ¿Cómo escoger la frecuencia del PWM de potencia?
Hay varios elementos que considerar para escoger la frecuencia 𝑓 de una señal de PWM
de potencia para controlar un motor de CD.
En primer lugar se encuentra la frecuencia de corte del motor de CD a usar. La ecuación
𝐺(𝑠) = muestra la función de transferencia simplificada de un motor de CD. Este
( )
motor tiene un polo en –a en el semiplano izquierdo. La frecuencia de corte del motor es
𝜔 = 𝑎 rad/s, o equivalentemente 𝑓 = 𝑎 2𝜋 Hz. La constante de tiempo dominante del
motor es 𝜏 = 1 𝑎 segundos.
La frecuencia del PWM debe ser mayor que esta frecuencia de corte para que el motor gire
suavemente con velocidad constante y no a saltos bruscos. De aquí se extrae entonces una
frecuencia mínima para el PWM o equivalentemente el periodo máximo del PWM. Cuanto
mayor debe ser esta frecuencia de PWM depende de la atenuación requerida para la
fundamental de la señal de PWM. Si consideramos que un filtro presenta una atenuación de
3dB a la frecuencia de corte y que para valores mucho mayores a esta frecuencia de corte, se
agregan 6dB de atenuación por octava tenemos que la atenuación producida por el motor a
una frecuencia fPWM está dada por la siguiente ecuación:
𝑓
log
𝑓
𝑎𝑡𝑒𝑛𝑢𝑎𝑐𝑖ó𝑛[𝑑𝐵] = 6 ∗
log (2)
71
Ejemplo: Un motor que posee la función de transferencia de velocidad 𝐺(𝑠) = tiene
( )
una frecuencia de corte 𝑓 = 11⁄(2𝜋) = 1.75 𝐻𝑧, para lograr una atenuación moderada de
48dB, (251 veces más pequeña), la frecuencia del PWM debe ser al menos 450 Hz.
En segundo lugar tenemos la frecuencia máxima de trabajo del amplificador clase D a
utilizar, usualmente un puente H. Hay varias clases o generaciones de puentes H; pero, un
puente H típico funciona eficientemente a una frecuencia máxima de unos 5kHz. A
frecuencias mayores, la pérdida excesiva de potencia sobrecalentará el puente H pudiendo
llegar a destruirlo. De aquí se obtiene el periodo mínimo.
Si el control es en tiempo continuo, solo se deben considerar los dos límites anteriores para
seleccionar el periodo del PWM entre ambos límites, cerca del límite superior del periodo,
frecuencia mínima, por las consideraciones de potencia disipada mencionadas en el punto
11.1.
Si el control es de tiempo discreto, en tercer lugar hay que considerar el periodo de operación
del algoritmo de control. El periodo del PWM debe ser menor que el periodo de operación
del algoritmo de control, TS, para que los cambios en el ciclo de trabajo del PWM se vean
reflejados, lo antes posible, en el valor medio de la tensión de armadura y esto haya tenido
tiempo para afectar la velocidad del motor antes del siguiente ciclo de control, punto en el
cual se toma una muestra nueva de la velocidad del motor. En caso de no satisfacerse la
condición anterior, se introducirá un retardo indeseable y no modelado dentro del lazo de
control que puede conducir, en el mejor de los casos, a una operación incorrecta del sistema
de control y eventualmente también puede producir oscilaciones en el sistema.
En la Figura 11.8 se muestra el cambio de ciclo de trabajo del PWM para el caso de que el
periodo del PWM sea menor que el periodo de muestreo T S, o periodo del lazo de control.
En la parte inferior de esa figura se muestra la velocidad del motor y el punto en el cual se
toma una medida de dicha velocidad cada periodo de muestreo T S. Las dos primeras muestras
recogen ambas el valor 𝜔 , se supone que el ciclo de trabajo ha permanecido constante
durante varios periodos de muestreo anteriores. Después de cambiar el ciclo de trabajo a un
valor mayor, cambia el valor medio de la señal de PWM, esto provoca que la velocidad del
motor también comience a aumentar, (un poco acelerado en la imagen), note que el eje del
tiempo no es continuo en las gráficas. Debido a que el periodo de muestreo es mayor que el
periodo del PWM, cuando se toma la siguiente muestra de la velocidad del motor, ya ésta ha
aumentado ligeramente, por lo que no se introduce retardo en la acción de control. La
velocidad del motor alcanzará el valor final 𝜔 , una vez transcurrido el tiempo de
estabilización del 2%, que es igual a 4 veces la constante de tiempo dominante, 𝜏 , del sistema
motor en lazo cerrado.
𝑡 % = 4∗𝜏
72
U[V]
A
t
[rad/s]
Figura 11.8: Efecto del cambio de ciclo de trabajo del PWM en la velocidad del motor
Una regla simple es hacer el periodo del PWM de 5 a 10 veces más pequeño que el periodo
de muestreo del sistema de control, recordando que a mayor frecuencia, mayores son las
pérdidas en el puente H. Verifique siempre la frecuencia máxima de operación en la hoja de
datos del puente H utilizado.
Ejemplo: Para un sistema de control que se ejecuta cada 10ms sería recomendable un periodo
de PWM de 1ms, (fPWM = 1kHz).
𝑁 á . = 𝑓𝑟𝑒𝑙𝑜𝑗 ∗𝑇
73
Procesador
| |
)
dir
El segundo paso es la generación del PWM con un ancho del pulso , típicamente producido
por el hardware del procesador o circuito especializado de PWM; que debe haber sido
previamente configurado para producir un PWM con un periodo T PWM.
El tercer paso es realizado por el hardware del puente H que amplifica la señal de PWM, de
amplitud VCC, generada por el procesador y produce un PWM de potencia con amplitud A.
Finalmente, como se describe en el punto 11.1, el motor con su comportamiento pasabajas
termina extrayendo el valor medio 𝑼𝒂 del PWM de potencia.
En la Figura 11.8 se muestra el proceso completo e ideal de conversión, que no toma en
cuenta las pérdidas de tensión en el puente H. Esto puede corregirse normalizando no contra
A; sino, contra el valor medido, con un voltímetro de CD, entre las terminales del motor con
el PWM al 100% de ciclo de trabajo. En la figura se muestra el proceso de saturación que
debe realizarse sobre el valor N de tal forma que no exceda el valor de cuentas máximo,
Nmáx., del PWM.
El siguiente código para PSoC ejemplifica los cálculos para un sistema cuya salida máxima
de tensión es de 5 voltios y posee un generador de PWM con un reloj de 1 MHz configurado
con un periodo de 500µs. En este caso la salida es unipolar de 0 a 5V; por ello, en vez de
tomar el valor absoluto, se evitan los valores negativos poniendo a cero la salida.
En el recuadro se muestran las definiciones de las constantes para este ejemplo, donde
PWM_FACTOR es el cociente del número máximo de cuentas del PWM dividido entre la
tensión máxima de salida, en este caso 500 cuentas dividido entre 5V es igual a 100
cuentas/V.
74
/* Constantes globales */
#define V_MAX 5
#define PWM_MAX 499 // PWM 100% con Tpwm = 500us @1MHz
#define N_MAX PWM_MAX+1 // 500 cuentas
#define PWM_FACTOR N_MAX/V_MAX // cuentas/voltio con Tpwm = 500us @1MHz
A continuación la parte del código que escala y produce una salida de tensión unipolar vía
PWM.
En un caso general, cuando mk es un número real cuyo valor negativo implicaría una salida
de tensión negativa; A es un real positivo y además Nmáx. no es múltiplo de A, se tendría un
cálculo como:
𝑎𝑏𝑠(𝑚𝑘)
𝑝𝑤𝑚 = 𝑒𝑛𝑡𝑒𝑟𝑜 ∗𝑁 á + 0.5
𝐴
Donde, primero se dividen los números reales, teniendo el cuidado de tomar el valor absoluto
de mk; luego, se multiplican por el entero y finalmente se asigna a la variable pwm el entero
más cercano al resultado, aprovechando el redondeo que se produce al sumar ½ al resultado
previo. Ejemplo, con mk = -4.26V, A = 7.2V y Nmáx. = 500:
𝑎𝑏𝑠(−4.26)
𝑝𝑤𝑚 = 𝑒𝑛𝑡𝑒𝑟𝑜 ∗𝑁 á + 0.5 = 296
7.2
75
/* Este código es para una salida bipolar con PWM y un puente H */
/* Escala el absoluto mk al rango del PWM y lo convierte a entero */
/* No olvide incluir la biblioteca math.h */
pwm = (int16) ((fabs(mk)/V_MAX)*N_MAX+0.5); // Use abs para enteros
76
Figura 11.10: Señal de PWM bipolar modulada de forma sinusoidal
Asimétrico
t
T T T
Simétrico
t
Figura 11.11: PWM asimétrico y simétrico
77
11.10 ¿Cómo conectar interruptores de fin de carrera en un sistema de
traslación con motor CD?
En la figura se muestra un par de microinterruptores con sendos diodos colocados en paralelo
con el contacto común y el contacto normalmente cerrado de un microinterruptor y en serie
con un motor de CD. El circuito tiene tres estados:
a) Cuando el objeto que se desplaza por acción del motor se encuentra lejos de cualquiera de
los microinterruptores éstos se encuentran normalmente cerrados, cortocircuitando los
diodos, por lo que la corriente puede circular sin problema en cualquier dirección y hacer que
el motor se mueva hacia la izquierda o hacia la derecha, como se muestra en la parte superior
de la imagen.
b) Cuando el objeto llegue al final de la carrera en cualquiera de las direcciones activará el
microinterruptor de ese lado conmutando éste a la posición de normalmente abierto, posición
en la cual el diodo respectivo queda en serie con el circuito, en polarización inversa, por lo
que bloqueará la corriente y detendrá el movimiento del motor en esa dirección.
c) Con alguno de los microinterruptores activado la corriente solamente podrá circular por el
diodo cuando éste se polarice directamente y la corriente circulará en la dirección en la que
el objeto movido por el motor se aleja del microinterruptor, hacia la derecha en la imagen al
centro de la figura y hacia la izquierda en la imagen de abajo en la figura.
Figura 11.12: Circuito para conectar los límites de carrera de un desplazamiento lineal
78
Capítulo 12: Corrección de no linealidades
12.1 ¿Cómo evitar o combatir la fricción estática en motores CD?
12.2 ¿Cómo linealizar la señal de un sensor?
Hay varias formas para linealizar la salida de un sensor, todo depende de la cantidad de
información que se tenga del dispositivo, del rango a linealizar y de la cantidad de variables
involucradas.
Se puede obtener el modelo lineal para el sensor alrededor de un solo punto de operación o
alrededor de varios puntos, con lo que se puede realizar una linealización por tramos.
a) Si se cuenta con la ecuación de salida, en una o varias variables, se puede obtener
el modelo lineal a través del desarrollo de la ecuación en una serie de Taylor evaluando el
resultado en los puntos de equilibrio deseados.
b) Si se tiene una gráfica con el comportamiento del sensor, en el caso de una sola
variable, se puede realizar una aproximación extrayendo la pendiente de la gráfica también
en los puntos de equilibrio deseados.
En el caso a) para linealizar una función de varias variables se desarrolla la función en una
serie de Taylor.
𝜕𝑓(𝑥 − 𝑥̅ ) 𝜕𝑓(𝑧 − 𝑧̅)
𝑦 = 𝑓(𝑥, 𝑧) = 𝑓(𝑥̅ , 𝑧̅) + +
𝜕𝑥 𝜕𝑧
1 𝜕 𝑓(𝑥 − 𝑥̅ ) 𝜕 𝑓(𝑥 − 𝑥̅ )(𝑧 − 𝑧̅) 𝜕 𝑓(𝑧 − 𝑧̅)
+ +2 + +⋯
2! 𝜕𝑥 𝜕𝑥 𝜕𝑧
Por ser muy pequeños se desprecian los términos de orden superior. Sustituyendo y
despejando se obtiene:
𝜕𝑓(𝑥 − 𝑥̅ ) 𝜕𝑓(𝑧 − 𝑧̅)
𝑦−𝑦 = + = 𝑎(𝑥 − 𝑥̅ ) + 𝑏(𝑧 − 𝑧̅)
𝜕𝑥 𝜕𝑧
∆𝑦 = 𝑎∆𝑥 + 𝑏∆𝑧
Como ejemplo se hará la linealización de un sensor de efecto Hall utilizado en la planta de
un levitador magnético en configuración inestable y cuya tensión de salida, sin tomar en
cuenta el ruido, para el caso de encontrarse el sensor cerca de la bobina, es:
79
𝛽
𝑒=𝛼+ + 𝛾𝑖
𝑑
Donde:
𝑒 es la tensión de salida
𝛼, 𝛽, y 𝛾 son constantes del sensor
𝑖 es la corriente de la bobina
𝑑 es la distancia del imán a la bobina
Se despeja la distancia
𝛽
𝑑=
(𝑒 − 𝛼 − 𝛾𝑖)
Se obtienen las derivadas parciales respecto a la tensión e y la corriente i alrededor del punto
de equilibrio 𝑒 = 𝑒̅ , 𝑖 = 𝚤̅, 𝑑 = 𝑑̅
𝜕𝑑 − 𝛽
𝑎= =
𝜕𝑒 ̅, ,̅ 2(𝑒 − 𝛼 − 𝛾𝑖) ̅, ,̅
𝜕𝑑 𝛾 𝛽
𝑏= =
𝜕𝑖 ̅, ,̅ 2(𝑒 − 𝛼 − 𝛾𝑖) ̅, ,̅
Por lo que la distancia en metros para valores alrededor del punto de equilibrio será:
Para no tener que medir la corriente, ésta puede ser estimada de forma aproximada a partir
( )
de la tensión de la bobina, dividida entre la resistencia de la misma 𝑖(𝑡) = . La tensión
u(t) es conocida; pues, es la acción de control. El problema de esta aproximación es que al
variar la tensión u(t) rápidamente, la corriente estimada sería ruidosa; por lo que es
conveniente filtrar en pasabajas y que mejor manera para esto que utilizar la propia función
de transferencia de la bobina como filtro:
80
𝑅
1 𝑈(𝑠) 𝐿
𝐼(𝑠) = 𝑈(𝑠) = ∗
𝑠𝐿 + 𝑅 𝑅 𝑅
𝑠+
𝐿
Simulación de la acción del estimador de corriente
1.5
Tensión
Corriente estimada
0.5
Amplitud [V]
0
Amplitud [A]
-0.5
-1
-1.5
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
Tiempo [s]
Figura 12.1: Corriente estimada para la bobina del levitador magnético con una tensión
ruidosa
Se sustituyen los valores para R = 2.4 Ω y L = 0.015 H del caso en estudio para obtener la
función de transferencia de forma numérica.
1
𝐼(𝑠) = 0.015 𝑈(𝑠)
2.4
𝑠+
0.015
𝐼(𝑧) 0.0617
= , 𝑇 = 0.001 s
𝑈(𝑧) 𝑧 − 0.8521
Se transforma al dominio del tiempo discreto la función del filtro y la ecuación de diferencias
es:
𝑖(𝑘) = 0.0617𝑢(𝑘 − 1) + 0.8521𝑖(𝑘 − 1)
81
En la Figura 12.1 se muestra la corriente estimada con ayuda del filtro a partir de una tensión
ruidosa y se puede apreciar que el ruido de la tensión ha sido eliminado por la acción de
filtrado.
82
Capítulo 13: Misceláneos
13.1 ¿Cómo controlar la posición de un servo RC?
Los servos RC utilizan una señal de PWM de típicamente 20 ms de periodo, con una duración
del pulso de entre 1ms y 2 ms (no se le llama ciclo de trabajo, pues no se referencia al periodo
de la onda como en el caso del PWM de potencia para controlar un motor CD, vea el punto
11.1). Poseen una posición neutra, alrededor de 1.5 ms de duración del pulso, como se
muestra en la Figura 13.1. La posición neutra se define como la posición en la que el servo
se encuentra en la mitad de la rotación mecánica total, pudiendo potencialmente girar el
mismo ángulo en el sentido de las agujas del reloj (CW) como en el sentido contrario a las
agujas del reloj (CCW). No todos los servos son iguales y algunos tendrán diferentes
restricciones en su rotación.
A
Pulso (1 ms mín.)
90°
t
A
Pulso (1.5 ms)
0°
t
Periodo 20 ms
A
Pulso (2 ms máx.)
90°
Existen algunos sistemas modernos que han heredado este método de duración del pulso de
entre 1ms y 2ms para definir la variable a controlar; pero, ya no están apegados a un periodo
de 20ms; sino, que admiten periodos mucho más cortos, ligeramente mayores a 2ms
(1/490Hz).
También los controladores electrónicos de velocidad para motores sin escobillas (conocidos
como ESC), que son utilizados en vehículos voladores autónomos tales como los
83
cuadricópteros, han heredado este mecanismo de comunicación basado en duración del pulso
para establecer la velocidad del motor; solo que con pulsos y periodos más cortos. Por
ejemplo el método llamado Oneshot125 utiliza pulsos de entre 125us y 250us, con un periodo
ligeramente mayor a 250us, para ajustar entre el 0% y el 100% la velocidad del motor
controlado. También hay otros protocolos como el Oneshot42 (42us-84us) y la lista sigue
creciendo.
84
Figura 13.2: Tierras en un circuito de electrónica mixta
85
Figura 13.3: Rebote mecánico de un interruptor pulsador, yendo de alto a bajo
La Figura 13.5 muestra el diagrama de tiempo del eliminador de rebotes realizado con dos
flip-flops. Se puede apreciar que la señal del pulsador, usando lógica positiva, debe estar
activa como mínimo entre dos flancos de subida del reloj consecutivos, para que la salida se
active. Esto significa que el circuito funciona como un filtro pasa bajas digital, que no admite
frecuencias de entrada mayores a 1/T, el recíproco del periodo de reloj. La frecuencia para
este reloj puede ser desde unos 10Hz a 200Hz.
86
clock_1
T
Pulsador
Button
Figura 13.5: Diagrama de tiempo del eliminador de rebote con dos flip-flops.
87
Figura 13.7: Diagrama de una máquina de estados finitos para eliminar el rebote [7].
El programa para eliminar el rebote requiere dos variables binarias para emular los flip-flops
y una tercera variable binaria para la salida, y todas se inician en estado inactivo. En el
siguiente extracto de código, se presume que el proceso se ejecuta dentro de una interrupción
por hardware que ocurre con un periodo seleccionado adecuadamente para eliminar el
rebote; por ello estas variables son declaradas globales, para que retengan el estado entre
interrupciones, y volátiles; para que el compilador no trate de optimizar su uso.
El siguiente extracto de código, que usualmente se ejecuta al inicio del proceso de atención
de interrupciones, realiza en software el equivalente al hardware de la Figura 13.4.
/* enumerated type */
enum SingleStepState {WAIT, RUN, PRESS} ButtonState = WAIT;
88
Luego, si no se realizó durante el primer paso, no lo haga dos veces, se crea la variable del
tipo enumerado que contendrá el estado de la máquina y se define su estado inicial. También
se crean cualesquiera variables de salida, del tipo deseado y con el estado inicial necesario.
/* Variables */
enum SingleStepState ButtonState = WAIT; // State
bool EJECUTAR = false; // Output
Finalmente se crea la máquina de estado con una sentencia switch. Cada caso es un estado
de la máquina. Dentro de cada estado se toman las decisiones y se colocan las salidas en los
valores adecuados. Un último estado, default, se emplea para regresar la máquina al
estado de inicio en caso de que algo cause el cambio a un estado no definido.
Cada vez que se ejecuta la sentencia switch, equivale a un ciclo del reloj de la máquina de
estado; por lo que el periodo de reloj de la máquina dependerá de cuánto tarda la ejecución
del lazo en el que se encuentra dicha sentencia, lo cual puede ajustarse con un retardo o
ejecutando el lazo dentro de una interrupción provocada por un temporizador interno o
externo.
La Figura 13.8 muestra el diagrama de estados de la máquina ejemplo. Esta máquina ejecuta
un proceso una única vez por cada presión de un botón pulsador. La máquina se inicia en el
estado de espera (WAIT) y permanece en ese estado, con la salida apagada, mientras el botón
no se haya presionado. Cuando se presiona el botón, cambia inmediatamente al estado de
ejecución (RUN) activando la salida y sin depender del estado del botón, pasa al siguiente
estado (PRESS), estado en el cual se mantiene, con la salida apagada, mientras el botón siga
presionado. Al dejar de presionar el botón la máquina regresa al estado inicial (WAIT).
89
/* State machine for single step button action */
switch (ButtonState) {
case WAIT:
ButtonState = button? RUN:WAIT;
EJECUTAR = false;
break;
case RUN:
ButtonState = PRESS;
EJECUTAR = true;
break;
case PRESS:
ButtonState = button? PRESS:WAIT;
EJECUTAR = false;
break;
default: ButtonState = WAIT;
} // switch
Figura 13.8: Diagrama de estados de una máquina para ejecutar un proceso una única vez
cuando un botón definido se presiona (Detector de flanco positivo).
90
del reloj de la máquina de estados es mayor que el tiempo de rebote mecánico del botón,
entonces no es necesario ningún otro paso para eliminar dicho rebote. En caso contrario,
habrá que primero eliminar el rebote del botón, antes de utilizar esa señal en esta máquina de
estados.
La máquina de estado es iniciada en el estado WAIT y permanece en ese estado, con la salida
inactiva, en bajo, mientras el botón no se presione. Al presionar el botón, la máquina cambia
al estado transitorio RUN, que dura exactamente un ciclo de reloj, donde se activa la salida,
para luego pasar al estado PRESSED. La máquina permanece en este último estado, con la
salida en bajo, mientras no se libere el botón. Al dejar de presionar el botón, la máquina
regresa al estado WAIT y el ciclo se repite.
Figura 13.9: Diagrama de tiempo de la máquina de estado para ejecutar un proceso una única
vez al presionar un botón.
91
es 1. La suma del bit de signo más la longitud de la parte entera más el tamaño de la parte
fraccionaria (1+m+n), se hace coincidir usualmente con el ancho de la palabra del contenedor
de datos utilizado.
NOTA: Existen otras notaciones para números Q que pueden no incluir el valor de m y éste
debe ser inferido como 0 o 1 o también puede ser que m exista en incluya el signo o no. Aquí
nos referiremos solamente a los números Q descritos en la Figura 13.10.
Q m n
signo parte entera parte fraccionaria
Se puede tener un ancho de palabra de 8, 16, 32 bits. Para una palabra de 8 bits podría por
ejemplo definir un número Q1.6, con una resolución de 0.015625 o Q3.4, con una resolución
de 0.0625. Una selección común en máquinas de 32 bits es Q1.14, en un contenedor de 16
bit; debido a que, al multiplicar dos números, el contenedor para el resultado debe tener el
doble del tamaño, en este caso sería 32 bits, que es el tamaño del registro de una máquina
como la descrita. También para procesamiento digital de señales en una máquina similar, un
tipo común es el Q0.31, que no tiene parte entera, y para el cual, el producto de dos números
de este tipo produce un resultado de 64 bits, que se almacena normalmente en dos registros
de 32 bits. La escogencia del tipo de número Q usualmente depende de la resolución deseada
para los cálculos. A diferencia de los números flotantes, la resolución de los números Q
permanece constante en todo el rango de almacenamiento, que para un número Q.m.n es:
[ -2m, … , 0, … , (2m – 1/n) ]
92
salida. El tipo será entonces Q5.10 que tiene una resolución de 1/1024 = 0.0009766 y su
rango es de [-32, 31.999].
Si se desea aumentar la resolución y se acepta el riesgo potencial de saturar el contenedor de
datos durante la suma o resta, se podría usar un tipo Q4.11; el cual tendría una resolución de
0.0004883 y un rango de [-16, 15.9995], capaz aun de contener directamente los valores de
salida.
También se podría usar un tipo común, tal como el Q1.14 o el Q0.15, que poseen mayor
resolución; pero, para poder utilizar estos tipos se requeriría además un proceso de
normalización de los datos de entrada y una desnormalización a la salida.
Ejemplo:
93
13.13 ¿Cómo realizar operaciones aritméticas con números Q.m.n?
13.13.1 Realizando los cálculos manualmente
Los números Q son fracciones, el numerador se almacena en la variable y el denominador
común, que es d = 2n, se infiere durante las operaciones y a la hora de interpretar el resultado.
Se muestran las operaciones matemáticas básicas con dos números Q N 1 y N2.
Suma, puede requerir saturación para evitar el desbordamiento:
𝑁 𝑁 𝑁 +𝑁
+ =
𝑑 𝑑 𝑑
Resta:
𝑁 𝑁 𝑁 −𝑁
− =
𝑑 𝑑 𝑑
Multiplicación, requiere normalización:
𝑁 𝑁 𝑁 ∗𝑁 𝑁 ∗𝑁
∗ = ∗𝑑 =
𝑑 𝑑 𝑑 𝑑
División, requiere normalización:
𝑁 𝑁 𝑁 /𝑁 𝑁 /𝑁
/ = /𝑑 =
𝑑 𝑑 𝑑/𝑑 𝑑
Como el denominador es una potencia de 2, la multiplicación se puede implementar como
un desplazamiento aritmético hacia la izquierda y la división como un desplazamiento
aritmético hacia la derecha.
Para mantener la precisión, los resultados intermedios de la multiplicación y la división deben
tener una precisión doble, especialmente al acumular resultados y al devolver el resultado a
la precisión original, debe redondearse el valor intermedio.
13.13.2 Con una biblioteca especializada
Con la biblioteca CMSIS DSP
94
Temas:
Alimentación eléctrica, tierras
La placa posee tres tipos de tierra:
GND - Este es la tierra universal donde todos los reguladores son referidos. Tanto Vssd como
Vssa conectan a esta tierra a través de una conexión en estrella.
Vssd - Esta es la tierra digital y cubre los circuitos digitales de la placa, como RS-232 y LCD.
Vssa - Esta es la tierra analógica y cubre la puesta a tierra de los circuitos analógicos presentes
en la placa, como el bloque de referencia.
Protección de circuitos
Mediciones
La ley de Faraday indica que la tensión inducida en una espira al cambiar en el tiempo el
campo magnético es:
∆(BA)
𝜖=−
∆𝑡
Si consideramos que el área se mantiene constante, la podemos sacar y la ecuación queda:
∆(B)
𝜖 = −𝐴
∆𝑡
En todo caso, la tensión inducida es proporcional al área de la espira, si reducimos, de forma
estática, el área, la tensión inducida se reduce.
95
Capítulo 14: Referencias
[1] “Squeeze 10-Bit Performance From An 8-Bit DAC”. En línea, disponible en:
http://electronicdesign.com/analog/squeeze-10-bit-performance-8-bit-dac, consultado
en abril 2017.
[2] “TimerOne & TimerThree Libraries”. En línea, disponible en:
https://www.pjrc.com/teensy/td_libs_TimerOne.html, consultado en abril 2017.
[3] “Timer1”. En línea, disponible en: http://playground.arduino.cc/Code/Timer1,
consultado en abril 2017.
[4] “Dynamics and Control of Switched Electronic Systems”, capítulo. 2, Springer, 2012.
En línea, disponible en:
http://www.springer.com/cda/content/document/cda_downloaddocument/97814471288
47-c2.pdf%3FSGWID%3D0-0-45-1326538-p174291486, consultado en abril 2017.
[5] “Power Electronics Exercise: Pulse Width Modulation Methods”. En línea, disponible
en: https://www.eal.ei.tum.de/fileadmin/tueieal/www/courses/PE/tutorial/2013-2014-
W/07_PWM.pdf , consultado en abril 2017.
[6] APPLICATION NOTE 1858 “Tiny IC Debounces Pushbutton switch”. En línea,
disponible en: https://www.maximintegrated.com/en/app-notes/index.mvp/id/1858,
consultado en abril 2017.
[7] “Frequency Visualizer”. En línea, disponible en:
http://people.ece.cornell.edu/land/courses/ece4760/FinalProjects/f2014/idk4_clc282_hs
a35/idk4_clc282_hsa35/, consultado en abril 2017.
[8] “Introduction to the two-wire transmitter and the 4-20ma current loop”. En línea,
disponible en: https://www.acromag.com/sites/default/files/Acromag_Intro_TwoWire
_Transmitters_4 _20mA_Current_Loop_904A.pdf, consultado en abril 2017.
[9] “PID Controller, Discrete PID Controller”. En línea, disponible en:
https://www.mathworks.com/help/simulink/slref/pidcontroller.html#br8_nbu-1,
consultado en abril 2017.
[10] Chapter 5: Numerical Methods. En línea, disponible en:
http://vmm.math.uci.edu/ODEandCM/PDF_Files/ChapterFirstPages/First38PagesOFCh
apter5.pdf, consultado en abril 2017.
[11] “Forward and Backward Euler Methods”. En línea, disponible en:
http://web.mit.edu/10.001/Web/Course_Notes/Differential_Equations_Notes/node3.html,
consultado en abril 2017.
97
[13] “CY8CKIT-042 PSoC 4 Pioneer Kit Guide.pdf”. En línea, disponible en:
http://www.cypress.com/file/46056/download, consultado en mayo 2017.
[15] “CY8CKIT-059 PSoC 5LP Prototyping Kit Guide.pdf”. En línea, disponible en:
http://www.cypress.com/file/157971/download, consultado en mayo 2017.
[16] “Connect VREF to a pin in PSoC4”. En línea, disponible en:
http://www.cypress.com/blog/psoc-hacker-blog/connect-vref-pin-psoc4, consultado en
mayo 2017.
[17] “Voltage Reference (Vref) v1.70”. En línea, disponible en:
http://www.cypress.com/file/274681/download, consultado en mayo 2017.
[18] “Including the Cortex Microcontroller Software Interface Standard (CMSIS)
Library in a PSoC® Creator™ Project - KBA90457”. En línea, disponible en:
http://www.cypress.com/knowledge-base-article/including-cortex-microcontroller-
software-interface-standard-cmsis-library, consultado en mayo 2017.
[19] Interiano, E. “Control de Sistemas con Retardo”. En línea, disponible en:
http://www.ie.tec.ac.cr/einteriano/control/clase/Clase20ControldeSistemasconRetardo.p
df , consultado en octubre 2017.
[20] Interiano, E. “Discretización de Controladores y Plantas”. En línea, disponible en:
http://www.ie.tec.ac.cr/einteriano/control/clase/Clase4DiscretizaciondeControladoresyP
lantas.pdf , consultado en octubre 2017.
[21] “Pololu 9V Step-Up Voltage Regulator U3V50F9”. En línea, disponible en
https://www.pololu.com/product/2567 , consultado en octubre 2017.
[22] “Electromagnetic Levitation System”. En línea, disponible en:
http://www.zeltom.com/documents/emls_md.pdf. Consultado en octubre 2017
[23] Zumbahlen, Hank. “Staying Well Grounded”. En línea, disponible en:
http://www.analog.com/en/analog-dialogue/articles/staying-well-grounded.html.
Consultado en noviembre 2017.
98