Você está na página 1de 13

Control PID de Barra y Bola con Arduino - Estudio Roble http://roble.

uno/control-pid-barra-y-bola-arduino/

1 of 13 30/09/2015 20:50
Control PID de Barra y Bola con Arduino - Estudio Roble http://roble.uno/control-pid-barra-y-bola-arduino/

2 of 13 30/09/2015 20:50
Control PID de Barra y Bola con Arduino - Estudio Roble http://roble.uno/control-pid-barra-y-bola-arduino/

analogReference(EXTERNAL);

3 of 13 30/09/2015 20:50
Control PID de Barra y Bola con Arduino - Estudio Roble http://roble.uno/control-pid-barra-y-bola-arduino/

if(0){// Para calibrar sensor de Distancia


Serial.print(dist);
Serial.print("mm ADC: ");
Serial.println(measure);
}

int dcal [] = { // Calibracion de ADC a Distancia


-193, -160, -110, -60, 0, 40, 60, 90, 120};
int ADCcal [] = {
177, 189, 231, 273, 372, 483, 558, 742, 970};

for(int i =0; i<8; i++){ // Aplicamos curva de Calibracion de ADC a mm


if (measure >= ADCcal[i] && measure< ADCcal[i+1]){
dist = map(measure,ADCcal[i],ADCcal[i+1],dcal[i],dcal[i+1]);
}

4 of 13 30/09/2015 20:50
Control PID de Barra y Bola con Arduino - Estudio Roble http://roble.uno/control-pid-barra-y-bola-arduino/

173,173,-5,-5$ //dist,dist,vel,vel$

5 of 13 30/09/2015 20:50
Control PID de Barra y Bola con Arduino - Estudio Roble http://roble.uno/control-pid-barra-y-bola-arduino/

6 of 13 30/09/2015 20:50
Control PID de Barra y Bola con Arduino - Estudio Roble http://roble.uno/control-pid-barra-y-bola-arduino/

for (int i=0; i<nvel-1; i++){ // Movemos todas hacia la izq


v[i] =v[i+1];
}
v[nvel-1]= (dist - lastDist); // Ponemos un dato nuevo
vel=0;
for (int i=0; i<nvel; i++){ // Calculamos la media
vel = vel+ v[i];
}
vel = vel/nvel;

7 of 13 30/09/2015 20:50
Control PID de Barra y Bola con Arduino - Estudio Roble http://roble.uno/control-pid-barra-y-bola-arduino/

pos=Kp*dist

8 of 13 30/09/2015 20:50
Control PID de Barra y Bola con Arduino - Estudio Roble http://roble.uno/control-pid-barra-y-bola-arduino/

pos=Kd*vel

float Kp =0;
float Kd = 100;
float Ki =0;

9 of 13 30/09/2015 20:50
Control PID de Barra y Bola con Arduino - Estudio Roble http://roble.uno/control-pid-barra-y-bola-arduino/

pos=Kp*dist+Kd*vel;

10 of 13 30/09/2015 20:50
Control PID de Barra y Bola con Arduino - Estudio Roble http://roble.uno/control-pid-barra-y-bola-arduino/

int Rint = 8;
int Rext = 40;

if(abs(dist)>Rint && abs(dist)<Rext){


I=I+dist*Ki;
}
else {
I=0;
}
pos=Kp*dist+Kd*vel+I;

17 126 4

11 of 13 30/09/2015 20:50
Control PID de Barra y Bola con Arduino - Estudio Roble http://roble.uno/control-pid-barra-y-bola-arduino/

12 of 13 30/09/2015 20:50
Control PID de Barra y Bola con Arduino - Estudio Roble http://roble.uno/control-pid-barra-y-bola-arduino/

13 of 13 30/09/2015 20:50

Você também pode gostar