UNIVERSIDAD REAL MAYOR Y PONTIFICIE DE SAN
FRANCISCO XAVIER DE CHUQUISACA
SISTEMA DE CONTROL DE UN COCHE VELOCISTA CON
SEGUIMIENTO DE TRAYECTORIA (VERSIÓN DIGITAL)
MATERIA: SISTEMAS DE CONTROL DOS
SIGLA: ETN-365
ESTUDIANTES: CHECA CARDENAS GERSON (ING ELÉCTRICA)
VARGAS VEDIA CARLOS GUNAR (ING ELÉCTRICA)
FECHA:02/12/2024
Bolivia-Sucre
SISTEMA DE CONTROL DE UN COCHE VELOCISTA CON SEGUIMIENTO DE
TRAYECTORIA (VERSIÓN DIGITAL)
1. Introducción
La evolución de la robótica autónoma ha impulsado la creación de plataformas móviles
capaces de desplazarse con alta precisión y dinamismo. Entre ellas, los vehículos de
seguimiento de línea —conocidos comúnmente como coches velocistas— destacan por
su necesidad de responder con rapidez y exactitud a trayectorias lineales o curvas,
incluso a velocidades elevadas. Su diseño combina mecánica, electrónica y algoritmos
de control, siendo esenciales en entornos competitivos y en la investigación de sistemas
de navegación automática, donde la latencia, la estabilidad y la adaptabilidad son
factores decisivos.
2. Antecedentes
2.1 Primeros sistemas de control de vehículos autónomos
A finales de los años sesenta y principios de los setenta, los primeros intentos de
movilidad autónoma surgieron en centros académicos, encabezados por proyectos como
el Stanford Cart. Estos dispositivos, limitados por la tecnología de la época, utilizaban
sensores rudimentarios y procesadores de baja potencia para rastrear líneas o patrones
en el suelo. Los métodos de control se basaban en lógica binaria y reguladores
proporcional, suficientes para operaciones elementales, pero poco eficientes ante
perturbaciones dinámicas.
2.2 Evolución del control PID
Durante los años ochenta, el controlador PID emergió como el estándar indiscutible en
sistemas de retroalimentación. Su estructura simple, combinando error actual,
acumulado y de cambio permitió corregir desviaciones con mayor precisión que los
enfoques anteriores. A pesar de su antigüedad, el PID sigue siendo el pilar en la mayoría
de los seguidores de línea debido a su robustez, bajo costo computacional y facilidad de
sintonización, incluso en entornos con ruido o variabilidad en la superficie.
2.3 Introducción de sensores avanzados
Con el avance de la microelectrónica, los sistemas de percepción se volvieron más
sofisticados. Sensores infrarrojos de proximidad, como los arrays de 8QTR,
reemplazaron a los fototransistores individuales, permitiendo detectar múltiples puntos
de la línea simultáneamente. Paralelamente, los módulos IMU (Unidades de Medición
Inercial) integraron giroscopios y acelerómetros para medir la orientación espacial del
vehículo, lo que permitió corregir desvíos por deslizamiento o inercia, clave para
mantener la trayectoria a velocidades críticas.
2.4 Aplicación de técnicas de visión artificial
A partir del año 2000, la capacidad de procesamiento de imágenes cambió radicalmente
el paradigma del seguimiento. En lugar de depender únicamente de sensores puntuales,
las cámaras digitales y algoritmos de procesamiento de imágenes —como el umbral
adaptativo, el filtrado de Canny y el análisis de contornos— permitieron interpretar la ruta
completa en tiempo real. Esto no solo aumentó la fiabilidad ante obstáculos o cambios
de iluminación, sino que también abrió la puerta a la navegación en entornos no
estructurados.
3. Estado Actual del Control de Coches Velocistas con Seguimiento de Trayectoria
Hoy en día, los coches velocistas son protagonistas de competencias internacionales
como Line Follower y RoboRace, donde la velocidad, la precisión y la eficiencia
energética se miden al milisegundo. Estas pruebas no solo estimulan la innovación
académica, sino que también sirven como laboratorios vivos para tecnologías que luego
se trasladan al sector automotriz: desde sistemas de asistencia al conductor hasta
algoritmos de predicción de trayectoria en vehículos autónomos. La fusión entre control
clásico y percepción computacional define el estado del arte en esta disciplina.
4Objetivos
4.1 Objetivo General
Diseñar, calcular e implementar un sistema de control de un coche velocista con
seguimiento de trayectoria.
4.2 Objetivo Específicos
• Investigar componentes del robot seguidor de línea
• Diseñar una placa PCB para montaje de componentes
• Encontrar modelos matemáticos adecuados que permitan un seguimiento
eficiente de la trayectoria.
• Diseñar el sistema de control PID
• Diseñar el sistema de control PID por LGR(Lugar Geométrico de raíces)
• Diseñar el sistema de control PID mediante BODE
• Realizar simulaciones y pruebas para validar el desempeño del sistema de control
en un entorno controlado antes de la implementación física.
• Construir y calibrar el coche velocista, asegurando que todos los componentes
funcionen correctamente y se ajusten a las especificaciones del diseño.
INGENIERÍA DEL PROYECTO
1. El Coche Velocista Seguidor de Línea
Los robots seguidores de línea son sistemas mecatrónicos que combinan elementos
mecánicos, electrónicos y de control para navegar siguiendo una trayectoria marcada,
generalmente una línea oscura sobre un fondo claro. Su funcionamiento se basa en
sensores que capturan cambios en la reflectancia del suelo, permitiendo al sistema
ajustar su movimiento en tiempo real. Estas plataformas tienen usos relevantes en
entornos industriales, como cintas transportadoras automatizadas, almacenes
inteligentes y líneas de ensamblaje, además de servir como herramientas pedagógicas
para enseñar principios de robótica, electrónica y control automático.
En este desarrollo, se implementó un robot velocista utilizando motores de corriente
continua (DC) acoplados a ruedas mediante engranajes, un módulo puente H modelo
TB6612FNG para el control bidireccional de los motores, un sensor infrarrojo QTR-8A
compuesto por ocho fotodetectores dispuestos en línea para una detección precisa de la
trayectoria, y una tarjeta Arduino NANO como unidad central de procesamiento. El
microcontrolador se encarga de leer los datos del sensor, ejecutar el algoritmo de control
PID y enviar señales de corrección a los motores. El ensamblaje se realizó sobre un
chasis compacto diseñado para robots móviles, con el arreglo de sensores ubicado en la
parte delantera del vehículo, lo que permite anticipar los cambios de dirección y mejorar
la estabilidad dinámica durante el seguimiento a alta velocidad.
2. Partes Constitutivas del Coche Velocista
• TB6612FNG
• Microcontrolador Arduino NANO
• Sensor QTR 8°
• Motores N20 3000 rpm con enconder
• Baterías
3. Características Técnicas de los Motores de Corriente Continua a Controlar y de
los Sensores
3.1 TB6612FNG
TB6612FNG es un controlador IC para motor de CC con transistor de salida en estructura
LD MOS con resistencia ON baja. Dos señales de entrada, IN1 e IN2, pueden elegir uno
de cuatro modos, como CW, CCW, freno corto y modo de parada.
➢ Características
• Voltaje de fuente de alimentación ; VM=15V(Máx.)
• Corriente de salida ; Iout=1.2A(promedio) / 3.2A (pico)
• Resistencia de salida baja ON; 0.5Ω (típ. superior+inferior @VM≧ 5V)
• En espera (alimentación guardar)
• Modos de función CW/CCW/freno corto/parada
• Circuito de apagado térmico incorporado y circuito de detección de bajo
voltaje
• Paquete de cara pequeña (SSOP24: paso de cable de 0,65 mm)
• Respuesta al embalaje libre de Pb
Este producto tiene una estructura MOS y es sensible a las descargas electrostáticas. Al
manipular este producto, asegúrese de que el entorno esté protegido contra descargas
electrostáticas mediante el uso de una correa de tierra, una estera conductora y un
ionizador. Asegúrese también de que la temperatura ambiente y la humedad relativa se
mantengan en niveles razonables. (Toshiba Bi-CD Integrated Circuit , 2007)
Imagen 1: TB6612FMG
3.2 QTR 8ª
Los conjuntos de sensores de reflectancia Pololu QTR-8A y QTR-8RC están pensados
como sensores de línea, pero se pueden utilizar como sensores de proximidad o de
reflectancia de uso general. Cada módulo es un portador conveniente para ocho pares
de emisor y receptor de infrarrojos (fototransistor) espaciados uniformemente a intervalos
de 0,375" (9,525 mm). Todas las salidas son independientes, pero los LED están
dispuestos en pares para reducir a la mitad el consumo de corriente. Los LED están
controlados por un MOSFET con una puerta normalmente elevada, lo que permite
apagar los LED configurando la puerta MOSFET en un voltaje bajo. Apagar los LED
puede ser ventajoso para limitar el consumo de energía cuando los sensores no están
en uso o para variar el voltaje efectivo. Brillo de los LED a través del control PWM. Las
resistencias limitadoras de corriente del LED para funcionamiento a 5 V están dispuestas
en dos etapas, lo que permite una simple derivación de una etapa para permitir el
funcionamiento a 3,3 V. La corriente del LED es de aproximadamente 20-25 mA; El
consumo total de la placa es de poco menos de 100 mA.
➢ Especificaciones para el conjunto de sensores de reflectancia QTR-8x
• Dimensiones: 2,95" x 0,5"
• Voltaje de funcionamiento: 3,3-5,0 V
• Corriente de suministro: 100 mA
• Formato de salida para el QTR-8A: 8 voltajes analógicos que van desde
0 V hasta el voltaje suministrado
• Formato de salida para el QTR-8RC: 8 señales compatibles con E/S
digitales que se pueden leer como un pulso alto cronometrado
• Distancia de detección óptima: 0,125" (3 mm)
• Distancia de detección máxima recomendada para el QTR-8A: 0,25" (6
mm)
• Distancia de detección máxima recomendada para el QTR-8RC: 0,375"
(9,5 mm)
• Peso sin pasadores de cabecera: 0,11 oz (3,1 g)
Tanto el QTR-8A como el QTR-8RC tienen las mismas características físicas. Cada
conjunto mide 2,95" de largo por 0,50" de ancho y tiene un grosor máximo de
aproximadamente 0,125". Sin pasadores de cabecera, la unidad pesa 0,11 oz (3,1 g).
Los sensores de reflectancia individuales se distribuyen uniformemente en la placa a
intervalos de 0,375". ( Pololu Corporation, 2014)
Imagen 2: QTR
3.3 ARDUINO NANO
Arduino Nano es un microcontrolador compacto y versátil basado en el ATmega328P,
diseñado por Arduino para proyectos de electrónica embebida, robótica y
automatización. Es ideal para aplicaciones donde el tamaño reducido y la facilidad de
uso son cruciales, aunque no incluye conectividad inalámbrica integrada.
CPU:
• Procesador AVR de 8 bits (ATmega328P) a 16 MHz.
• Arquitectura RISC con 32 registros de propósito general.
• Soporte para modo de bajo consumo (sleep).
Memoria:
• 32 KB de memoria Flash (de los cuales ~0.5 KB se usan para el bootloader).
• 2 KB de SRAM.
• 1 KB de EEPROM para almacenamiento persistente de datos.
Conectividad:
• Comunicación serial (UART) a través de los pines D0 (RX) y D1 (TX).
• No incluye Wi-Fi ni Bluetooth integrados; se requieren módulos externos (como HC-05,
ESP-01, etc.) para conectividad inalámbrica.
• Soporte para I²C (pines A4 = SDA, A5 = SCL) y SPI (pines D11, D12, D13).
Entradas y salidas (I/O):
• 14 pines digitales (D0 a D13), de los cuales 6 pueden generar PWM (D3, D5, D6, D9,
D10, D11).
• 8 pines analógicos (A0 a A7) con conversor ADC de 10 bits (resolución de 0–5V o 0–
3.3V según configuración).
• Todos los pines digitales pueden configurarse como entrada o salida, con resistencias
de pull-up internas.
Periféricos:
• 3 temporizadores internos (Timer0, Timer1, Timer2).
• Watchdog Timer (WDT) integrado.
• No incluye DAC, sensores de temperatura, Hall effect ni capacitivos integrados.
Alimentación:
• Voltaje de operación: 5V (alimentado por USB o regulador interno).
• Rango de voltaje de entrada recomendado: 7–12V (a través del conector de
alimentación).
• Puede operar directamente con 5V desde USB o con 3.3V en modo de bajo consumo
(con limitaciones).
• Modos de ahorro: Idle, Power-down, Power-save (configurables mediante software).
Consumo de energía:
• Modo activo (funcionamiento normal): ~19 mA (sin periféricos externos).
• Modo Sleep (Power-down): ~0.36 mA (aproximadamente).
Imagen 3: ARDUINO NANO
3.4 Motores N20 con Encoder
El motor N20 con encoder Pololu es un motor de corriente continua (DC) de tipo micro
motorreductor, equipado con un encoder magnético integrado. El encoder permite medir
la velocidad y la posición del eje del motor, lo que lo hace ideal para aplicaciones que
requieren control preciso del movimiento, como robótica, vehículos autónomos y
sistemas embebidos.
Motor:
• Tipo: Motor de corriente continua (DC) con escobillas.
• Dimensiones: 10 mm x 12 mm x 26 mm (dependiendo de la versión).
• Voltaje de operación: 3V a 12V (típico 6V).
• Velocidad sin carga (6V): Varía según la relación de reducción,
típicamente entre 1000 RPM y 3000 RPM.
Encoder magnético:
• Tipo: Encoder de efecto Hall.
• Resolución: 12 pulsos por revolución del eje del motor (antes de la
reducción).
• Número de salidas: 2 (A y B), para detección de dirección (codificación
cuadratura).
Reductor (Gearbox):
• Relación de reducción: Disponible en múltiples opciones, desde 5:1 hasta
1200:1.
• Par máximo: Depende de la relación de reducción, puede alcanzar
varios kg·cm.
Corriente:
• Consumo sin carga: 40-100 mA (dependiendo de la carga y la velocidad).
• Corriente de arranque/bloqueo: Hasta 1.6 A (a 6V).
Dimensiones físicas:
• Longitud del motor con caja reductora: ~26 mm.
• Diámetro del eje de salida: 3 mm.
• Longitud del eje de salida: 10 mm (puede variar).
Control y monitoreo:
• Compatible con controladores de motor DC y microcontroladores.
• Puede utilizarse con sistemas de control en lazo cerrado para ajustar
velocidad y posición
Imagen 4: Motor y Encoder
4. Identificación de las Variables de Entrada y de Salida
El sistema del coche velocista tiene entradas y salidas que corresponden a las señales
y
magnitudes involucradas en su operación. A continuación, se describen estas variables
en
detalle:
4.1.- Variables de entrada
Son las señales o magnitudes que el sistema recibe para procesar y actuar.
4.1.1.- Señales de los sensores infrarrojos (IR):
• Variable: SIR
• Tipo: Digital o analógica.
• Descripción: Indican la posición relativa del coche respecto a la línea negra.
Los sensores proporcionan información sobre si el coche está alineado,
desviado a la izquierda o desviado a la derecha.
4.1.2.- Voltaje aplicado a los motores (PWM):
• Variable: VPWMV
• Tipo: Señal PWM.
• Descripción: Controla la velocidad y dirección de los motores. Se modula
para ajustar la potencia entregada a cada motor en función de la posición
del coche respecto a la línea.
4.1.3.- Configuración inicial del sistema:
• Variable: Configuración inicial
• Tipo: Parámetro de configuración.
• Descripción: Parámetros definidos por el usuario, como la ganancia del
controlador (por ejemplo, valores de Kp,Ki,Kd para un controlador PID).
4.2.- Variables de salida
Son las magnitudes que el sistema genera o controla como respuesta a las entradas.
4.2.1.- Velocidad de las ruedas:
• Variable: ω izquierda y ω derecha
• Unidad: Revoluciones por minuto (RPM).
• Descripción: Velocidad angular de cada motor, que determina la velocidad
lineal y la dirección del coche.
4.2.2.-Posición relativa del coche respecto a la línea:
• Variable: Posición relativa
• Unidad: Milímetros (mm) o porcentaje de desviación.
• Descripción: Diferencia entre la posición central del coche y la línea
detectada, ajustada constantemente mediante el sistema de control.
4.2.3.- Velocidad lineal del coche:
• Variable: Velocidad lineal
• Unidad: Metros por segundo (m/s).
• Descripción: La velocidad total del coche, resultante de la combinación de
las velocidades de las ruedas.
4.2.4.- Estado del sistema:
• Variable: Estado
• Tipo: Indicador lógico o numérico.
• Descripción: Representa si el coche está siguiendo la línea correctamente,
se ha desviado o está fuera de la trayectoria.
4.3.- Relación entre entradas y salidas
• Sensores IR (SIRSIR) → Determinan la desviación de la línea.
• Voltaje PWM (VPWM) → Ajusta las velocidades de los motores (ωizq, ωder)
para corregir la posición.
• Las salidas finales, como la velocidad lineal (V_lineal) y la posición relativa
(P_relativa),
son la respuesta directa del sistema al procesamiento de las entradas.
5. Modelo Matemático del Coche Velocista a Partir de Leyes Físicas
5. 1 Velocidad lineal V y Velocidad angular W
Velocidad lineal de avance de la llanta derecha
𝑣𝑑 = 𝑟 ∗ 𝑤𝑑 𝑒𝑐𝑢𝑎𝑐𝑖𝑜𝑛 5.1
Velocidad lineal de avance de la llanta izquierda
𝑣𝑖 = 𝑟 ∗ 𝑤𝑖 𝑒𝑐𝑢𝑎𝑐𝑖𝑜𝑛 5.2
Velocidad total instantánea de avance V del robot
𝑣𝑑 +𝑣𝑖 𝑟
V = = ∗ (𝑤𝑑 + 𝑤𝑖 ) 𝑒𝑐𝑢𝑎𝑐𝑖𝑜𝑛 5.1,5.2 𝑎 𝑒𝑐𝑢𝑎𝑐𝑖𝑜𝑛 5.3,5.4
2 2
Robot móvil tipo diferencial, posición (x,y)
𝑥𝑝𝑜𝑠 = 𝑥𝑜 + 𝑎 5.1
𝑦𝑝𝑜𝑠 = 𝑦𝑜 + 𝑏 5.6
𝑎 = 𝑑 ∗ cos(𝜑) 5.7
𝑏 = 𝑑 ∗ 𝑠𝑒𝑛(𝜑) 5.8
𝐷𝑖𝑠𝑡𝑎𝑛𝑐𝑖𝑎(𝑑)
𝑣𝑒𝑙𝑜𝑐𝑖𝑑𝑎𝑑 𝑉 =
𝑇𝑖𝑒𝑚𝑝𝑜(𝑡)
𝑑𝑖𝑠𝑡𝑎𝑛𝑐𝑖𝑎(𝑑) = 𝑣𝑒𝑙𝑜𝑐𝑖𝑑𝑎𝑑(𝑉) ∗ 𝑡𝑖𝑒𝑚𝑝𝑜(𝑡)
𝑉𝑑 +𝑉𝐼
𝑉= 5.9
2
𝑉𝑑 +𝑉𝐼
𝑑= ∗𝑡 5.10
2
Se remplaza ecuación 5.10 en ecuación 5.7,5.8
𝑉𝑑 +𝑉𝐼 𝑉𝑑 +𝑉𝐼
𝑎= ∗ 𝑡 ∗ cos(𝜑) 5.11 𝑏= ∗ 𝑡 ∗ 𝑠𝑒𝑛(𝜑) 5.12
2 2
Se remplaza ecuación 5.11,5.12 en 5.5,5.6
𝑉𝑑 +𝑉𝐼 𝑉𝑑 +𝑉𝐼
𝑥𝑝𝑜𝑠 = 𝑥𝑜 + ∗ 𝑡 ∗ cos(𝜑) 5.13 𝑦𝑝𝑜𝑠 = 𝑦𝑜 + ∗ 𝑡 ∗ 𝑠𝑒𝑛(𝜑) 5.14
2 2
Remplazando a velocidad lineal a velocidad angular
𝑟 (𝑤𝑑 +𝑤𝑖 ) 𝑟 (𝑤𝑑 +𝑤𝑖 )
𝑥𝑝𝑜𝑠 = 𝑥𝑜 + ∗ 𝑡 ∗ cos(𝜑) 5.15 𝑦𝑝𝑜𝑠 = 𝑦𝑜 + ∗ 𝑡 ∗ 𝑠𝑒𝑛(𝜑) 5.16
2 2
Derivamos respecto al tiempo
𝑟(𝑤𝑑 + 𝑤𝑖 )
𝑋̇ = ∗ cos(𝜑) 5.17
2
𝑟(𝑤𝑑 + 𝑤𝑖 )
𝑌̇ = ∗ 𝑠𝑒𝑛(𝜑) 5.18
2
Velocidad angular del robot
𝑣𝑑 +𝑣𝑖 𝑟(𝑤𝑑 + 𝑤𝑖 )
𝑊= =
2𝐿 2𝐿
Posición angular del robot
𝑟(𝑤𝑑 +𝑤𝑖 )
𝜑 = 𝜑0 + 𝑊 ∗ 𝑡 𝜑 = 𝜑0 + ∗𝑡
2𝐿
Derivamos respecto al tiempo
𝑟(𝑤𝑑 + 𝑤𝑖 )
𝜑̇ = 5.19
2𝐿
5.1 Modelo matemático motor
1. Realice el modelo matemático de un motor CD de imán permanente. Así mismo
obtenga las siguientes funciones de transferencia.
𝜔𝑚 (𝑠)
i. =
𝑉𝑎 (𝑠)
𝐼𝑎 (𝑠)
ii. =
𝑉𝑎 (𝑠)
𝑇𝑚 (𝑠)
iii. =
𝑉𝑎 (𝑠)
Un motor de corriente directa (CD) de imán permanente puede ser modelado
matemáticamente considerando sus componentes eléctricos y mecánicos.
Ecuación Eléctrica.
𝑑𝐼𝑎 (𝑡)
𝑉𝑎 (𝑡) = 𝐿𝑎 + 𝑅𝑎 𝐼𝑎 (𝑡) + 𝑒𝑏 (𝑡) 5.20
𝑑𝑡
Donde:
- Va(t): Voltaje aplicado al motor (V).
- Ia(t): Corriente de armadura (A).
- La: Inductancia de la armadura (H).
- Ra: Resistencia de la armadura (Ω).
- eb(t): Fuerza contraelectromotriz (V), dado por:
𝑒𝑏 (𝑡) = 𝐾𝑒 𝜔𝑚 (𝑡)
- Ke es la constante de fuerza electromotriz (V*s/rad)
- ωm(t) es la velocidad angular del motor (rad/s).
Ecuación Mecánica.
𝑑𝜔𝑚 (𝑡)
𝑇𝑚 (𝑡) = 𝐽𝑚 + 𝐵𝑚 𝜔𝑚 (𝑡) + 𝑇𝐿 (𝑡)
𝑑𝑡
Donde:
- Tm(t): Par motor (N*m).
- Jm: Momento de inercia del rotor (Kg*m2).
- Bm: Coeficiente de fricción viscosa (N*m*s/rad).
- TL(t): Par de carga (N*m), que también puede ser considerado 0 si no hay
carga.
El par del motor Tm(t) está relacionado con la corriente de armadura Ia(t) por:
𝑇𝑚 (𝑡) = 𝐾𝑇 𝐼𝑎 (𝑡)
- KT es la constante de par del motor (N*m/A)
Obtener la transformada de Laplace de la ecuación eléctrica:
𝑉𝑎 (𝑠) = (𝑅𝑎 + 𝑠𝐿𝑎 )𝐼𝑎 (𝑠) + 𝐾𝑒 𝜔𝑚 (𝑠)
Obtener la transformada de Laplace de la ecuación mecánica:
𝐾𝑇 𝐼𝑎 (𝑠) = (𝐽𝑚 𝑠 + 𝐵𝑚 )𝜔𝑚 (𝑠)
𝜔𝑚 (𝑠)
i. Función de transferencia 𝑉𝑎 (𝑠)
Despejamos Ia(s) de la ecuación mecánica.
(𝐽𝑚 𝑠 + 𝐵𝑚 )
𝐼𝑎 (𝑠) = 𝜔𝑚 (𝑠)
𝐾𝑇
Sustituimos Ia(s) en la ecuación eléctrica.
𝐾𝑒 (𝐽𝑚 𝑠 + 𝐵𝑚 )
𝑉𝑎 (𝑠) = [𝑅𝑎 + 𝑠𝐿𝑎 + ] 𝜔𝑚 (𝑠)
𝐾𝑇
Por tanto:
𝜔𝑚 (𝑠) 𝐾𝑇
=
𝑉𝑎 (𝑠) (𝐽𝑚 𝑠 + 𝐵𝑚 )(𝑅𝑎 + 𝑠𝐿𝑎 ) + 𝐾𝑒 𝐾𝑇
𝐼𝑎 (𝑠)
ii. Función de transferencia 𝑉𝑎 (𝑠)
De la ecuación eléctrica despejando Ia(s).
𝑉𝑎 (𝑠) − 𝐾𝑒 𝜔𝑚 (𝑠)
𝐼𝑎 (𝑠) =
𝑅𝑎 + 𝑠𝐿𝑎
De la ecuación mecánica despejar ωm(s).
𝐾𝑇
𝜔𝑚 (𝑠) = 𝐼 (𝑠)
(𝐽𝑚 𝑠 + 𝐵𝑚 ) 𝑎
Sustituir ωm(s) en la ecuación de Ia(s).
𝑉𝑎 (𝑠)
𝐼𝑎 (𝑠) =
𝐾𝐾
𝑅𝑎 + 𝑠𝐿𝑎 + 𝐽 𝑠𝑒+ 𝑇𝐵
𝑚 𝑚
Por tanto.
𝐼𝑎 (𝑠) (𝐽𝑚 𝑠 + 𝐵𝑚 )
=
𝑉𝑎 (𝑠) (𝐽𝑚 𝑠 + 𝐵𝑚 )(𝑅𝑎 + 𝑠𝐿𝑎 ) + 𝐾𝑒 𝐾𝑇
𝑇𝑚 (𝑠)
iii. Función de transferencia 𝑉𝑎 (𝑠)
De la ecuación.
𝑇𝑚 (𝑠) = 𝐾𝑇 𝐼𝑎 (𝑠)
Sustituir Ia(s).
(𝐽𝑚 𝑠 + 𝐵𝑚 )
𝑇𝑚 (𝑠) = 𝐾𝑇 ∗ 𝑉 (𝑠)
(𝐽𝑚 𝑠 + 𝐵𝑚 )(𝑅𝑎 + 𝑠𝐿𝑎 ) + 𝐾𝑒 𝐾𝑇 𝑎
Por tanto.
𝑇𝑚 (𝑠) 𝐾𝑇 (𝐽𝑚 𝑠 + 𝐵𝑚 )
=
𝑉𝑎 (𝑠) (𝐽𝑚 𝑠 + 𝐵𝑚 )(𝑅𝑎 + 𝑠𝐿𝑎 ) + 𝐾𝑒 𝐾𝑇
2. Realice una investigación sobre el procedimiento que se debe realizar para
determinar de forma experimental los parámetros del motor de corriente continua
de imán permanente. (Debe realizar el análisis sobre los ensayos a efectuar para
determinar cada uno de los parámetros del motor)
5.1.1 Obtención de los Parámetros del Motor Eléctrico de Imán Permanente
Resistencia de Armadura (Ra)
La resistencia de armadura (Ra) se puede determinar midiendo directamente las
terminales del motor con un óhmetro (VOM). En el caso que la resistencia tuviese un
valor pequeño que no fuera posible medir con el VOM se puede optar por cualquiera
de estos dos métodos, el primero consiste en armar un puente de Winston y mediante
la ley de Ohm determinar la resistencia del devanado de armadura. El segundo caso
es más sencillo, consiste en tomar la lectura del corriente justo cuando el motor
arranca. Es decir, Descargado por la corriente de rotor bloqueado, esta se puede
determinar introduciendo un pequeño voltaje conocido, y observar ese valor, la
corriente medida en ese punto corresponde únicamente a la resistencia del conductor
ya que todavía no se establece la fuerza contra electromotriz o contra fem, con este
valor y aplicando la ley de Ohm se establece la resistencia de armadura. (Chapman,
2012)
5.1.2 Inductancia de Armadura (La)
La inductancia de armadura al igual que la resistencia de armadura se puede
determinar directamente de las terminales del motor, esto se hace mediante un
inductámetro. En el caso de no contar con el instrumento de medición se puede
recurrir al siguiente método:
• Alimentar el motor con una fuente de voltaje alterno de frecuencia conocida (por
ejemplo, el de la línea comercial que es de 60 Hz) y con el nivel de tensión de bajo
(aproximadamente el 50 % de la tensión nominal de la máquina), medir la corriente
de armadura (La).
• Los valores de la corriente de armadura, la resistencia de armadura y la frecuencia
de la fuente de alimentación alterna se sustituyen en la siguiente expresión para
determinar la inductancia de armadura del motor.
𝑉𝑎2 2
√
𝐼𝑎 − 𝑅𝑎
𝐿𝑎 =
2𝜋𝑓
Dónde: Va corresponde al voltaje de armadura, La corriente de armadura, Ra r
resistencia de armadura, f frecuencia de la fuente de alimentación
5.1.3 Constante de Tiempo Eléctrica (te)
Una vez que se han determinado los valores de la inductancia y la resistencia del
motor es posible determinar la constante de tiempo eléctrica del motor, despejándola
de la siguiente ecuación:
𝐿𝑎 = 𝑡𝑒 ∗ 𝑅𝑎
𝐿𝑎
𝑡𝑒 =
𝑅𝑎
5.1.4 Constante Contra Electromotriz (Ke)
Cuando el motor eléctrico se encuentra en funcionamiento se genera en el
devanado una fuerza contra electromotriz a causa de las leyes de Lenz y Faraday,
(Halliday & Resnick, 2007). Cuando la intensidad del flujo magnético es constante el
voltaje inducido (Eb) es proporcional a la velocidad angular (ω) de la tal forma que se
puede expresar la constante contra electromotriz como:
𝐸𝑏 𝑉
𝐾𝑒 = =
𝑛 𝜔
𝐸𝑏 = 𝑉𝑖 − (𝐿𝑎 ∗ 𝑅𝑎 )
Para tener una constante Ke confiable se debe obtener una muestra de datos en forma
experimental. Es aconsejable tomar lectura de velocidad, corriente y voltaje de entrada
del motor, partiendo desde el voltaje necesario para que empiece a girar el motor hasta
el voltaje nominal recordando que entre más muestras obtengamos la constante será
más precisa. Con los datos recabados se realiza una regresión lineal o alguna de otro
tipo que se ajuste mejor a los datos, a fin de obtener así una constante más precisa del
sistema.
5.1.5 Constante de Torque (Kt)
El motor a través de su eje motor entrega la potencia mecánica representada por el par
torsional, mismo que se relaciona por el producto de la corriente en el devanado del rotor
y el flujo magnético en el entre hierro siendo este producto proporcional a la corriente de
campo. La siguiente expresión determina el par motriz como:
𝑇𝑚 = 𝐾𝑓 ∗ 𝐼𝑓 ∗ 𝐾𝑡 ∗ 𝐼𝑎
Debido a que el motor de estudio es de imán permanente los parámetros Kf, If y Kt se
pueden representar en una sola constante Kt, por razón de carecer de alimentación
para generar el campo magnético del estator, dando como resultado la siguiente
expresión
𝑇𝑚 = 𝐾𝑡 ∗ 𝐼𝑎
Mediante el uso de ecuaciones paramétricas es posible determinar Kt mediante la
siguiente relación
𝑁 𝑉
𝑘 𝑇 ( ) = 9.5493 ∗ 𝐾𝑒 𝐾𝑒 𝑒𝑛 ( )
𝐴 𝐾𝑅𝑃𝑀
La constante de torque se puede determinar de forma experimental utilizando para ello
una polea de radio conocido y un dinamómetro. El método consiste en colocar la polea
al eje motriz y sujetando el dinamómetro en la polea como se muestra en la figura , con
este arreglo se mide la fuerza que ejerce el motor sobre el dinamómetro cuando se le
aplica la tención nominal. Unavez que se conoce la fuerza se multiplica por el radio de la
polea y se obtiene el torque del motor. Para tener un valor confiable del par motor es
preciso recolectar una serie de datos y con ellos determinar la media de la medida del
torque motriz.
Mecánicamente el torque se determina por la expresión:
𝑇 =𝐹∗𝑟
Donde T par motriz, F fuerza, r radio de la polea.
Eléctricamente el par motriz se determina mediante la siguiente ecuación:
𝑇 = 𝐾𝑡 ∗ 𝐼𝑎
Partiendo de la condición de equilibrio del sistema mecánico se procede a igualar las dos
ecuaciones y despejar de ellas a Kt dando como resultado KT la siguiente ecuación:
𝐹∗𝑟
𝐾𝑡 =
𝐼𝑎
𝟓. 𝟏. 𝟔 𝐂𝐨𝐧𝐬𝐭𝐚𝐧𝐭𝐞 𝐝𝐞 𝐓𝐢𝐞𝐦𝐩𝐨 𝐌𝐞𝐜á𝐧𝐢𝐜𝐚 (𝐭𝐦)
De igual forma que el circuito eléctrico del motor tiene la constante de tiempo, el sistema
mecánico, también cuenta con una constante propia. Ésta determina el tiempo en que el
sistema mecánico alcanza el 63.2 % de la velocidad nominal de la máquina. Para
determinar el valor de esta constante se requiere de un osciloscopio (digital con modo
de captura de pantalla), conectado en los terminales de alimentación del motor, posterior
a esto se aplica la tensión nominal al motor y se captura la gráfica de respuesta, en ella
se determina el tiempo en que alcanza T (63.2% de la tensión). Este tiempo corresponde
a la constante mecánica tm
5.1.7 Momento de Inercia (Jm)
El momento de inercia se puede calcular de forma paramétrica con los parámetros
conocidos y calculados con antelación mediante la siguiente ecuación.
𝑡𝑚 ∗ 𝐾𝑡 ∗ 𝑘𝑒
𝐽𝑚 =
𝑅𝑎
5.1.8Corriente de Arranque del Motor (Iarr)
Se denomina corriente de arranque a la corriente necesaria para que el motor venza la
inercia mecánica. Para poder determinar esta corriente se requiere conectar un
amperímetro a la entrada de tensión. Mediante una fuente de voltaje variable, se aplica
tensión al motor, incrementando el nivel hasta que el rotor inicie su movimiento, y en ese
instante, se deja de incrementar el voltaje y se toma la lectura del amperímetro, bajo esas
condiciones, la lectura corresponde a la corriente de arranque (Iarr).
5.1.9 Torque de Fricción (Tf)
El torque de fricción corresponde al par necesario para vencer la fricción estática. La
fricción estática es una pérdida de energía originada por la inercia de la dinámica del
sistema que se presentan en las superficies de contacto originada por la carencia de
rodamientos antifricción.
El torque de fricción corresponde al producto de la constante de torque (Kt) y la
corriente de arranque (Iarr) como se observa en la siguiente ecuación:
Tf = K t ∗ Iarr
5.1.10 Constante de Fricción de Coulomb (β)
Cuando el sistema se encuentra en estado estacionario la fricción corresponde a la
fricción de Coulomb o también llamada fricción seca. Cuando el sistema alcanza la
velocidad angular nominal (ω) la aceleración decrece hasta cero lo que permite
determinar la constante de fricción (β) en el sistema.
Para el estado estable el torque del motor está definido como:
𝑇𝑚 = 𝐾𝑇 ∗ 𝐼𝑎 = 𝛽𝜔 + 𝑇𝑓
Despejando a β de la ecuación anterior de obtiene:
(𝐾𝑡 ∗ 𝐼𝑎 )
𝛽=
𝜔
Otro método para establecer el coeficiente β es mediante un análisis estadístico de
manera que es necesario realizar un gráfico (Tm – Tf) contra ω en radianes, con una
muestra de datos obtenidos experimentalmente. Una vez graficados lo valores es preciso
realizar la correspondiente regresión lineal para ajustar la recta y determinar la pendiente
de la misma ya que está corresponde al valor de la constante de fricción de Coulomb (β).
Con los parámetros aquí descritos es posible simular el comportamiento del motor de cd
de imán permanente solo basta con sustituirlos los parámetros en la ecuación de
transferencia.
5.2 Obtención del modelo de los datos experimentalmente
Parametro Simbolo VaLOR
Velocidad sin carga N no-load 6000 rpm 628,32 rad/seg
velocidad relacion 5:1 N 1500 rpm 157,08 rad/seg
Torque T stall 0.5 kg·cm (0.049 Nm)
Corriente I 1.2 A - 1.5 A
Resistencia de la bobina R 10 Ω
Inductancia de la bobina L 2 mH - 5 mH
constante de torque T 0.04 Nm/A
Momento de inercia Jm 1.5 × 10⁻⁶ kg·m²
Contante de fricción B 1 × 10⁻⁵ Nm·s/rad
Voltaje nominal V 6V
corriente armadura Ia 150 mA
Resistencia de armadura Ra 2.5 Ω
Inductancia de armadura La 1.4709 mH
frecuencia f 100 Hz
Tiempo eléctrico te 0,588 mseg
Const. Ke 0,009549 v/(rad/seg)
contraelectromotriz
Const. Torque Kt 0.0911 V/rpm
5.3 Obtención de la planta motor
𝜃𝑆 𝐾𝑡
=
𝑉𝑆 𝐽𝑚 𝐿𝑠 2 + (𝐽𝑚 𝑅 + 𝛽𝐿)𝑠 + (𝛽𝑅 + 𝐾𝑒 𝐾𝑡 )
𝜃𝑆 0.009549
=
𝑉𝑆 2.20𝑥10−9 𝑠 2 + 3.766𝑥10−6 𝑠 + 8.9491𝑥10−4
6. calibración de los sensores de velocidad y de posición
Para seguir la línea de referencia en el circuito de velocidad, el robot utiliza sensores IR
en la parte frontal para medir la distancia desde la nariz hasta la línea. Aunque a veces
la información de posición se complementa con sensores adicionales, como unidades de
medida inercial IMU, codificadores o cámaras digitales, los robots seguidores de línea
para competencias de velocidad generalmente solo tienen sensores de IR dada su rápida
respuesta. La imagen muestra las señales de voltaje de salida para un fondo blanco y
negro con dos distancias de medición diferentes en un disco giratorio a 3000
revoluciones por minuto RPM. El disco usado tenía media parte en blanco y la otra en
color negro para un ciclo de trabajo del cincuenta por ciento en la señal de voltaje de
salida. El tiempo alto de la señal corresponde con la detección de la parte negra y el
tiempo bajo corresponde con la detección de la parte blanca. Por lo tanto, la respuesta
de voltaje para cada sensor depende tanto de la distancia desde el sensor a la superficie
como del color de la superficie.
En el caso más común, se usa una serie de ocho sensores con respuestas analógicas
por cada IR. Para este propósito, la salida de esta matriz de sensores se digitaliza
mediante un convertidor analógico a digital (ADC) de 10 bits en los microcontroladores
para un total de ocho valores digitales con un rango de 0 a 1023. La medición del vector
de sensores se denota como m y la posición como p.
Imagen 5 Respuesta del sensor IR ante un disco giratorio a una distancia de 3mm (derecha) y 10mm
(izquierda). Fuente: [Link]
En la mayoría de los trabajos realizados en la estimación de la posición de los robots
seguidores de línea, las respuestas de los sensores se binarízan para obtener valores
booleanos para la detección de línea verdadero-positivo y verdadero-falso. Por lo tanto,
la resolución de la medición de posición es igual a la distancia entre cada sensor. Sin
embargo, esta estimación deficiente refleja un efecto de oscilación alrededor de la franja
de línea y no puede funcionar a altas velocidades debido a su baja resolución en la salida
de control. En etapas previas, el valor analógico entre un negro puro y un blanco puro se
consideró como ruido y los desarrolladores lo eliminaron para refinar la detección
booleana; pero al final, se comprendió con el tiempo que dentro de ese "ruido" era
información valiosa sobre la distancia de la línea. El enfoque de esta sección es utilizar
esa información y combinar cada salida de fototransistor para aumentar la resolución de
medición y mejorar así el rendimiento de seguimiento de línea. En el caso más común,
se usa una serie de ocho sensores con respuestas analógicas por cada IR. Para este
propósito, la salida de esta matriz de sensores se digitaliza mediante un convertidor
analógico a digital (ADC) de 10 bits en los microcontroladores para un total de ocho
valores digitales con un rango de 0 a 1023. La medición del vector de sensores se denota
como m (ver Ecuación (6.1)) y la posición como p, (ver Ecuación (6.2)).
𝑚 = [𝑚1, 𝑚2, … , 𝑚8] 6.1
𝑝 = [𝑝1, 𝑝2, … , 𝑝8] 6.2
Como se muestra en la imagen 6 ,sensor situado más a la izquierda p1 se encuentra a
aproximadamente 35 mm del centro de la matriz de sensores y la distancia entre cada
sensor es de 10 mm, entonces p:
𝑝 = [−35, −25, −15, −5, 5, 15, 25, 35 ] 6.3
El ancho de la franja de línea es de 19 ± 1 mm y la referencia para garantizar el
seguimiento de línea es la mitad de la matriz de sensores. El primer problema con la
matriz de es la diferencia entre las respuestas del fototransistor para la misma superficie
dadas las inclinaciones del robot o la tolerancia de los dispositivos electrónicos.
Imagen 6 Dimensiones matriz de sensores
Una solución práctica para reducir esta diferencia es un proceso de calibración antes de
la estimación de la posición basada en la respuesta mínima (fondo blanco) y la respuesta
máxima (fondo negro) para cada fototransistor. Al usar la ecuación (6.4), las respuestas
normalizadas se obtienen con valores de 0 a [Link] S es el vector de sensor
normalizado, los vectores de máximos y mínimos se denotan como:
𝑚−𝑚𝑀𝐼𝑁
𝑆=𝑚 ∗ 1000 6.4
𝑚𝑎𝑥 −𝑚𝑚𝑖𝑛
Donde S es el vector de sensor normalizado, los vectores de máximos y mínimos se
denotan como:
𝑚𝑚𝑖𝑛 = [𝑚𝑚𝑖𝑛1, 𝑚𝑚𝑖𝑛2, … , 𝑚𝑚𝑖𝑛8] 6.5
𝑚𝑚𝑎𝑥 = [𝑚𝑚𝑎𝑥1, 𝑚𝑚𝑎𝑥2,… , 𝑚𝑚𝑎𝑥8] 6.6
Con una superficie iluminada uniforme, la salida discreta de la matriz de sensores de
línea puede ajustarse como una distribución normal, en un caso ideal, donde el centro
del robot corresponde con la mitad de la franja de líneas. Existen muchas técnicas para
calcular la posición del robot con respecto a la mitad de la franja de línea al mezclar las
salidas de la matriz de sensores. En este proyecto, se usa una matriz de sensores con 8
sensores IR para estimar esta distancia de acuerdo con cada señal analógica y sus
posiciones locales. Para la fusión de datos, asumimos que los valores para la posición
local de los sensores están en un intervalo [-35,35]mm. Además, consideramos los pesos
positivos dentro de la siguiente función de promedio ponderado basada en la media de
Bajraktarevic, llamada función de mezcla:
Imagen 7 Angulo de desviacion
−35𝑠0 − 25 𝑠1 − 15𝑠2 − 5𝑠3 + 5𝑠4 + 15𝑠5 + 25𝑠6 + 35𝑠7
𝛼= 6.7
𝑆0 + 𝑆1 + 𝑆2 + 𝑆3 + 𝑆4 + 𝑆5 + 𝑆6 + 𝑆7
La Imagen 8 muestra una validación experimental de la estimación de la posición con
respecto a 72 mediciones manuales con un total de 72x8 muestras digitales en una
evaluación de rango [-35,35] mm, el error cuadrático medio obtenido presentó un valor
aceptable para la aplicación de aproximadamente 6,5 mm que incluye tanto el error de
medición como el de estimación.
Imagen 8 Calibracion de sensor qtr8A
6. Calibración de los sensores de velocidad y posición
6.1 Calibración de los sensores de velocidad.
El sensor que se utiliza es un encoder de efecto hall, es decir que se tiene un imán
giratorio este acoplado al eje del motor, este imán contiene un patrón de polos
magnéticos distribuidos uniformemente y al girar los sensores de efecto hall detectan
los cambios en el campo magnético generados por los polos. Por cada cambio el
sensor produce un pulso eléctrico con el cual podemos calcular la velocidad.
Se debe tomar en cuenta que cada vuelta que cada vuelta del eje son 12 pulsos que
genera el encoder, también se debe tomar en cuenta que la caja reductora que se
utiliza es de 4.995:1, por tanto, cada 60 pulsos aproximadamente tenemos una vuelta
en la rueda.
En el programa Simulink de Matlab, utilizamos este dato para poder convertir los pulsos
generados por el encoder a RPM de la rueda.
6.2 Calibración de los sensores de posición.
Para la posición del autito se utiliza el sensor QTR-8, este sensor es analógico y de
este sensor obtenemos lo que es el SET POINT.
El QTR-8 consta de 8 sensores infrarrojos que toman valores analógicos en un rango
de 1-4096, este valor esta dado por el microcontrolador que se utiliza ESP32 WROOM,
el cual tiene un conversor analógico digital de 12 bits, al realizar pruebas de este
sensor da valores de 1-1500 cuando detecta blanco y 3000-4096 cuando detecta la
línea negra.
Estos valores nos ayudan a calcular el umbral para poder digitalizar los sensores, para
calcular el umbral sumamos ambos valores y los dividimos en 2.
1485 + 4095
𝑢𝑚𝑏𝑟𝑎𝑙 = = 2790
2
Al obtener este dato se realiza una comparación, por tanto, si es menor que el valor del
umbral el sensor esta detectando blanco y si es mayor esta detectando negro, de esta
manera se obtiene los valores digitales 0 (blanco) y 1 (negro).
Para poder saber el lugar de cada sensor, se les asigna valores específicos de la
siguiente manera.
IZQUIERDA MEDIO DERECHA
Sensor Sensor Sensor Sensor Sensor Sensor Sensor Sensor
1 2 3 4 5 6 7 8
100 200 300 400 500 600 700 800
Como se sabe el auto debe estar siempre al medio por tanto el SET POINT se calcula
sumando los valores del medio y dividiendo 2.
400 + 500
𝑆𝐸𝑇 𝑃𝑂𝐼𝑁𝑇 = = 450
2
Para que el sensor nos de la posición del autito, se realiza la siguiente operación:
Σ(𝑠𝑒𝑛𝑠𝑜𝑟(𝑛) ∗ 𝑣𝑎𝑙𝑜𝑟 𝑑𝑖𝑔𝑖𝑡𝑎𝑙(𝑛))
𝑉𝑎𝑙𝑜𝑟 𝑆𝑒𝑛𝑠𝑜𝑟 =
Σ(𝑣𝑎𝑙𝑜𝑟 𝑑𝑖𝑔𝑖𝑡𝑎𝑙(𝑛))
Donde: n=1,2,3,4,5,6,7,8.
7. Modelo matemático del coche velocista a partir de la aplicación de señales de
prueba estándar
Parámetros de motor DC de imán Permanente
Parámetro Símbolo Valor Unidad
Momento de inercia J 0.000005484 Kg*m2
Constante de Fricción B 0.000004942 N*m*s/rad
Constante de Fuerza Electromotriz Ke o Ka 0.01779 V*s/rad
Constante de Par del Motor Kt o Km 0.01779 N*m/A
Resistencia de Armadura R 12 Ohmios
Imagen 17 Planta de coche
Imagen 19 modelo del motor
Imagen 18 aplicación de una entrada escalón a la planta
Imagen 19 Escalón unitario motor
8. Determinación de los diferentes parámetros de la planta:}
8. 1 Planta en función s
288.200
Gs =
1.708𝑥10−8 𝑠 4 + 45.500𝑥10−5 𝑠 3 + 0.5643𝑠 2
8.2 constante de tiempo T
Pasos para obtener los polos y ceros:
1. Ceros: El numerador es una constante 286.200, por lo que no tiene ceros (ya
que no hay ninguna s en el numerador).
2. Polos: Los polos son las raíces del denominador. El denominador es un
polinomio de cuarto grado en s:
1.708𝑥10−8 𝑠 4 + 45.500𝑥10−5 𝑠 3 + 0.5643𝑠 2
𝑠1 = −25263.78 𝑠2 = −1317.02 𝑠3 = 0 𝑠4 = 0
8.3 Constante de tiempo 𝝉
La constante de tiempo (τ) se asocia generalmente con el polo de menor valor absoluto
(el de mayor parte real negativa). En este caso, el polo de menor valor absoluto es
𝑠2 = −1317.02, por lo que la constante de tiempo será:
1 1
𝜏≈ = ≈ 0.00789 ≈ 0.01
|𝑠2 | 1317.02
8.4 Ganancia de corriente directa (k)
La ganancia de corriente directa (k) está relacionada con la constante del numerador,
que es 286.200. Por lo tanto, la ganancia de corriente directa es simplemente:
k = 286.200
9. Simulación del modelo matemático a través de Matlab/Simulink:
Planta sin retroalimentar
Grafica osciloscopio
Grafica de retroalimentación
11 función de transferencia de la velocidad respecto al voltaje de entrada
𝐾
𝐺(𝑚𝑜𝑡𝑜𝑟)𝑠 =
(𝐿𝑎 + 𝑅𝑎 )(𝐽𝑠 + 𝑏) + 𝑘 2
11.1 Modelo Eléctrico
El modelo eléctrico del motor DC está descrito por la siguiente ecuación:
𝑑𝑖(𝑠)
𝑉𝑚 (𝑠) = 𝐿 ∗ + 𝑅 ∗ 𝑖(𝑠) + 𝑒(𝑠)
𝑑𝑡
Donde:
• 𝑉𝑚 (𝑠) es el voltaje de entrada al motor en el dominio de Laplace.
• 𝑖(𝑠) +es la corriente del motor en el dominio de Laplace.
• L es la inductancia del motor.
• R es la resistencia del motor.
• 𝑒(𝑠)es la fuerza electromotriz (FEM) generada por el motor, que está
relacionada con la velocidad angular 𝜔(𝑠) del motor:
𝑒(𝑠) = 𝑘𝑒 ∗ 𝜔(𝑠)
11.2. Modelo Mecánico
El modelo mecánico del motor está dado por:
𝑑𝑤(𝑠)
𝐽∗ + 𝑏 ∗ 𝜔(𝑠) = 𝑇(𝑠)
𝑑𝑡
Donde:
• J es el momento de inercia del rotor.
• B es el coeficiente de fricción viscosa.
• T(s) es el torque producido por el motor, que está relacionado con la corriente
i(s)i(s)i(s) de la siguiente manera
𝑇(𝑠) = 𝑘𝑚 ∗ 𝑖(𝑠)
11.3 Combinando ecuaciones
Ahora tenemos dos ecuaciones que describen el sistema:
1. La ecuación eléctrica:
𝑑𝑖(𝑠)
𝑉𝑚 (𝑠) = 𝐿 ∗ + 𝑅 ∗ 𝑖(𝑠) + 𝑘𝑒 ∗ 𝜔(𝑠)
𝑑𝑡
2. La ecuación mecánica:
𝑑𝜔(𝑠)
𝐽∗ + 𝑏 ∗ 𝜔(𝑠) = 𝑘𝑚 ∗ 𝑖(𝑠)
𝑑𝑡
𝜔(𝑠)
El objetivo es encontrar la función de transferencia 𝐺(𝑠) = 𝑉 es decir, la relación
𝑚 (𝑠)
entre la velocidad angular del motor y el voltaje de entrada.
11.4 Transformada de planta
Primero, convertimos las ecuaciones al dominio de Laplace:
1. Para la ecuación eléctrica:
𝑉𝑖𝑛 (𝑠) = 𝐿 ∗ 𝑠 ∗ 𝑖(𝑠) + 𝑅 ∗ 𝑖(𝑠) + 𝑘𝑒 ∗ 𝜔(𝑠)
2. Para la ecuación mecánica:
𝐽 ∗ 𝑠 ∗ 𝜔(𝑠) + 𝑏 ∗ 𝜔(𝑠) = 𝑘𝑚 ∗ 𝑖(𝑠)
11.5 Resolver para 𝝎(𝒔)
Despejamos i(s) de la ecuación eléctrica:
𝑉𝑚 (𝑠) − 𝑘𝑒 ∗ 𝜔(𝑠)
𝑖(𝑠) =
𝐿∗𝑠+𝑅
Sustituimos esta expresión de i(s) en la ecuación mecánica:
𝑉𝑖𝑛 (𝑠) − 𝑘𝑒 ∗ 𝜔(𝑠)
𝐽 ∗ 𝑠 ∗ 𝜔(𝑠) + 𝑏 ∗ 𝜔(𝑠) = 𝑘𝑚 ∗ ( )
𝐿∗𝑠+𝑅
11.6 Simplificar y obtener la función de transferencia
Ahora, despejamos ω(s)\omega(s)ω(s) para obtener la función de transferencia:
𝑘𝑚 ∗ 𝑘𝑒
𝜔(𝑠) ∗ (𝐽 ∗ 𝑠 + 𝑏 + = 𝑘𝑚 ∗ 𝑉𝑖𝑛 (𝑠)
𝐿∗𝑠+𝑅
Finalmente, la función de transferencia es:
𝜔(𝑠) 𝑘𝑚
𝐺(𝑠) = =
𝑉𝑚 (𝑠) (𝐽 ∗ 𝑠 + 𝑏)(𝐿 ∗ 𝑠 + 𝑅) + 𝑘𝑚 ∗ 𝑘𝑒
• km: Constante de torque a corriente. 0.0717 Nm/A
• ke: Constante de voltaje a velocidad (retroalimentación electromagnética). 0.047
• L: Inductancia del motor. 1.708 mH
• R; Resistencia del motor. 5.4 ohm
• J: Momento de inercia del rotor.1x10^-5
• b: Coeficiente de fricción viscosa. 1.37x10^-7
𝜔(𝑠) 0.0717
𝐺(𝑠) = =
𝑉𝑚 (𝑠) (1 ∗ 10−5 𝑠 + 1.37 ∗ 10−7 ) (1,708 ∗ 10−3 𝑠 + 5.4) + 3.3699 ∗ 10−3
12. Selección del periodo de muestreo
Criterios para Seleccionar Ts:
1. Frecuencia de corte: El tiempo de muestreo debe ser al menos 10 veces menor
que el período de la frecuencia más alta relevante en la dinámica del sistema.
1
𝑇𝑠 ≤
10𝑓𝑐
donde 𝑓𝑐 es la frecuencia de corte en Hz.
2. Constante de tiempo dominante: Relaciona el tiempo de muestreo con la
constante de tiempo dominante (τ) del sistema:
𝜏
𝑇𝑠 ≤
10
3. Regla de Nyquist: Basada en la frecuencia máxima del sistema (𝑓𝑚𝑎𝑥 )
1
𝑇𝑠 =
2𝑓𝑚𝑎𝑥
Parámetros de tu Sistema:
• Constante de tiempo: 𝜏 = 0.00789
1 1
• Frecuencia de corte: 𝑓𝑐 = 2𝜋𝑟 = 2𝜋0.00789 ≈ 20.17 𝐻𝑧
Usando las reglas anteriores:
0.00789
1. 𝑇𝑠 ≤ = 7.89 ∗ 10−4 𝑠𝑒𝑔
10
1
2. 𝑇𝑠 ≤ 10∗20.17 = 4.957 ∗ 10−3 𝑠𝑒𝑔
1
3. Para Nyquist 𝑇𝑠 ≤ = 0.0247 𝑠𝑒𝑔
2∗20.17
Selección Final:
Un sería ideal para capturar adecuadamente las dinámicas del sistema sin
comprometer la estabilidad.
13. Obtención de la función de transferencia pulso
Función de transferencia discreta
14. Lugar geométrico de las raíces del sistema discreto
s = tf( 's' );
Gs = (286.200)/((3.518e-6*s^4 +1.117e-5*s^3 +117.06*s^2));
Ts =0.0247 ;
Gz = c2d(Gs,Ts, 'zoh' )
rlocus (Gz)
Tipo de sistema
• La gráfica muestra el lugar geométrico de las raíces para un sistema con 2
polos y 1 cero, típicamente de segundo orden.
• Tipo de sistema: Sistema de lazo cerrado con respuesta oscilatoria debido a
los polos complejos conjugados.
• El comportamiento oscilatorio es evidente porque las ramas del LGR se
extienden hacia el eje imaginario.
Comportamiento sistema
• Estabilidad:
o El sistema tiene polos en el lado derecho del eje real en algunas partes
del recorrido, lo que indica que en ciertos valores del parámetro de
ganancia K, el sistema puede ser inestable.
o Para valores bajos de K, las raíces permanecen en el lado izquierdo, lo
cual indica estabilidad asintótica.
• El sistema es subamortiguado porque sus polos son complejos conjugados, lo
que genera oscilaciones en la respuesta del sistema
15 Análisis del sistema discreto mediante los diagramas de Bode
1. Datos Clave del Diagrama de Bode
De la gráfica proporcionada, podemos observar lo siguiente:
Magnitud (dB)
• En la parte superior, el diagrama de magnitud muestra el comportamiento del
sistema en función de la frecuencia.
• El sistema muestra una pendiente negativa con caída aproximada de -20
dB/década, lo que sugiere que tiene un polo dominante.
• Frecuencia de corte (ωc): La frecuencia donde la magnitud cae a -3 dB
(aproximadamente entre 10^2 rad/s).
Fase (deg)
• En la parte inferior, el diagrama de fase presenta una caída gradual.
• La fase inicia cerca de -180° y continúa descendiendo hacia -270°, indicando que
existe al menos un polo adicional contribuyendo a la fase.
2. Parámetros Esenciales para la Sintonización PID
Para sintonizar un controlador PID, utilizamos los siguientes parámetros del diagrama de
Bode:
a) Frecuencia de Ganancia Cruzada (ωgc)
• Es la frecuencia donde la magnitud es 0 dB (ganancia unitaria).
• En este caso, no parece haber una ganancia cruzada a 0 dB directamente, lo que
indica que el sistema es de ganancia baja.
b) Margen de Fase (PM)
• El margen de fase es la diferencia entre la fase del sistema y -180° en la frecuencia
de cruce de ganancia.
• Observando la gráfica, la fase está cerca de -200° a -270°, por lo que el margen
de fase es reducido, indicando un sistema poco amortiguado o con
comportamiento oscilatorio.
c) Margen de Ganancia (GM)
• El margen de ganancia se mide cuando la fase alcanza -180° y determina cuánta
ganancia se puede añadir antes de que el sistema sea inestable.
d) Frecuencia de Corte (ωc)
• Aproximadamente ωc≈102\omega_c 10^2ωc≈102 rad/s.
• Esta frecuencia es crítica porque determina la velocidad de respuesta del sistema.
16. Sistema de control en cascada
Tenemos las ecuaciones en Laplace de la velocidad de los motores y un bloque de
diagrama de bloques de las ecuaciones de posición del auto.
17 realimentación de la velocidad (lazo interno):
18. Realimentación de la posición (lazo externo)
19. El controlador PID digital
PID en Tiempo Continuo
La función de transferencia de un controlador PID en el dominio sss (tiempo continuo)
es:
𝐾𝑖
𝐶(𝑠) = 𝐾𝑝 + +𝐾𝑑 𝑠
𝑠
Reescribiendo la ecuación en una sola fracción:
𝑲𝒅 𝒔𝟐 + 𝑲𝒑 𝒔 + 𝑲𝒊
𝐶(𝑠) =
𝒔
2. Transformada Bilineal (Método Tustin)
La transformada bilineal aproxima s en términos de z (dominio discreto) mediante la
siguiente relación:
𝟐 𝟏−𝒁−𝟏
𝒔 ≈ 𝑻 ∗ 𝟏+𝒁−𝟏
donde T es el período de muestreo.
Sustituyendo sss en la función de transferencia del PID:
𝟐 𝟏−𝒁−𝟏
1. 𝒔 ≈ 𝑻 ∗ 𝟏+𝒁−𝟏
𝟐
𝟐 𝟏−𝒁−𝟏
2. 𝒔𝟐 ≈ (𝑻 ∗ 𝟏+𝒁−𝟏 )
3. Sustitución del PID en Términos de z
Reemplazamos cada término de s en la ecuación
𝑲𝒅 𝒔𝟐 + 𝑲𝒑 𝒔 + 𝑲𝒊
𝐶(𝑠) =
𝒔
1. Término proporcional (Kp):
No depende de s, por lo que permanece igual.
𝐾𝑖
2. Término integral :
𝑠
𝟐 𝟏−𝒁−𝟏
Sustituyendo 𝒔 ≈ ∗
𝑻 𝟏+𝒁−𝟏
1 𝑇 1 + 𝑧 −1
≈
𝑠 2 1 − 𝑧 −1
Por lo tanto:
𝐾𝑖 𝑇 1+𝑧 −1
≈ 𝐾𝑖 2 1−𝑧 −1
𝑠
3. Término derivativo 𝐾𝑑 :
𝟐 𝟏−𝒁−𝟏
Sustituyendo 𝑠 ≈ 𝑻 ∗ 𝟏+𝒁−𝟏
𝟐 𝟏 − 𝒁−𝟏
𝑠≈ ∗
𝑻 𝟏 + 𝒁−𝟏
Por lo tanto:
𝟐 𝟏 − 𝒁−𝟏
𝐾𝑑 𝑠 ≈ 𝐾𝑑 ∗
𝑻 𝟏 + 𝒁−𝟏
4. Término completo del PID:
Sustituyendo los tres términos en C(s)C(s)C(s):
𝑇 1+𝑧 −1 𝟐 𝟏−𝒁−𝟏
𝐶(𝑧) ≈ 𝐾𝑝 + 𝐾𝑖 2 1−𝑧 −1 + 𝐾𝑑 𝑻 ∗ 𝟏+𝒁−𝟏
4. Forma General en el Dominio z
Combinando todos los términos sobre un denominador común:
2 𝑇
(𝐾𝑑 ) (1 − 𝑧 −1 )2 + 𝐾𝑝 (1 − 𝑧 −1 )(1 + 𝑧 −1 ) + 𝐾𝑖 2 (1 + 𝑧 −1 )2
𝐶(𝑧) ≈ 𝑇
(1 − 𝑧 −1 )(1 + 𝑧 −1 )
Simplificando algebraicamente, obtenemos la forma del controlador PID en el dominio
discreto:
𝑏0 + 𝑏1 𝑧 −1 + 𝑏2 𝑧 −2
𝐶(𝑧) =
1 − 𝑧 −1
donde los coeficientes b0,b1,b2 dependen de 𝐾𝑝 , 𝐾𝑖 , 𝐾𝑑 𝑦 𝑇
20 sintonización del PID digital mediante métodos heurísticos:
Sistema retroalimentado plano z
Control
% Conversión de PID analógico a digital usando la Transformada Bilineal
% Datos del controlador PID analógico
Kp = 0.65; % Ganancia proporcional
Ti = 0.325; % Tiempo integral (segundos)
Td = 5.2; % Tiempo derivativo (segundos)
T = 0.0297; % Período de muestreo (segundos)
Tf = 0.01; % Constante de tiempo del filtro derivativo
% Coeficientes del controlador PID en continuo
Ki = Kp / Ti; % Ganancia integral
Kd = Kp * Td; % Ganancia derivativa
% Operador en continuo
s = tf('s');
% Agregar un filtro al término derivativo (para evitar sistema impropio)
C_s = Kp + Ki/s + (Kd * s) / (Tf * s + 1);
disp('Controlador PID en dominio continuo (con filtro):');
C_s
% Transformación a dominio discreto
C_z = c2d(C_s, T, 'tustin');
disp('Controlador PID en dominio discreto:');
C_z
% Visualización de la respuesta en Bode
figure;
bode(C_s); hold on;
bode(C_z);
legend('PID Analógico', 'PID Digital');
title('Diagrama de Bode: PID Analógico vs PID Digital');
% Visualización en el dominio del tiempo (respuesta escalón)
figure;
step(C_s, 'b', C_z, 'r--');
legend('PID Analógico', 'PID Digital');
title('Respuesta Escalón: PID Analógico vs PID Digital');
21 sintonización del PID digital mediante el método del lugar geométrico de las
raíces:
El método LGR es una técnica gráfica que permite analizar cómo se mueven los polos
de un sistema en lazo cerrado (y, por tanto, su estabilidad y respuesta) a medida que
varía la ganancia del controlador.
Para un sistema digital, el análisis se realiza en el Plano Z, no en el Plano S. La
principal condición de estabilidad es que todos los polos del sistema en lazo cerrado
deben permanecer dentro del círculo unitario.
El proceso en MATLAB implica:
Código de ejemplo en MATLAB:
% --- Sintonización LGR en el Plano Z ---
% 1. Definir la planta continua G(s) (usar tu modelo)
s = tf('s');
G_continuo = 1 / (s^2 + 3*s + 2); % Ejemplo, reemplazar con tu planta
% 2. Definir tiempo de muestreo (Ts)
Ts = 0.1;
% 3. Discretizar la planta
G_discreto = c2d(G_continuo, Ts, 'tustin');
% 4. Definir el controlador PID C(z)
% (Estos valores de Kp, Ki, Kd son los que se ajustan)
Kp = 1;
Ki = 1;
Kd = 1;
C_pid = pid(Kp, Ki, Kd, 'Ts', Ts, 'if', 'none', 'df', 'none');
% 5. Obtener el lazo abierto L(z)
L_abierto = G_discreto * C_pid;
% 6. Graficar el LGR
figure;
rlocus(L_abierto);
title('Lugar Geométrico de las Raíces (Plano Z)');
xlabel('Parte Real (z)');
ylabel('Parte Imaginaria (z)');
% El círculo unitario se dibuja para referencia de estabilidad
zgrid;
22 especificaciones de control en el dominio del tiempo
Estas especificaciones son métricas clave que cuantifican la calidad de la respuesta de
un sistema en lazo cerrado, generalmente ante una entrada de tipo escalón (un cambio
súbito en la referencia).
• Estabilidad: El requisito más importante. La salida del sistema debe converger a
un valor finito y estable, sin oscilaciones perpetuas o crecientes.
• Error en Estado Estacionario ( ): La diferencia entre el valor deseado (referencia)
y el valor real de la salida una vez que el sistema se ha estabilizado . Un buen
controlador busca algo que la acción integral (Ki) ayuda a lograr.
• Sobre impulso Máximo (Mp): El valor pico máximo de la respuesta por encima
del valor final, expresado como porcentaje. Un Mp alto indica baja estabilidad y
puede ser indeseable. La acción derivativa (Kd) ayuda a reducirlo.
• Tiempo de Establecimiento (Ts): El tiempo que tarda la respuesta en entrar y
permanecer dentro de una banda de tolerancia (generalmente 2% o 5%) alrededor del
valor final. Mide cuán rápido el sistema se "calma".
• Tiempo de Subida (Tr): El tiempo que tarda la respuesta en ir del 10% al 90% de su
valor final. Mide la rapidez de la respuesta inicial del sistema.
23 sintonización del PID mediante el método de la respuesta en frecuencia
Este método utiliza herramientas como el Diagrama de Bode para sintonizar el
controlador. En lugar de observar la respuesta al escalón (tiempo), se analiza la
respuesta del sistema a señales sinusoidales de diferentes frecuencias.
El objetivo es ajustar las ganancias Kp, Ki y Kd para "moldear" la respuesta en frecuencia
del lazo abierto L(z) = C(z)*G(z) y así garantizar un buen desempeño del lazo cerrado.
Las métricas clave son:
• Margen de Ganancia (Gm): Mide cuánto se puede aumentar la ganancia (Kp)
antes de que el sistema se vuelva inestable. Se mide en la frecuencia donde la
fase es -180°. Un Gm deseable es menor o igual a 6 dB
• Margen de Fase (Pm): Mide cuánta "reserva" de fase (o tolerancia al retraso)
tiene el sistema antes de volverse inestable. Se mide en la frecuencia donde la
ganancia es 0 dB. Un Pm deseable es un menor o igual a 45 Un Pm bajo indica
una respuesta oscilatoria.
Efectos de las ganancias en el Diagrama de Bode:
• Kp: Eleva la curva de magnitud, aumentando la frecuencia de cruce (haciendo el
sistema más rápido) pero reduciendo el margen de fase (haciéndolo más
inestable).
• Ki: Aumenta la ganancia en bajas frecuencias (eliminando ) pero reduce el
margen de fase.
• Kd: Aumenta la fase en altas frecuencias, mejorando el margen de fase. Esto
permite usar un Kp más alto, logrando un sistema rápido y estable.
24 especificaciones de control en el dominio de la frecuencia
Estas especificaciones describen el rendimiento del sistema en lazo cerrado ($T(z)$)
analizando su respuesta en frecuencia.
• Ancho de Banda (Bandwidth): Es el rango de frecuencias en el que el sistema
responde eficazmente. Técnicamente, es la frecuencia en la que la ganancia del
lazo cerrado cae a -3 dB (o 0.707) de su valor de baja frecuencia. Un ancho de
banda mayor generalmente implica un tiempo de subida (Tr) más rápido.
• Pico de Resonancia (Mr): Es el valor máximo (pico) de la magnitud en el
diagrama de Bode del lazo cerrado.
• Frecuencia de Resonancia (Wr): Es la frecuencia a la que ocurre el Mr
Tanto Mr como Wr están directamente relacionados con el sobre impulso (Mp) y el
amortiguamiento del sistema. Un pico Mr alto sugiere una respuesta en el tiempo muy
oscilatoria (alto Mp).
25 simulación de cada uno de los controladores mediante Matlab/Simulink
La simulación es un paso indispensable para validar el diseño del controlador antes de
implementarlo en el hardware (Arduino). Permite probar diferentes sintonizaciones de
forma rápida y segura, y verificar si se cumplen las especificaciones de diseño.
Se utiliza un modelo de la planta (obtenido en secciones anteriores) y se construye el
sistema de control en lazo cerrado.
% --- Simulación de Control en Cascada ---
clc; clear all;
s = tf('s');
% 1. Definir la Planta (ej. motor simplificado)
% G con la función de transferencia del motor
G_motor = 1 / (s * (0.5*s + 1));
% 2. Lazo Interno (Controlador de Velocidad, C1)
% Sintonizado para ser rápido
Kp_vel = 5; Ki_vel = 2; Kd_vel = 0.5;
C1 = pid(Kp_vel, Ki_vel, Kd_vel);
% Lazo interno cerrado (esto es G1)
G1 = feedback(C1 * G_motor, 1);
% 3. Lazo Externo (Controlador de Posición, C2)
% El lazo externo controla G1 y un integrador (1/s) para la posición
Kp_pos = 2; Ki_pos = 1; Kd_pos = 0.1;
C2 = pid(Kp_pos, Ki_pos, Kd_pos);
% Sistema total en lazo cerrado
% La "planta" para C2 es G1/s (posición)
G_total = feedback(C2 * (G1/s), 1);
% 4. Simular la respuesta al escalón
figure;
step(G_total);
title('Respuesta del Sistema en Cascada (Posición)');
grid on;
26 cálculo del índice de desempeño de los controladores
% --- Cálculo de Índices de Desempeño ---
% Asumimos que 'G_total' es el sistema en lazo cerrado
[y, t] = step(G_total); % Obtener la respuesta al escalón
% Calcular el error (Referencia = 1)
e = 1 - y;
% Calcular índices
IAE = trapz(t, abs(e));
ISE = trapz(t, e.^2);
ITAE = trapz(t, t.*abs(e));
% Mostrar resultados
fprintf('IAE: %f\n', IAE);
fprintf('ISE: %f\n', ISE);
fprintf('ITAE: %f\n', ITAE);
27 implementación del PID digital
// Constantes del PID
float Kp = 2.0;
float Ki = 1.0;
float Kd = 0.5;
float Ts = 0.01; // 10 ms
// Variables del PID
float error = 0, error_prev = 0, error_prev2 = 0;
float control = 0, control_prev = 0;
// Coeficientes precalculados (en setup() o al inicio)
float a0 = Kp * (1 + Ts*Ki + Kd/Ts);
float a1 = -Kp * (1 + 2*Kd/Ts);
float a2 = Kp * (Kd/Ts);
void loop() {
static unsigned long t_prev = 0;
unsigned long t_now = millis();
// Bucle de control temporizado
if (t_now - t_prev >= (Ts * 1000)) {
t_prev = t_now;
// 1. Leer sensor y calcular error
float referencia = 100.0;
float medicion = leerSensor();
error = referencia - medicion;
// 2. Cálculo PID incremental
control = control_prev + a0*error + a1*error_prev + a2*error_prev2;
// 3. Saturación (Anti-Windup)
control = constrain(control, 0, 255); // Para PWM
// 4. Aplicar al actuador
analogWrite(9, (int)control);
// 5. Actualizar variables
control_prev = control;
error_prev2 = error_prev;
error_prev = error;
}
28 representación de la ley de control en ecuación en diferencias
// Parámetros PID
float Kp = 2.0;
float Ki = 1.0;
float Kd = 0.5;
float Ts = 0.01; // 10 ms de muestreo
// Variables de estado del PID
float integral = 0;
float error_anterior = 0;
void loop() {
// 1. Leer sensor y calcular error
float referencia; //...
float medicion = leerSensor();
float error = referencia - medicion;
// 2. Calcular PID
// Término Integral (con anti-windup si se satura 'integral' o 'salida')
integral += error * Ts;
// Término Derivativo
float derivada = (error - error_anterior) / Ts;
// Salida de control (Ley de control)
float salida = Kp * error + Ki * integral + Kd * derivada;
// 3. Saturación
salida = constrain(salida, 0, 255);
// 4. Aplicar salida
analogWrite(PIN_PWM, (int)salida);
// 5. Guardar estado para la próxima iteración
error_anterior = error;
// 6. Esperar el tiempo de muestreo
delay(Ts * 1000);
29. Programación del PID.
Esta es la implementación práctica de un controlador PID específico para el coche
seguidor de línea.
#include <QTRSensors.h>
#define Kp 0.012
#define Ki 0.001
#define Kd 0.042
// Variables Seguidor Linea
#define velocidadMaxima 100
#define velocidadBase 80
#define velocidadGiro 120
#define NUM_SENSORS 8
#define TIMEOUT 2500
#define EMITTER_PIN 2
#define motorIzquierdo 9
#define motorIzquierdoPWM 10
#define motorDerecho 6
#define motorDerechoPWM 5
int linea = 0;
int led = 13;
QTRSensorsRC qtrrc((unsigned char[]) {A0, A1, A2, A3, A4, A5, A6, A7},
NUM_SENSORS, TIMEOUT, EMITTER_PIN);
unsigned int sensorValues[NUM_SENSORS];
int errorAnterior = 0;
unsigned int sensors[NUM_SENSORS];
int posicion = 0;
void setup() {
pinMode(motorIzquierdo, OUTPUT);
pinMode(motorIzquierdoPWM, OUTPUT);
pinMode(motorDerecho, OUTPUT);
pinMode(motorDerechoPWM, OUTPUT);
delay(1000);
pinMode(led, OUTPUT);
for (int i = 0; i < 100; i++) {
digitalWrite(led, HIGH);
delay(20);
[Link]();
digitalWrite(led, LOW);
delay(20);
digitalWrite(led, LOW);
delay(1000);
void loop() {
posicion = [Link](sensors, QTR_EMITTERS_ON, linea);
if (posicion > 6700){
Motores(1, velocidadGiro, 1); // motor derecho hacia adelante
Motores(0, velocidadGiro, 0); // motor izquierdo hacia adelante
return;
if (posicion < 300){
Motores(1, velocidadGiro, 0); // motor derecho hacia adelante
Motores(0, velocidadGiro, 1); // motor izquierdo hacia adelante
return;
int error = posicion - 3500;
int velocidadMotor = Kp * error + Kd * (error - errorAnterior);
errorAnterior = error;
int velocidadDerecho = velocidadBase + velocidadMotor;
int velocidadIzquierda = velocidadBase - velocidadMotor;
if (velocidadDerecho > velocidadMaxima ) velocidadDerecho = velocidadMaxima;
if (velocidadIzquierda > velocidadMaxima ) velocidadIzquierda = velocidadMaxima;
if (velocidadDerecho < 0) velocidadDerecho = 0;
if (velocidadIzquierda < 0) velocidadIzquierda = 0;
Motores(1, velocidadDerecho, 1); // motor derecho hacia adelante
Motores(0, velocidadIzquierda, 1); // motor izquierdo hacia adelante
void Motores(int motor, int velocidad, int direccion) {
int inPin1 = velocidad;
int inPin2 = 0;
if (direccion == 1){
inPin1 = velocidad;
inPin2 = 0;
if (direccion == 0){
inPin1 = 0;
inPin2 = velocidad;
if (motor == 0){
analogWrite(motorIzquierdo, inPin1);
analogWrite(motorIzquierdoPWM, inPin2);
}
if (motor == 1){
analogWrite(motorDerecho, inPin1);
analogWrite(motorDerechoPWM, inPin2);
31. Conclusiones:
En este trabajo se diseñó e implementó un LFR el cual cumple con los requisititos y
estándares de las diferentes competiciones de robótica nacionales e internacionales.
Además, se propuso y validó un modelo matemático teniendo en cuenta el voltaje
aplicado a los motores, velocidades angulares y forma geométrica del robot sobre un
sistema con arquitectura diferencial.: Un controlador PD convencional en LFR; un PD
con una variante de garantía de control atendiendo las limitaciones de los actuadores y
un controlador basado en técnicas de aprendizaje por refuerzo Q-Learning, usando el
medo de sintonización ziegler nichols tenemos en cuenta que fue la alternativa con mejor
desempeño tanto en simulación como en su validación experimental, obteniendo el mejor
tiempo de pista de 13.5 segundos con indicadores de estabilidad aceptables, respecto a
las opciones de PD con garantía de control 8 segundos .. En una mirada hacia el futuro,
se propone la implementación de un controlador más efectivo en parámetros como el
tiempo de establecimiento, junto con acciones de control no lineal diferente a los
compensadores clásicos o por ejemplo una alternativa de control predictivo.
Adicionalmente existe una reciente tendencia de nuevos dispositivos que permiten
identificar de manera anticipada la línea de referencia con gran eficacia, como lo son los
sistemas de visión de alta velocidad de fotogramas apoyados por los sensores de línea
ya conocidos y los sistemas de medida inercial. Además de la utilización de
microcontroladores de 32b de alta velocidad que cuente con núcleos de procesador
como los RISC ARM utilizados en la familia de microcontroladores ARM Cortex-A, misma
familia de la cual hace parte la MBED LPC178 utilizada en este proyecto.
En cuanto al hardware del auto seguidor usamos por conveniente usar el esp32 por su
integración de wifi y comunicación con encoder reduciendo asi el peso y espacio para
el auto velocista.
Para la alimentación del esp32 se debe de limitar el voltaje de funcionamiento a su
valor nominal para la protección del componente y no crear cortocircuitos En el
proyecto se usó un regulador 7805
La alimentación tanto para el microcontrolador debe estar separadas por los picotazos
de corriente que nos da los motores y sobre todo par proteger al microcontrolador
El auto debe tener una buena adherencia a la pista se recomienda usar llantas
cilíndricas de 40mm de largo y diámetro de 23 mm
Se logro implementar en entorno simulink para la comunicación inalámbrica y para la
traficación en tiempo real
Se debe realizar pruebas en pistas rectas y curvas abiertas, cerradas para la
verificación de pid
Analizar la grafica en tiempo real para la sintonización de pid y usar criterios aprendidos
del pid
A falta de componentes y motores se opto por adecuar un motor comprando motores con los
rpm requeridos y cambiando a estos la caja de engranaje y encoder
32. Recomendaciones
Implementación de Aprendizaje Automático
Problema: El sistema PID tradicional puede no ser capaz de adaptarse a entornos
altamente dinámicos.
Mejoras:
Redes neuronales: Integrar redes neuronales artificiales que aprendan de los
comportamientos del robot y ajusten el control en tiempo real, proporcionando una
mejor capacidad de adaptación a diferentes condiciones de operación.
Aprendizaje por refuerzo: Aplicar técnicas de aprendizaje por refuerzo para que el robot
aprenda cómo reaccionar de manera óptima a las variaciones en la línea y el entorno a
través de la experiencia.
Mejoras en la Precisión de la Calibración:
Problema: La calibración de los sensores y motores es crucial, pero puede ser difícil de
ajustar de manera perfecta.
Mejoras:
Autocalibración: Desarrollar un sistema de autocalibración que ajuste automáticamente
los parámetros de los sensores y el controlador PID en función de las condiciones del
entorno y el comportamiento del robot.
Monitoreo continuo: Implementar una rutina de monitoreo continuo para verificar y
ajustar la calibración de los sensores en tiempo real, especialmente si las condiciones
ambientales cambian (por ejemplo, variaciones en la luz o el contraste de la línea).
Mejoras en el Software de Control:
Problema: El código de control puede no ser eficiente o suficientemente flexible.
Mejoras:
Optimización de algoritmos: Mejorar los algoritmos de control para que sean más eficientes en
términos de tiempo de procesamiento y uso de recursos, utilizando técnicas de programación
optimizadas.
Interfaz de usuario para configuración: Desarrollar una interfaz gráfica de usuario (GUI) para
ajustar y monitorear los parámetros del controlador PID, facilitando ajustes rápidos sin
necesidad de reprogramar el robo
32 Bibliografia
[1] F. Reyes Cortés, Robótica Control de Robots Manipuladores, México D.F.: Alfaomega Grupo Editor,
2011.
[2] R. Silva Ortigoza, J. R. García Sánchez, V. R. Barrientos Sotelo, M. A. Molina Vilchis, V. M. Hernández
Guzmán y G. Silva Ortigoza, «Una panorámica de los robots móviles,» Télématique, vol. 6, nº 3, pp. 1-14,
2007.
[3] R. Ríos Ramírez, «Diseño y construcción de un autómata seguidor de línea inteligente,» México DF,
2006.
[4] L. E. Solaque Guzmán, M. A. Molina Villa y E. L. Rodríguez Vásquez, «Seguimiento de Trayectorias con
un Robot Móvil de Configuración Diferencial,» Ing. USBMed, vol. 5, nº 1, 2014.
[5] K. Ogata, Ingeniería de Control Moderna, Madrid: Pearson Educación, 2010.
[6] J. A. Valencia V., A. Montoya O. y L. H. Rios, «Modelo Cinemático de un Robot Móvil Tipo Diferencial
y Navegación a Partir de la Estimación Odométrica,» Scientia et Technica, nº 41, 2009.
[7] [9] J. I. Collazo Cuevas, E. Gorrostieta Hurtado, J. C. Pedraza Ortega, U. G. Villaseñor Carrillo, R. A.
Romero Torres y M. A. González Aguirre, «Modelación de un Robot Móvil de Dos Ruedas con Tracción
Diferencial,»
[8] 2009. Pololu Robotics & Electronics, «26:1 Sub-Micro Plastic Planetary Gearmotor 6Dx16L mm,»
Pololu Robotics & Electronics, [En línea]. Available: [Link] acceso: 9
Mayo 2018].
[9] [Último Appin Knowledge Solutions, Robotics, New Delhi: Infinity Science Press, 2007.
[10] W. F. Romero Marin, «Simulacion Sensores Opticos Reflectivos con mat lab,» 17 Diciembre 2014.
[En línea]. Available: [Link] t=239s. [Último acceso: 9 Mayo
2018].