0% encontró este documento útil (0 votos)
28 vistas7 páginas

Controlador PID con Arduino y Motor

Este documento presenta el proyecto de un grupo de estudiantes para implementar un controlador PID usando Arduino. El proyecto consiste en usar un potenciómetro para establecer la velocidad deseada de un motor controlado por Arduino, el cual usa un algoritmo PID para mantener la velocidad real del motor igual a la velocidad deseada a pesar de perturbaciones, mediante la retroalimentación de la velocidad medida por un encoder acoplado al motor. El documento describe los componentes del sistema, incluyendo diagramas y código, y concluye que aunque

Cargado por

Daniel Nuñez
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)
28 vistas7 páginas

Controlador PID con Arduino y Motor

Este documento presenta el proyecto de un grupo de estudiantes para implementar un controlador PID usando Arduino. El proyecto consiste en usar un potenciómetro para establecer la velocidad deseada de un motor controlado por Arduino, el cual usa un algoritmo PID para mantener la velocidad real del motor igual a la velocidad deseada a pesar de perturbaciones, mediante la retroalimentación de la velocidad medida por un encoder acoplado al motor. El documento describe los componentes del sistema, incluyendo diagramas y código, y concluye que aunque

Cargado por

Daniel Nuñez
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

Instituto Politécnico Nacional.

Escuela Superior de Ingeniería Mecánica


y Eléctrica.

Sprint 3
“Implementación de PI”
Equipo:
Reyes Juárez Juan José
Curiel Consuelos Alejandro.
Núñez Ledesma Oscar Daniel
González Hernández Héctor
Ortega Velázquez Alexis

Grupo 6CV6
Profesor: Erasmo Valverde Trujillo
Materia: Señales y Sistemas.
Introducción.
Un controlador PID (controlador proporcional, integral y derivativo) es
un mecanismo de control que a través de un lazo de
retroalimentación permite regular las variables de un proceso en
general. El controlador PID calcula la diferencia entre nuestra
variable real contra la variable deseada
El algoritmo del control PID consta de tres parámetros distintos: el
proporcional, el integral, y el derivativo. El valor proporcional depende
del error actual, el integral depende de los errores pasados y el
derivativo es una predicción de los errores futuros. La suma de estas
tres acciones es usada para ajustar el proceso por medio de un
elemento de control.

Desarrollo.
Los elementos que conforman nuestro sistema son:
• Arduino Uno
• Modulo L298N
• Motor con encoder
• Potenciómetro de precisión 3590s 50kΩ
• Fuente de alimentación de 12 V
• LCD 16/2
Para empezar, tenemos el Arduino como controlador programable en
donde se programo el algoritmo necesario para el control del sistema
en donde tenemos el potenciómetro de precisión como dispositivo de
entrada quien controla las RPM al regular un voltaje de referencia en
donde se realizan los cálculos necesarios para que al contar 5v de
entrada se traduzcan proporcionalmente a las revoluciones deseadas
con un máximo de 2280, después tenemos el dispositivo de salida que
en este caso es el motor acompañado del puente H para poder
controlarlo con el Arduino y a su vez alimentado con 12V, en la parte
del PI nos ayudamos del encoder acoplado al motor quien mide las
RPM y retroalimente la entrada para poder mantener el motor al
funcionando a las revoluciones establecidas sin importar las
perturbaciones externas que puedan intervenir y para finalizar
añadimos una pantalla LCD para que el usuario pueda visualizar los
datos del sistema en tiempo real.

Fotos del Proyecto Físico.


Diagrama de Conexión.

Código Del Programa.


#include <SimpleTimer.h>
#include <LiquidCrystal.h>

LiquidCrystal lcd(13, 12, 11, 10, 9, 8);


SimpleTimer timer(500);

double RPM = 0, RPMreq = 0, Error = 0, ErrorAnt = 0, ErrorInt = 0, Res = 0;


float Kp = 0.1118421052631579, Ki = 0.01118421052631579;
int PWM = 0, Val = 0,Vel = 0,Vel0 = 0, VelAnt = 0,Contador = 0;

void setup() {
attachInterrupt(digitalPinToInterrupt(2),Paso,RISING);
[Link](115200);
[Link](16, 2);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(5, OUTPUT);
}
void loop() {
Val = analogRead(A0);
RPMreq = Val * 2.228739002932551;
Vel0 = Val / 4.011764705882353;

if([Link]()){
Rpm();
Motor();
LCD();
Contador = 0;
RPM = 0;
[Link]();
}
}
void LCD(){
[Link]();
[Link](0, 0);
[Link]("RPM: ");
[Link](RPM);
[Link](0, 1);
[Link](RPMreq);
[Link](" PWM: ");
[Link](PWM);
}
void Paso(){
Contador++;
}
void Rpm(){
RPM = (Contador / 512) * 120;
}
void Motor(){
PID();
digitalWrite(6, HIGH);
digitalWrite(7, LOW);
analogWrite(5, PWM);
}
void PID(){
Error = RPMreq - RPM;
ErrorInt = Error - ErrorAnt;

if(VelAnt != Vel0)
Vel = Vel0;
else
Vel = PWM;

Res = (Kp * Error) + (Ki * ErrorInt) + (Vel);


if (Res > 255)
PWM = 255;
else if (Res < 0)
PWM = 0;
else
PWM = Res ;

ErrorAnt = Error;
VelAnt = Vel0;
}

Conclusiones.
Al inicio de este proyecto parecía algo complicado llevarlo a cabo ya
que había algunos conceptos que no conocíamos del PID y la
programación necesaria, pero lo dividimos en tres partes
comenzando por la más sencilla y mientras avanzamos el profesor
nos retroalimento y explico el funcionamiento requerido para
implementarlo por lo que al final solo unimos las partes ya realizadas
y concluimos satisfactoriamente este proyecto.

También podría gustarte