Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
curtidor.luuis@gmail.com
jospalk3@gmail.com
jimpetz@gmail.com
Abstract— Este informe contiene la teoría y el procedimiento II. MARCO TEÓRICO
para realizar un seguidor de línea mediante un control PID.
Como aplicación, se realizó un carro seguidor de línea. Se explica II-A. PID
los conceptos matemáticos necesarios para obtener los El PID (control proporcional, integral y derivativo) es un
parámetros de forma directa y eficiente, ya que estos parámetros mecanismo de control por realimentación que calcula la
y el modelado del sistema mediante los mismo es crucial para la desviación o error entre un valor medido y el valor que se
obtención del control PID quiere obtener (set point, target position o punto de consigna),
para aplicar una acción correctora que ajuste el proceso.
Términos Clave— Carro Seguidor de línea, control
proporcional, integral y derivativo (PID), error positivo, error
negativo, sin error. En el caso del seguidor de línea, el controlador PID ,(que es
una rutina basada matemáticamente), procesara los datos del
sensor, y lo utiliza para controlar la dirección (velocidad de
I. INTRODUCCIÓN cada motor), para de esta forma mantenerlo en curso.
A. Diseño Experimental
II-C. Parámetros
-Proporcional: Es la respuesta al error que se tiene que
entregar de manera inmediata, es decir, si nos encontramos en
el centro de la línea, los motores , tendrán en respuesta una
velocidad de igual valor, si nos alejamos del centro, uno de
los motores reducirá su velocidad y el otro aumentara.
Proporcional=(posición) punto_consigna
else if (error >=90 && error < 120) { else if (motorLSpeed < -255) {motorLSpeed = -255;}
correction = 55;
} if (motorRSpeed > 0) { // right motor forward (using PWM)
analogWrite(motorREnable, motorRSpeed);
else if (error >=120 && error < 150) { // digitalWrite(motorRPin1, HIGH);
correction = 75; // digitalWrite(motorRPin2, LOW);
} }
else if (error >=150 && error < 180) { else if (motorRSpeed < 0) {// right motor reverse (using
correction = 255; PWM)
} analogWrite(motorREnable, abs(motorRSpeed));
// digitalWrite(motorRPin1, LOW);
else if (error >=180) { // digitalWrite(motorRPin2, HIGH);
correction = 305; }
}
else if (motorRSpeed == 0) { // right motor fast stop
if (error <= 0 && error > -30) { digitalWrite(motorREnable, HIGH);
correction = 0; // digitalWrite(motorRPin1, LOW);
} // digitalWrite(motorRPin2, LOW);
}
else if (error <= -30 && error > -60) {
correction = -15; if (motorLSpeed > 0) { // right motor forward (using PWM)
} analogWrite(motorLEnable, motorLSpeed);
// digitalWrite(motorLPin1, HIGH);
else if (error <= -60 && error > -90) { // digitalWrite(motorLPin2, LOW);
correction = -40; }
}
else if (motorLSpeed < 0) { // right motor reverse (using
else if (error <= -90 && error > -120) { PWM)
correction = -55; analogWrite(motorLEnable, abs(motorLSpeed));
} // digitalWrite(motorLPin1, LOW);
// digitalWrite(motorLPin2, HIGH);
else if (error <= -120 && error > -150) { }
correction = -75;
} else if (motorLSpeed == 0) { // left motor fast stop
digitalWrite(motorLEnable, HIGH);
else if (error <= -150 && error > -180) { // digitalWrite(motorLPin1, LOW);
correction = -255; // digitalWrite(motorLPin2, LOW);
} }
}
else if (error <= -180) {
correction = -305; IV. CONCLUSIONES
}
Por medio de los conocimientos obtenidos por la realización
if (correction >= 0) {
e investigacion de cada módulo se logró llevar a cabo de una
motorRSpeed = maxSpeed - correction;
manera mucho mas fácil, la realización, construcción, control
motorLSpeed = maxSpeed;
y programación del seguidor de línea, se obtuvo un resultado
}
satisfacctorio, con lo cual se pudo contruir el seguidor de línea
else if (correction < 0) { y nosotros como grupo obtuvimos, mas conocientos en el área
motorRSpeed = maxSpeed; de progracion y sistemas de control.
motorLSpeed = maxSpeed + correction;
} REFERENCIAS
}