Академический Документы
Профессиональный Документы
Культура Документы
MICROSOFT CONTROL I
Práctica 23-02-18
“PID ARDUINO”
Alumnos:
Karen Iliana Bertado Teutli.
Grecia Amairani Romero Landa.
Osvaldo Machorro De Gante.
Angel David Castillo Castro.
Desarrollo teórico.
Figura 8.8a Representación en bloques del control PID. Dicha confi guración no
es válida para su uso en Simulink, ya que du/dt no representa un cero (véase el
apéndice A2).
Control proporcional-integral
• El amortiguamiento se reduce.
Control proporcional-derivativo
• El amortiguamiento se incrementa.
Desarrollo práctico.
Vamos a utilizar un control PID; y que además se puede integrar facilmente con
una librería en Arduino creada por Brett Beaugerard. PID Library
Funciones
//CONTROL l
int n = LOW;//Variable para guardar lo que mande el encoder como HIGH o LOW
double kp = 1;
double ki = 0.0002;
double kd = .1;
void setup(){
pinMode(encoderPinA,INPUT);
pinMode(encoderPinB,INPUT);
pinMode(motor1, OUTPUT);
pinMode(motor2, OUTPUT);
pinMode(led, OUTPUT);
digitalWrite(led, HIGH);
void loop(){
analogWrite(motor2, 4);
} else
analogWrite(motor1, 4);
} else
analogWrite(motor1, 0);
analogWrite(motor2, 0);
int lectura_BT_serial(){
*/
val = Serial.readString().toInt();
//val = Serial.parseInt();
Serial.print("\t");
Serial.print("\n");
void Encoder(){
if (digitalRead(encoderPinB) == LOW) {
} else {
Serial.print("\n");
}
/////////////////GENERACIÓN DE LA SEÑAL PWM CUANDO val ES
POSITIVO/////////////////
void PID_pos(){
errSum += (error*timeChange);
_pid = (kp*error)+(ki*errSum)+(kd*derr);
_pid = _pid/1000;
por el Arduino
*/
signalPWM = TRUNCATE(_pid,0,255);
lastErr = error;
lastTime = now;
}
void PID_neg(){
errSum += (error*timeChange);
_pid = (-kp*error)+(-ki*errSum)+(-kd*derr);
_pid = _pid/1000;
por el Arduino
*/
signalPWM = TRUNCATE(_pid,0,255);
lastTime = now;
void correrPID(){
PID_pos();
analogWrite(motor1, signalPWM);
analogWrite(motor2, 0);
PID_neg();
analogWrite(motor1, 0);
analogWrite(motor2, signalPWM);
}
Resultados
Recomendaciones.
Se recomienda utilizar un transportador para ver los grados en el que gira
el motor
Colocar una flecha para que se aprecien los movimientos.
Conclusiones
Esta práctica fue un poco difícil de obtener debido al código extenso y por los
cual, teníamos que sacar los cálculos de Kp, Ki y Kd, ya que fue lo que nos
originó varios problemas para la implementación del código, finalmente Ki lo
cambiamos a 0.0002 para que perfeccionara los giros del motor y para así
mismos no se saliera del rango requerido.
Referencias bibliográficas.
file:///C:/Users/88555/Downloads/introduccion%20a%20los%20sistemas%
20de%20control.pdf