Vous êtes sur la page 1sur 2

double kp=0.

6;
double td=20;
double ti=0.0030;
//*************************************************
//*************************************************

double integral=0;
double derivativo=0;

int set_point=440;
int error=0;
int error_ant=0;
int pid=0;
long posicion=0;

void setup()
{
Serial.begin(9600);
}

void control()
{
long suma=0;
for(int i=0;i<20;i++)
suma+=analogRead(0);

posicion =suma/20;
error=set_point-posicion;
integral+=error;
derivativo=error-error_ant;
error_ant=error;
pid=int(error*kp+integral*ti+derivativo*td);
}
void loop()
{
control();
if(pid<0)
pid=0;
if(pid>255)
pid=255;
analogWrite(2,pid);

Serial.println(analogRead(0));
}

Vous aimerez peut-être aussi