
Passo 1 de 9
Onde surge a condução simultânea
Localize o caminho de condução simultânea e separe comandos lógicos, condução efetiva e frenagem dinâmica.
Trilha de aprendizado · Nível 12 · Tutorial 8
Definir comandos seguros para uma ponte H integrada, usando as proteções do driver e uma sequência de operação que evite sobreposição de chaves e reversões abruptas.
Onde surge a condução simultânea
Localize o caminho de condução simultânea e separe comandos lógicos, condução efetiva e frenagem dinâmica. 2 min
Tempo morto e intertravamento
Diferencie tempo morto, intertravamento e a espera necessária antes de inverter um motor. 2 min
Verificar o driver e os limites do módulo
Avalie o módulo como um conjunto documentado: CI, placa, alimentação, motor e condições de operação. 3 min
Traduzir a tabela em comandos seguros
Mapeie as entradas reais do DRV8833 para acionamento, PWM, parada e desabilitação sem tratar nSLEEP como um controle de velocidade. 3 min
Garantir um início sem movimento inesperado
Organize hardware e firmware para manter o motor sem acionamento durante reset, inicialização e espera por autorização. 3 min
Reverter somente após a parada
Estruture uma reversão em estados, bloqueando comandos até a confirmação válida de parada e cancelando a pendência em desabilitação ou falha. 3 min
Validar a sequência em baixa energia
Aplique uma liberação progressiva da ponte H e compare comandos do firmware com evidências da prática de baixa energia, incluindo a condição documentada da alimentação diante de energia devolvida. 4 min
Analisar falhas sem provocá-las
Diferencie falhas de comutação, carga e alimentação por suas evidências e escolha uma resposta prudente, sem reproduzir condições destrutivas. 3 min
Revisão final: autorizar ou bloquear o acionamento
Revisão integrada dos critérios para liberar ou bloquear o acionamento de uma ponte H. 2 min

Passo 1 de 9
Localize o caminho de condução simultânea e separe comandos lógicos, condução efetiva e frenagem dinâmica.
Em uma ponte H, cada braço tem uma chave superior ligada a VM e uma chave inferior ligada ao GND. Se as duas chaves do mesmo braço conduzirem ao mesmo tempo, elas formam um caminho de baixa resistência entre os trilhos da fonte.
Esse evento é a condução simultânea, também chamada de shoot-through. A corrente resultante não é a corrente útil que atravessa o motor: ela contorna a carga e pode ser limitada principalmente pela resistência das chaves, das trilhas, da fonte e das conexões. Por isso, pode crescer rapidamente e causar aquecimento, queda de tensão, atuação de proteção ou dano.
O problema está em uma coluna da ponte, não na diagonal que normalmente conduz o motor.

As duas chaves do mesmo braço fechadas conectam VM ao GND diretamente.
Em uma situação ideal, um comando lógico desce exatamente quando o outro sobe. Porém, a chave real não muda de estado instantaneamente. Carga e descarga do gate, atrasos internos e o tempo necessário para uma chave deixar de conduzir podem deslocar a condução efetiva.
Assim, mesmo que dois comandos externos pareçam complementares, pode haver um pequeno intervalo em que a chave que deveria desligar ainda conduz e a outra já começou a conduzir. É essa região que importa para o shoot-through.
As formas de onda a seguir são didáticas: distinguem comando e condução. Elas não são uma medição direta dos gates ou transistores internos de um driver integrado.
Exemplo
Imagine a transição em um braço:
Durante esse trecho, as duas conduções estão em nível ativo. O cruzamento dos comandos não basta para concluir que as chaves nunca ficaram simultaneamente ligadas.

Os comandos podem parecer perfeitos, enquanto a condução efetiva ainda apresenta sobreposição.
Qual situação descreve shoot-through em uma ponte H?
Escreva pelo menos 60 caracteres (0/60).
Uma frenagem dinâmica prevista na tabela funcional do driver é automaticamente igual a shoot-through.
Escreva pelo menos 90 caracteres (0/90).

Passo 2 de 9
Diferencie tempo morto, intertravamento e a espera necessária antes de inverter um motor.
Ao transferir um braço da ponte da chave superior para a inferior, o driver precisa garantir uma breve janela em que nenhuma das duas conduz. Essa janela é o tempo morto.
Ele existe porque desligar uma chave e remover sua condução efetiva leva tempo. Portanto, dois comandos externos que parecem perfeitamente complementares não são prova de que as chaves internas nunca se sobrepuseram.
Em uma ponte H integrada, o circuito interno comanda os transistores e aplica o tempo morto compatível com sua própria tecnologia, quando isso estiver documentado.

O intervalo sem condução reduz o risco de as chaves de um mesmo braço criarem um caminho direto entre os trilhos da alimentação.
Intertravamento é outra proteção: ele bloqueia uma combinação de comandos incompatível antes que ela solicite uma condição perigosa.
Exemplo conceitual: se uma combinação de entradas pedir, direta ou indiretamente, as duas chaves de um mesmo braço, o driver documentado pode impedir esse pedido. Isso é diferente de tempo morto:
As duas funções podem coexistir no driver, mas não devem ser tratadas como sinônimos.
Compare os mecanismos que participam de uma comutação segura.
| Mecanismo | O que faz | O que não comprova |
|---|---|---|
| Intertravamento | Bloqueia comandos incompatíveis | Que a transição ocorreu sem atraso interno |
| Tempo morto | Cria intervalo sem condução na troca de chave | Que o motor já parou de girar |
| Espera antes da reversão | Dá tempo para confirmar a parada mecânica | Que as chaves internas têm proteção contra sobreposição |
Para esta aplicação, prefira uma ponte H integrada cujo manual documente o comando interno das chaves e a prevenção de condução simultânea. O microcontrolador fornece entradas de controle; ele não deve tentar reproduzir, com quatro GPIOs, o acionamento direto de quatro MOSFETs.
O sinal observado nos pinos de entrada mostra apenas o que foi solicitado ao driver. Mesmo que os níveis externos estejam corretos, eles não medem o instante real em que os transistores internos deixam ou começam a conduzir. Esse comportamento depende do circuito interno, de seus atrasos e das condições especificadas pelo fabricante.
Dica
Ao avaliar uma ponte integrada, procure na documentação a tabela funcional, as condições de habilitação e as proteções de comutação. Não conclua essas características apenas pela aparência do módulo ou pela forma de onda dos GPIOs.
Associe cada situação ao mecanismo mais adequado.
Faça as associações.
| Situação | Mecanismo adequado |
|---|---|
| Evitar que duas chaves de um braço conduzam durante a troca | Tempo morto |
| Recusar um pedido de comando incompatível | Intertravamento |
| Só permitir sentido oposto após o rotor estar parado | Espera para parada mecânica |
Qual afirmação está correta?
Qual afirmação está correta?

Passo 3 de 9
Avalie o módulo como um conjunto documentado: CI, placa, alimentação, motor e condições de operação.
A referência deste tutorial é um módulo documentado com DRV8833, alimentado em VM por uma fonte regulada de 5,0 V. O Uno R3 tem alimentação própria; os GNDs se unem no ponto previsto. A ponte A usa sempre IN1 = 9, IN2 = 10 e NSLEEP = 7.
O motor é pequeno, fixado e sem mecanismo acoplado, com corrente de partida documentada de até 0,60 A. A autorização depende do conjunto completo: CI, placa, trilhas, conectores, capacitores, fonte e motor. Um anúncio de corrente, isoladamente, não substitui essa análise.
A referência também exige entradas definidas quando o Uno está em reset ou desligado: há pull-downs físicos de 10 kΩ para GND em IN1, IN2 e NSLEEP. A ponte B permanece definida por pull-downs de 10 kΩ em BIN1 e BIN2. Esses resistores só são aceitos após conferir no esquema do módulo que não há pull-ups incompatíveis.

A referência combina alimentação, sinais definidos e desacoplamento. A aparência de outro módulo não comprova que ele tenha a mesma configuração.
Separe sempre os limites do CI dos limites do módulo. A faixa de tensão e a corrente indicadas na folha de dados do DRV8833 não garantem, por si sós, que uma placa pequena suporte a mesma corrente contínua: encapsulamento, cobre, conectores, ventilação e montagem mudam a dissipação possível.
A corrente de partida é transitória. Ela não deve ser comparada diretamente apenas com uma corrente contínua. Para liberar um motor, compare sua partida com a condição de partida validada para o módulo e, quando houver dados, com os limites transitórios, a limitação de corrente e a margem térmica.
Nesta referência, os pinos 9 e 10 usam o PWM padrão do Uno, próximo de 490 Hz. Isso está abaixo do máximo de 20 kHz declarado para o módulo de referência; não reconfigure temporizadores.
Valores exclusivos da aplicação de referência. Todas as verificações aplicáveis precisam ser atendidas.
| Verificação | CI DRV8833 | Módulo de referência |
|---|---|---|
| VM | Faixa de operação do CI | 5,0 V regulados |
| Entradas lógicas | LOW até 0,8 V; HIGH a partir de 2,0 V | Compatível com GPIO de 0 a 5 V do Uno |
| Corrente por ponte | Até 1,5 A RMS sob condições do CI | 0,80 A contínuos a 25 °C, ventilação natural |
| Partida do motor | Depende da aplicação | Validada somente até 0,60 A |
| PWM | Comutação interna do driver | Até 20 kHz; uso em cerca de 490 Hz |
| VM–GND | Desacoplamento exigido | 100 nF cerâmico + 100 µF eletrolítico instalados |
Antes de usar uma proteção como critério, identifique qual proteção existe no módulo e como ela opera.
Na referência, a limitação de corrente implementada com resistores de sensoriamento atua em torno de 1,5 A por ponte. Ela restringe a corrente durante a condução; não eleva a capacidade contínua de 0,80 A da placa nem torna aceitável manter uma carga em sobrecarga.
O desligamento por sobrecorrente é outra camada: ele desabilita a ponte ao detectar a condição. O DRV8833 pode tentar se reabilitar nos intervalos de repetição documentados mesmo se a causa persistir, alternando tentativas e novos desligamentos. Portanto, a aplicação deve retirar a solicitação de movimento e investigar; não deve contar com a repetição como controle normal de corrente.
A proteção térmica desliga e só permite retorno após resfriamento com a histerese interna. A subtensão bloqueia a operação enquanto VM está abaixo do limiar e libera quando a tensão volta à faixa válida. Em todos os casos, recuperação interna não é autorização para retomar movimento.
Com VM desligada, não mantenha IN1, IN2 ou NSLEEP em nível alto pelo Uno. Isso pode alimentar parcialmente circuitos internos pelo caminho das entradas. Mantenha as linhas baixas — os pull-downs da referência ajudam nesse estado — até a alimentação de potência estar válida.
Após levar nSLEEP a HIGH, o DRV8833 requer o tempo de despertar tWAKE documentado, de até 1 ms na referência. Os steps seguintes usam 2 ms como margem antes de considerar o CI disponível. Essa espera não aplica PWM e não comprova que o motor esteja parado.
Atenção
Não tente confirmar proteções bloqueando o rotor, criando curto, removendo VM durante o movimento ou elevando deliberadamente a temperatura. Uma proteção pode reduzir danos, mas eventos repetidos ainda aquecem o módulo, a carga e a alimentação.
Classifique cada cenário pela ficha de referência. “Informação insuficiente” significa que faltam dados para uma decisão técnica; não significa que o caso seja seguro.
| Cenário | Decisão | Justificativa |
|---|---|---|
| VM = 5,0 V; partida = 0,60 A; PWM = 490 Hz; capacitores presentes | Compatível com a referência | Atende aos dados declarados |
| Uno mantém IN1 alto com VM desligada | Bloquear | Pode haver alimentação parcial pela entrada |
| Anúncio “2 A”, sem dados térmicos, PWM ou capacitores | Informação insuficiente | O anúncio não comprova a capacidade do conjunto |
| Motor com partida de 1,20 A na mesma placa | Fora da referência | Excede a partida validada de 0,60 A; faltam dados transitórios e térmicos para liberar |
Uma placa anuncia “DRV8833, 2 A”. A documentação confirma VM de 5 V e entradas compatíveis com o Uno, mas não informa capacidade contínua da placa, PWM admissível, capacitores instalados, proteção implementada nem comportamento das entradas com VM desligada. O motor tem partida de 0,60 A. Qual decisão é correta?

Passo 4 de 9
Mapeie as entradas reais do DRV8833 para acionamento, PWM, parada e desabilitação sem tratar nSLEEP como um controle de velocidade.
DIR + ENABLENo DRV8833, o canal A recebe AIN1 e AIN2. Os dois pinos, em conjunto, definem o estado da ponte; não suponha que um deles seja apenas direção e o outro apenas habilitação.
Nesta referência, os pinos do Uno R3 são IN1 = 9, IN2 = 10 e NSLEEP = 7. Os nomes “frente” e “ré” dependem dos fios do motor. Aqui, chamaremos 1/0 de frente e 0/1 de ré apenas como convenção de firmware.
A tabela funcional determina também os estados de parada. Assim, é preciso escolher explicitamente entre alta impedância, frenagem e desabilitação global.
Estados estáticos da ponte A do DRV8833 usados como referência.
| AIN1 | AIN2 | Estado da ponte | Uso na referência |
|---|---|---|---|
| 0 | 0 | Alta impedância | Parada livre / PWM retirado |
| 1 | 0 | Motor em um sentido | Frente convencional |
| 0 | 1 | Motor no sentido oposto | Ré convencional |
| 1 | 1 | Frenagem | Frenagem elétrica, se escolhida |
A estratégia de referência aplica PWM em uma entrada por vez e mantém a outra em nível baixo:
IN1 e IN2 em LOW.IN1 em LOW e PWM em IN2.IN1 e IN2 em LOW.Quando o PWM está alto, a ponte recebe 1/0 ou 0/1 e aciona o motor. Quando está baixo, ela recebe 0/0, que corresponde à alta impedância nesta tabela. Portanto, essa estratégia alterna entre acionamento e parada livre/recirculação correspondente; ela não alterna diretamente para o estado de frenagem 1/1.
| Sentido solicitado | Entrada modulada | Outra entrada | PWM alto | PWM baixo |
|---|---|---|---|---|
| Frente | IN1 | IN2 = 0 | 1/0: acionamento | 0/0: alta impedância |
| Ré | IN2 | IN1 = 0 | 0/1: acionamento | 0/0: alta impedância |

Com a outra entrada baixa, os intervalos baixos do PWM levam a ponte para 0/0, e não para frenagem.
nSLEEP não é uma entrada de PWM. Em nível baixo, ele coloca o dispositivo inteiro em repouso e desabilita as duas pontes: canal A e canal B. Use-o para desabilitação global, não para controle de velocidade.
Ao levar nSLEEP a nível alto, espere o tempo de despertar documentado antes de solicitar movimento. No firmware de referência, será usada uma margem de 2 ms após habilitar o driver. Esse tempo torna o CI disponível; não prova que o motor parou nem autoriza uma partida automática.
Mesmo sem motor no canal B, suas entradas não devem ficar soltas. Mantenha BIN1 e BIN2 em níveis definidos conforme a documentação do módulo; nesta referência, ambos permanecem em LOW.
Atenção
Nenhum destes comandos, isoladamente, confirma que o rotor chegou a zero:
0/0 remove o acionamento e seleciona alta impedância;1/1 seleciona frenagem elétrica prevista na tabela;nSLEEP a baixo desabilita globalmente o CI.Eles definem estados elétricos da ponte, não uma medição de velocidade. A sequência que exige confirmação de parada antes da reversão será tratada no próximo step.
Complete o trecho que implementa a estratégia de referência no canal A. pwm representa um valor entre 0 e 255. A função pararLivre() deve retirar o PWM e selecionar 0/0.
Observe que nSLEEP não aparece nas funções de sentido: ele é reservado à habilitação e à desabilitação global do driver.
Preencha somente expressões que mantenham o código C/C++ válido após a substituição.
const byte IN1 = 9;
const byte IN2 = 10;
void girarFrente(byte pwm) {
(IN1, pwm);
digitalWrite(IN2, );
}
void girarRe(byte pwm) {
digitalWrite(IN1, );
analogWrite(IN2, pwm);
}
void pararLivre() {
digitalWrite(IN1, );
digitalWrite(IN2, LOW);
}
Passo 5 de 9
Organize hardware e firmware para manter o motor sem acionamento durante reset, inicialização e espera por autorização.
Durante reset, energização ou quando o Uno ainda não configurou os GPIOs, o firmware não controla as linhas. O estado seguro precisa, portanto, existir no hardware: AIN1 = 0, AIN2 = 0 e nSLEEP = 0.
Na referência, isso mantém a ponte A em 0/0 e o DRV8833 inteiro em repouso. O motor não recebe acionamento antes de setup() nem após um reset. O código reforça esse estado assim que começa, mas não pode desfazer um pulso que tenha ocorrido antes.

Os resistores definem as entradas enquanto os GPIOs ainda estão em alta impedância.
A referência usa pull-downs de 10 kΩ para GND, instalados no conector do módulo: um em AIN1, um em AIN2 e um em nSLEEP. As duas entradas da ponte não usada também ficam em nível baixo por sua rede de 10 kΩ.
Essa configuração só é liberada se o esquema do módulo confirmar que esses pinos não têm pull-up para VCC nem outra fonte que os force em nível alto. Um módulo com pull-up em nSLEEP, ou com rede desconhecida, fica bloqueado para esta prática até que sua documentação prove o estado seguro durante reset. Não tente “vencer” um pull-up acrescentando outro resistor sem analisar a rede resultante.
Dica
Com o Uno desligado ou em reset, cada pull-down mantém sua linha próxima de 0 V. Quando o Uno estiver ativo e colocar nSLEEP em HIGH, o GPIO fornecerá cerca de 0,5 mA ao pull-down de 10 kΩ em 5 V, valor compatível com uma saída digital do Uno. Os mesmos resistores não impedem os níveis altos de PWM em AIN1 ou AIN2.
Antes de conectar, confira continuidade entre cada entrada e GND pelo resistor esperado, e ausência de ligação direta dessas entradas a VCC. Faça essa inspeção sempre desenergizado.
Nesta referência, mantenha uma única pinagem em todo o firmware: IN1 = 9, IN2 = 10 e NSLEEP = 7. Os pinos 9 e 10 usam o PWM padrão do Uno; não reconfigure temporizadores.
A sequência é: pré-carregar níveis baixos, configurar as saídas, retirar qualquer PWM e conservar nSLEEP baixo. Assim, a ponte continua desabilitada depois que o firmware assume os pinos.
Use este trecho como base para as funções de inicialização deste tutorial. Ele não autoriza movimento.
const byte IN1 = 9;
const byte IN2 = 10;
const byte NSLEEP = 7;
bool driverPronto = false;
void colocarSaidasInativas() {
analogWrite(IN1, 0);
analogWrite(IN2, 0);
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
}
void setup() {
digitalWrite(NSLEEP, LOW);
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
pinMode(NSLEEP, OUTPUT);
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
colocarSaidasInativas();
driverPronto = false;
}
void loop() {
// Aguarda autorização explícita.
}Atenção
Não considere a desabilitação funcional como isolamento elétrico. nSLEEP baixo desabilita o CI, mas VM, GND, capacitores e outros condutores podem continuar energizados. Desenergize a montagem antes de mudar fios, resistores ou conexões do motor.
Inicializar não é autorizar movimento. Após qualquer reset, driverPronto permanece falso e nenhum PWM anterior é restaurado. Uma ação explícita da aplicação deve habilitar o driver; somente outra ação explícita poderá aplicar PWM.
A habilitação primeiro confirma as entradas inativas, depois leva nSLEEP a HIGH e aguarda a margem documentada de 2 ms. Essa espera torna o CI disponível; ela não manda o motor girar.
Estas funções separam habilitação, acionamento, parada e desabilitação. A convenção de sentido segue os steps anteriores: PWM em IN1 para frente e em IN2 para ré.
void habilitarDriver() {
colocarSaidasInativas();
digitalWrite(NSLEEP, HIGH);
delay(2); // margem de despertar da referência
driverPronto = true;
}
void acionarFrente(byte pwm) {
if (!driverPronto || pwm == 0) return;
analogWrite(IN2, 0);
digitalWrite(IN2, LOW);
analogWrite(IN1, pwm);
}
void pararMotor() {
colocarSaidasInativas();
}
void desabilitarDriver() {
colocarSaidasInativas();
digitalWrite(NSLEEP, LOW);
driverPronto = false;
}Dica
A função pararMotor() seleciona 0/0 e retira o PWM; desabilitarDriver() acrescenta a desabilitação global por nSLEEP. Nenhuma delas deve restaurar automaticamente um comando guardado antes do reset. A autorização de movimento continua separada da inicialização.
Complete a inicialização. A última lacuna deve ser uma chamada de função C/C++ válida, incluindo os parênteses.
void setup() {
digitalWrite(NSLEEP, );
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
pinMode(NSLEEP, );
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
;
driverPronto = false;
}Qual decisão permite liberar a referência para a prática futura?

Passo 6 de 9
Estruture uma reversão em estados, bloqueando comandos até a confirmação válida de parada e cancelando a pendência em desabilitação ou falha.
Para inverter com segurança, não basta trocar os comandos de sentido. Ao receber um pedido oposto durante o movimento, a aplicação deve:
0/0, o estado de parada livre/recirculação previsto;AGUARDANDO_PARADA;O tempo morto interno do DRV8833 protege a transferência elétrica entre chaves. Ele não informa se o rotor ainda tem energia mecânica. Por isso, uma espera fixa no firmware não comprova parada.

A passagem entre sentidos precisa atravessar o estado de parada pendente.
Atenção
A confirmação manual é aceita aqui somente na prática didática: motor pequeno, fixado, visível e sem hélice, roda ou mecanismo acoplado. Observe sem tocar no eixo. Se houver dúvida sobre a parada, mantenha o acionamento bloqueado.
Este firmware de referência não mede velocidade. Ele não converte um atraso em confirmação automática de parada.
A referência mantém a pinagem já adotada: IN1 = 9, IN2 = 10 e NSLEEP = 7. Os pinos 9 e 10 usam o PWM padrão do Uno R3.
Todos os sinais de entrada do módulo permanecem definidos por pull-downs físicos de 10 kΩ para GND. Em particular, AIN1 e AIN2 são ligados simultaneamente aos pinos D9 e D10 do Uno e, cada um, ao seu próprio pull-down. Assim, durante reset ou antes da configuração dos GPIOs, a ponte A tende a 0/0.
A ponte B não é controlada nesta prática: BIN1 e BIN2 também permanecem em nível baixo por pull-downs físicos. Essa rede só é válida após conferir no esquema que o módulo não contém pull-ups ou outra ligação incompatível que force esses pinos para nível alto.
A configuração abaixo é exclusiva do módulo de referência documentado e da prática de baixa energia.
| Ponto do módulo | Conexão ou estado | Função |
|---|---|---|
| AIN1 | Uno D9 + pull-down de 10 kΩ para GND | PWM para frente; nível baixo no reset |
| AIN2 | Uno D10 + pull-down de 10 kΩ para GND | PWM para ré; nível baixo no reset |
| nSLEEP | Uno D7 + pull-down de 10 kΩ para GND | Habilitação global segura |
| BIN1 | Pull-down físico de 10 kΩ para GND | Ponte B inativa |
| BIN2 | Pull-down físico de 10 kΩ para GND | Ponte B inativa |
Crie um único sketch e copie os três blocos deste step na ordem apresentada. Este primeiro bloco declara os estados e as funções que retiram o acionamento, habilitam e desabilitam o driver.
const byte IN1 = 9;
const byte IN2 = 10;
const byte NSLEEP = 7;
const byte PWM_RUN = 160;
enum Direcao { NENHUMA, FRENTE, RE };
enum Estado { DESABILITADO, PARADO, EM_MOVIMENTO, AGUARDANDO_PARADA };
Estado estado = DESABILITADO;
Direcao ativa = NENHUMA;
Direcao pendente = NENHUMA;
void colocarSaidasInativas() {
analogWrite(IN1, 0);
analogWrite(IN2, 0);
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
}
void pararMotor() {
colocarSaidasInativas(); // AIN1/AIN2 = 0/0
ativa = NENHUMA;
}
void desabilitarDriver() {
pararMotor();
digitalWrite(NSLEEP, LOW);
pendente = NENHUMA;
estado = DESABILITADO;
Serial.println("DRIVER DESABILITADO; NOVA AUTORIZACAO NECESSARIA");
}
void habilitarDriver() {
colocarSaidasInativas();
digitalWrite(NSLEEP, HIGH);
delay(2);
pendente = NENHUMA;
estado = PARADO;
Serial.println("DRIVER HABILITADO; MOTOR PARADO");
}Acrescente este bloco após o anterior. Enquanto estado for AGUARDANDO_PARADA, pedidos de frente ou ré não acionam o motor. Parada e desabilitação cancelam a pendência.
void iniciarMovimento(Direcao d) {
colocarSaidasInativas();
if (d == FRENTE) analogWrite(IN1, PWM_RUN);
else analogWrite(IN2, PWM_RUN);
ativa = d;
pendente = NENHUMA;
estado = EM_MOVIMENTO;
Serial.println(d == FRENTE ? "FRENTE AUTORIZADA" : "RE AUTORIZADA");
}
void pedirMovimento(Direcao desejada) {
if (estado == DESABILITADO) {
Serial.println("BLOQUEADO: HABILITE PRIMEIRO");
} else if (estado == PARADO) {
iniciarMovimento(desejada);
} else if (estado == EM_MOVIMENTO && desejada == ativa) {
Serial.println("SENTIDO JA ESTA ATIVO");
} else if (estado == EM_MOVIMENTO) {
pararMotor();
pendente = desejada;
estado = AGUARDANDO_PARADA;
Serial.println("ACIONAMENTO RETIRADO; REVERSAO PENDENTE");
} else {
Serial.println("BLOQUEADO: AGUARDANDO PARADA CONFIRMADA");
}
}
void cancelarParadaPendente() {
pararMotor();
pendente = NENHUMA;
if (estado != DESABILITADO) estado = PARADO;
Serial.println("PARADA SOLICITADA; PENDENCIA CANCELADA");
}Acrescente o último bloco. C não é uma medição nem um temporizador: é a confirmação do operador, permitida apenas após a observação válida descrita neste step. X representa uma condição anormal já identificada pela aplicação e exige nova habilitação e nova autorização.
void setup() {
digitalWrite(NSLEEP, LOW);
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
pinMode(NSLEEP, OUTPUT);
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
colocarSaidasInativas();
Serial.begin(115200);
Serial.println("PRONTO: E F R S C X");
}
void loop() {
if (!Serial.available()) return;
char c = Serial.read();
if (c == '\n' || c == '\r') return;
if (c == 'X') { desabilitarDriver(); return; }
if (c == 'S') { cancelarParadaPendente(); return; }
if (c == 'E') {
if (estado == DESABILITADO) habilitarDriver();
return;
}
if (c == 'C') {
if (estado == AGUARDANDO_PARADA && pendente != NENHUMA) {
iniciarMovimento(pendente);
} else Serial.println("SEM PARADA PENDENTE CONFIRMAVEL");
return;
}
if (c == 'F') pedirMovimento(FRENTE);
else if (c == 'R') pedirMovimento(RE);
else Serial.println("COMANDO INVALIDO");
}PRONTO: E F R S C X DRIVER HABILITADO; MOTOR PARADO FRENTE AUTORIZADA ACIONAMENTO RETIRADO; REVERSAO PENDENTE RE AUTORIZADA
As linhas após a inicialização dependem dos caracteres enviados ao Monitor Serial. Antes de enviar C, confirme visualmente a parada somente nas condições didáticas estabelecidas.
Organize a sequência correta quando chega um pedido de sentido oposto enquanto o motor está em movimento.
Coloque as etapas na ordem usada pela máquina de estados.
Complete as condições que tornam a confirmação C válida. Não use um atraso como substituto dessa condição.
if ( &&
&&
c == 'C') {
iniciarMovimento(pendente);
}
Passo 7 de 9
Aplique uma liberação progressiva da ponte H e compare comandos do firmware com evidências da prática de baixa energia, incluindo a condição documentada da alimentação diante de energia devolvida.
A validação avança somente quando cada etapa anterior produziu a evidência esperada:
A etapa com motor requer: alimentação de potência em 5,0 V, corrente de partida documentada de até 0,60 A, limites de dissipação e recirculação conferidos e fonte com limite de corrente ajustado em 0,70 A.
Mas atenção: limitar a corrente fornecida pela fonte não prova que ela absorve a corrente devolvida pelo motor. Libere o motor somente se a documentação da fonte ou do caminho de alimentação comprovar que VM permanece dentro dos limites diante de corrente reversa, ou se o conjunto já tiver uma solução documentada de absorção ou limitação dessa energia. Sem essa evidência, faça apenas a análise por diagramas e transcrição, sem conectar o motor.
Conexões exclusivas da referência com módulo documentado baseado no DRV8833. Faça ou altere qualquer conexão somente com as duas alimentações desligadas.
| Origem | Destino | Condição |
|---|---|---|
| Uno R3 D9 | AIN1 do módulo | PWM para frente |
| Resistor de 10 kΩ | AIN1 e GND | Pull-down físico |
| Uno R3 D10 | AIN2 do módulo | PWM para ré |
| Resistor de 10 kΩ | AIN2 e GND | Pull-down físico |
| Uno R3 D7 | nSLEEP do módulo | Habilitação global |
| Resistor de 10 kΩ | nSLEEP e GND | Pull-down físico |
| Resistor de 10 kΩ | BIN1 e GND | Ponte B em nível baixo |
| Resistor de 10 kΩ | BIN2 e GND | Ponte B em nível baixo |
| Fonte isolada de 5,0 V | VM e GND do módulo | Positivo em VM; negativo no comum |
| Uno por USB ou fonte própria | Uno e GND do módulo | Alimentação separada; GND comum |
| Motor pequeno | AOUT1 e AOUT2 | Somente na etapa final |

Além do limite de corrente fornecida, a alimentação precisa ter comportamento documentado para corrente reversa ou uma solução documentada que limite ou absorva a energia devolvida.
Atenção
Use uma fonte de potência com saída isolada, regulada em 5,0 V e limite ajustado para 0,70 A. O GND da fonte de potência deve ser comum ao GND do Uno; os positivos permanecem separados. Nunca alimente VM pelo pino de 5 V do Uno.
O limite de 0,70 A restringe a corrente que a fonte entrega; ele não garante absorção de corrente reversa nem impede elevação de VM por energia devolvida. Antes de conectar o motor, verifique na documentação que a fonte aceita corrente reversa mantendo VM na faixa permitida, ou que existe no conjunto um circuito documentado para absorver ou limitar essa energia. Se não puder comprovar isso, não conecte o motor.
Energização sem motor: ajuste a fonte, ligue o Uno, confirme o estado inicial inativo e então ligue VM.
Para alterar fios: envie S e X, desligue VM, desligue o Uno e só então mude conexões.
Com o motor ainda desconectado, carregue o firmware de referência completo do step anterior e abra o Monitor Serial em 115200 baud. Após reset, a mensagem automática é:
PRONTO: E F R S C X
Ela informa que o firmware aceita comandos; não afirma que o driver está habilitado. O estado inicial é DESABILITADO, com nSLEEP baixo e saídas inativas.
Envie E para habilitar o driver. Sem motor, esta etapa confirma a lógica de habilitação, pedidos de sentido, bloqueio de reversão e desabilitação, mas não confirma a parada de um rotor. O caractere C não é uma medição: ele representa a confirmação explícita do operador, permitida somente quando houver motor e observação válida de parada.
Exemplo
Esta transcrição usa exatamente o firmware do step anterior e também permite analisar integralmente a sequência sem montar o circuito:
PRONTO: E F R S C XE: DRIVER HABILITADO; MOTOR PARADOF: FRENTE AUTORIZADAR: ACIONAMENTO RETIRADO; REVERSAO PENDENTEC: RE AUTORIZADADepois de R, o firmware retirou o PWM e bloqueou a reversão. A mensagem RE AUTORIZADA comprova apenas que o firmware recebeu C; ela não mede velocidade nem demonstra que a parada foi observada corretamente. Sem uma fonte documentada para a energia devolvida, use esta transcrição e os diagramas como alternativa à etapa com motor.
Dica
Se o teste sem motor produzir mensagem inesperada, não conecte a carga. Envie S e X, desligue VM, mantenha as entradas baixas e investigue pinagem, taxa serial, pull-downs e alimentação com tudo desenergizado.
Mesmo que o teste lógico esteja correto, a conexão do motor continua bloqueada se não houver evidência documental sobre o comportamento de VM diante de corrente reversa.
Atenção
Organize o roteiro. A última etapa só é permitida se a alimentação tiver comportamento documentado diante de energia devolvida pelo motor; caso contrário, a sequência termina na análise sem carga.
Organize o roteiro de validação quando todos os critérios de alimentação foram documentados.
Atenção
Interrompa diante de ausência de partida, reset inesperado do Uno, aquecimento anormal, comportamento não previsto ou indicação documentada de proteção. Não insista no acionamento nem tente provocar curto, rotor bloqueado ou elevação de alimentação.
Envie S e X, desligue VM e investigue com as duas alimentações desenergizadas. Qualquer retomada exige nova liberação. A recuperação interna do driver não autoriza reiniciar o movimento.
Também interrompa a etapa com motor se não houver comprovação de que a alimentação suporta ou limita adequadamente a energia devolvida. Nesse caso, retorne à análise por transcrição e diagramas.
Use a sequência serial fornecida como alternativa completa caso você não tenha equipamento adequado ou não consiga comprovar a condição da alimentação. Em 3 a 6 frases, diferencie:
C;Escreva pelo menos 140 caracteres (0/140).

Passo 8 de 9
Diferencie falhas de comutação, carga e alimentação por suas evidências e escolha uma resposta prudente, sem reproduzir condições destrutivas.
Nem toda anomalia em uma ponte H tem a mesma origem. Nesta análise documental, compare três mecanismos sem tentar reproduzi-los: condução simultânea, corrente excessiva com rotor bloqueado e elevação da alimentação por energia regenerada.
A regra é interromper a operação diante de um comportamento anormal. As proteções internas podem reduzir danos, mas não tornam seguro testar limites na montagem.

Os três casos podem interromper o acionamento, mas o percurso físico e a resposta necessária são diferentes.
Use evidências como hipóteses, não como diagnóstico definitivo. A tabela resume o que cada mecanismo sugere e o que ainda precisa ser conferido na documentação e na montagem desenergizada.
Comparação documental de falhas em uma aplicação com ponte H integrada.
| Mecanismo | Evidência compatível | Proteção que pode atuar | Responsabilidade da aplicação |
|---|---|---|---|
| Condução simultânea | Corrente abrupta na alimentação durante troca de chave | Sobrecorrente, se documentada | Usar driver com intertravamento; não comandar chaves discretas diretamente |
| Rotor bloqueado | Corrente elevada persistente; motor não acelera | Limite de corrente ou desligamento térmico, se existentes | Não manter comando; respeitar corrente de partida e limites térmicos |
| Energia regenerada | Tensão do barramento sobe ao retirar comando ou frear | Sobretensão, se o dispositivo a oferecer | Garantir condições de alimentação permitidas; não presumir absorção pela fonte |
Se o módulo expõe um pino de falha, ele só pode ser interpretado pelo significado e pelas condições definidos na documentação daquele módulo. Um mesmo sinal pode indicar mais de uma proteção, ou nenhuma informação sobre a elevação do barramento.
Portanto, “falha ativa” não prova shoot-through, rotor bloqueado ou regeneração isoladamente. Registre o estado, interrompa o acionamento e investigue sem energizar novamente até haver uma hipótese verificável.
Atenção
Não reinicie automaticamente após uma proteção. Mesmo que o driver se recupere sozinho, mantenha o movimento bloqueado. Verifique alimentação, carga, temperatura e comandos; depois exija uma nova autorização explícita para operar.
Associe cada evidência à hipótese mais compatível e à primeira ação segura. Considere que as evidências são didáticas: na prática, confirme-as pela documentação e pelas condições observadas, sem provocar a falha.
Atenção
Relacione a evidência ao mecanismo predominante.
Faça as associações mais compatíveis.
Toque em um item e depois no par correspondente.

Passo 9 de 9
Revisão integrada dos critérios para liberar ou bloquear o acionamento de uma ponte H.
Uma decisão segura de acionamento depende de três camadas ao mesmo tempo:
Se qualquer camada falhar, o comando de movimento deve permanecer bloqueado.

A proteção contra sobreposição é apenas uma camada: a aplicação ainda precisa respeitar limites e impedir reversões inadequadas.
Use esta tabela como critério final de liberação.
| Condição observada | Decisão | Motivo |
|---|---|---|
| Reset ou inicialização | Bloquear | Entradas e PWM devem ficar inativos antes da habilitação. |
| Limites elétricos conferidos | Pode avançar | Módulo, fonte e motor precisam atender às condições documentadas. |
| Pedido de reversão com motor ainda em movimento | Bloquear | Retirar acionamento não comprova que o rotor parou. |
| Parada confirmada, sem falha | Pode liberar sentido oposto | A transição externa respeita a sequência segura. |
| Proteção ou comportamento anormal | Bloquear | Investigar a causa e exigir nova autorização. |
Considere este caso integrado: após o reset, o firmware mantém o driver sem acionamento. Uma autorização explícita libera o motor no sentido direto com PWM. Mais tarde, chega um pedido de reversão: o PWM é retirado e o firmware entra em espera de parada. Nesse intervalo, uma condição anormal é identificada.
A regra correta é: não aplicar o sentido oposto enquanto houver falha, enquanto os limites não estiverem liberados ou enquanto a parada não estiver confirmada. Não há reinício automático após a ocorrência.
Complete as condições que autorizam a aplicação do sentido oposto.
if (estado == AGUARDANDO_PARADA &&
&&
&&
) {
aplicarSentidoOposto();
aplicarPWM(comandoPWM);
estado = EM_MOVIMENTO;
}Você está revisando o caso anterior. O motor estava em movimento direto, recebeu pedido de reversão e o PWM foi retirado. Antes da confirmação de parada, o módulo sinaliza uma condição anormal documentada.
Escreva a decisão do firmware e justifique-a usando: estado do movimento, condição do driver e necessidade de nova autorização.
Escreva pelo menos 120 caracteres (0/120).
Resumo
Parabéns! Você concluiu: Comutação segura com um driver de ponte H
Você concluiu este nível!
Agora você vai iniciar: Processamento de sinais e controle
Período de atualização e orçamento de execuçãoDefinir um período de atualização e verificar, no Arduino Uno próprio, se aquisição, cálculo e saída cabem no tempo disponível com margem.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