0% encontró este documento útil (0 votos)
27 vistas8 páginas

P5 Control Digital

La práctica 05 se centra en el control de velocidad de un motor DC utilizando modulación por ancho de pulso (PWM) y un controlador PID. Se caracterizó la velocidad del motor en función del ciclo de trabajo de la señal PWM, obteniendo una relación precisa entre PWM y RPM. Los resultados validan la ecuación utilizada y demuestran la efectividad del PWM en el control de la velocidad del motor.

Cargado por

luis.d.v.m14
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
27 vistas8 páginas

P5 Control Digital

La práctica 05 se centra en el control de velocidad de un motor DC utilizando modulación por ancho de pulso (PWM) y un controlador PID. Se caracterizó la velocidad del motor en función del ciclo de trabajo de la señal PWM, obteniendo una relación precisa entre PWM y RPM. Los resultados validan la ecuación utilizada y demuestran la efectividad del PWM en el control de la velocidad del motor.

Cargado por

luis.d.v.m14
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Práctica 05 Control de velocidad de un motor DC

Primero. Revisa los recursos visuales y escritos de esta práctica

✍🏻 Videos de apoyo para el desarrollo de la práctica:


​ Explicación del PWM
​ Arduino: control de velocidad, con mosfet
​ Detector de posición
​ Medición de posición
​ Playlist Arduino/Labview/Matlab para motor cd
​ Modelar y controlar con PID un motor con arduino.

📚Recursos complementarios:
✍🏻 Descripción de la práctica de laboratorio:
El alumno construye un controlador de velocidad para un motor de CD, el cual deberá
establecerse cuando se presente una carga y tener algunas funcionalidades extras como
variador de velocidad , paro de emergencia, registro de velocidad promedio.

Segundo. Realiza un programa en Arduino donde se muestre la lectura de velocidad


empleando un tacómetro. Además, realiza un PWM apropiado y muestra tus resultados en
un osciloscopio y el efecto de la carga. No olvides preguntar tus dudas en la sesión de
laboratorio correspondiente para tener un mejor desempeño.

Tercero. Reporta la primera etapa de la práctica 5 y reporta tus resultados en la sección P5.
Entrega del reporte de la práctica. No olvides incluir al inicio del reporte una hoja con
portada con los nombres de los integrantes del equipo que participaron en la realización de
esta actividad.

Introducción

En esta práctica, se desarrolló un sistema de control de velocidad para un motor de corriente


directa (DC) mediante el uso de modulación por ancho de pulso (PWM). Se comenzó con la
caracterización de la velocidad del motor en función del ciclo de trabajo de la señal PWM,
con el fin de establecer la relación entre la señal de entrada y el comportamiento de la
velocidad. Posteriormente, se implementó un controlador que ajusta dinámicamente el ciclo
de trabajo.
Caracterizacion de la velocidad del motor

Se realizó un barrido de señal PWM al motor se inició en 0 y se fue aumentando de poco en


poco, registandro con un tacometro la velocidad en Revoluciones por minutos (RPM)

Valores obtenidos al caracterizar el motor

Con estos datos se calculó la función de transferencia del sistema

para obtener la FDT se consideró un sistema de primer orden donde:


𝑘
𝐻(𝑠) = τ𝑠+1
Se consideró el valor AK como 288.3, donde τ con las mediciones se determinó como 44
debido a la tasa de cambio observada en las mediciones por lo que se utilizó la siguiente
FDT:
1
𝐻(𝑠) = 44𝑠+1
Para obtener la ecuación en función del tiempo se aplicó un escalón de 255 obtuvimos la
siguiente expresión
1 255
𝑌(𝑠) = 44𝑠+1
· 𝑠
Al resolver las fracciones parciales de la expresión anterior obtuvimos una la siguiente
función:
−1
𝑡
𝑌(𝑡) =− 228. 3𝑒 44 + 228. 3

Comprobacion en matlab se la ecuacion


Gráfica PWM vs RPM y una ecuación ajustada a los datos.

C/C++
% Valores de PWM y RPM
PWM = [0, 22, 37, 40, 48, 55, 62, 70, 75, 80, 90, 100, 120, 140, 160,
180, 200, 220, 240, 255];
RPM = [0, 93.1, 137.7, 150.3, 157.8, 169.1, 177.1, 183.8, 187.7, 193,
196, 202.1, 208.7, 213.4, 217.3, 221, 223.7, 225.4, 227.2, 228.3];
% Crear la gráfica de los puntos PWM vs. RPM
figure;
plot(PWM, RPM, 'o', 'LineWidth', 1.5); % Marcadores de datos
hold on;
% Valores de PWM para la ecuación
x = linspace(0, 255, 100); % Rango de PWM de 0 a 255
y = -228.3 * exp(-x / 44) + 228.3; % Ecuación dada
% Graficar la ecuación
plot(x, y, 'r-', 'LineWidth', 1.5); % Línea roja para la ecuación
grid on;
% Etiquetas de los ejes
xlabel('PWM (%)');
ylabel('RPM');
title('Gráfica de PWM vs. RPM con Ecuación Ajustada');
% Leyenda
legend('Datos PWM-RPM', 'Ecuación Ajustada', 'Location',
'southeast');
% Personalización
xlim([0 255]);
ylim([0 max(RPM)+10]);
hold off;

Código e implementación en arduino de ecuación para calcular la velocidad angular RPM

Puede observarse cómo se despliegan los valores tanto del PWM como de la velocidad
angular del motor en RPM el resultado tiene un error muy pequeño el cual es despreciable

#include "math.h"​
const int Potenciometro = A0; ​
const int Motor = 9;​
float valorRPM = 0;​
void setup() {​
[Link](9600);​

pinMode(Motor, OUTPUT);​
}​

void loop() {​

int valorPOT = analogRead(Potenciometro);​

int valorPWM = map(valorPOT, 0, 1023, 0, 255);​

analogWrite(Motor, valorPWM);​

// Ecuación para calcular valorRPM​
valorRPM = -228.3 * exp(-valorPWM / 44.0) + 228.3;​

[Link]("Valor Potenciometro: ");​
[Link](valorPOT);​
[Link](" - Valor PWM: ");​
[Link](valorPWM);​
[Link](" - Valor RPM: ");​
[Link](valorRPM);​

delay(1000);​
}

La continuacion de esta implementaciones será implementar el controlador PID para poder


ajustar la velocidad a nuestra conveniencia, se programo el codigo pertinente pero ya no se
pudo implementar por cuestiones de tiempo.

C/C++
#include "math.h"

const int Potenciometro = A0; // Pin del potenciómetro


const int Motor = 9; // Pin del motor (PWM)

// Variables del sistema


double setpoint = 1500; // Setpoint deseado en RPM
double rpm; // Variable para almacenar el valor calculado
de RPM
double error, previous_error = 0;
double integral = 0;
double control_signal;

float valorPOT=0;
float valorPWM=0;
float valorRPM=0;

int pwm;

// Constantes PID
double kp = 1.0;
double ki = 1.0;
double kd = 1.0;
void setup() {
[Link](9600);
pinMode(Motor, OUTPUT);
}

void loop() {
// Leer el valor del potenciómetro
int valorPOT = analogRead(Potenciometro);

// Convertir el valor del potenciómetro en PWM


int valorPWM = map(valorPOT, 0, 1023, 0, 255);

// Calcular el RPM en función de la ecuación


valorRPM = -228.3 * exp(-valorPWM / 44.0) + 228.3;

// Llamar a la función de control PID para ajustar el PWM en base al


setpoint de RPM
control_PID();

// Salida de los datos al monitor serial


[Link]("Valor Potenciometro: ");
[Link](valorPOT);
[Link](" - Valor PWM: ");
[Link](valorPWM);
[Link](" - Valor RPM: ");
[Link](valorRPM);

delay(1000); // Retardo de 1 segundo


}

void control_PID() {
// error entre el setpoint y el RPM actual
error = setpoint - rpm;

// Proporcional
double P_out = kp * error;

// Componente Integral
integral += error * 1; // Acumulación del error (asumiendo tiempo de
muestreo = 1 segundo)
double I_out = ki * integral;

// Componente Derivativa
double derivative = (error - previous_error) / 1; // Derivada del error
double D_out = kd * derivative;

// Calcular la señal de control total


control_signal = P_out + I_out + D_out;
// Mapear la señal de control a un valor de PWM entre 30 y 255
pwm = map(control_signal, -2000, 2000, 30, 255);

// Limitar el PWM a valores entre 30 y 255


if (pwm >= 255) pwm = 255;
else if (pwm <= 30) pwm = 30;

// Aplicar el PWM ajustado al motor


analogWrite(Motor, pwm);

// Guardar el error actual para la próxima iteración


previous_error = error;
}

Conclusión:

A lo largo de esta práctica,logramos avanzar en el control de la velocidad de un motor DC


mediante la variación de señales [Link] una ecuación que relaciona la variación
de señales PWM con la velocidad angular en RPM, obteniendo resultados precisos que se
alinean con la caracterización.

Los resultados obtenidos muestran una relación de primer grado entre el PWM y los
RPM,evidenciada en la gráfica generada y en los valores RPM obtenidos,los cuales
presentaron un margen de error insignificante,validando nuestra ecuació[Link] ejercicio nos
permitió apreciar los efectos de la modulación por ancho de pulso en la respuesta del
sistema.

También podría gustarte