Controle PID em IoT: Aplicações e Benefícios na Automação

Introdução

O controle PID (Proporcional, Integral e Derivativo) é amplamente utilizado para ajustar variáveis de sistemas dinâmicos de forma eficiente. Com o avanço da Internet das Coisas (IoT), a aplicação do PID em dispositivos conectados tem permitido um controle mais preciso e otimizado de processos industriais, residenciais e comerciais.

Neste artigo, discutiremos como o controle PID pode ser integrado à IoT, suas aplicações, os desafios enfrentados nessa abordagem e um projeto apresentando essa combinação.

O que é Controle PID?

O PID (Proportional-Integral-Derivative) é um algoritmo de controle que ajusta a saída de um sistema baseado no erro entre o valor desejado (Setpoint – SP) e o valor atual (Process Variable – PV). Ele é composto por três componentes:

1. Proporcional (P): Responde de forma instantânea ao erro.

2. Integral (I): Elimina o erro acumulado ao longo do tempo.

3. Derivativo (D): Previne variações bruscas no sistema.

Com isso, é possível controlar o overshoot (máximo pico antes de estabilizar) e o tempo de acomodação (tempo para estabilizar) do seu sistema, garantindo um maior controle e estabilidade.

Por que utilizar PID em IoT?

A integração do PID com a IoT permite monitoramento remoto e ajustes automáticos em tempo real. Entre as vantagens, destacam-se:

  • Controle eficiente: Mantém a estabilidade do sistema mesmo com variações externas.
  • Monitoramento em tempo real: Sensores conectados enviam dados continuamente.
  • Ajuste dinâmico: Parâmetros podem ser ajustados remotamente via MQTT ou API.
  • Redução de custos: Evitar desperdícios ao otimizar a resposta do sistema.

Aplicações de PID na IoT

A combinação de PID com IoT tem inúmeras aplicações, como:

1. Controle de Temperatura e/ou Umidade Inteligente

  • Termostatos e sensores de umidade conectados que ajustam essas variáveis com base na previsão do tempo e padrões de uso.
  • Indústrias que utilizam fornos PID controlados remotamente via IoT.

2. Sistemas de Irrigação Automatizados

  • Monitoramento remoto da umidade do solo e ajuste da irrigação via sensores conectados.

3. Controle de Motores e Atuadores

  • Robótica: PID controla motores de precisão em braços robóticos via IoT.
  • Drones e veículos autônomos: Correção de trajetória usando PID.

4. Monitoramento e Controle de Energia

  • Otimização do consumo energético em sistemas de energia solar e eólica.

Aplicação Prática: Monitoramento e Controle via App Flutter

No projeto desenvolvido, foi criado um aplicativo Flutter para permitir o monitoramento remoto e parametrização dos valores do PID. O sistema possui as seguintes funcionalidades:

  • Monitoramento em tempo real: O usuário pode visualizar os dados de umidade e resposta do PID.
  • Configuração de parâmetros: Ajuste remoto dos valores de Kp, Ki e Kd.
  • Notificações ao usuário: Opções de notificação via app, SMS e ligação.
  • Controle físico: Um LED simula um borrifador acionando por PWM e outro LED para simular um exaustor ou cooler para diminuir a umidade rapidamente.

Tecnologias Utilizadas no Projeto

TecnologiaFunção no Projeto
FreeRTOSGerenciamento de tarefas em tempo real
OTAAtualização remota do firmware
Servidor Local (ESP32)Configuração de Wi-Fi e MQTT via interface web
Watchdog TimerPrevenção de falhas no ESP32
EEPROMArmazenamento dos parâmetros do usuário (telefone, opção de notificações, etc.)
Tabela 1: Tecnologias do projeto

Arquitetura do projeto

Controle PID em IoT
Figura 1: Arquitetura do projeto


Código Essencial do Projeto

Trecho do código responsável pelo envio das variáveis e cálculo dos ganhos:

// Task for PID control
void controlTask(void *pvParameters)
{
  while (true)
  {
    erro = SP - PV;

    cv = cv1 + (Kp + (Ki * Tm) + (Kd / Tm)) * erro + (-Kp - (2 * Kd / Tm)) * erro1 + ((Kd / Tm) * erro2);

    // Updating Maximum Peak (MP)
    if (PV > maxPico)
    {
      maxPico = PV;
      client.publish(maxPeak_topic, String(maxPico).c_str());
    }
    if (!isSettled && abs(PV - SP) > 2.0)
    {
      startTime = millis();
      isSettled = false;
    }

    bool coolerOn = (PV > SP);

    if (coolerOn != lastHeatState)
    {
      lastHeatState = coolerOn;
      if (coolerOn)
      {
        client.publish("esp32/cooler", "on");
        digitalWrite(coolerPin, HIGH);
      }
      else
      {
        client.publish("esp32/cooler", "off");
        digitalWrite(coolerPin, LOW);
      }
    }

    // Checking the settling time (TA) (if the system has stabilized within 2% of the setpoint)
    if (!isSettled && abs(PV - SP) <= 2.0)
    { // 2% of setpoint
      settlingTime = (millis() - startTime) / 1000.0;
      client.publish(settlingTime_topic, String(settlingTime).c_str());
      isSettled = true; // The system is stabilized
    }

    float overshoot = (maxPico - SP) / SP * 100.0;
    if (overshoot < 0)
      overshoot = 0.0;

    client.publish(overshoot_topic, String(overshoot).c_str());

    // PID tuning using Ziegler-Nichols
    if (isSettled)
    {
      Kp = 0.6 * maxPico;
      Ki = (2 * Kp) / max(settlingTime / 1000.0, 1.0);
      Kd = (Kp * max(settlingTime / 1000.0, 1.0)) / 8.0;
      client.publish(kp_topic, String(Kp).c_str());
      client.publish(ki_topic, String(Ki).c_str());
      client.publish(kd_topic, String(Kd).c_str());
    }

    if (!coolerOn)
    {
      ledcWrite(ledChannel, (int)map(constrain(cv, 0.0, 1023.0), 0, 1023, 0, 1023));
    }
    else
    {
      ledcWrite(ledChannel, 0);
    }

    cv1 = cv;
    erro2 = erro1;
    erro1 = erro;

    checkThresholdViolation(); // alert user

    vTaskDelay(pdMS_TO_TICKS(1000));
  }
}

Como pode-se ver no Código, foi utilizado o método de Zigher-Nicols para calcular os ganhos conforme a tabela:

Controle PID em IoT
Figura 2: Tabela de ganhos PID

Observe o cálculo do “cv” (Control Variable – Variável de Controle) que representa a saída do controlador PID, seguido pela fórmula:

Eq. 1: Cálculo da variável de Controle

onde:

  • cv1: representa a saída do controlador na iteração anterior. Isso mantém continuidade na saída do controlador, evitando variações bruscas.
  • erro: diferença entre o Setpoint (SP) e a variável de processo (PV) no instante atual.
  • erro1: erro da iteração anterior (passado imediato).
  • erro2: erro de duas iterações atrás (histórico mais distante).
  • Tm: Período de amostragem (tempo entre cada cálculo do PID).

Dessa forma, é necessário ir recalculando o valor do tempo de acomodação (Tu ou Ta) sempre que o sistema perder a estabilidade, assim garantindo um automático ajuste nos valores do PID e automaticamente ir atualizando o “cv”. Esse tempo nada mais é do que o que leva para o sistema atingir e permanecer dentro da tolerância ao redor do setpoint, no caso foi considerado 2%.

Ordem do Sistema e representação no MatLab

Como estamos falando de um Sistema térmico e de umidade, podemos aproximar à um Sistema de Segunda ordem, que tem o seguinte formato:

Controle PID em IoT
Figura 3. Gráfico Sistema 2° ordem


Figura 4. Equação do Sistema de 2° ordem

Exemplo no MatLab para um setpoint (valor definido de umidade) igual a 80 (%):

Controle PID em IoT
Figura 5. Exemplo MatLab


Observe que, sem modificar a planta (função de transferência), no caso os valores de Wn e zeta (ζ), temos um erro de duas vezes comparado à utilização do PID, para ajustar seria necessário modificar esses valores. Já com o PID, o termo integral acumula todo o erro ao longo do tempo, aumentando o valor de controle e forçando a saída a atingir o setpoint determinado sem a necessidade de modificar a planta.

Desafios da Integração PID + IoT


– Latência na comunicação: Pode comprometer respostas rápidas em sistemas críticos.
– Ajuste de parâmetros PID: Difícil encontrar os melhores valores Kp, Ki e Kd utilizando mais processamento.
– Segurança: Sistemas IoT são alvos de ataques cibernéticos, exigindo conhecimentos de Cybersecurity e redes.
– Manutenção: Como envolve a integração de mais de um sistema, geralmente é necessário dominar mais de uma linguagem de programação e conhecimento interdisciplinar.

Aplicativo para monitoramento e parametrização em Flutter

Figura 6. Aplicativo para monitoramento e parametrização em Flutter

O aplicativo faz a conexão com o broker MQTT e o ESP32 assim que aberto, obtendo todos os parâmetros salvos na EEPROM do ESP32 e enviando para atualizar caso o usuário deseje.

Código Completo, Demonstrações e Contribuições

O código-fonte completo do projeto pode ser acessado no GitHub. Caso tenha interesse em contribuir, sinta-se à vontade para enviar sugestões e melhorias!

Conclusão

O uso do controle PID em aplicações IoT mostrou-se uma solução eficiente para sistemas que exigem ajustes automáticos e monitoramento remoto. A integração com plataformas de comunicação, como MQTT, permite um controle dinâmico e responsivo, otimizando o desempenho em tempo real.

No projeto demonstrado, foi possível visualizar como o PID melhora a estabilidade do sistema, reduzindo o erro e garantindo que a variável controlada atinja o setpoint desejado de forma mais eficiente. Além disso, a implementação em microcontroladores, como o ESP32, mostrou-se viável e acessível.

Para trabalhos futuros, podem ser exploradas estratégias de autoajuste adaptativo do PID (como controle Fuzzy-PID e PID baseado em aprendizado de máquina) e otimizações para consumo de energia em dispositivos IoT. Além disso, é essencial continuar aprimorando a segurança desses sistemas para evitar vulnerabilidades em aplicações críticas.

Referências


1. https://en.wikipedia.org/wiki/Ziegler–Nichols_method

2. https://materialpublic.imd.ufrn.br/curso/disciplina/1/63/2/11

3. https://embarcados.com.br/controlador-proporcional-em-sistemas-de-segunda-ordem/

4.https://www.ltiengenharia.com.br/2020/10/25/sistemas-de-controle-sistemas-dinamicos-de-segunda-ordem/

5.https://www.linkedin.com/pulse/implementação-de-um-controle-pid-esp32-com-algoritmo-método-mecabô/

Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.
Comentários:
Notificações
Notificar
0 Comentários
recentes
antigos mais votados
Inline Feedbacks
View all comments
Home » Internet Das Coisas » Controle PID em IoT: Aplicações e Benefícios na Automação

EM DESTAQUE

WEBINARS

VEJA TAMBÉM

JUNTE-SE HOJE À COMUNIDADE EMBARCADOS

Talvez você goste: