
Passo 1 de 10
Delimite a montagem e a faixa segura de ensaio
Prepare uma montagem RC de baixa energia, uma faixa de referências alcançáveis e critérios claros para interromper o ensaio antes de ativar a malha.
Trilha de aprendizado · Nível 13 · Tutorial 8
Ajustar um PI com anti-windup para controlar a tensão de um circuito RC próprio, relacionando os ganhos e os atrasos à resposta medida.
Delimite a montagem e a faixa segura de ensaio
Prepare uma montagem RC de baixa energia, uma faixa de referências alcançáveis e critérios claros para interromper o ensaio antes de ativar a malha. 2 min
Execute a malha com margem de tempo
3 min
Prepare degraus que possam ser comparados
Crie um protocolo repetível para comparar respostas ao degrau sem confundir o efeito de parâmetros e condições de ensaio. 2 min
Encontre uma base proporcional conservadora
Selecione um K_p inicial estável mantendo a ação integral desabilitada e repetindo degraus comparáveis. 3 min
Introduza a integral em pequenos passos
Introduza K_i de forma gradual, mantendo a base proporcional e as condições de comparação fixas. 3 min
Escolha o ajuste pelo conjunto de métricas
Compare ajustes PI por métricas compatíveis e escolha um candidato que atenda ao conjunto de critérios. 3 min
Avalie o atraso acrescentado pelo filtro
Compare passagem direta e filtragem moderada sem alterar o PI, usando a tensão bruta para avaliar a resposta física. 3 min
Diferencie resolução limitada de ajuste inadequado
Distinguir variações residuais compatíveis com resolução de comportamentos que exigem redução de ganhos, revisão de atrasos ou interrupção segura. 2 min
Verifique a recuperação da saturação
Demonstre que o PI com integração condicional abandona a saturação após uma referência temporariamente inalcançável criada apenas por software. 2 min
Consolide e justifique o ajuste final
Documente, confirme e justifique o ajuste PI final nas condições realmente ensaiadas. 2 min

Passo 1 de 10
Prepare uma montagem RC de baixa energia, uma faixa de referências alcançáveis e critérios claros para interromper o ensaio antes de ativar a malha.
Antes de fechar a malha, limite a prática ao seu Arduino Uno R3, ao circuito RC já caracterizado e a uma alimentação de baixa tensão compatível com ambos. Não conecte rede elétrica, motores, relés nem cargas de potência.
Use somente os valores e limites que você já conferiu na sua montagem: tensão de alimentação, resistor, capacitor, corrente admissível do GPIO e faixa de entrada do ADC. Se algum componente estiver diferente do circuito caracterizado, interrompa a preparação e recaracterize a planta antes de controlar sua tensão.
A mesma tensão no nó do capacitor é medida em A0; por isso, a referência do Arduino e a do RC devem ser comuns.

PWM no pino 3 → resistor em série → nó do capacitor; nó → A0; capacitor → GND; todos os GNDs em comum.
Faça esta conferência física com a alimentação desligada:
Não troque a montagem nem os limites elétricos durante os ensaios de ajuste.
Atenção
Mantenha a corrente do GPIO compatível com o resistor já validado e a energia do capacitor baixa. Desligue ou aplique o comando seguro se houver aquecimento, cheiro incomum, conexão solta, leitura fora da faixa esperada ou qualquer outra anormalidade elétrica.
Defina agora, por escrito, uma janela fixa de comando e referências para os próximos ensaios.
Uma referência pode estar dentro da faixa numérica do ADC e ainda exigir um comando acima do teto de PWM escolhido. Ela não serve para o ajuste inicial: o controlador ficaria saturado e a resposta deixaria de indicar apenas o comportamento da malha.
Use os patamares medidos para separar alvos intermediários de um alvo que exigiria atuação indisponível.

Para o ajuste inicial, escolha referências dentro da região alcançável pelo intervalo conservador de PWM.
Você mediu que, com o teto conservador de PWM escolhido, a tensão do nó se estabiliza em aproximadamente 3,8 V. Qual referência é mais apropriada para os ensaios iniciais de ajuste, sem mudar a alimentação nem os limites de PWM?
Antes de investigar qualquer comportamento inesperado, qual é a ação correta?

Passo 2 de 10
Antes de ajustar ganhos, execute uma versão-base da malha e confirme que ela cumpre o período. Use somente a montagem RC já delimitada: PWM no pino 3, nó do capacitor em A0 e GND comum.
A tarefa periódica segue esta ordem: adquirir A0 → converter para volts → filtrar → calcular PI com anti-windup → limitar e aplicar o PWM. A telemetria fica fora desse trecho crítico.
Escolha inicialmente T_s considerando a constante de tempo que você mediu, os atrasos de aquisição e atuação e a duração real da tarefa. Neste roteiro, T_s = 20 ms. Ele é apenas um ponto de partida: precisa ser curto diante da dinâmica observada e, ao mesmo tempo, deixar folga de execução.
Nesta validação, mantenha K_i = 0. O objetivo é conferir escalas, execução e segurança; a busca de ganhos vem depois.

A telemetria segue por um caminho separado e não deve atrasar a atualização que mede e controla a planta.
Dica
Mantenha as escalas explícitas: referência e tensão medida em V; comando solicitado e aplicado normalizados entre 0 e 1; T_s em s na equação integral. O valor inteiro do PWM é calculado somente no final, a partir do comando aplicado.
Também defina uma faixa de medição plausível para esta montagem. O firmware não pode detectar toda falha física possível apenas com analogRead(), mas pode interromper se a tensão medida ultrapassar a faixa que você declarou aceitável ou se a leitura alcançar o trilho superior do ADC.
Em um novo sketch na IDE Arduino, cole este primeiro bloco. Ajuste somente valores que dependem da sua montagem já caracterizada: referência do ADC, constante de tempo registrada, limites conservadores, referências úteis e faixa plausível da tensão medida.
V_MEAS_MAX_VALID deve ficar acima das referências úteis, mas abaixo de uma tensão que seria anormal para o nó RC. O exemplo considera um patamar máximo conhecido de cerca de 3,8 V com o teto conservador.
const byte PIN_PWM = 3;
const byte PIN_ADC = A0;
const float V_ADC_REF = 5.00f;
const float TAU_PLANT_S = 0.50f; // valor medido
const unsigned long TS_US = 20000UL;
const float TS_S = 0.020f;
// Limites conservadores definidos no step anterior.
const float U_MIN = 0.05f;
const float U_MAX = 0.80f;
const float REF_INITIAL_V = 1.00f;
const float REF_STEP_V = 2.00f;
const float REF_RETURN_V = 1.00f;
const unsigned long STEP_AT_MS = 2000UL;
const unsigned long RETURN_AT_MS = 0UL; // 0 = sem retorno
const float KP = 0.10f; // comando normalizado por V
const float KI = 0.00f; // comando normalizado por V por s
const float ALPHA = 1.00f;
// Faixa declarada para esta montagem, não um limite universal.
const float V_MEAS_MIN_VALID = 0.00f;
const float V_MEAS_MAX_VALID = 4.20f;
enum StopCode : byte {
STOP_NONE = 0,
STOP_LATE_START = 1,
STOP_LATE_FINISH = 2,
STOP_INVALID_MEASUREMENT = 3
};
float vFilt = 0.0f, integral = 0.0f;
float vRawLog = 0.0f, refLog = REF_INITIAL_V;
float uReqLog = 0.0f, uAppLog = 0.0f;
bool filterReady = false, halted = false;
byte stopCode = STOP_NONE;
unsigned long nextUs, lastStartUs = 0, dtUsLog = 0;
unsigned long sampleMsLog = 0, sequenceStartUs = 0;
unsigned long maxDurationUs = 0, missedPeriods = 0;
unsigned long nextReportMs = 0;Cole este bloco imediatamente depois do anterior. TAU_PLANT_S documenta a dinâmica observada, mas não altera automaticamente o controlador. Já TS_S entra em KI × TS_S × erro: 20 ms devem aparecer como 0.020f, não como 20.
safeStop() aplica PWM zero e preserva uma causa de parada para a telemetria. A leitura do ADC é considerada inválida se alcançar o trilho superior ou sair da faixa plausível que você configurou para o nó.
float clampf(float x, float lo, float hi) {
if (x < lo) return lo;
if (x > hi) return hi;
return x;
}
float referenceFor(unsigned long elapsedMs) {
if (elapsedMs < STEP_AT_MS) return REF_INITIAL_V;
if (RETURN_AT_MS > STEP_AT_MS && elapsedMs >= RETURN_AT_MS) {
return REF_RETURN_V;
}
return REF_STEP_V;
}
void safeStop(byte cause) {
analogWrite(PIN_PWM, 0);
uAppLog = 0.0f;
halted = true;
stopCode = cause;
}
bool measurementValid(int raw, float vRaw) {
// raw = 1023 indica trilho superior; ajuste a faixa conforme a montagem.
return raw < 1023 &&
vRaw >= V_MEAS_MIN_VALID &&
vRaw <= V_MEAS_MAX_VALID;
}
void setup() {
pinMode(PIN_PWM, OUTPUT);
analogWrite(PIN_PWM, 0);
Serial.begin(115200);
filterReady = false;
integral = 0.0f;
halted = false;
stopCode = STOP_NONE;
sequenceStartUs = micros();
nextUs = sequenceStartUs + TS_US;
nextReportMs = millis() + 100UL;
}Cole a função de controle abaixo. A medição é convertida para volts antes do cálculo; o PWM inteiro só é formado depois de limitar o comando normalizado. Se a medição for inválida segundo a faixa declarada, o PWM é imediatamente zerado e a causa STOP_INVALID_MEASUREMENT fica registrada.
void controlTask(unsigned long startUs) {
if (lastStartUs != 0) dtUsLog = startUs - lastStartUs;
lastStartUs = startUs;
sampleMsLog = (startUs - sequenceStartUs) / 1000UL;
int raw = analogRead(PIN_ADC);
float vRaw = raw * (V_ADC_REF / 1023.0f);
float ref = referenceFor(sampleMsLog);
vRawLog = vRaw;
refLog = ref;
if (!measurementValid(raw, vRaw)) {
safeStop(STOP_INVALID_MEASUREMENT);
return;
}
if (!filterReady) {
vFilt = vRaw;
filterReady = true;
} else {
vFilt += ALPHA * (vRaw - vFilt);
}
float error = ref - vFilt;
float p = KP * error;
float dI = KI * TS_S * error;
float beforeI = p + integral;
float candidate = beforeI + dI;
bool acceptI = (candidate >= U_MIN && candidate <= U_MAX) ||
(beforeI >= U_MAX && dI < 0.0f) ||
(beforeI <= U_MIN && dI > 0.0f);
if (acceptI) integral += dI;
float uRequested = p + integral;
float uApplied = clampf(uRequested, U_MIN, U_MAX);
analogWrite(PIN_PWM, (int)(255.0f * uApplied + 0.5f));
uReqLog = uRequested;
uAppLog = uApplied;
}Cole este bloco após controlTask(). Se a tarefa começa depois de um ou mais períodos já vencidos, ou termina depois do próximo prazo, o firmware conta a perda, aplica o comando seguro e para a malha. Ele não tenta executar uma sequência de atualizações atrasadas.
A telemetria é enviada fora da tarefa crítica. Mesmo após uma parada, ela continua enviando a última linha para registrar stopCode: 0 = sem parada; 1 = início atrasado; 2 = conclusão atrasada; 3 = medição inválida.
long milliLog(float x) {
if (x > 9.999f) return 9999;
if (x < -9.999f) return -9999;
return (long)(x * 1000.0f + (x >= 0 ? 0.5f : -0.5f));
}
void sendTelemetry() {
if ((long)(millis() - nextReportMs) < 0) return;
nextReportMs = millis() + 100UL;
char line[72];
int n = snprintf(line, sizeof(line),
"%lu,%lu,%ld,%ld,%ld,%ld,%ld,%ld,%lu,%lu,%u\n",
sampleMsLog, dtUsLog, milliLog(refLog), milliLog(vRawLog),
milliLog(vFilt), milliLog(uReqLog), milliLog(uAppLog),
milliLog(integral), maxDurationUs, missedPeriods, stopCode);
if (n > 0 && n < (int)sizeof(line) && n <= Serial.availableForWrite()) {
Serial.write((const uint8_t *)line, n);
}
}
void loop() {
unsigned long now = micros();
if (!halted && (long)(now - nextUs) >= 0) {
unsigned long lateUs = now - nextUs;
if (lateUs >= TS_US) {
missedPeriods += 1UL + lateUs / TS_US;
safeStop(STOP_LATE_START);
} else {
unsigned long startUs = now;
controlTask(startUs);
unsigned long endUs = micros();
unsigned long durationUs = endUs - startUs;
if (durationUs > maxDurationUs) maxDurationUs = durationUs;
if (!halted) {
nextUs += TS_US;
if ((long)(endUs - nextUs) >= 0) {
++missedPeriods;
safeStop(STOP_LATE_FINISH);
}
}
}
}
sendTelemetry();
}100,20001,1000,87,87,91,91,0,312,0,0 200,19999,1000,152,152,85,85,0,312,0,0 300,20002,1000,199,199,80,80,0,316,0,0 400,19998,1000,234,234,77,77,0,316,0,0 2100,20001,2000,434,434,157,157,0,316,0,0
A saída é uma sequência contínua de CSV e os valores da planta variam conforme seu RC. Campos: tempo desde o início (ms), intervalo real `dt` (µs), referência (mV), tensão bruta (mV), tensão filtrada (mV), comando solicitado (milicomando), comando aplicado (milicomando), integral (milicomando), maior duração (µs), perdas de período e código de parada. Confirme que `dt` fica próximo de 20000 µs, `maxDurationUs` é muito menor que 20000 µs, `missedPeriods` fica em 0 e `stopCode` fica em 0 nas condições testadas.
Atenção
missedPeriods não é uma medida de pequeno jitter. Ele conta períodos descartados porque a tarefa já começou tarde ou terminou depois do próximo prazo. Em qualquer uma dessas situações, este sketch aplica PWM zero, registra a causa em stopCode e interrompe a malha.
Já dtUsLog mostra o intervalo real entre inícios de tarefas. Uma maior duração observada menor que T_s, perdas iguais a zero e stopCode = 0 indicam folga nas condições exercitadas. Isso não é garantia formal de pior caso: interrupções, caminhos condicionais e outras condições de uso podem alterar a duração.
Complete as lacunas mantendo as unidades coerentes para uma tarefa de 20 ms. A primeira constante é usada pelo agendamento com micros(); a segunda entra na equação integral; a terceira preserva a conversão do ADC para volts.
Preencha as constantes para um período de 20 ms e preserve a conversão do ADC para volts.
const unsigned long TS_US = ;
const float TS_S = ;
float vRaw = raw * ();Com o sketch em execução, sem iniciar ajuste de ganhos, anote uma linha representativa do Monitor Serial. Informe o período configurado, a maior duração observada, a margem observada aproximada (T_s − maxDuration), missedPeriods e stopCode. Diga também se essa margem é uma observação das condições atuais ou uma garantia de pior caso.
Escreva pelo menos 100 caracteres (0/100).

Passo 3 de 10
Crie um protocolo repetível para comparar respostas ao degrau sem confundir o efeito de parâmetros e condições de ensaio.
Antes de mudar qualquer ganho, defina um ensaio-padrão. Ele deve usar a mesma preparação, a mesma sequência de referências intermediárias, a mesma janela de observação e a mesma taxa de registro em todos os ajustes.
Escolha referências dentro da faixa útil já verificada, com margem para o PWM atuar. Por exemplo, use sempre: patamar inicial seguro → degrau para um patamar intermediário → observação pelo mesmo intervalo. Não troque a amplitude do degrau para “melhorar” uma resposta: isso impede uma comparação direta.
Na preparação, aguarde a planta atingir uma condição estável compatível com o procedimento definido e registre a tensão inicial realmente observada. Ajustes diferentes podem começar em valores ligeiramente diferentes; esse valor medido faz parte do registro, não é uma suposição.

A sequência e a janela são fixas; a resposta medida é o que permite comparar os ajustes.
Altere um único parâmetro por ensaio. Todo o restante precisa ficar fixo: montagem, referência e sequência de degraus, período T_s, limites de PWM, configuração de filtragem, janela de observação e taxa de registro.
Defina antes como cada resposta será julgada:
Escolha uma tolerância maior que as flutuações usuais de ruído e compatível com a resolução disponível. Se a curva não entra e permanece nessa faixa durante a janela, registre “não acomodou”; não atribua artificialmente um tempo de acomodação.
Dica
Use os dados de telemetria já disponíveis para calcular as métricas sempre da mesma maneira. Compare a tensão bruta com a referência para avaliar o resultado físico; registre também o comando aplicado para identificar saturação.
Não conclua que um ajuste é melhor apenas porque a subida parece rápida. Uma curva rápida que excede muito a referência, permanece saturada por mais tempo ou não se acomoda pode ser menos adequada que uma resposta um pouco mais lenta e consistente.
Preencha uma linha por ensaio logo após a observação. A tabela não precisa esconder resultados inconvenientes: uma decisão de desfazer uma alteração é uma evidência útil para o ajuste seguinte.
Registre o patamar inicial observado em vez de assumir que ele foi idêntico em todos os testes. Se houver uma condição que mudou sem intenção, marque o ensaio como não comparável e repita-o com o protocolo restaurado.
Modelo de registro para copiar no seu caderno ou em uma planilha local.
| Ensaio | Parâmetro alterado | Condições fixas | V inicial observada | Métricas | Decisão |
|---|---|---|---|---|---|
| 01 | Nenhum: referência | T_s, PWM, filtro e montagem | ____ V | Acomodação, pico, erro, saturação | Base |
| 02 | K_p: ____ → ____ | Mesmas condições | ____ V | Acomodação, pico, erro, saturação | Manter/desfazer |
| 03 | K_p: ____ → ____ | Mesmas condições | ____ V | Acomodação, pico, erro, saturação | Manter/desfazer |
Organize as ações de um ensaio comparável, da preparação até a decisão.
Coloque as etapas na ordem correta.

Passo 4 de 10
Selecione um K_p inicial estável mantendo a ação integral desabilitada e repetindo degraus comparáveis.
Para encontrar uma base proporcional, mantenha K_i = 0. Antes de cada ensaio independente, zere o estado integral e use a passagem direta da medição no filtro configurável: α = 1.
Escolha um K_p pequeno em relação ao ganho estático que você mediu para a planta. Como referência e tensão estão em V e o comando é normalizado, K_p tem unidade de comando/V. Não há valor universal: a escala depende do RC e dos limites conservadores de PWM que você já definiu.
Mantenha fixos T_s, limites de comando, sequência de referências, janela de observação e taxa de registro. Assim, a diferença entre curvas poderá ser atribuída a K_p.

Nesta etapa, K_i permanece em zero; compare respostas mudando apenas K_p.
Use sempre o mesmo degrau intermediário do protocolo. Faça um primeiro ensaio com K_p pequeno e, se a resposta estiver aceitável, aumente-o em um passo modesto e reversível. Registre o patamar inicial realmente observado, não um patamar presumido.
Em cada curva, observe ao mesmo tempo:
Com K_i = 0, algum erro permanente é esperado. Não tente anulá-lo aumentando K_p indefinidamente: a integral será ajustada em uma etapa posterior.
Exemplo
Exemplo de registro de dois ensaios proporcionais comparáveis. Os valores numéricos são apenas um formato de anotação; use os seus valores medidos e sua faixa de acomodação declarada.
Ambos os ensaios usam o mesmo degrau, T_s, α = 1 e limites de PWM. Compare o conjunto, não só a velocidade inicial.
| Ensaio | K_p | Resposta observada | Comando | Decisão |
|---|---|---|---|---|
| A | pequeno | Sobe de modo monotônico; erro final visível | Longe dos limites | Pode aumentar um passo |
| B | maior | Mais rápido; pequena sobre-elevação limitada | Sem alternância persistente | Candidato a base |
| C | ainda maior | Picos crescentes ou alternações | Aproxima-se dos limites repetidamente | Voltar ao último aceitável |
Atenção
Pare o aumento e reverta ao último K_p aceitável se aparecerem sinais de resposta excessiva: sobre-elevação incompatível com seu critério, alternações que não diminuem na janela, amplitude crescente ou comando alternando persistentemente entre limites.
Não procure oscilação sustentada como método de ajuste. Se houver oscilação crescente, alternância persistente entre limites, perda de prazo, medição inválida ou anormalidade elétrica, aplique o comando seguro definido no protocolo e investigue antes de novo ensaio.
A base escolhida deve ser estável e ter margem de atuação; ela não precisa eliminar o erro permanente.
Você executou dois ensaios com o mesmo degrau, T_s, limites e α = 1. No ensaio A, K_p menor produziu subida lenta, sem pico, comando distante dos limites e erro final moderado. No B, K_p maior reduziu bastante o erro final, mas a tensão apresentou alternações de amplitude crescente e o comando passou a alternar entre os limites.
Relate os dois resultados de forma comparável e diga qual K_p manteria como base. Justifique usando a resposta e o comando observados.

Passo 5 de 10
Introduza K_i de forma gradual, mantendo a base proporcional e as condições de comparação fixas.
Com a base proporcional já escolhida, mantenha K_p fixo e introduza um K_i pequeno e positivo. O anti-windup por integração condicional deve permanecer ativo.
Em cada ensaio, altere somente K_i. Repita o mesmo degrau, com o mesmo T_s, limites de PWM, referências e configuração de filtragem. Assim, uma diferença observada pode ser atribuída principalmente à nova ação integral.
A integral reduz o erro persistente acumulando pequenas correções ao longo do tempo. Ela não é um motivo para aumentar os ganhos até o limite: um K_i excessivo pode criar sobre-elevação, oscilações ou uma saída que demora a abandonar a saturação.

O ensaio muda K_i; os demais ajustes permanecem constantes.
Dica
O primeiro valor de K_i não precisa eliminar o erro. Ele serve para observar se a correção acumulada aproxima a tensão da referência sem degradar de modo relevante o transitório.
Para cada valor de K_i, aguarde uma janela de observação suficiente antes de concluir. Uma resposta inicialmente promissora pode revelar recuperação lenta ou oscilações somente depois de várias atualizações.
Registre conjuntamente a tensão, a referência, o comando aplicado e o estado integral. Avalie a aproximação à referência, a sobre-elevação, o erro no fim da janela e quanto tempo o comando ficou nos limites.
Use os mesmos critérios em todos os ensaios. “Chegou rápido” não basta se a tensão ultrapassou demais a referência, se o comando passou muito tempo saturado ou se a resposta ainda estava oscilando no fim da janela.
| Observação após a janela | Interpretação | Próxima ação |
|---|---|---|
| Erro persistente, transitório aceitável | Integral ainda insuficiente | Aumentar K_i em pequeno passo |
| Erro menor, resposta aceitável | Melhora útil | Manter e confirmar |
| Sobre-elevação ou oscilações maiores | Integral agressiva | Reduzir K_i |
| Recuperação lenta após limite | Acúmulo ainda influencia a saída | Reduzir K_i e repetir |
| Comando alterna nos limites | Comportamento inadequado | Interromper e retornar ao último ajuste aceitável |
Considere dois ensaios com o mesmo K_p e o mesmo degrau:
Qual é a próxima alteração conservadora?
Escreva pelo menos 80 caracteres (0/80).
Antes de iniciar um novo ensaio independente, prepare a condição inicial de modo explícito: use a referência inicial definida pelo protocolo e reinicialize o estado integral conforme o procedimento de preparação.
Depois que o degrau começar, preserve a evolução do estado integral durante toda a resposta registrada. Zerar a integral no meio do retorno à referência esconderia justamente parte do efeito que você quer avaliar.
Se, após escolher um K_i adequado, ainda houver necessidade de refinar K_p, faça isso em um ensaio posterior: volte a manter K_i fixo e altere apenas K_p.
No seu registro local, anote: K_p fixo, K_i testado, referência inicial e final, duração da janela, erro no fim da janela, pico observado, tempo nos limites e decisão. Justifique em uma frase se K_i será mantido, aumentado ou reduzido.
Escreva pelo menos 120 caracteres (0/120).

Passo 6 de 10
Compare ajustes PI por métricas compatíveis e escolha um candidato que atenda ao conjunto de critérios.
Agora compare os ensaios PI já registrados. A escolha não deve seguir a curva que sobe primeiro, e sim os critérios declarados antes dos testes.
Para cada ajuste, use a mesma escala vertical, a mesma janela de tempo e a mesma referência no gráfico. Assim, uma curva não parece melhor apenas porque foi ampliada, deslocada ou observada por mais tempo.
Avalie a tensão medida em relação à referência: um patamar aparentemente calmo, mas fora da faixa de acomodação, ainda tem erro permanente e não atende ao alvo. Registre também por quanto tempo o comando ficou saturado; rapidez obtida mantendo o atuador no limite pode não ser a melhor escolha.

Compare a resposta bruta à mesma referência antes de decidir qual ajuste atende melhor ao conjunto de critérios.
Uma tabela impede que uma característica marcante esconda as demais. Marque cada métrica contra o seu critério; depois selecione o ajuste que atende ao conjunto, não necessariamente o menor valor em uma coluna.
Neste exemplo, considere: acomodação até 1,2 s, sobre-elevação até 8%, erro permanente até 0,05 V e saturação até 0,30 s.
Exemplo de comparação de três ensaios feitos com a mesma referência, limites e janela de observação.
| Ajuste | Acomodação | Sobre-elevação | Erro permanente | Saturação | Decisão |
|---|---|---|---|---|---|
| A | 0,72 s | 14% | 0,02 V | 0,46 s | Rejeitar |
| B | 1,05 s | 5% | 0,03 V | 0,18 s | Candidato |
| C | 0,88 s | 3% | 0,11 V | 0,10 s | Rejeitar |
Exemplo
O ajuste A tem a subida e a acomodação mais rápidas, mas excede tanto o limite de sobre-elevação quanto o tempo admissível em saturação. O ajuste C parece suave, porém permanece 0,11 V abaixo da referência; estabilidade visual não equivale a atendimento.
O ajuste B deixa uma pequena margem em todas as métricas. Registre-o como candidato, junto das condições do ensaio e dos critérios usados. A confirmação final ainda exigirá repetir o degrau padrão mais adiante.
Você comparou três ajustes com a mesma referência e janela. Os limites declarados são: acomodação ≤ 1,0 s; sobre-elevação ≤ 6%; erro permanente ≤ 0,04 V; saturação ≤ 0,25 s.
Relacione cada resultado à conclusão mais adequada.
Associe o resultado à conclusão.
Associe cada registro à sua conclusão.
Toque em um item e depois no par correspondente.
Nem toda diferença observada sustenta uma escolha. Se a janela termina antes da acomodação, se o pico pode ter ficado entre amostras, ou se a variação é comparável à resolução e ao ruído registrados, marque o resultado como inconclusivo.
Não declare vencedor por diferenças menores do que sua capacidade de observação. Repita o ensaio com a mesma configuração e uma janela ou registro adequados; não altere parâmetros enquanto tenta esclarecer a comparação.
Para o próximo passo, mantenha como candidato somente o ajuste com evidência suficiente de atendimento aos critérios.
Um ajuste é mais rápido, mas sua acomodação foi estimada em 0,98 s e 1,02 s em repetições; o limite é 1,0 s. A resolução temporal e a janela usada não permitem separar essa diferença com segurança. Como você registraria a decisão e qual seria o próximo procedimento?
Escreva pelo menos 80 caracteres (0/80).

Passo 7 de 10
Compare passagem direta e filtragem moderada sem alterar o PI, usando a tensão bruta para avaliar a resposta física.
Use o ajuste PI candidato como referência e mude somente a filtragem. Faça dois ensaios com o mesmo degrau, mesma condição inicial preparada, mesmos ganhos K_p e K_i, mesmo T_s e os mesmos limites de PWM:
Registre, em ambos, instante, referência, tensão bruta, tensão filtrada e comando aplicado. Uma curva mais lisa não é, por si só, uma malha melhor: ela pode apenas esconder a variação que o controlador deixa de perceber a tempo.

O filtro pode reduzir flutuações, mas a informação recebida pelo PI passa a representar um instante anterior da planta.
Leia os sinais com funções diferentes. A tensão bruta é a evidência mais próxima do comportamento físico do nó RC e deve ser a base para medir acomodação, sobre-elevação e erro permanente. A tensão filtrada mostra a informação que chegou ao controlador; compare-a com a bruta para estimar o atraso introduzido.
Observe também o comando aplicado. Se a filtragem faz o comando corrigir mais tarde, aumenta oscilações, piora a acomodação ou prolonga a permanência nos limites, a suavização não compensou. Interrompa o ensaio se surgir oscilação crescente, alternância persistente entre limites ou perda de prazo.
Compare os dois registros usando a mesma janela temporal e a mesma escala vertical. Registre a condição inicial realmente observada em cada ensaio; não suponha que ela foi idêntica.
| Sinal ou métrica | Pergunta útil | Evidência de efeito indesejável |
|---|---|---|
| Tensão bruta | Atinge e permanece na faixa da referência? | Acomodação pior ou pico maior |
| Tensão filtrada | Quanto ela atrasa em relação à bruta? | Defasagem visível após mudanças |
| Comando aplicado | Reage cedo e sem bater nos limites? | Correções tardias ou saturação maior |
| Flutuação | A redução é necessária para a decisão? | Apenas aparência mais lisa |
| Métricas | Mudaram com a mesma referência? | Piora além da tolerância declarada |
Escolha a menor filtragem que reduza uma flutuação realmente relevante sem degradar, além da tolerância do seu protocolo, a resposta da tensão bruta ou o uso do comando.
Se mantiver uma nova filtragem, ela passa a fazer parte da malha. Portanto, volte ao ajuste conservador: valide primeiro a base proporcional e só depois refine a integral, alterando um parâmetro por ensaio. Não ajuste filtro e ganhos simultaneamente, pois você perderia a causa de uma mudança observada.
Dois ensaios idênticos exceto pelo filtro produziram os seguintes registros:
Qual decisão é mais bem sustentada?
Escreva pelo menos 120 caracteres (0/120).

Passo 8 de 10
Distinguir variações residuais compatíveis com resolução de comportamentos que exigem redução de ganhos, revisão de atrasos ou interrupção segura.
Nem toda variação residual indica que o PI está inadequado. Compare a amplitude com a tolerância declarada e observe a tendência durante uma janela comum.
Não atribua automaticamente toda oscilação à resolução. Leia também o comando aplicado e os registros de temporização. O objetivo não é obter uma leitura numericamente imóvel, e sim uma resposta que atenda ao critério definido.

A tendência e a relação com a tolerância informam mais do que a busca por uma tensão perfeitamente constante.
Leia a telemetria como um conjunto: tensão bruta, comando aplicado, dtUsLog e missedPeriods.
Atenção
A alternância persistente do comando entre o limite inferior e o superior exige interrupção do ensaio. Aplique o comando seguro, preserve o registro e revise ganhos, atraso de filtragem, medição e cumprimento de prazos antes de tentar outra configuração.
Não aumente K_i para “forçar” a tensão a se estabilizar. Esse aumento pode agravar a resposta e não corrige uma falha de medição ou de temporização.
Associe cada evidência registrada à ação inicial mais prudente. Considere que a tolerância, os limites de PWM e os critérios de interrupção já foram definidos no seu protocolo.
Relacione cada padrão à ação inicial.
Toque em um item e depois no par correspondente.

Passo 9 de 10
Demonstre que o PI com integração condicional abandona a saturação após uma referência temporariamente inalcançável criada apenas por software.
Mantenha o PI candidato exatamente como foi selecionado: mesmos K_p, K_i, T_s, filtro, limites de PWM, alimentação e montagem RC. A única alteração deste ensaio será a sequência de referência no software.
Planeje, em uma única execução:
U_MAX;A referência alta deve estar acima do patamar físico já medido com U_MAX, mas dentro da faixa numérica de tensão que você configurou no firmware. Ela não aumenta a alimentação: apenas solicita, por software, uma tensão que o comando conservador não pode fornecer.

A evidência vem da relação temporal entre referência, tensão, comandos e integral.
Antes de definir a referência alta, faça uma execução de preparação mantendo apenas a referência inicial alcançável até que os últimos registros estejam compatíveis com acomodação. Anote vFilt e integral pouco antes do instante programado para o degrau.
Com esses valores, escolha uma referência de teste que atenda, com margem:
K_p × (REF_TEST_V − vFilt) + integral > U_MAX
ou, de forma equivalente:
REF_TEST_V > vFilt + (U_MAX − integral) / K_p
A expressão prevê que, no primeiro ciclo da etapa alta, o comando solicitado excederá o teto. Como o erro será positivo, a integração condicional bloqueará o incremento que agravaria a saturação; ainda assim, uReqLog mostrará o comando solicitado acima de U_MAX, e uAppLog mostrará o teto aplicado.
Se a referência calculada não couber na faixa numérica permitida, escolha uma referência inicial alcançável mais próxima do patamar superior já conhecido, aguarde novamente a acomodação e repita a seleção. Não altere alimentação, U_MAX, ganhos ou conexões para criar a condição.
O sketch-base do step 2 já preserva integral entre atualizações. Para esta demonstração, substitua somente o bloco de referências. A etapa inicial longa parte do estado realmente inicializado pelo firmware (integral = 0) e dá tempo para a malha se aproximar da condição usada na seleção de REF_STEP_V.
Escolha STEP_AT_MS maior que a janela de acomodação que você declarou para a referência inicial. Defina uma etapa alta curta: ela deve durar apenas o necessário para registrar a saturação e nunca deve substituir os critérios de interrupção já adotados.
Não acrescente integral = 0.0f em referenceFor(), no instante de retorno ou em qualquer outro ponto entre as três etapas.
Substitua somente este bloco de referências do sketch-base. Os valores numéricos são um exemplo coerente com um patamar previamente medido de aproximadamente 3,8 V em U_MAX = 0,80; use as referências que você selecionou pela desigualdade da tela anterior.
// Referências da demonstração; mantenha seus ganhos e limites finais.
const float REF_INITIAL_V = 2.00f;
const float REF_STEP_V = 4.90f; // selecionada antes do ensaio
const float REF_RETURN_V = 2.00f;
// Exemplo: 12 s de preparação e 1 s de etapa inalcançável.
const unsigned long STEP_AT_MS = 12000UL;
const unsigned long RETURN_AT_MS = 13000UL;11900,20000,2000,2000,2000,421,421,421,184,0,0 12000,20000,4900,2000,2000,1291,800,421,184,0,0 12100,20000,4900,2332,2332,1191,800,421,184,0,0 12200,20000,4900,2603,2603,1110,800,421,184,0,0 12400,20000,4900,3004,3004,990,800,421,184,0,0 12800,20000,4900,3448,3448,857,800,421,184,0,0 13000,20000,2000,3566,3566,-49,50,421,184,0,0 13100,20000,2000,2952,2952,132,132,417,184,0,0 13200,20000,2000,2563,2563,234,234,403,184,0,0 13300,20000,2000,2321,2321,299,299,395,184,0,0
Linhas representativas da telemetria para o exemplo, não valores que sua planta necessariamente produzirá. Elas pressupõem `K_p = 0,30`, `K_i = 0,20`, `T_s = 0,020 s`, `ALPHA = 1`, `U_MIN = 0,05`, `U_MAX = 0,80`, RC idealizado de 0,50 s e aproximadamente 12 s de acomodação em 2,0 V antes do degrau. Os campos de comando e integral estão em milicomando.
Leia todos os sinais na mesma escala de tempo:
U_MAX, não à referência inalcançável.uReqLog): evidencia o valor que o PI calculou antes do limite.uAppLog): evidencia a atuação realmente enviada ao PWM e o tempo no limite.No exemplo, aos 12 000 ms, o comando solicitado é 1,291, mas o aplicado é 0,800. Enquanto a referência alta mantém erro positivo, a integral permanece em 0,421: o incremento positivo que pioraria a saturação foi bloqueado. No retorno, a integral ainda está preservada; o comando deixa o teto superior e a tensão passa a se dirigir à referência útil.
O comando pode tocar temporariamente o limite inferior após o retorno, como no exemplo. Registre isso como parte da dinâmica; não apague a integral para ocultá-lo.
Atenção
A recuperação não significa retorno instantâneo nem ausência garantida de sobre-elevação. Ela é demonstrada quando, após a referência voltar à faixa útil, o comando aplicado abandona o limite superior sem que o estado integral tenha sido reinicializado, e a tensão volta a evoluir em direção ao alvo.
Mantenha os critérios de interrupção de todos os ensaios: aplique o comando seguro se houver oscilação crescente, alternância persistente entre limites, perda de prazo, medição inválida ou anormalidade elétrica. Este não é um ensaio de sobrecarga. Não aumente a alimentação, não mude resistor ou capacitor e não amplie os limites elétricos da montagem.
Exemplo
Exemplo de leitura válida: a referência inicia em 2,0 V, permanece nessa condição até a malha se acomodar, sobe brevemente para 4,9 V e retorna a 2,0 V. Durante a etapa alta, a tensão não chega a 4,9 V porque o PWM já está no teto conservador. O comando solicitado fica acima do teto, o aplicado permanece em U_MAX e a integral deixa de aumentar no sentido que elevaria ainda mais o comando. No retorno, a integral é mantida; o comando sai do teto e a tensão se aproxima novamente do alvo útil.
A referência alta, isoladamente, não é a demonstração. A demonstração exige a diferença observada entre comando solicitado e aplicado, junto da integral preservada.
Use sua telemetria para registrar a demonstração. Informe: (1) referência inicial, referência alta, retorno e durações; (2) patamar máximo previamente medido com U_MAX; (3) valores de vFilt e integral usados para selecionar a referência alta; (4) uma linha em que uReqLog > U_MAX e uAppLog = U_MAX; (5) o comportamento da integral durante a etapa alta; (6) como o comando abandonou o limite após o retorno; e (7) a confirmação de que alimentação, limites de PWM, conexões e estado integral não foram alterados para facilitar o retorno.
Escreva pelo menos 180 caracteres (0/180).

Passo 10 de 10
Documente, confirme e justifique o ajuste PI final nas condições realmente ensaiadas.
Seu ajuste final precisa ser reproduzível: ele não é somente um par de ganhos. Registre a configuração completa que esteve presente no ensaio escolhido.
Inclua: K_p, K_i, T_s em segundos, modo/parâmetro de filtragem, limites de PWM, faixa de referências testada e condições relevantes da montagem (Arduino Uno R3, RC próprio, alimentação compatível e GND comum). Anote também a referência do degrau padrão e o patamar inicial efetivamente observado.
Esse registro descreve uma condição de ensaio, não uma receita universal para qualquer RC.
Exemplo
Exemplo de estrutura compacta para anotar no seu caderno ou no campo final:
Preencha apenas valores que você realmente mediu ou configurou. Se algo não foi avaliado, marque “não avaliado”; não infira o resultado.
Repita agora o mesmo degrau padrão usado para selecionar o ajuste, sem mudar ganhos, filtro, T_s, limites ou montagem. A repetição verifica se a resposta ainda é comparável à evidência que sustentou sua escolha.
Compare com a janela temporal e as escalas dos ensaios anteriores. Registre o patamar inicial observado: ele pode não ser exatamente igual ao anterior. Se a diferença impedir uma comparação honesta, classifique o resultado como inconclusivo em vez de atribuí-lo ao PI.
Mantenha os critérios de interrupção. Se houver medição inválida, perda de prazo, oscilação crescente ou alternância persistente nos limites, aplique o comando seguro antes de investigar.
A comparação só é defensável quando as condições de ensaio são mantidas. Observe a curva de tensão bruta em relação à referência; use a filtrada para interpretar o que o controlador recebeu.

A repetição preserva o contexto necessário para comparar respostas.
Dica
Não escolha apenas a curva que sobe primeiro. Uma resposta candidata deve ser avaliada como um conjunto:
Uma filtragem só permanece no ajuste se a redução de flutuações compensar o atraso que ela acrescentou. Se o filtro foi mantido, a conclusão vale para ele; não transfira os mesmos ganhos automaticamente para passagem direta.
Conclua a prática com um relato baseado nos seus registros. Não envie arquivo: escreva diretamente aqui.
Inclua: (1) K_p, K_i, T_s, filtro e limites de PWM; (2) degrau padrão e resposta repetida; (3) acomodação, sobre-elevação, erro permanente e tempo em saturação, mesmo que por estimativa; (4) maior duração da tarefa, perdas de prazo e sua conclusão sobre a margem; (5) evidência observada da recuperação após a referência temporariamente inalcançável; (6) critérios não atendidos ou resultados inconclusivos.
Finalize delimitando a validade: esta escolha se aplica somente à sua planta RC, à montagem, ao período e à filtragem ensaiados.
Escreva pelo menos 300 caracteres (0/300).
Atenção
Antes de encerrar, aplique seu comando seguro previsto no firmware e confirme que a atuação foi interrompida ou voltou ao valor seguro definido por você. Só então deixe a montagem energizada ou desligue-a conforme o seu procedimento de bancada.
Não altere alimentação, limites elétricos ou conexões para “melhorar” o resultado final. Registre qualquer anormalidade elétrica em vez de continuar o ensaio.
Resumo
Parabéns! Você concluiu: Ajuste de um PI em um circuito de baixa energia
Você concluiu este nível!
Agora você vai iniciar: Projeto de placas de circuito impresso
Criação de esquemáticos no KiCadCriar no KiCad instalado no próprio computador o esquemático de uma pequena interface analógica de 5 V, usando valores e conexões descritos em texto.Milhares de cursos online em vídeo, ebooks e áudiobooks.
Para testar seus conhecimentos no decorrer dos cursos online
Gerado diretamente na galeria de fotos do seu celular e enviado ao seu e-mail
Baixe nosso aplicativo pelo QR Code ou pelos links abaixo:.
+ de 10 milhões
de alunos
Certificado grátis e
válido em todo o Brasil
60 mil exercícios
gratuitos
4,8/5 classificação
nas lojas de apps
Cursos gratuitos em
vídeo, ebooks e audiobooks