Motor DC · Arduino

Controle a velocidade de um motor DC

Ligar um motor diretamente ao Arduino não é apenas conectar dois fios. Com um transistor, um diodo de proteção e um sinal PWM, você controla a velocidade do motor sem sobrecarregar os pinos da placa.

Iniciante  /  Arduino Uno  /  ~30 min

M

Por que ligar um motor DC direto no pino do Arduino é pedir para danificar a placa?

Um motor DC normalmente exige muito mais corrente do que um pino do Arduino consegue fornecer. Além disso, por ser uma carga indutiva, ele pode gerar um pico de tensão quando é desligado. A solução é deixar o Arduino apenas enviar o sinal de controle: o transistor chaveia a corrente da fonte externa, o PWM regula a potência média entregue ao motor e o diodo protege o circuito contra os picos de tensão.

O componente

Motor DC é um dispositivo de corrente contínua que transforma energia elétrica em movimento de rotação. Neste projeto, o PWM controla a potência média entregue ao motor variando rapidamente o tempo em que ele permanece ligado e desligado. Quanto maior o ciclo de trabalho, ou duty cycle, maior tende a ser sua velocidade.

O que você aprende

Quatro conceitos que fazem o motor girar

PWM com analogWrite()

Controlar a potência média entregue ao motor por meio de pulsos digitais rápidos.

Transistor como chave

Usar um sinal de baixa corrente do Arduino para comandar a corrente exigida pelo motor.

Diodo de roda livre

Proteger o transistor contra o pico de tensão produzido pela bobina do motor durante o desligamento.

Fonte externa e GND comum

Alimentar o motor por uma fonte separada e interligar o GND dessa fonte ao GND do Arduino.

Como funciona

Do pino ao eixo girando

+V GND comum (Arduino + fonte) 4×AA M 1N4007 TIP120 Arduino D9 (PWM) 1 kΩ

O Arduino controla a base do transistor, o transistor chaveia o motor e o diodo protege o circuito durante o desligamento.

  1. O pino não fornece corrente suficiente

    Um pino do Arduino suporta apenas uma corrente limitada. Como o motor normalmente exige uma corrente maior, conectá-lo diretamente pode sobrecarregar e danificar a placa.

  2. O transistor funciona como uma chave

    Um pequeno sinal aplicado à base do TIP120 permite controlar a corrente que passa entre o coletor e o emissor, acionando o motor por meio da fonte externa.

  3. O PWM controla a potência média

    A função analogWrite() gera um sinal PWM que liga e desliga rapidamente o transistor. Ao variar o duty cycle entre 0 e 100%, alteramos a potência média entregue ao motor e, consequentemente, sua velocidade.

  4. O diodo protege contra o pico de tensão

    Quando o transistor desliga, a indutância do motor tenta manter a corrente circulando e pode produzir um pico de tensão. O diodo de roda livre cria um caminho seguro para essa corrente e protege o transistor.

  5. O GND precisa ser comum

    O motor utiliza uma fonte externa, mas o terminal negativo dessa fonte deve ser conectado ao GND do Arduino. Essa referência comum permite que o sinal de controle seja interpretado corretamente.

Hardware

O que você vai precisar

  • Arduino Uno (ou compatível)1 un
  • Motor DC 3 a 6 V1 un
  • Transistor NPN TIP1201 un
  • Diodo 1N40071 un
  • Resistor 1 kΩ1 un
  • Suporte para 4 pilhas AA1 un
  • Protoboard 400 pontos1 un
  • Jumpers macho-macho6 un

Mapa de ligações

Como conectar o circuito

Sinal / pontoLiga emFunção
D9 (PWM)Base do TIP120, por meio do resistor de 1 kΩEnvia o sinal de controle
ColetorTerminal negativo do motorChaveia a corrente do motor
EmissorGND comumRetorno da corrente
Motor (+)Positivo da fonte externaAlimenta o motor
1N4007Em paralelo com o motor, com a faixa voltada para o +VProtege contra o pico de tensão

Código-fonte

O sketch completo

// Controle de velocidade de um motor DC com PWM
// Mamute Eletrônica

#define PINO_MOTOR 9   // pino PWM ligado à base do transistor

void setup() {
  pinMode(PINO_MOTOR, OUTPUT);
}

void loop() {
  // Aumenta gradualmente o duty cycle do PWM
  for (int v = 0; v <= 255; v++) {
    analogWrite(PINO_MOTOR, v);
    delay(20);
  }

  // Reduz gradualmente o duty cycle até desligar o motor
  for (int v = 255; v >= 0; v--) {
    analogWrite(PINO_MOTOR, v);
    delay(20);
  }

  delay(500);
}

Antes de testar

Checklist rápido

  1. Alimente o motor com uma fonte externa. Não conecte o motor diretamente ao pino de 5 V ou a um pino digital do Arduino.
  2. Conecte o GND da fonte ao GND do Arduino. Sem essa referência comum, o transistor pode não responder corretamente ao sinal PWM.
  3. Confira a polaridade do diodo. A faixa do 1N4007, que identifica o cátodo, deve ficar conectada ao lado positivo da alimentação do motor.
  4. Instale o resistor de 1 kΩ entre o pino D9 e a base do TIP120.
  5. Use um pino compatível com PWM. No Arduino Uno, os pinos 3, 5, 6, 9, 10 e 11 permitem o uso de analogWrite().
  6. Verifique a corrente do motor. Considere principalmente a corrente de partida e a corrente de travamento. Motores maiores podem exigir outro transistor, um MOSFET, uma fonte mais potente ou dissipação térmica.
  7. Não estranhe se o motor não girar nos valores mais baixos. Dependendo do motor, da fonte e da carga mecânica, pode ser necessário um duty cycle mínimo para vencer a inércia e iniciar o movimento.

Monte com a Mamute

Os componentes deste projeto

Os cards são preenchidos automaticamente pela loja a partir do SKU.

Pronto para fazer o motor girar?

Encontre o motor, o transistor, o diodo e os demais componentes deste projeto na Mamute Eletrônica.

Ver os componentes na loja

Mamute Eletrônica · projetos maker para aprender fazendo · 2026

Para montar o que você acabou de ler

Motor com redução, ponte H para inverter o sentido e fonte para não puxar do Arduino.