Codigo do seguidor de linha V2 2020.2

Dependencies:   mbed

PID.cpp

Committer:
rperoba
Date:
2020-10-10
Revision:
6:5551834026ef
Parent:
0:9efe13b5d868

File content as of revision 6:5551834026ef:

#include "PID.h"
#include "mbed.h"



float ultimoErro = 0;
float Kp_Sensor = 0.675;        //0.65              //0.675
float Kd_Sensor = 24.55;        //24.45             //24.55
float IntegralEsquerda = 0;
float IntegralDireita = 0;
float Ki_rodaDireita = 1;
float Ki_rodaEsquerda = 1;
float Kp_rodaDireita = 1;
float Kp_rodaEsquerda = 1;
float Kd_rodaDireita = 1;
float Kd_rodaEsquerda = 1;

float PID_Sensores(float Erro){ //Função que aplica o PID e calcula a correção
   //Achando o erro do PID atraves da leitura dos sensores.
    float Correcao_Sensor = Kp_Sensor * (float)Erro + Kd_Sensor * ((float)Erro - (float)ultimoErro);
    
    //bt.printf("\n\rCorrecao: %.2f | Erro: %d | LastError: %d | KP: %.1f | KD: %.1f", Correcao_Sensor, Error, LastError, (Kp_Sensor * (float)Error), (Kd_Sensor * ((float)Error - (float)LastError)));
    //Comando para printar e verificar os dados de saida via bluetooth
    
    ultimoErro = Erro;
    
    return Correcao_Sensor;
}

float PID_rodaDireita(float velocidadeEsperada, float velocidadeReal)
{
    float Erro=velocidadeReal-velocidadeEsperada;//Achando o erro do PID atraves das velocidades.
    
    IntegralDireita=IntegralDireita + Erro;//Acumulador de erro da integral
    
    float Correcao_roda = Kp_rodaDireita * Erro + Kd_rodaDireita * (Erro - ultimoErro)+ IntegralDireita*Ki_rodaDireita ;

    ultimoErro = Erro;
    
    return Correcao_roda;   
}

float PID_rodaEsquerda(float velocidadeEsperada, float velocidadeReal)
{
    float Erro=velocidadeReal-velocidadeEsperada;//Achando o erro do PID atraves das velocidades.
    
    IntegralEsquerda=IntegralEsquerda + Erro;//Acumulador de erro da integral
    
    float Correcao_roda = Kp_rodaEsquerda * Erro + Kd_rodaEsquerda * (Erro - ultimoErro)+ IntegralEsquerda*Ki_rodaEsquerda ;

    ultimoErro = Erro;
    
    return Correcao_roda;   
}