Documente Academic
Documente Profesional
Documente Cultură
William Cañar, Dario Muñoz, Diego Herrera, Juan Pinduisaca, Frank Rea, Johnatan Robalino, Paul
Rodriguez
Universidad Nacional de Chimborazo
I. INTRODUCCION
Para conseguir un buen rendimiento y evitar
El controlador PID(Proporcional, Integral y comportamientos indeseables en el sistema es
Derivativo) cuyo proposito es hacer que el preciso ajustar los parámetros del controlador
error en estado estacionario, entre la señal de hasta que el desempeño del proceso se
referencia y la señal de salida, sea cero de considere satisfactorio. A este procedimiento
manera asintótica en el tiempo, lo que se logra se le conoce como sintonización del
mendiante el uso de la acción proporcional. controlador y puede realizarse por prueba y
error, o siguiendo uno de un conjunto de
Comúnmente existe la necesidad de llevar
algoritmos de sintonización que permiten
un sistema físico hasta un punto determinado
encontrar de manera sistemática valores
con cierto grado de exactitud. Un sistema de
adecuados de los parámetros del controlador.
control es el conjunto de técnicas y
herramientas que guían un sistema físico hasta
las condiciones deseadas.
Existen diversos métodos de diseño de
controladores, que requieren ya sea el modelo
II. DESARROLLO DE del proceso o su respuesta en frecuencia para
CONTENIDOS calcular las ganancias óptimas del controlador.
Aún así se requiere hacer pruebas de campo
para realizar ajustes finales, sobre todo si la
El control PID es el controlador industrial
información del proceso es incompleta o
más utilizado, empleado por su buen
inexacta. De manera alternativa, se han
desempeño y facilidad de implementación. El
planteado controladores adaptables, que tienen
acrónimo PID proviene de las tres partes que
la capacidad de encontrar valores adecuados
lo componen: una acción proporcional, una
durante la operación automática.
acción integral y una acción derivativa: el
componente proporcional ajusta la ganancia
en relación directa con la magnitud del error,
el componente integral elimina el error en
A. MATLAB distribución de pines y la descripción de cada
uno.
B.- ENCODER
TIPOS DE ENCODER
Una clasificación de los encoder según el tipo Figure 5:Figura de la monovuelta
de información sobre la posición que generan Multivuelta
sería:
No sólo registran la posición angular, sino que
Absoluto también cuentan las revoluciones (hasta un
Se basa en la información proveída para máximo de 4.096). La emisión de las señales
determinar la posición absoluta en secuencia. se efectúa ya sea a través de una interfaz SSI o
Un encoder absoluto ofrece un cogido único de un sistema de bus tipo CAN o Profibus.
para cada posición.
Se dividen en dos grupos: los encoders de un Encoder Óptico
solo giro y los encoders absolutos de giro
múltiple y su tamaño es pequeño para permitir Es una herramienta indispensable cuando se
una integración mas simple. trata de determinar la velocidad angular o
posición del eje de un motor
Encoders incrementales magnéticos
Destacan por no existir rozamiento ni contacto
entre el elemento sensor ni el detector.
Generalmente hablamos de ruedas magnéticas
de varios diámetros que tienen un código
grabado de forma magnética. Este código es
leído e interpretado por el cabezal que recoge
esos impulsos magnéticos.
PWM
Proporcional
Figure 6:Visualización del PID
IV. RESULTADOS
REFERENCIAS
Cuando el Motor DC esta obstaculizado , en la
interfaz Grafica MATLAB se visualiza otra [1 «wikipedia,» 5 2013. [En línea].
figura. ] Available:
https://es.wikipedia.org/wiki/Controlado
r_PID. [Último acceso: 6 12 2019].
To
[2 T. A. Cantarero, Diseño del Controlador
] PID, Sevilla: Departamento de Ingeniería
de Sistemas y Automática, 2019.
Td Ta
[3 K. D. Fasanando Paucar, «slideshare,»
] Noviembre 2013. [En línea]. Available:
https://es.slideshare.net/fasanando/info
rme-n7-coltrol-pid-matlab. [Último
Figure 10:Tiempos cuando el motor esta detenido acceso: 6 Diciembre 2019].
#include <PID_v1.h>
#include <PinChangeInterrupt.h>
#include <PinChangeInterruptBoards.h>
#include <PinChangeInterruptPins.h>
#include <PinChangeInterruptSettings.h>
#define encodPinA1 2
#define encodPinB1 8
#define M1 9
#define M2 10
double kp = 5 , ki = 1 , kd = 0.01 ,input = 0, output = 0, setpoint = 0;
long temp;
volatile long encoderPos = 0;
PID myPID(&input, &output, &setpoint, kp, ki, kd, DIRECT);
void setup() {
pinMode(encodPinA1, INPUT_PULLUP);
pinMode(encodPinB1, INPUT_PULLUP);
attachInterrupt(0, encoder, FALLING);
TCCR1B = TCCR1B & 0b11111000 | 1;
myPID.SetMode(AUTOMATIC);
myPID.SetSampleTime(1);
myPID.SetOutputLimits(-255, 255);
Serial.begin (9600);
}
void loop() {
int pot = analogRead(A0);
int valA2= analogRead(1);
temp += pot;
Serial.print(pot);
Serial.print(",");
Serial.println(valA2);
if (temp < 0) {
encoderPos = 0;
temp = 0;
}
setpoint = temp / 500;
input = encoderPos ;
myPID.Compute();
pwmOut(output);
}
void pwmOut(int out) {
if (out > 0) {
analogWrite(M1, out);
analogWrite(M2, 0);
}
else {
analogWrite(M1, 0);
analogWrite(M2, abs(out));
}
}
void encoder() {
if (PINB & 0b00000001) encoderPos++;
else encoderPos--;
}