Tags:
Aula Eletrônica Programação

Ligando Led com PWM do Arduino

Autor: Alisson Ricardo da Silva Souza

Nesse tutorial aprenderemos a utilizar o PWM do Arduino, exemplificando com um Led, aumentando a diminuindo o seu brilho. E futuramente controlaremos a velocidade de rotação de um motor DC. Este tutorial é importante, já que para nossos robôs se movimentarem podemos utilizar os servos motores, que já foram vistos no tutorial Ligando Servo Motor com Arduino, mas também os motores DC de rotação continua que podem ter sua velocidade controlada por essa ferramenta PWM. Então vamos aproveitar aprender e praticar.

Antes de tudo, o que é a ferramenta PWM?
A modulação de largura de pulso (PWM) cria pulsos de ondas quadradas com largura variável a fim de gerar uma tensão media na saída.
O Arduino contém 6 pinos PWM’s que estão destacadas com um “~” na frente do número referente a porta digital. Com estas entradas podem-se obter resultados analógicos por meio de sinal digital.

A figura abaixo exemplifica o funcionamento.

Figura 1 - PWM [1]

Figura 1 – PWM [1]

Assim, se utilizarmos 50% analogWrite(pino, 127) teremos na saída metade da tensão de 5V e assim por diante.

Sabendo disso vamos consultar nossos componentes e ferramentas que serão utilizados:

  • Arduino
Figura 1 – Arduino Uno.

Figura 1 – Arduino Uno

Placa de prototipação utilizada nos nossos projetos eletrônicos desse curso.

  • Protoboard
Figura 2 – Protoboard.

Figura 2 – Protoboard

Nessa placa faremos a montagem de nossos exemplos de circuitos elétricos durante o curso.

  • Jumper
Figura 3 - Jumper

Figura 3 – Jumper

São os conectores que utilizaremos para ligar os componentes elétricos que vamos utilizar.

  • Led’s
Figura 4 - Led

Figura 4 – Led

É um componente eletrônico emissor de luz, utilizado para ser a “lâmpada” do circuito.

  • Resistor
exemplo de resistor

Figura 5 – Resistor

Componente utilizado para limitar a corrente elétrica que atravessará o Led.

Agora que já listamos os materiais que utilizaremos, vamos fazer um desenho de como deve ficar nosso circuito elétrico e partir pra prática.

Figura 6 - Desenho do Circuito

Figura 6 – Desenho do Circuito

Podemos utilizar o mesmo esquemático de como acender um Led, só que agora observe que alteramos a porta de saída do Arduino, que antes era a porta digital 13, mas como ela não é PWM vamos utilizar a porta digital 10.

Novamente temos um resistor associado em serie com o Led, então vamos calcular seu valor através da formula de Ohm.

R1 = VR1 / I

Onde, para achar a queda e tensão no resistor (VR1) basta subtrair a tensão de saída da porta digital do Arduino, que é de 5V, com a queda de tensão do Led que é de 2V. A corrente utilizada pelo Led também pode ser encontrada no Datasheet, é de 20mA.

R1 = (Vbat – Vled) / Iled                  R1 = (5 – 2) / 20mA
R1 = 3 / 0,02              R1 = 150

Como não encontramos resistores com o valor calculado 150Ω, no mercado, basta utilizar um próximo. No caso usaremos o de 220Ω.

O que mudará em nosso projeto se utilizar o resistor de 220Ω?
Para obter uma iluminação satisfatória deveríamos utilizar o resistor de 150Ω, mas como iremos utilizar o resistor de 220Ω o nosso Led não irá brilhar com a mesma intensidade, pois como a resistência é maior a corrente será menor. Mas essa diferença de resistência tem efeito quase imperceptível ao nosso olhar.

Agora que calculamos nossa resistência, vamos montar nosso circuito.

Conecte o Led em duas colunas, se quiser pode dobrar as “pernas” ou cortar para diminuir seu tamanho.

Figura 7 – Ligando Led.

Figura 7 – Ligando Led

Perceba que o sentido da corrente no Led é indicado pela seta, entrando pelo terminal Anodo (redondo) e saindo pelo terminal Catodo (Achatado). Como estamos fazendo uma associação em série, podemos ligar o resistor antes ou depois do Led, mas vamos seguir o desenho inicial e conecta-lo antes, no terminal Anodo do Led.

Figura 8 – Conectando Resistor

Figura 8 – Conectando Resistor

Veja que o terminal do resistor esta na mesma coluna do terminal do Led, então eles estão conectados em série.

O que acontece se ligarmos o Led de maneira contraria em nosso circuito?

De maneira geral, se você estiver alimentando seu circuito com a tensão de saída do Arduino, que é de 5 Volts, dificilmente isso causará danos ao seu Led, pois a tensão típica reversa suportada pelo componente é de 5V. Mas, tome muito cuidado quando usar fontes externas, leia atentamente o Datasheet do componente em questão e sempre avalie Tensão Máxima, assim como Corrente Máxima, direta e/ou reversa, suportada e o modo de uso, para liga-lo corretamente em seu circuito.

Por fim, vamos utilizar dois jumper para conectar o pino 10 do Arduino no resistor e, o outro, para conectar a outra “perna” do Led (Catodo) no GND do Arduino. Nosso circuito deve ficar da seguinte maneira.

figura faltando

Agora, para terminar nosso projeto, devemos programar o Arduino e fazer os testes.

Abra a IDE do Arduino e digite o código a seguir que é o arquivo exemplo de utilizar o PWM.

Figura 8 - IDE Arduino

Figura 8 – IDE Arduino

Vamos entender o código apresentado.

  1. Todo o código, ou conjunto de palavras escrito entre os símbolos /*   */ é visto pelo compilador do Arduino como “Comentário de Código”, ou seja, não é levado em consideração na geração do código binário .hex. Então, a parte inicial apresentada é um comentário feito pelo autor do código, explicando-o.
  2. Vamos declarar uma variável do tipo inteira para armazenar os valores que serão inseridos na saida (int i).

int i;

  1. Na função void setup(), o autor declara todas as condições iniciais do código.

// a função de configuração é executada uma vez quando você pressionar reset ou quando liga o Arduino.
void setup() {
// configura o pino 10 do Arduino como saída do PWM.
pinMode(10, OUTPUT);
}

  1. Agora declaramos a função void loop(), onde estarão presentes os comandos para controlar o brilho do Led através de uma estrutura de repetição chamada for.

// a função loop é executada indefinidamente.
void loop() {
for(i=0; i<=255; i++){
analogWrite(10, i);
delay(10);
}
for(i=255; i>=0; i–){
analogWrite(10, i);
delay(10);
}}

No código do PWM utilizamos a estrutura for que tem a seguinte sintaxe: for(inicialização; condição de existência; incremento). Na inicialização é onde iniciamos nossa variável, exemplo: int i = 0, iniciada em zero(0). Na condição de existência é onde escrevemos a condição para continuar repetindo o código, exemplo: i<10, enquanto valor de i for menor que 10 ele continua repetindo o código. No incremento vamos dizer o valor de salto da variável, ou seja, estipular de quanto em quanto o valor vai ser incrementado, exemplo: i = i+1 incrementa o valor de i um a um.

O que é uma estrutura de repetição?
São estruturas da linguagem reservada do Arduino que são utilizados para repetir trechos de códigos, assim diminuímos o tamanho do código e economizamos memória de processamento. Sem falar que o código fica bem mais organizado.

Com esse código faremos o Led aumentar e diminuir seu brilho indefinidamente, mas podemos alterar o código ou aumentar o numero de Led na saída e brincar mais e mais.

Bibliografias
[1] PWM – https://www.arduino.cc/en/Tutorial/PWM
Fotos – Própria Autoria.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *