Como funciona a detecção de zero cross na prática
O conceito é simples, mas os detalhes que fazem o circuito funcionar direito geralmente passam despercebidos. Zero alta e zero baixa se refere ao momento exato em que um sinal CA cruza o nível de zero volts, indo de positivo para negativo ou de negativo para positivo. Isso é usado em controladores de fase, medidores de frequência, sincronização de inversores e praticamente qualquer coisa que precise saber onde o ciclo está.
Implementação com comparador e histerese
A forma mais direta é usar um comparador de tensão, como um LM339 ou LM311, comparando o sinal CA contra uma referência de 0V. O problema imediato é que sinais senoidais perto de zero têm dV/dt muito baixo. Sem proteção contra ruído, qualquer interferência gera múltiplos disparos na mesma transição. A solução padrão é adicionar histerese com um resistor de feedback positivo entre a saída e o terminal não-inversor. Um valor típico de 100k para o resistor de entrada e 10k para o feedback já dá uma histerese de alguns milivolts, suficiente para eliminar falsos disparos na maioria das aplicações. O sinal de saída do comparador será um trem de pulsos quadrados, onde cada flanco corresponde a um cruzamento por zero. Para detectar ambos os sentidos (alta para baixa e baixa para alta), você precisa tratar as duas bordas separadamente ou usar ambas as entradas de interrupção do microcontrolador.
Lendo com microcontrolador
Se estiver usando um MCU, a abordagem mais confiável é configurar um timer/counter para capturar o timestamp de cada borda de subida e descida. Em vez de contar interrupções genéricas, use o modo input capture. Isso elimina a variabilidade de latency do processador de instruções. A precisão melhora drasticamente porque o hardware registra o tempo no instante exato do evento, não quando o loop principal consegue responder. Para medir frequência, basta calcular 1/(2 * tempoEntreBordas) se estiver usando apenas uma borda por ciclo, ou 1/tempoEntrebordasConsecutivas para bordas alternadas. Medir período é sempre mais preciso do que contar ciclos em um intervalo fixo quando se trata de frequências baixas ou sinais instáveis.
No meu caso, trabalhando com um projeto de controle de ângulo de tiristor para um dimmer de 120V, tive um problema específico: o cruzamento por zero era detectado corretamente, mas o disparo do tiristor acontecia ora antes, ora depois do ângulo esperado, com variação de até 8 graus. O problema não era o detectoresim, era o delay entre a detecção da borda e o comando de disparo. Usei um timer hardware para gerar o pulso de gate no momento exato, calculando o atraso a partir do timestamp de captura. Isso reduziu a variação para menos de 1 grau.
👉 Clique no botão abaixo para saber mais sobre o assunto!
Problemas comuns que ninguém menciona
A primeira armadilha é o pino de entrada ficando flutuante quando o sinal não está presente. Sem um resistor de pull-down (ou pull-up, dependendo da topologia), o comparador entra em oscilação e gera disparos aleatórios. Um resistor de 100k para terra no terminal inversor resolve isso. A segunda é a queda de tensão nos diodos de proteção se você estiver diretamente ligando a rede. Sinais vindos de transformadores de isolamento são mais seguros, mas mesmo assim, um divisor resistivo simples com diodos clamping nos extremos é suficiente para proteger a entrada do comparador.
Uma terceira questão que passa despercebida: a largura do pulso de saída. Alguns circuitos geram pulsos extremamente estreitos que podem não ser reconhecidos por alguns MCUs, especialmente em clock mais baixo. Adicionar um pequeno filtro RC seguido por um Schmitt trigger garante que o sinal chegue limpo ao microcontrolador. Valores como 4.7k e 1nF já formam uma constante de tempo de cerca de 4.7µs, mais do que suficiente para a frequência da rede.
Vantagens e limitações do método
A detecção por zero cross é precisa para formas de onda senoidais puras. Quando há distorção harmônica significativa, o ponto de cruzamento pode se deslocar ligeiramente em relação ao zero verdadeiro, mas para a maioria das aplicações de potência isso é irrelevante. O deslocamento típico com THD de 10% fica na casa dos microssegundos. O principal limite é que o método só funciona bem quando o sinal está presente. Se a carga cair ou o transformador abrir, você perde a referência completamente. Em aplicações críticas de sincronismo, como conversores CC-CA, isso exige uma rotina de recaptura ou um PLL de backup para manter a sincronia durante quedas temporárias de sinal.
Para medição de frequência de precisão em sinais de áudio ou vibrações, onde a forma de onda pode ter amplitude variável, considere usar cruzamento por limiar ajustável em vez de zero absoluto. Um comparador com referência ajustável permite definir o ponto de disparo em uma amplitude onde o sinal ainda tem dV/dt adequado, melhorando a imunidade a ruído em sinais fracos.