Blog técnico · Projeto de bancada

Emulador de rede elétrica monofásica com Raspberry Pi Pico

Como e por que construir um emulador de rede elétrica de bancada — da escolha (e descarte) de microcontroladores até o circuito de geração e condicionamento do sinal.

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:

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.

Sinal do emulador de rede elétrica capturado em osciloscópio, mostrando as formas de onda geradas.
Saída do emulador verificada em osciloscópio — as ondas de tensão e corrente geradas pelo Raspberry Pi Pico via DAC.

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:

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.

Diagrama de conexão entre o DAC externo e o Raspberry Pi Pico via barramento SPI.
Relação entre o DAC externo (interfaceado via SPI) 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.

Sinal gerado diretamente no canal A do DAC, mostrando a polarização em torno de 1,65V.
Sinal do canal A do DAC antes da despolarização — nível médio em torno de 1,65 V.

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.

Circuito de despolarização e amplificação baseado em amplificador operacional, com fonte simétrica de ±12V.
Circuito de despolarização e amplificação com amplificador operacional, fonte simétrica ±12 V.

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.

Display ST7920 mostrando o modo de leitura e ajuste, com os valores de tensão, corrente e fase.
Modo de leitura e ajuste.
Display ST7920 mostrando o modo osciloscópio, com a forma de onda de tensão.
Modo osciloscópio.
Próximos passos — este emulador é a base sobre a qual os demais projetos de instrumentação do site são testados — do multimedidor True RMS ao analisador de qualidade de energia — e também vai servir como material prático para o curso de instrumentação eletrônica digital em preparação.