terça-feira, 5 de abril de 2022



    Neste artigo vamos construir um controlador PID para manter uma incubadora a uma temperatura constante, mas esta configuração pode ser facilmente modificada e o código reutilizado para seus próprios propósitos!
    Em primeiro lugar, o que é PID afinal? PID é uma abreviação e significa Proporcional-Integral-Derivativo. O nome pode fazer você dizer “oh cara, eu não me lembro de cálculo”, mas não se preocupe, não vamos mergulhar fundo em cálculo, apenas usaremos o PID como uma ferramenta. No nosso caso, esta ferramenta manterá nossa incubadora sempre próxima a uma temperatura de nossa escolha.


O programa Python

    O objetivo do programa é usar a técnica de controle PID para manter a temperatura da incubadora em um valor desejado, controlando a saída da almofada de aquecimento. Para que isso aconteça, precisaremos:
  • Meça a temperatura usando a Expansão ADC
  • Alimente a leitura da temperatura em nosso controlador PID
  • Defina a força da almofada de aquecimento (canal 0 na expansão PWM) para o valor emitido pelo controlador PID
 O código:

#temperatura set point escolhido em °C
set_point = 25
I = 0

arduino = serial.Serial('COM3', baudrate = 9600, timeout=1)
connected = 1
time.sleep(2)


while(True):

Data = arduino.readline()
Data = float(Data)


#Inicio do controle PI////////////////////////////////////////////////

erro = (set_point-Data)# calculo do Erro

P = ((erro*255)/55) #normalização do ganho P = 1 onde 55( delta °C Maxima) => 255 (PWM Valor max) e 0=>0

if (P+I)> 255: #limite superior do PI

adj = 255

else:

if I<0: #limite inferior do I

I = 0

if P<0: #limite inferior do P

P = 0

adj = I + P #soma do ajuste P+I

I = I + erro*0.034 #Integral normalizado do erro Ki de 0.2

#Fim do controle PI///////////////////////////////////////////////////

#Enviando informação pra arduino

arduino.write(str(adj).encode())

Nenhum comentário:

Postar um comentário

     Neste artigo vamos construir um controlador PID para manter uma incubadora a uma temperatura constante, mas esta configuração pode ser...