Por que construir um emulador de rede
A finalidade de construir um emulador de rede elétrica é permitir projetar e testar equipamentos de medição de energia elétrica sem a necessidade de energizar o setup de teste diretamente pela rede — e, também, gerar a base para a construção de um curso de instrumentação eletrônica digital.
Com o emulador e um sistema de ajuste de escala, é possível projetar instrumentos com capacidade de:
- Medição de tensão eficaz
- Medição de corrente eficaz
- Medição de potência ativa
- Medição de potência reativa
- Medição do fator de potência
- Medição da THD (Total Harmonic Distortion) da tensão e da corrente
- Verificação da qualidade de energia do sistema elétrico
O projeto opera com emulações em tempo real das ondas de tensão e de corrente, com controle de defasagem entre elas e possibilidade de ajuste de amplitude entre 0 e 20 V pico a pico.
Qual microcontrolador usar?
A realização inicial utilizava um Arduino Due de 84 MHz, com dois DACs de 12 bits e vários ADCs também de 12 bits — o que atendia perfeitamente bem às especificações do projeto. Porém, na fase de testes, o DAC0 do Arduino Due apresentou problemas recorrentes, e por isso esse microcontrolador foi descartado.
Uma alternativa foi o ESP32 de 240 MHz: uma máquina barata, com core dual e vários ADCs, mas apenas dois DACs de 8 bits. Como a aplicação necessitava de timers relativamente precisos, os experimentos com o ESP32 mostraram um jitter expressivo, o que comprometia uma taxa de amostragem consistente do sistema — e por isso também foi descartado.
A solução final foi o Raspberry Pi Pico, que opera a 133 MHz e tem um timer bastante estável — mas conta com apenas 3 ADCs e não possui DAC nenhum. A solução encontrada foi utilizar um DAC externo interfaceado no barramento SPI do microcontrolador.
Geração e temporização do sinal
Essas ondas representativas de tensão e corrente são o resultado da operação de um DAC de 12 bits, atualizado pelo Raspberry Pi Pico a partir de uma tabela de 256 pontos (lookup table), temporizada para obter exatamente 60,0 Hz.
Os ajustes dos níveis pico a pico dos sinais de tensão e corrente, assim como a defasagem entre essas variáveis, são amostrados a 256 pontos por ciclo de onda — ou seja, 15.360 Hz, o que equivale a uma temporização de 65,1 µs.

O display gráfico
A visualização e o controle do emulador são feitos por um display gráfico ST7920, com capacidade de mostrar os dados de tensão e corrente emulados, assim como a fase entre essas componentes, operando de duas formas distintas:
- Modo de leitura e ajuste — permite ajustar a amplitude dos sinais de tensão e corrente e controlar a defasagem entre eles, através da manipulação de três potenciômetros, cada um com controle individual sobre uma parte dos sinais.
- Modo osciloscópio — mostra de forma estática o sinal de tensão, com possibilidade de visualizar o deslocamento de fase.
O emulador permite realizar todo o teste dessas medições sem a preocupação de reproduzir um sistema elétrico real, onde o deslocamento de fase precisaria ser obtido com cargas reais, níveis de tensão e corrente de verdade etc.
A geração dos sinais de saída
A geração de sinais usando um DAC que opera entre 0 e 3,3 V cria, naturalmente, um sinal polarizado na metade do valor máximo de operação do DAC — ou seja, em 1,65 V. A figura abaixo mostra a relação entre o DAC e o Raspberry Pi Pico.

Os sinais obtidos do DAC (canal A e canal B) estão polarizados, como descrito acima, e a despolarização pode ser feita por um filtro passa-alta RC — que pode alterar a amplitude e a fase dos sinais — ou por um circuito de contra-polarização baseado em amplificador operacional. Cada uma das técnicas tem seu prós e seus contras.
A figura abaixo mostra o sinal gerado diretamente no canal A do DAC, claramente polarizado.

Despolarização e amplificação
O circuito de despolarização e amplificação, baseado em amplificadores operacionais, utiliza uma fonte simétrica de ±12 V para alimentação dos amplificadores — o que garante um sinal de aproximadamente 20 Vpp na saída.

Se o emulador for utilizado para o projeto de um multimedidor — que, aliás, foi minha primeira aplicação para ele — o sinal de saída deve ser ajustado para operar dentro da faixa dos ADCs do dispositivo de processamento. No caso de um Raspberry Pi Pico com DAC de 3,3 V, o sinal deve ser ajustado para um máximo de 3,3 Vpp e polarizado com um nível CC de 1,65 V, de forma similar à saída original do DAC.
O software
O software foi desenvolvido em C++, usando o Arduino IDE para programar o Raspberry Pi Pico (via core arduino-pico) — não se trata de uma placa Arduino, apenas do mesmo ambiente de desenvolvimento. A base é uma tabela de lookup (LUT) de 256 pontos, que gera os sinais de tensão e corrente com ajuste de valores pico a pico e de frequência, obtidos a partir da leitura de três potenciômetros via os três ADCs do Raspberry Pi Pico.
As fotos abaixo mostram o display operando nos dois modos — a troca entre eles é feita por um botão pushbutton ligado a um dos GPIOs do Raspberry Pi Pico.

