Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad

Control PID: Aplicación Práctica con Arduino y MATLAB, Esquemas y mapas conceptuales de Diseño Industrial

Un ejercicio práctico de control pid utilizando arduino y matlab. Se describe el proceso de implementación de un controlador pd para un sistema que controla la posición de un potenciómetro, incluyendo la recolección de datos, la identificación del modelo de la planta y el ajuste del controlador. Se incluye código de arduino y matlab para la implementación del sistema de control.

Tipo: Esquemas y mapas conceptuales

2024/2025

Subido el 02/04/2025

gael-ibarra-1
gael-ibarra-1 🇲🇽

3 documentos

1 / 12

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
INTRODUCCIÓN
En el ámbito de la ingeniería de control, los controladores P, PI, PD y PID son herramientas
fundamentales para regular sistemas dinámicos. Estos algoritmos permiten mantener una
variable de proceso (como temperatura, velocidad, presión, etc.) en un valor deseado,
conocido como setpoint, garantizando precisión, estabilidad y eficiencia. Este reporte
explora el funcionamiento, aplicaciones e importancia de cada tipo de controlador.
1. Controlador P (Proporcional)
El controlador P es el más básico y utiliza únicamente la acción proporcional. Su
salida es directamente proporcional al error actual, es decir, la diferencia entre el
setpoint y el valor real de la variable controlada.
o Funcionamiento:
La salida del controlador se calcula como: Salida=Kp e(t)
Donde Kp es la ganancia proporcional y e(t) es el error en el
tiempo t. o Aplicaciones:
Sistemas simples donde no se requiere alta precisión.
Control de nivel en tanques o sistemas de iluminación
2. Controlador PI (Proporcional-Integral)
El controlador PI combina la acción proporcional (P) con la acción integral (I), que corrige
el error acumulado a lo largo del tiempo.
Funcionamiento:
La salida del controlador se calcula como:
Salida=Kp e(t)+Ki ∫e(t) dt Donde Ki es la ganancia integral.
Aplicaciones:
Control de temperatura en hornos o sistemas de climatización. o Sistemas
donde se requiere eliminar el error en estado estacionario.
3. Controlador PD (Proporcional-Derivativo)
El controlador PD combina la acción proporcional (P) con la acción derivativa (D), que
anticipa el comportamiento futuro del error basándose en su tasa de cambio.
Funcionamiento:
La salida del controlador se calcula como:
Salida=Kp e(t)+Kd de(t) donde Kd es la ganancia derivativa.
Aplicaciones:
Control de velocidad en motores.
Posicionamiento en robótica.
pf3
pf4
pf5
pf8
pf9
pfa

Vista previa parcial del texto

¡Descarga Control PID: Aplicación Práctica con Arduino y MATLAB y más Esquemas y mapas conceptuales en PDF de Diseño Industrial solo en Docsity!

INTRODUCCIÓN

En el ámbito de la ingeniería de control, los controladores P, PI, PD y PID son herramientas fundamentales para regular sistemas dinámicos. Estos algoritmos permiten mantener una variable de proceso (como temperatura, velocidad, presión, etc.) en un valor deseado, conocido como setpoint, garantizando precisión, estabilidad y eficiencia. Este reporte explora el funcionamiento, aplicaciones e importancia de cada tipo de controlador.

  1. Controlador P (Proporcional) El controlador P es el más básico y utiliza únicamente la acción proporcional. Su salida es directamente proporcional al error actual, es decir, la diferencia entre el setpoint y el valor real de la variable controlada. o Funcionamiento:  La salida del controlador se calcula como: Salida=Kp e(t)  Donde Kp es la ganancia proporcional y e(t) es el error en el tiempo t. o Aplicaciones:  Sistemas simples donde no se requiere alta precisión.  Control de nivel en tanques o sistemas de iluminación
  2. Controlador PI (Proporcional-Integral) El controlador PI combina la acción proporcional (P) con la acción integral (I), que corrige el error acumulado a lo largo del tiempo. - Funcionamiento:  La salida del controlador se calcula como: Salida=Kp e(t)+Ki ∫e(t) dt Donde Ki es la ganancia integral. - Aplicaciones:  Control de temperatura en hornos o sistemas de climatización. o Sistemas donde se requiere eliminar el error en estado estacionario.
  3. Controlador PD (Proporcional-Derivativo) El controlador PD combina la acción proporcional (P) con la acción derivativa (D), que anticipa el comportamiento futuro del error basándose en su tasa de cambio. - Funcionamiento:  La salida del controlador se calcula como: Salida=Kp e(t)+Kd de(t) donde Kd es la ganancia derivativa. - Aplicaciones:  Control de velocidad en motores.  Posicionamiento en robótica.
  1. Controlador PID (Proporcional-Integral-Derivativo) El controlador PID es el más completo, ya que combina las acciones proporcionales (P), integral (I) y derivativa (D). Funcionamiento:
    • La salida del controlador se calcula como:
    • Aplicaciones:  Control de procesos industriales (temperatura, presión, flujo).  Sistemas de posicionamiento en robótica y automatización.
    • Importancia:  Proporciona una respuesta rápida, elimina el error en estado estacionario y mejora la estabilidad.

Procedimiento:

Para demostrar el método de aplicación de un controlador PD, se solicitó realizar la práctica 2, que consistió en obtener un controlador PD para un sistema que controle la posición de un potenciómetro y obtenga grados en base al movimiento del motor. A continuación, se mencionan los pasos para su ejecución. Lo primero que se realizo fue un diagrama de conexión de los componentes como se muestra a continuación. Ilustración 1 Simulación en Tinkercad.

Serial.println("Invalid PWM value! Enter a number between 0-255."); } } delay(0.1); // Update every 500ms } Objetivo del proceso: Recopilar los datos mostrados en el monitor serial del IDE de Arduino, correspondientes al cambio de la posición del potenciómetro desde un valor inicial de PWM = 0 hasta PWM = 255 y viceversa. Estos datos se utilizarán para:

  1. Graficar la curva de respuesta en Excel.
  2. Exportar la información a MATLAB con el fin de: o Identificar el modelo de la planta (función de transferencia). o Diseñar un controlador basado en dicho modelo. Recolección de datos: Los datos se registraron cada 1 segundo (mediante delay(0.1)) hasta obtener un total de 65 muestras, las cuales corresponden al rango de operación estable del motor y el potenciómetro. Durante este proceso, el motor operó en el rango de 0 a 255 y viceversa, y la posición del potenciómetro fue registrada para cada variación del PWM. Procesamiento de datos en MATLAB:
  3. Creación de arreglos: Se definieron dos vectores para almacenar los datos: o i = []; → Entradas (valores de PWM: 0-255) o o = []; → Salidas (salidas)
  4. Asignación de datos: Los valores experimentales se cargaron manualmente en los vectores: o i recibe la secuencia de PWM aplicada. o o contiene las salidas medidas correspondientes.

Identificación del Sistema en MATLAB:

  1. Apertura de la herramienta: Ejecutamos el comando systemIdentification para abrir el entorno de identificación de sistemas de MATLAB.
  2. Proceso de modelado: Utilizando esta herramienta, cargamos los vectores de entrada (i - PWM) y salida (o- salida) para:  Analizar la respuesta del sistema  Estimar la función de transferencia que representa la planta o Validar el modelo obtenido con los datos experimentales Proceso de Identificación en el Dominio Temporal:
  3. Configuración inicial:  Al ejecutar la herramienta systemIdentification, seleccionamos la opción "Time Domain Data" para el análisis temporal. ▪ Especificamos los vectores de entrada/salida:  Entrada (u): Señal PWM aplicada (vector i)  Salida (y): salida medida (vector o)
  4. Parámetros de identificación:  Establecimos un tiempo de muestreo de 0.1 segundo (Coherente con el delay(10) usado)  Definimos el rango de datos para análisis (62 muestras estables) Ilustración 2. Agregar datos

Dado que el proceso de adquisición de datos inicialmente requería aproximadamente 1 segundo, se implementaron las siguientes mejoras para optimizar el rendimiento del sistema:

  1. Objetivos de desempeño: o Reducir el tiempo de estabilización a 0.3 segundos. o Mantener una respuesta sobre amortiguada para evitar oscilaciones y asegurar la estabilidad del sistema.
  2. Después calculamos Kp, Kd , con el siguiente código de Matlab en el cual se sustituyeron los valores. Ilustración 3. Obtención de Kp, Kd. Finalmente lo introducimos a un código de Arduino IDE, que nos ayudaría a comprobar la estabilidad del sistema. Y para ello remplazamos Kp, Kd, como se muestra a continuación.

El código que usamos fue el siguiente % Calcular el valor de Td (Tiempo derivativo) Td = 1 / n(2); % Derivada de tiempo (Td) % Calcular las ganancias del controlador PD kp = k / Td; % Ganancia proporcional (Kp) kd = kp * Td; % Ganancia derivativa (Kd) % Crear el vector PD con las ganancias calculadas PD = [kp, kd]; % Vector que contiene los dos parámetros del controlador PD % Mostrar los resultados disp('Los parámetros del controlador PD son:'); disp(['Kp = ', num2str(kp)]); disp(['Kd = ', num2str(kd)]); disp(['PD = ', mat2str(PD)]); Kp = 1.1973e- Kd = 0. #include <PID_v1.h> // Definición de pines del puente H const int pinIN1 = 9; // Pin IN1 del puente H const int pinIN2 = 10; // Pin IN2 del puente H const int pinPWM = 11; // Pin PWM para control de velocidad // Definir las variables para el control PID double input, output, setpoint; // Definir los parámetros PID (Kp, Ki, Kd) double Kp=2, Ki=5, Kd=1; // Crear una instancia del objeto PID PID myPID(&input, &output, &setpoint, Kp, Ki, Kd, DIRECT); void setup() { // Inicializar los pines

else { // Detener el motor analogWrite(pinPWM, 0); digitalWrite(pinIN1, LOW); digitalWrite(pinIN2, LOW); } } // Función para leer la posición actual del motor // Debes reemplazar este código por una lectura real del ángulo del motor int leerPosicionMotor() { // Suponemos que esta función retorna la posición actual en grados. // En un proyecto real, deberías usar un sensor como un potenciómetro o un encoder. return 45; // Ejemplo de valor estático (45 grados) }

Conclusión:

El sistema reaccionó correctamente, ya que el controlador implementado demostró ser eficiente, proporcionando un proceso preciso, aunque con un pequeño desfase de aproximadamente 2 grados. El proyecto funcionó de manera adecuada, apoyándonos en la

herramienta MATLAB y aplicando diversas técnicas para obtener las ganancias óptimas del controlador. Los resultados obtenidos demuestran que el controlador PID implementado cumple con el objetivo principal de mantener la temperatura estable. Sin embargo, el sobrepaso observado sugiere que sería conveniente realizar ajustes adicionales en las ganancias para mejorar la respuesta transitoria y optimizar el rendimiento del sistema.