






Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Los mejores documentos en venta realizados por estudiantes que han terminado sus estudios
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Descubre las mejores universidades de tu país según los usuarios de Docsity
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
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
1 / 12
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!
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.
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:
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:
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) }
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.