You are on page 1of 4

CODIGO DE PROGRAMACION DE PID EN ARDUINO

#include <PID_v1.h>

#include <LiquidCrystal_I2C.h>

#include <Ultrasonic.h>

LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // Addr, En, Rw, Rs, d4, d5, d6, d7,
backlighpin, polarity

Ultrasonic ultrasonic(13,12);

///////////////////////////////////

int du;

int du1;

int ep;

long Error0;

long Error1;

long de;

long de1;

double aux=255;

double aux1;

double aux3;

boolean aux2;

const int inp = 10;

const int a = 0;

///////////////////////////////

//Define Variables we'll be connecting to

double Setpoint, Input, Output;

int p=A1;

int i=A2;

int d=A3;

//Define the aggressive and conservative Tuning Parameters

double aggKp=4, aggKi=0.2, aggKd=1;


double consKp=p, consKi=i, consKd=d;

//Specify the links and initial tuning parameters

PID myPID(&Input, &Output, &Setpoint, consKp, consKi, consKd, DIRECT);

void setup()

//initialize the variables we're linked to

lcd.begin(16,2);

Serial.begin(9600);

//Input = analogRead(0);

//Setpoint = 200;

//turn the PID on

myPID.SetMode(AUTOMATIC);

void loop()

Setpoint=analogRead(0)/4;

ep = (analogRead(a))/1.705;//distancia de referencia_setpoint (mm)

du =600-((ultrasonic.Ranging(CM))*10); //distancia del sensor ultra (mm)

du1=map(du,90,580,0,255);

Input = du1;

lcd.setCursor(0, 0);

lcd.print("LA ALTURA ES DE:");

lcd.setCursor(0, 1);

lcd.print(du);

lcd.setCursor(13, 1);

lcd.print(ep);
double gap = abs(Setpoint-Input); //distance away from setpoint

if(gap<10)

{ //we're close to setpoint, use conservative tuning parameters

myPID.SetTunings(consKp, consKi, consKd);

else

//we're far from setpoint, use aggressive tuning parameters

myPID.SetTunings(aggKp, aggKi, aggKd);

myPID.Compute();

analogWrite(3,Output);

Serial.print(p);

Serial.print(" ");

Serial.print(i);

Serial.print(" ");

Serial.print(d);

Serial.print(" ");

Serial.print(Setpoint);

Serial.print(" ");

Serial.print(Input);

Serial.print(" ");

Serial.print(Output);

Serial.print(" ");

Serial.print(du1);

Serial.print(" ");

Serial.println(du);

Serial.print(" ");
}

You might also like