Trilha de aprendizado · Nível 13 · Tutorial 5

Controle proporcional de uma saída RC

Fechar uma malha proporcional sobre a tensão de um circuito RC e explicar por que ela pode se acomodar sem alcançar exatamente a referência.

  • Nível: Intermediário
  • Duração: 20 min
  • 8 passos
Controle proporcional de uma saída RC

O que você vai percorrer

  1. Da montagem RC à malha de controle Reconheça o circuito RC como planta e siga o caminho completo da atuação e da medição em uma malha fechada. 2 min
  2. Calcule o erro e a ação proporcional Calcule o erro de tensão e a ação proporcional sem confundir volts, fração de ciclo de trabalho e contagens. 2 min
  3. Limite o comando antes de converter Converta a ação proporcional em um comando PWM válido, limitando o ciclo de trabalho antes da quantização. 2 min
  4. Execute a atualização de controle no Uno 4 min
  5. Meça o erro depois da acomodação Meça a diferença entre referência e saída após a acomodação, sem confundi-la com a mudança entre patamares. 4 min
  6. Explique por que a saída para antes da referência Preveja o erro permanente de uma malha proporcional não saturada e identifique quando essa previsão deixa de valer. 2 min
  7. Aumente o ganho sem presumir estabilidade Compare ganhos proporcionais moderados, observe erro, transiente e limites, e reconheça quando interromper o ajuste de forma conservadora. 2 min
  8. Valide sua malha proporcional Valide uma malha proporcional completa por meio de um caso numérico, verificando escalas, limite do PWM e erro permanente. 2 min

O que você vai aprender

  • Identificar os blocos e o sentido da realimentação na montagem.
  • Implementar o controlador proporcional com escalas e limites de saída coerentes.
  • Medir o erro permanente para uma referência alcançável.
  • Relacionar o ganho proporcional à redução do erro e aos limites da resposta dinâmica.

Antes de começar

  • Caracterização da resposta ao degrau
  • Realimentação negativa e seguidor de tensão
  • Controle de brilho com PWM
  • Diagnóstico de aquisição e falhas de comunicação

Passo 1 de 8

Da montagem RC à malha de controle

Reconheça o circuito RC como planta e siga o caminho completo da atuação e da medição em uma malha fechada.

Reconheça a malha de controle

Do ensaio à malha fechada

O circuito RC caracterizado anteriormente será agora a planta de uma malha fechada. A diferença é que o PWM no pino 3 não seguirá mais um degrau definido manualmente: o firmware decidirá a atuação a partir da referência desejada e da tensão que ele mede no capacitor.

Sentido dos sinais

Siga o percurso do sinal: a referência entra no controlador; ele comanda o PWM; o RC transforma esse comando em tensão; A0 mede a tensão no capacitor e a devolve ao controlador. Esse retorno é a realimentação.

Diagrama da malha

Diagrama em blocos com referência, controlador no microcontrolador, PWM, circuito RC, ADC e uma seta de realimentação retornando ao controlador.

A tensão medida retorna por A0 para orientar a próxima atuação do firmware.

Localize os blocos físicos

Ligações da montagem

Use esta montagem de referência, reutilizando o Uno R3 e o RC do ensaio anterior:

  • pino digital 3 → resistor de 10 kΩ → nó RC;
  • nó RC → entrada analógica A0;
  • nó RC → terminal positivo do capacitor de 10 µF;
  • terminal negativo do capacitor → GND do Uno.

O resistor e o capacitor formam a planta RC. O PWM é o atuador; A0 e o ADC formam a medição. Use capacitor com tensão nominal de pelo menos 10 V.

Onde cada bloco está no circuito

Diagrama da ligação entre pino 3, resistor de 10 kΩ, nó do capacitor, A0 e GND comum.

O mesmo nó é a saída da planta RC e a entrada de medição A0.

Dica

Firmware e circuito

A referência existe no firmware, não como um fio adicional. O controlador também existe no firmware. Já PWM, RC e ADC correspondem a sinais e componentes físicos da montagem.

Faça uma conferência segura

Atenção

Verificação antes de energizar

Com a placa desenergizada, confirme a faixa e a polaridade antes de conectar o USB:

  • o terminal negativo do capacitor eletrolítico vai ao GND comum;
  • A0 está ligado ao nó RC, não diretamente ao pino 3;
  • o resistor de 10 kΩ fica entre o pino 3 e o nó RC;
  • não há fonte externa conectada ao nó nem cargas de potência;
  • com USB de 5 V, a tensão em A0 deve permanecer entre GND e 5 V.

Energize somente depois dessa conferência. Esta prática usa baixa energia; não conecte motor, bateria externa ou outra fonte de alimentação.

Pratique a identificação

Blocos e funções

Associe cada elemento da malha à sua função nesta montagem.

Identifique o caminho de realimentação

Faça as associações corretas.

Toque em um item e depois no par correspondente.

Passo 2 de 8

Calcule o erro e a ação proporcional

Calcule o erro de tensão e a ação proporcional sem confundir volts, fração de ciclo de trabalho e contagens.

Compare referência e medição

Erro com sinal

Em cada atualização, a referência r[k] e a tensão medida y[k] devem estar na mesma unidade: volts. O erro é:

e[k] = r[k] − y[k]

Ele pode ser positivo ou negativo. Se a tensão no capacitor está abaixo da referência, e é positivo. Se está acima, e é negativo.

Para esta planta RC, aumentar o ciclo de trabalho do PWM tende a aumentar a tensão medida. Portanto, o sinal do erro já indica o sentido desejado da ação: erro positivo pede aumento de comando; erro negativo pede redução.

O sinal mostra o sentido da correção

Diagrama compara uma medição abaixo da referência, que produz erro positivo e aumento de comando, com uma medição acima da referência, que produz erro negativo e redução de comando.

Para uma planta de ganho positivo, o sinal de e[k] define se a ação proporcional aumenta ou reduz o comando.

Transforme erro em comando calculado

Lei proporcional

O controlador puramente proporcional calcula uma fração de ciclo de trabalho:

u_calc[k] = K_p × e[k]

Neste step, u_calc é apenas o comando calculado; os limites físicos e a conversão para o valor inteiro do PWM serão tratados no próximo step.

Não há termo de polarização: se e[k] fosse zero, esta lei produziria u_calc igual a zero. Para manter as escalas coerentes, se e está em volts e u_calc é uma fração de ciclo de trabalho, K_p deve ter unidade fração de ciclo de trabalho por volt.

Exemplo

Exemplo numérico

Com r = 2,0 V, y = 1,2 V e K_p = 0,20 por volt:

  1. e = 2,0 − 1,2 = 0,8 V
  2. u_calc = 0,20 por V × 0,8 V = 0,16

O resultado 0,16 representa uma fração de ciclo de trabalho, equivalente a 16%. Não é ainda uma contagem do PWM.

Se y fosse 2,4 V, e seria −0,4 V e u_calc seria −0,08: um pedido de redução, não uma tensão negativa aplicada ao RC.

Mantenha as unidades separadas

Escalas da malha

Acompanhe cada escala. Não subtraia diretamente uma contagem do ADC de uma referência em volts, nem use uma porcentagem como se fosse o inteiro enviado ao PWM.

Dica

Use a tensão de referência do ADC que corresponda à alimentação e à configuração reais do seu Uno. Com a referência padrão ligada a cerca de 5 V, por exemplo, uma leitura de 512 corresponde aproximadamente à metade dessa tensão; meça a alimentação se precisar de maior precisão.

Tabela de escalas

Valores e unidades usados antes da conversão final do PWM.

A conversão para o inteiro do PWM ocorrerá somente após limitar o comando calculado.
GrandezaSímboloFaixa típicaUnidade
Leitura do ADCadc0 a 1023contagens
Referênciar[k]ex.: 0 a 5V
Mediçãoy[k]ex.: 0 a 5V
Erroe[k]pode ser negativoV
Ganho proporcionalK_pex.: 0,20fração/V
Comando calculadou_calc[k]ainda sem limitefração
PWM aplicadopwm0 a 255inteiro

Verifique a sequência de cálculo

Pratique o cálculo

Uma leitura ADC de 410 foi convertida corretamente para y[k] = 2,00 V. Para r[k] = 3,00 V e K_p = 0,25 por volt, qual é o comando proporcional calculado u_calc[k]?

float y = 2.00;
float r = 3.00;
float kp = 0.25;  // fração de ciclo de trabalho por volt

float erro = {{1}} - {{2}};
float uCalc = {{3}} * erro;

Complete usando as variáveis que preservam as unidades corretas.

Código com escalas coerentes

Complete a expressão do erro e da ação proporcional.

cpp
float y = 2.00;
float r = 3.00;
float kp = 0.25;  // fração de ciclo de trabalho por volt

float erro =  - ;
float uCalc =  * erro;

Passo 3 de 8

Limite o comando antes de converter

Converta a ação proporcional em um comando PWM válido, limitando o ciclo de trabalho antes da quantização.

Separe cálculo, limite e aplicação

Três versões do comando

A ação proporcional produz u_calc, um comando em ponto flutuante. Antes de enviá-lo ao PWM, separe três valores:

  • u_calc: valor pedido pelo controlador; pode ser menor que 0 ou maior que 1.
  • u_limitado: comando restrito à faixa que esta montagem consegue aplicar, de 0 a 1.
  • pwm: inteiro de 0 a 255 realmente escrito no pino.

A ordem é essencial: limite primeiro o ciclo de trabalho em ponto flutuante; só depois multiplique por 255, arredonde e converta para inteiro.

Da ação calculada ao PWM

Diagrama com três comandos de entrada: negativo, dentro da faixa e acima do máximo. Um limitador os leva ao intervalo de zero a um e, em seguida, uma escada representa a conversão para níveis discretos de PWM.

O limitador atua antes da quantização: valores abaixo de 0 viram 0; valores acima de 1 viram 1.

Aplique a faixa física do atuador

Restrinja antes de converter

Nesta montagem, o PWM do pino 3 só pode aplicar ciclo de trabalho entre 0% e 100%. Portanto, um pedido negativo não cria tensão negativa no capacitor: ele resulta em PWM zero. Um pedido acima de 100% resulta no máximo disponível.

Use arredondamento para o inteiro mais próximo: pwm = inteiro(u_limitado × 255 + 0,5). Depois da conversão, o ciclo efetivo é pwm / 255. Essa pequena diferença é a quantização do PWM.

Os três casos

Exemplos usando o arredondamento definido para a conversão.

Comando limitado e comando aplicado pelo PWM.
u_calcu_limitadoPWM aplicadoCiclo efetivo
-0,180,0000/255 = 0
0,420,42107107/255 ≈ 0,420
1,271,00255255/255 = 1

Limitação e escrita no PWM

Trecho a inserir após calcular uCalc. Ele limita em ponto flutuante e arredonda uma única vez na conversão.

cpp
float uLimitado = uCalc;

if (uLimitado < 0.0f) {
  uLimitado = 0.0f;
} else if (uLimitado > 1.0f) {
  uLimitado = 1.0f;
}

int pwmValue = (int)(uLimitado * 255.0f + 0.5f);
analogWrite(3, pwmValue);

Prática: limite antes de escalar

Complete a conversão segura

Complete as comparações e o termo de arredondamento.

cpp
float uLimitado = uCalc;

if (uLimitado  0.0f) {
  uLimitado = 0.0f;
} else if (uLimitado  1.0f) {
  uLimitado = 1.0f;
}

int pwmValue = (int)(uLimitado * 255.0f + );
analogWrite(3, pwmValue);

Confira os três cenários

Preveja a saída aplicada

Com a regra apresentada, qual tripla de valores de PWM é aplicada, nessa ordem, para u_calc = -0,18, 0,42 e 1,27?

Passo 4 de 8

Execute a atualização de controle no Uno

Defina o ciclo de controle

Uma atualização, uma sequência

A cada período de controle, o Uno executa a mesma cadeia: mede a tensão no capacitor, calcula o erro, calcula a ação proporcional, limita o comando, converte-o para PWM e atualiza o pino 3.

A referência começa em 1 V e passa para 2 V após 3 s. O ensaio termina em 8 s, quando o PWM volta a zero. Use estes valores como ponto de partida para o RC de 10 kΩ e 10 µF; eles não são uma regra universal para qualquer planta.

Fluxo de uma atualização

Diagrama da malha fechada com referência, cálculo proporcional, limitação, PWM no pino 3, circuito RC e retorno da tensão do capacitor para A0.

A medição retorna ao cálculo na atualização seguinte; o PWM atua no circuito RC.

Dica

Política de tempo

Mantenha a configuração padrão do PWM do Uno no pino 3. A tarefa de controle mede sua própria duração com micros(), enquanto a transmissão serial ocorre fora do trecho crítico.

Se uma atualização estiver atrasada, o sketch executa uma única atualização atual e agenda a próxima a partir de agora. Ele conta o atraso, mas não tenta recuperar uma sequência de amostras passadas.

Monte o núcleo do sketch

Bloco 1 — parâmetros e inicialização

Copie este bloco no início de um único arquivo .ino. Os próximos blocos devem ser colocados abaixo dele, na ordem apresentada.

cpp
#include <Arduino.h>
#include <math.h>

const uint8_t PWM_PIN = 3;
const uint8_t ADC_PIN = A0;
const float ADC_REF_V = 5.0f;
const float KP = 0.2f;              // ciclo de trabalho por volt
const unsigned long CONTROL_US = 10000UL;
const unsigned long STEP_TIME_US = 3000000UL;
const unsigned long TEST_TIME_US = 8000000UL;
const unsigned long PRINT_US = 500000UL;

unsigned long startUs;
unsigned long nextControlUs;
unsigned long nextPrintUs;
unsigned long lastSampleUs = 0;
unsigned long lastTaskUs = 0;
uint16_t missedUpdates = 0;
bool finished = false;

float referenceV = 1.0f;
float measuredV = 0.0f;
float uCalculated = 0.0f;
float uApplied = 0.0f;
uint8_t pwmApplied = 0;

void setup() {
  pinMode(PWM_PIN, OUTPUT);
  analogWrite(PWM_PIN, 0);

  Serial.begin(115200);
  Serial.println("t_us,r_V,y_V,u_calc,u_applied,pwm,task_us,missed");

  startUs = micros();
  nextControlUs = startUs;
  nextPrintUs = startUs + CONTROL_US;
}

Bloco 2 — adquira, calcule e atue

Acrescente esta função logo abaixo do primeiro bloco. Ela contém a atualização da malha: aquisição, cálculo, limitação, conversão e escrita do PWM.

cpp
void controlUpdate(unsigned long nowUs) {
  unsigned long taskStartUs = micros();
  lastSampleUs = nowUs - startUs;

  referenceV = (lastSampleUs < STEP_TIME_US) ? 1.0f : 2.0f;

  int adc = analogRead(ADC_PIN);
  measuredV = adc * ADC_REF_V / 1023.0f;

  float errorV = referenceV - measuredV;
  uCalculated = KP * errorV;
  uApplied = constrain(uCalculated, 0.0f, 1.0f);

  pwmApplied = (uint8_t)lroundf(uApplied * 255.0f);
  analogWrite(PWM_PIN, pwmApplied);

  lastTaskUs = micros() - taskStartUs;
}

Execute e registre fora do trecho crítico

Bloco 3 — agenda, registro e encerramento

Acrescente este último bloco, compile e envie o sketch ao Uno. Abra o Monitor Serial em 115200 baud.

A impressão ocorre a cada 500 ms, fora de controlUpdate(), e somente quando há espaço no buffer de transmissão. Ao finalizar, o programa escreve somente END,pwm_zero e não envia registros antigos com o PWM já desligado.

cpp
void loop() {
  unsigned long nowUs = micros();

  if (!finished && (long)(nowUs - nextControlUs) >= 0) {
    if (nowUs - startUs >= TEST_TIME_US) {
      analogWrite(PWM_PIN, 0);
      pwmApplied = 0;
      uApplied = 0.0f;
      finished = true;
      Serial.println("END,pwm_zero");
    } else {
      if (nowUs - nextControlUs >= CONTROL_US) {
        missedUpdates++;
      }

      controlUpdate(nowUs);
      nextControlUs = nowUs + CONTROL_US;
    }
  }

  if (!finished && (long)(nowUs - nextPrintUs) >= 0 &&
      Serial.availableForWrite() >= 60) {
    nextPrintUs = nowUs + PRINT_US;
    Serial.print(lastSampleUs);
    Serial.print(','); Serial.print(referenceV, 3);
    Serial.print(','); Serial.print(measuredV, 3);
    Serial.print(','); Serial.print(uCalculated, 3);
    Serial.print(','); Serial.print(uApplied, 3);
    Serial.print(','); Serial.print(pwmApplied);
    Serial.print(','); Serial.print(lastTaskUs);
    Serial.print(','); Serial.println(missedUpdates);
  }
}
Saída esperada
t_us,r_V,y_V,u_calc,u_applied,pwm,task_us,missed
10012,1.000,0.088,0.182,0.182,46,116,0
510084,1.000,0.499,0.100,0.100,26,115,0
1010180,1.000,0.499,0.100,0.100,26,116,0
1510276,1.000,0.499,0.100,0.100,26,115,0
2010372,1.000,0.499,0.100,0.100,26,116,0
2510468,1.000,0.499,0.100,0.100,26,115,0
3010564,2.000,0.499,0.300,0.300,77,116,0
3510660,2.000,0.997,0.201,0.201,51,115,0
4010756,2.000,1.002,0.200,0.200,51,116,0
4510852,2.000,1.002,0.200,0.200,51,115,0
5010948,2.000,1.002,0.200,0.200,51,116,0
5511044,2.000,1.002,0.200,0.200,51,115,0
6011140,2.000,1.002,0.200,0.200,51,116,0
6511236,2.000,1.002,0.200,0.200,51,115,0
7011332,2.000,1.002,0.200,0.200,51,116,0
7511428,2.000,1.002,0.200,0.200,51,115,0
END,pwm_zero

As tensões, os tempos, a duração da tarefa e os valores de PWM variam conforme o circuito e a resolução do ADC. Confira o cabeçalho, o primeiro registro próximo de 10 ms, a mudança de referência perto de 3 s, a aproximação da saída de 1 V no segundo patamar e a linha final END.

O que observar

O registro preserva o instante relativo da aquisição, referência, tensão medida, comando calculado, comando limitado aplicado, inteiro PWM, duração da tarefa e número de atualizações vencidas.

Com Kp = 0,2 por V e ganho estático próximo de 5 V por ciclo, a malha tende a se acomodar perto de 1 V quando a referência vale 2 V. O comando final próximo de 0,20 e o PWM próximo de 51 são coerentes com essa condição.

Confira a lógica antes de compilar

Sequência da atualização

Antes de compilar, confira a ordem das operações e as funções usadas no cálculo.

Organize o ciclo de controle

Ordene as etapas de uma atualização da malha.

  1. Adquirir a tensão em A0
  2. Calcular o erro e a ação proporcional
  3. Converter para o inteiro de 0 a 255
  4. Limitar o comando entre 0 e 1
  5. Atualizar o PWM no pino 3

Complete a cadeia de cálculo

Complete as operações centrais da atualização.

cpp
float errorV =  - measuredV;
uCalculated = KP * errorV;
uApplied = (uCalculated, 0.0f, 1.0f);
pwmApplied = (uint8_t)(uApplied * 255.0f);

Passo 5 de 8

Meça o erro depois da acomodação

Meça a diferença entre referência e saída após a acomodação, sem confundi-la com a mudança entre patamares.

Defina o ensaio e encontre o regime final

Ensaio comparável

Uma referência alcançável está dentro da faixa de tensão que a montagem RC pode produzir com o PWM entre 0 e 255. Isso não significa que a tensão final será exatamente igual à referência: nesta malha proporcional, pode permanecer uma diferença residual.

Use o ensaio do step anterior como comparação controlada: mantenha o mesmo circuito, o mesmo período de atualização e o mesmo Kp. A mudança de referência já está definida no firmware, de 1,0 V para 2,0 V após 3 s. Não altere ganho, período e circuito ao mesmo tempo; assim, o registro permite atribuir a mudança observada à referência.

Janela final de medição

Diagrama de uma malha PWM-RC com realimentação e gráfico de tensão que se acomoda abaixo da referência; uma faixa final reúne pontos de medição.

Depois do transiente, escolha uma janela em que as amostras variem apenas ao redor de um patamar final.

Calcule a partir de uma janela

Estime a tensão e confira o comando

No registro serial, localize uma janela posterior à acomodação. Use várias leituras consecutivas de tensão sem filtragem adicional para estimar y_final. Uma média simples é suficiente para este ensaio:

y_final = soma das leituras da janela / quantidade de leituras

A pequena dispersão revela a resolução do ADC e flutuações da medição. Não use pontos ainda na subida nem uma leitura isolada.

Com a referência constante, calcule em volts:

e_permanente = r − y_final

Erro positivo indica que a tensão final ficou abaixo da referência. Na mesma janela, confira u_calc, u_applied e PWM: se o comando aplicado estiver distante dos extremos, o limite do atuador não está determinando o resultado final.

Registro final coerente

Considere uma janela final do sketch do step anterior, com r = 2,00 V e Kp = 0,20 por V. As tensões correspondem a leituras consecutivas do ADC já convertidas para volts; valores de comando foram exibidos com três casas decimais.

O PWM permanece em 51. O comando calculado e o aplicado coincidem na janela, portanto não há limitação final.
AmostraTensão bruta (V)u_calcu_appliedPWM
10,9970,2010,20151
21,0020,2000,20051
30,9970,2010,20151
41,0020,2000,20051
51,0020,2000,20051

Interprete a medição

Não confunda as duas diferenças

A média das cinco tensões do registro é 1,000 V. Portanto, compare esse patamar com a referência de 2,00 V; não compare os dois patamares do ensaio entre si.

Na caracterização em malha aberta, a mudança de saída era Δy = y_final − y_inicial. Ela descreve o tamanho da transição. Aqui, o erro permanente é e_permanente = r − y_final: ele compara a saída final com o valor desejado.

O PWM 51 equivale aproximadamente a 51/255 = 0,20 de ciclo de trabalho. Como está longe de 0 e 255, e u_calc coincide com u_applied, a janela final não está saturada.

Erro permanente do exemplo

Complete o erro permanente do registro, em volts:

e_permanente = 2,00 V − 1,00 V = ___ V

Documente e confira os limites

Registre a evidência

Para documentar o ensaio, registre em uma tabela ou anotação: referência, Kp, intervalo de tempo escolhido, leituras da janela ou sua média para y_final, erro permanente e comando final.

A conclusão sobre saturação deve usar o comando aplicado: nesta montagem, PWM igual a 0 ou 255 indica um limite. Um valor intermediário, junto de u_calc igual a u_applied, indica que o comando final não foi cortado. Isso não substitui observar o transiente, mas é a conferência necessária para interpretar o regime final.

Registre sua própria medição

No seu ensaio, informe a referência, Kp, a janela final escolhida, as leituras ou a média usada para y_final, o valor de e_permanente e o PWM aplicado nessa janela. Diga se o comando final estava afastado de 0 e 255.

Escreva pelo menos 80 caracteres (0/80).

Passo 6 de 8

Explique por que a saída para antes da referência

Preveja o erro permanente de uma malha proporcional não saturada e identifique quando essa previsão deixa de valer.

O erro mantém o PWM ativo

Por que sobra erro?

Em regime acomodado, o controlador proporcional ainda calcula u = Kₚ × e. Portanto, para manter uma atuação positiva no RC, ele precisa de um erro positivo.

Se a saída chegasse exatamente à referência, teríamos e = 0. Sem termo de polarização, isso levaria a u = 0; então a planta RC deixaria de receber comando e sua tensão cairia. Por isso, em uma malha P estável e sem saturação, é esperado que a tensão final fique abaixo de uma referência positiva.

Erro que sustenta a atuação

Diagrama de uma malha proporcional em equilíbrio: a saída fica abaixo da referência, restando um erro positivo que mantém o PWM diferente de zero.

No controle P sem polarização, erro final diferente de zero e comando final diferente de zero aparecem juntos.

Dica

Antes de prever

Isso não indica, por si só, defeito na montagem. É uma consequência da lei proporcional pura. A previsão numérica a seguir vale apenas quando o equilíbrio é estável e o comando final não está preso em 0 ou 1.

Da planta à fórmula

Previsão do erro permanente

Use as relações estáticas abaixo, com todas as grandezas em escalas compatíveis:

  • Planta: y = K × u
  • Controlador: u = Kₚ × e
  • Erro: e = r − y

Substituindo uma relação na outra, resulta:

e_permanente = r / (1 + K × Kₚ)

Aqui, K está em V por unidade de ciclo de trabalho e Kₚ em unidade de ciclo de trabalho por V. Assim, K × Kₚ não tem unidade, como deve ocorrer no denominador.

Atenção

Hipóteses necessárias

A fórmula pressupõe:

  1. Referência constante e equilíbrio estável;
  2. Planta aproximada por y = K × u, com offset desprezível;
  3. Controlador somente proporcional, sem polarização;
  4. Comando final dentro de 0 a 1, sem saturação;
  5. Quantização de ADC e PWM desprezada na estimativa.

Ela é uma previsão aproximada para comparar com a medição, não uma garantia de coincidência exata.

Exemplo

Atenção à escala do ganho

Se o ganho foi anotado em volts por contagem PWM, converta-o antes de usar a fórmula:

K (V/ciclo) = K_contagem (V/contagem) × 255 (contagens/ciclo)

Por exemplo, 0,0196 V/contagem corresponde aproximadamente a 5,0 V por unidade de ciclo de trabalho.

Use a previsão com números coerentes

Exemplo

Exemplo completo

Considere uma planta com K = 5,0 V por ciclo e um controlador com Kₚ = 0,20 ciclo/V. Para referência r = 2,0 V:

e_permanente = 2,0 / (1 + 5,0 × 0,20)

e_permanente = 2,0 / 2,0 = 1,0 V

Logo, a previsão é y_final = r − e = 1,0 V. O comando previsto é u = 0,20 × 1,0 = 0,20, dentro da faixa válida: a fórmula pode ser usada.

Compare como estimativas

Uma medição de 1,03 V, por exemplo, é próxima da previsão de 1,0 V. Pequenas diferenças podem vir da estimativa de K, da tensão real de referência do ADC, da resolução e das tolerâncias do circuito.

Compare previsão e medida, mas não conclua que há falha apenas porque elas não são idênticas.

Verifique antes de aplicar

Calcule o erro previsto

Agora use valores diferentes. Uma planta tem K = 4,0 V por ciclo, o controlador usa Kₚ = 0,25 ciclo/V e a referência constante é r = 1,80 V. Calcule primeiro o erro permanente previsto.

Erro permanente previsto

e_permanente = ___ V

Confira o comando final

Com o erro que você acabou de calcular, obtenha o comando proporcional previsto: u = Kₚ × e_permanente. Informe a fração de ciclo de trabalho. Esse valor deve ficar entre 0 e 1 para confirmar a hipótese de não saturação.

Comando previsto

u = ___

Reconheça o limite da fórmula

Um cálculo proporcional pede u_calc = 1,20, mas o PWM é limitado a u = 1,00. Ainda é válido usar diretamente e_permanente = r/(1 + K × Kₚ) para prever o erro final?

Passo 7 de 8

Aumente o ganho sem presumir estabilidade

Compare ganhos proporcionais moderados, observe erro, transiente e limites, e reconheça quando interromper o ajuste de forma conservadora.

Faça uma comparação justa

Uma comparação controlada

Compare um parâmetro por vez

Repita o mesmo ensaio com a mesma referência, circuito e período de atualização. Comece com Kₚ = 0,2 por volt e depois use Kₚ = 0,4 por volt. Altere somente Kₚ.

Se a malha continuar estável e o comando final não estiver limitado, o ganho maior tende a reduzir o erro permanente. Isso não significa que qualquer ganho maior seja uma escolha melhor ou segura.

Mesmo ensaio, dois ganhos

Comparação visual entre respostas de tensão e comandos PWM para dois ganhos proporcionais moderados.

Compare tensão medida e comando aplicado na mesma escala de tempo; não compare somente o valor final.

Dica

O que olhar no registro

Para cada registro, observe três aspectos:

  1. Erro final: a tensão ficou mais próxima da referência?
  2. Acomodação: a resposta chegou à região final mais rapidamente ou começou a alternar de forma inadequada?
  3. Comando: o PWM encostou em 0 ou 255 durante o transiente ou na condição final?

O comando pode atingir um limite logo após uma mudança de referência e depois voltar para dentro da faixa. Portanto, um PWM final não saturado não prova que não houve saturação durante o caminho.

Leia erro, tempo e limites

Leitura de dois registros

Considere dois ensaios da mesma montagem, com referência final de 2,0 V, ganho estático aproximado de 5,0 V por ciclo e a mesma mudança de referência de 1,0 V para 2,0 V. Os valores finais são compatíveis com a previsão proporcional apresentada anteriormente.

Os picos de PWM resumem o maior valor aplicado durante cada ensaio. Eles mostram que elevar Kₚ reduz o erro final, mas também exige uma atuação inicial maior.

Ganhos moderados no mesmo ensaio

Os dois ensaios terminam sem saturação. Ainda assim, o pico deve ser conferido: o comando durante a transição pode se aproximar de um limite mesmo quando o comando final é intermediário.

Resumo de registros comparáveis; PWM aplicado é o inteiro efetivamente enviado ao pino 3.
EnsaioKₚ (por V)Tensão finalErro finalPWM finalPWM de pico
A0,21,00 V1,00 V5177
B0,41,33 V0,67 V68136

Interprete a comparação

Qual conclusão é mais adequada a partir da tabela?

Estabeleça limites de segurança

Ganho maior não garante estabilidade

Em uma planta RC real, há dinâmica. A malha digital também introduz aquisição, cálculo, atualização do PWM e atualizações em instantes discretos. Quando o ganho se torna excessivo para esse conjunto, uma correção pode chegar tarde e em magnitude exagerada.

Não há um valor universal de Kₚ que garanta estabilidade: ele depende da planta real, do período, dos atrasos e das condições do ensaio. Não tente descobrir deliberadamente o ganho crítico.

Atenção

Interrompa antes de forçar o limite

Interrompa o ensaio e leve o PWM a zero se observar:

  • tensão com oscilações de amplitude crescente;
  • PWM alternando persistentemente entre 0 e 255;
  • atualizações vencidas ou perda de prazo no registro.

No sketch usado antes, pressionar o botão de reset executa novamente setup(), que escreve PWM zero no pino 3. Depois, revise o registro e retorne ao último ganho que apresentou resposta adequada; não aumente o ganho para “testar mais”.

Dica

Saturação no transiente

Saturação no início de um degrau não invalida automaticamente a observação do erro final. Mas ela impede explicar todo o transiente apenas pela lei proporcional sem limites. Para comparar a previsão de erro permanente, confirme que, na janela final, o comando aplicado esteja afastado de 0 e 1 e seja igual ao comando calculado dentro da quantização.

Pratique uma decisão segura

Decida com base no registro

Em um ensaio posterior, feito com o mesmo circuito, referência e período, você aumentou Kₚ além dos valores moderados comparados. O registro passa a mostrar oscilações de tensão com amplitude crescente. O PWM alterna repetidamente entre 0 e 255 e o contador de atualizações vencidas aumenta.

Qual decisão você tomaria? Justifique usando os sinais do registro e descreva a ação imediata sobre o PWM. Não é necessário propor outro ganho numérico.

Escreva pelo menos 100 caracteres (0/100).

Passo 8 de 8

Valide sua malha proporcional

Valide uma malha proporcional completa por meio de um caso numérico, verificando escalas, limite do PWM e erro permanente.

Leia o caso completo

Caso integrado

Caso final: referência de 2,00 V

Considere a mesma montagem RC com uma condição nova, já acomodada:

  • Referência: r = 2,00 V
  • Ganho proporcional: Kₚ = 0,50 ciclo de trabalho/V
  • Ganho estático estimado: K = 4,0 V por ciclo de trabalho

A tensão do capacitor retorna por A0 ao firmware. O firmware calcula o erro, atualiza o PWM no pino 3 e a tensão medida volta pela realimentação. A referência é alcançável pela planta, mas isso não garante erro nulo com controle puramente proporcional.

Malha proporcional em ação

Diagrama de uma malha fechada com firmware, PWM, circuito RC, ADC e retorno da tensão medida; o gráfico mostra a saída acomodada abaixo da referência.

A tensão no capacitor fecha a malha: ela é medida e usada para corrigir o PWM.

Registros da janela acomodada

Estas são leituras consecutivas da janela final. Calcule primeiro a média de tensão e só então avalie o erro e o comando.

Dados disponíveis para a validação; as conclusões ainda devem ser calculadas.
LeituraTensão y (V)PWM aplicado
11,3285
21,3385
31,3485
41,3385

Confira escalas e conversão

Calcule e limite o comando

A média das quatro leituras é 1,33 V. Complete o trecho com o erro permanente calculado e com os limites e a conversão corretos. O valor de pwm deve coincidir com o registro, dentro do arredondamento. Em código C/C++, use ponto decimal nos literais.

cpp
float kp = 0.50f;          // ciclo de trabalho por V
float erroPermanenteV = ;
float uCalc = kp * erroPermanenteV;
float uAplicado = constrain(uCalc, 0.0f, );
int pwm = (int)(uAplicado *  + );
analogWrite(3, pwm);

Teste a validação

Valide a resposta acomodada

Qual conclusão valida corretamente o caso, usando a média das leituras, o ganho estático estimado e o PWM registrado?

Conclua e avance

Explique a conclusão

Em 2 ou 3 frases, justifique por que a saída final abaixo de 2,00 V não aponta necessariamente falha. Inclua o erro permanente, a evidência sobre saturação e por que não é adequado aumentar Kₚ indefinidamente.

Escreva pelo menos 100 caracteres (0/100).

Resumo

Síntese da competência

  • Use a mesma unidade para referência e medição: neste caso, volts.
  • Kₚ transforma erro em fração de ciclo de trabalho; limite essa fração entre 0 e 1 antes de convertê-la para PWM de 0 a 255.
  • Valide o erro permanente em uma janela após a acomodação e confira se o comando final não foi saturado.
  • Uma saída acomodada abaixo de uma referência alcançável pode ser o comportamento esperado de uma malha proporcional, não um defeito de montagem.
  • Aumentar Kₚ pode reduzir o erro, mas a dinâmica, os atrasos e as atualizações discretas impedem supor estabilidade para qualquer ganho.
  • No próximo tutorial, você estudará uma ação adicional para lidar com erro constante, mantendo os limites de atuação.

Tutorial concluído

Parabéns! Você concluiu: Controle proporcional de uma saída RC

Você validou uma malha proporcional RC ao conferir escalas, limite de PWM, erro permanente e compatibilidade entre medição e previsão.

Baixe o Aplicativo agora para ter acesso a + de 5000 cursos gratuitos, exercícios, certificado e muito conteúdo sem pagar nada!

  • Cursos online 100% gratuitos do início ao fim

    Milhares de cursos online em vídeo, ebooks e áudiobooks.

  • Mais de 60 mil exercícios gratuitos

    Para testar seus conhecimentos no decorrer dos cursos online

  • Certificado Digital gratuito válido em todo o Brasil

    Gerado diretamente na galeria de fotos do seu celular e enviado ao seu e-mail

Aplicativo Cursa na tela de ebook, na tela de curso em vídeo e na tela de exercícios do curso, mais o certificado de conclusão de curso