Você está na página 1de 3

030-Programa PWM controlando Motor com Monitor

O circuito original vem do livro “Primeiros Passos com o Arduino”, exercício 5.5,
substituindo o LED.

Análise do circuito
Este programa também é como o anterior do livro, e agora o PWM permite controlar
a velocidade do motor. Como o motor é uma carga maior, há necessidade de se usar o pino
Vin que pode fornecer voltagem de 7 a 12 volts. Além disso, se a ligação fosse diretamente
no arduino, este poderia queimar. Por isso usamos o IRF530 (ou IRF520) para controlar a
carga. Como temos uma bobina no motor, pode ocorrer um retorno de corrente ao se
desligar o aparelho. Para evitar isso, colocamos um diodo 1N4007.

Assim como o LED continuava variando sua luminosidade para mais ou para menos,
de acordo com o LDR, agora, o motor é quem vai sofrer variação de acordo com a luz.
Mantive o monitor para você poder saber o valor de leitura do sensor.

Este programa continua usando um pino digital que só permitiria as condições


“ligado” ou “desligado”, mas, é um pino marcado com “til” ao lado do número do pino (~);
logo, indica que o pino permite usar a técnica de PWM ( Pulse Width Modulation –
Modulação por largura de pulso). Ou seja, você altera a amplitude do pulso para conseguir
variar a voltagem que você quer.
Material necessário:
01 – Arduino com Cabo USB
01 – IRF520 (ou 530)
01 – Motor
01 – Diodo 1N4007
01 – Resistor de 10 Kohm
01 – LDR
13 – Cabos Jumper macho-macho

Programa do Livro
const int MOT = 9;
const int SENSOR = 0;
int val = 0;

void setup() {
Serial.begin(9600);
pinMode(MOT, OUTPUT);
}

void loop() {
val = analogRead(SENSOR);
Serial.println(val);
analogWrite(MOT,val/4);
delay(100);
}

VARIÁVEIS
const int MOT = 9;
const int SENSOR = 0;
int val = 0;

Esse programa teve a figura do LED substituída por um motor.

A constante MOT é que define o pino a ser usado pelo motor. A outra
(SENSOR) receberá o pino de entrada analógica A0 e a terceira (val)
guardará os valores provenientes do pino analógico A0.
SETUP
void setup() {
Serial.begin(9600);
pinMode(MOT, OUTPUT);
}

Aqui, o Setup só vai habilitar o pino a ser usado como saída (Motor).
Como o LDR vai usar a entrada analógica, não precisa definir aqui que é
entrada. A saída serial também foi habilitada para poder usar o monitor
serial.

LOOP
void loop() {
val = analogRead(SENSOR);
Serial.println(val);
analogWrite(MOT,val/4);
delay(100);
}

O Loop começa captando algum sinal de luz e faz a adequação do valor


de voltagem dentro da faixa de 0 a 1023, por meio do pino A0, que é
apresentado no monitor.

Depois, o analogWrite aciona o pino 9 com o valor proveniente da


leitura, para acionar o motor. Só que a leitura varia de 0 a 1024 e a escrita,
de 0 a 254. Então, temos de adotar uma correção de dividir o valor
encontrado por 4.

Segue um atraso de 100 milissegundos.

* * * * *

Você também pode gostar