quinta-feira, 25 de maio de 2017

Controle PWM de Motor com Arduino ou Teste de Servo com Arduino

Olá, hoje vou mostrar um circuito simples e muito didático para controlar um motor DC via PWM e Arduíno.

O controle por PWM (Pulse Width Modulation) ou Modulação por Largura de Pulso, é um tipo de controle bastante utilizado em automações. Com esse controle podemos variar velocidades, luminosidades e potências em geral. Basicamente conseguimos um resultado de controle analógico através de pulsos digitais.
O PWM funciona da seguinte maneira - Dentro de um certo período, podemos controlar o tempo em que um pulso digital fica em nível alto. A duração do pulso em alto dentro desse período é chamada de Duty Cycle ou Largura de Pulso.



A função que vamos utilizar é a analogWrite() que varia de 0 a 255, com 255 representando o PWM em 100% de Duty Cycle. Os valores intermediários representam proporcionalmente o PWM em % de Duty Cycle, por exemplo, o valor 127 representa o PWM em 50% de Duty Cycle.
No nosso caso vamos estar pegando o valor lido pelo pino do potenciômetro ( que vai de 0 a 1023) e dividindo por 4 para dar valores entre 0 e 255.

Vamos utilizar um Transistor para controlar a potencia e chaveamento do motor, visto que o Arduíno não fornece alta corrente em seus pinos de I/O. O transistor desse exemplo será um TIP41, um transistor darlington fácil de encontrar.

Lista de Materiais:

  • 1x Arduino
  • 1x Potenciômetro ( pode ser qualquer valor, acima de 1k de preferência)
  • 1x resistor 2k2ohm *
  • 1x Transistor TIP41
  • 1x Motor DC 12v
  • 1x Diodo 1N4148

* Obs: O resistor será utilizado na base do transistor e pode variar conforme a corrente no coletor, depende da resistência e do tipo do motor utilizado. Este resistor deve estar dimensionado para que o transistor atue como chave.

As ligações são feitas conforme mostrado abaixo, mas temos que tomar cuidado ao alimentar o Arduíno pelo pino correto, pois a tensão do cooler é 12V, caso contrário podemos queimar o Arduino. Os GNDs devem estar conectados. O Pino de saída escolhido foi o pino D10 que possui um PWM.



É recomendável colocar um diodo para proteger o circuito contra tensão reversa proveniente do motor, pois, quando este é desligado, a inercia o faz virar um gerador. :



Após feito as conexões conforme visto acima, segue o programa para enviarmos ao Arduino:

/*
// Programa :Controle PWM de Motor DC
// Autor : Fernando Moreira
//Controla a velocidade de um motor conforme o valor do potenciômetro
*/

int motPin = 10; // pino do motor 1
int analogPin = 0; // pino para leitura do potenciômetro
int val = 0; //variável para armazenar o valor lido

void setup()

    pinMode(motPin, OUTPUT); // configura pino 10 como saída
}

void loop()
{
    val = analogRead(analogPin);  // lê o valor analógico no pino do potenciômetro
    analogWrite(motPin, val / 4);   // aciona motor com o valor analógico lido (0-1023)
                                                            //dividido por 4 para ajustar ao valor ( 0- 255)                     
}


Após fazer o upload do código para o Arduíno é só testar. Variando o potenciômetro veremos o motor variar a velocidade. Esse programa também serve para controlar outras cargas como Servo motor, LEDs, Lampadas, Resistências, etc.

Um exemplo para testar servos utilizado em aeromodelos e robôs:

É só alimentar o servo com 5V e ligar o fio de sinal do servo na saída pino 10 conforme a imagem acima.

Espero que tenham gostado deste post e que ele seja útil para vocês implementarem outros tipos de controle.

Se inscrevam no meu canal no youtube, Obrigado!
https://www.youtube.com/channel/UCh_d8IZS0gB68gJGoZ8d6Qg
Obrigado!

Nenhum comentário:

Postar um comentário