PWM Arduino Modulação por Largura de Pulso com Arduino

PWM Arduino é recurso de controle muito utilizado no controle de intensidade de cargas como LEDs, motores e até dimmer.

PWM o que é?

A origem do nome inglês Pulse Width Modulation (modulação por largura de pulso). Pelo nome pode parecer algo extremamente complexo, mas na verdade é um controle de tempo entre cada estado lógico de acordo com uma frequência.

Largura do Pulso

Um interruptor quando pressionado muda de um estado lógico inicial para um outro estado lógico independe se esteja em pullup ou pulldown, sempre irá gerar uma onda quadrada. Com base nisso, se for considerado que o botão em pulldown durante 1min que equivale a 60s o botão será pressionado durante 15s para ligar um LED.

Em verde é representado o estado logico do LED ao longo de 60s de operação, perceba que nesses 1min o LED ficará ligado 1/4 do tempo e 3/4 desligado. Porém, caso fosse diminuído o tempo em 0v o LED ficaria mais tempo ligado, vamos considerar que agora ficará 1/2 do tempo ligado e 1/2 desligado como na imagem abaixo:

Como é possível observar na imagem acima, o retângulo de borda verde aumentou sua largura, ou seja, aumentou seu tempo em estado lógico alto. Então, quando se refere a largura do pulso é justamente o tempo de atividade, esse tempo é chamado de Duty Cicle.

Duty Cicle do PWM no Arduino

O Duty cicle como já foi visto é o tempo ativo de um pulso em relação ao outro, sua medida é percentual e o controle da largura do pulso vai depender da resolução do PWM assim como no ADC, comumente a resolução é de 8bit.



No Arduino, o comando que para poder alterar o Duty Cicle do PWM é com o uso do analogWrite(pin, 0 a 255) como na figura abaixo:

Fonte: javatpoint

PWM Arduino

Com toda explicação anterior, já é possível usar o PWM no Arduino usando o comando analogWrite(pin, 0 a 255) como na figura anterior. No entanto, não são todas as portas que tem saída PWM, a imagem abaixo demonstra quais portas serão possíveis trabalhar com o Arduino nano.

Saídas PWM Arduino Nano

Diagrama

O diagrama abaixo é apenas um exemplo demonstrativo com LED na protoboard mas pode ser implementado em chaveamento de potência como por exemplo um controle de motor.

Diagrama esquemático do PWM do Arduino

Código

O código abaixo vai realizar um incremento de intensidade a cada 10ms até 100% do PWM e em seguida irá fazer o decremento até 0%, também a cada 10ms.

#define LED 6               

void setup() {
  pinMode(LED, 1);
}

void loop() {
  for(int i = 0; i < 256; ++i){
    analogWrite(LED, i);
    delay(10);
  }
  for(int i = 255; i > 0; --i){
    analogWrite(LED, i);
    delay(10);
  }
}



Funcionamento

Esse vídeo abaixo mostra o funcionamento prático de um controle PWM e respectivamente seu comportamento no osciloscópio.

Deixe uma resposta

Descubra mais sobre elcereza

Assine agora mesmo para continuar lendo e ter acesso ao arquivo completo.

Continue reading