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!
Obrigado!
Nenhum comentário:
Postar um comentário