Neste tutorial você verá como é possível controlar a velocidade de um motor DC com o Arduino utilizando um transistor.
Os microcontroladores nos dão a possibilidade de controlar diversos atuadores como relés, válvulas e motores. Porém em alguns casos o microcontrolador não consegue interagir diretamente com o atuador dependendo do seu consumo de corrente. como por exemplo um motor DC, que consome uma corrente maior que a fornecida pelo do microcontrolador.
Para que o microcontrolador possa interagir com esse motor DC é necessário utilizar um componente que faz a junção dos dois sem prejudicar o microcontrolador.
Mas que componente é esse? Como eu iria utilizá-lo? Pois então, através deste post você verá como utilizar o transistor TIP122 para fazer a interação entre um motor DC e um Arduino. Além disso, verá que também é possível controlar a velocidade do motor.
Se interessou? Então continue lendo!
Material necessário
Para seguir com o tutorial você vai precisar dos seguintes componentes:
- 1 x Placa Arduino Uno R3 + Cabo USB para Arduino
- 1 x Transistor TIP122 NPN
- 1 x Motor DC
- 1 x Potenciômetro Linear 10k
- 1 x Resistor 220Ω
- 1 x Suporte 4 Pilhas AA
- 1 x Pack de 4 Pilhas AA
- 1 x Protoboard
- Kit de Jumpers
O que é o PWM?
O termo PWM que significa Pulse Width Modulation (Modulação em Largura de Pulso), consiste em modular um sinal aplicando somente os estados de ligado e desligado dentro de um período, que através da variação de tempo em estado ligado é possível alterar o valor da tensão média.
Para mais informações, acesse o post “Controle de velocidade de motor DC com PWM no Arduino UNO”.
Funcionamento do Circuito
O circuito basicamente irá controlar a velocidade do motor através do transistor TIP122, chaveando o motor de acordo com o PWM aplicado na base do transistor. Essa variação será alterada pelo potenciômetro que por sua vez envia o sinal de PWM para a base do transistor através do Arduino.
Montagem do circuito
Com os componentes em mãos vamos à montagem do circuito. Abaixo temos o esquemático eletrônico montado em protoboard.
Obs.: O Arduino será alimentado pela conexão USB do computador, já o motor é alimentado pelas pilhas, isto é necessário por conta do motor utilizar uma corrente acima do que é fornecida pelo Arduino.
Código
Com o circuito montado vamos ao código que será carregado no Arduino.
#define analogpin A0 #define base_transistor 3 int DutyCycle = 0; int valor_pot = 0; void setup() { Serial.begin(115200); pinMode(base_transistor,OUTPUT); //Define pino como saida para chavear o transistor } void loop() { valor_pot = analogRead(analogpin); //Lê o valor do potenciômetro Serial.println(valor_pot); //Imprime no monitor serial o valor lido do potenciômetro DutyCycle = map(valor_pot,0,1023,0,255); //faz o remapeamentro do valor para escala correta analogWrite(base_transistor,DutyCycle); //Liga e desliga o pino de acordo com o DutyCycle delay(100); }
Conclusão
Bom após descarregado o código faça o teste variando o potenciômetro e note que o motor irá alterar a velocidade.
Gostou de aprender como controlar a velocidade de um motor DC com o Arduino utilizando um transistor? Deixe seu comentário logo abaixo. Para saber mais sobre o mundo maker, Arduino entre outros dispositivos acesse o blog.
Posso alimentar o arduino com 48V?
Olá Pedro!
Não, o limite de alimentação de entrada do Arduino é 12 V.
Abraços!
Vinícius – Equipe MakerHero
Olá, posso nesse circuito controlar um motor de 12Vcc alimentado com uma fonte externa?
Olá Dan!
Pode sim, sem problemas!
Oi Felipe,
Ali na linha 18 onde você atribui valor à DutyCycle, o value não deveria ser substituído por valor_pot?
[]’s
Olá hélio, verdade! obrigado pelo feedback, vou pedir a alteração.