Arduino: Conversao de PWM em Tensao Eletrica
Conversão de Pulsos PWM em Tensão Elétrica
Microcontroladores e Saídas PWM
A maioria dos microcontroladores, como o Arduíno, emulam saídas analógicas através de modulação PWM (Pulse Width Modulation).
O sinal PWM é uma onda quadrada, com frequência constante, mas a fração de tempo em que o sinal é HIGH (5V) (duty cycle) pode variar entre 0 e 100%, fornecendo uma média de tensão variável na saída [1].
O Arduíno possui 6 saídas PWM são identificadas pelo sinal ~ e fornecem pulsos PWM de 8 bits, possibilitando, portanto, 256 valores diferentes de tensão analógica entre 0V e 5V, com passos de 0 a 255.
Entretanto, em situações onde uma sinal PWM não possa para ser utilizado como controle analógico pode ser necessário utilizarmos um filtro de saída PWM ou até dispormos de um conversor DAC, o qual pode necessitar circuitos eletrônicos analógicos, como Amplificadores Operacional, capacitores, resistores e outros.
Filtro para Converter PWM em Tensão Elétrica
Em situações onde uma onda quadrada PWM não for apropriado para realizar um controle analógico pode utilizar um filtro passa baixas visando converter a saída em uma tensão elétrica correspondente ao percentual do sinal PWM. Desta forma, poderemos ter um conversor DA para uso com o Arduíno ou outros microcontroladores.
Filtro Passa Baixas
O circuito filtro passa baixas RC abaixo pode ser utilizado neste caso.
Neste circuito, quando um tensão é aplicada na entrada do resistor R, o capacitor C começa a carregar. Lembre que o capacitor bloqueia corrente contínua e permite um maior fluxo de corrente a medida que a frequência do sinal elétrico aumenta. Para altas frequências o capacitor se comporta como um curto circuito. Para valores de frequência intermediária o circuito RC vai filtrar o sinal de entrada de acordo com a constante de tempo do circuito.
O circuito é bastante simples, entretanto a escolha do resistor R e do capacitor C tem influencia na frequência de corte do circuito, na ondulação da tensão sobre o capacitor (ripple) e no tempo de resposta do circuito. A referência [2] faz uma análise detalhada destes fatores e também fornece um link para uma ferramenta para calculo online do ripple a partir da frequência de corte ou dos valores do resistor e capacitor escolhidos para filtragem de uma onda quadrada PWM.
Ganho de potência
Esta estrutura com filtro RC passa baixas funciona bem caso a carga não exija corrente significativa na saída. Caso a carga demande corrente pode-se utilizar um buffer com amplificador operacional para fornecer mais corrente a carga, oferecendo assim um ganho de potência.
A estrutura que pode ser utilizada para o buffer pode ser o seguidor de tensão com Ampop.
Exemplo de filtragem da saída PWM do Arduíno
O Arduíno fornece saída PWM (portas 3, 5, 6, 9, 10 e 11) com frequência de 490 Hz (pinos 5 e 6: 980 Hz) [1].
Utilizando a ferramenta para calculo online descrita acima, para uma onda PWM de 0V a 5V, com duty cicle de 50% e frequência de corte de 10 Hz, obtêm-se um ripple aceitável (Vpp = 0,15 V) e um tempo de resposta de 0,04 s, como mostra a figura abaixo.
Cálculo dos valores de R e C a partir da frequência de corte:
fc = 1 / 2πRC
Escolhendo
C = 2,2 uF fc = 10 Hz
temos
R = 1/2πfcC R = 1/2π 10 2,2u R = 7,2 kΩ
Laboratório: Análise e filtragem de pulso PWM
- Utilizar o SimulIDE e montar circuito com um Arduíno, um led conectado a saída digital 9 e um potenciômetro com o ponto central conectado a entrada analógica A0 (com os demais terminais do potenciômetro conectados ao GND e 5V, respectivamente);
- Carregar programa exemplo Arquivo/Exemplos/Analog/AnalogInOutSerial e verificar a variação da luminosidade do led do pino 9 em função do potenciômetro;
- Utilizar o osciloscópio do SimulIDE para examinar a forma de onda de uma saída PWM (pino 9). Variar o dutty cicle do PWM, através do potenciômetro e verificar as alterações na forma de onda PWM.
Módulo Conversor de Sinal PWM para Tensão Analógica
Existem no mercado módulos para conversão do sinal PWM para tensão analógica, como o módulo LC-LM358.
O módulo LC-LM358 converte sinal PWM para sinal analógico, PWM duty cicle 0% a 100% para tensão de 0 a 10V.
São aplicados para interface com PLC (Controladores Lógico Programáveis) ou outras placas de controle industrial.
Referências
- ↑ 1,0 1,1 https://www.arduino.cc/reference/en/language/functions/analog-io/analogwrite/
- ↑ SCOTT. Arduino’s AnalogWrite – Converting PWM to a Voltage, 2011. https://provideyourown.com/2011/analogwrite-convert-pwm-to-voltage/
Evandro.cantu (discussão) 16h00min de 19 de maio de 2023 (-03)