Académique Documents
Professionnel Documents
Culture Documents
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));
}