15 julho 2015

Como ligar um motor brushless ao Arduino

Se você está pensando em montar um aeromodelo ou quadcóptero com o Arduino, vamos ver neste artigo como utilizar o Motor Brushless Emax CF2822, um motor com ótimo torque e muito leve (apenas 39g), ideal para essas aplicações.

Motor brushless Emax CF2822

Esse tipo de motor não pode ser ligado diretamente à fonte de alimentação, ele precisa de um controlador, conhecido como ESC (Electronic Speed Control), Na imagem abaixo, temos o ESC 30A com BEC interno, que vamos usar para testar o motor brushless:

ESC HW20A com BEC interno

A função do ESC, como o próprio nome diz, é controlar eletronicamente a velocidade do motor, variando, no caso do motor sem escovas (brushless), a transição entre as diversas fases desse tipo de motor. O ESC também pode ter outras funções, como freio, variação lenta da velocidade do motor e função de localização de aeronaves perdidas, entre outras.

Esse ESC, além disso, também tem um componente (circuito ?) chamado BEC (Battery Eliminator Circuit), um dispositivo que converte a tensão de entrada do ESC (que vai de 5,6 à 16,8V) em 5 ou 6V para alimentar o receptor e os servos de um aeromodelo.

Para ter mais informações sobre motores brushless, ESC e BEC, recomendo a leitura deste artigo.

Conexões do ESC

Na imagem acima você viu que o ESC tem 8 fios. Estes fios seguem o seguinte esquema de ligação:

  • Os 3 fios azuis são ligados ao motor (não se preocupe com a ordem de ligação)
  • O fio preto e o fio vermelho (mais grossos), são para ligação à bateria (geralmente de lítio ou Ni-MH NiMH / NiCd)
  • Dos 3 fios mais finos que estão juntos em um conector, o preto é ligado ao GND do Arduino, e o branco ao pino de saída do Arduino, que irá comandar o ESC. O fio vermelho é saída 5V e não será utilizado, pelo menos no nosso teste com o Arduino

Realizando as conexões acima e adicionando um potenciômetro de 10K que vai controlar a velocidade do motor, teremos o seguinte circuito:

Circuito Arduino Uno - Motor Brushless e ESC

Lembre-se de utilizar uma bateria que forneça a tensão e a corrente adequadas ao motor que você está utilizando.

Controlando o motor brushless com o Arduino

Vamos controlar a velocidade do motor brushless usando o potenciômetro ligado à porta analógica 5 do Arduino. Para controlar o ESC usamos PPM (Pulse Position Modulation), por meio da biblioteca Servo do Arduino.

O programa converte os valores lidos do potenciômetro, entre 0 e 1023, para um valor entre 0 e 179. Para isso utilizamos o comando map (linha 27 do programa). O valor 0 corresponde ao motor parado, e 179 à velocidade máxima.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
//Programa: Controle de motor brushless EMAX CF2822
//Autor : Arduino e Cia

#include <Servo.h>

Servo ServoMotor;

//Pino do potenciometro
int pino_pot = A5;
//Pino de controle do motor
int pino_motor = 6;
int valor;

void setup()
{
  Serial.begin(9600);
  ServoMotor.attach(pino_motor);
  Serial.println("Aguardando 5 segundos....");
  delay(5000);
}

void loop()
{
  //Le o valor do potenciometro
  valor = analogRead(pino_pot);
  //Converte o valor para uma faixa entre 0 e 179
  valor = map(valor, 0, 1023, 0, 179);
  //Mostra o valor no serial monitor
  Serial.print("Potenciometro: ");
  Serial.println(valor);
  //Envia o valor para o motor
  ServoMotor.write(valor);
}

Recomendo iniciar o teste do motor com o potenciômetro na posição "zero", girando o potenciômetro totalmente para a esquerda, e depois aumentar a velocidade aos poucos. Uma outra recomendação é fixar o motor em alguma base, pois como comentei no início do post este é um motor bem forte e pode facilmente se deslocar durante os testes.


44 comentários:

  1. Por que o range de 0-179? tem algum motivo para o valor máximo da conversão de valor ser 179?

    ResponderExcluir
    Respostas
    1. Boa noite,

      São valores padrão quando estamos utilizando a biblioteca servo do Arduino para controlar um ESC já que, teoricamente, estamos controlando um servo, e não um ESC.

      De qualquer forma, o ESC interpreta corretamente esse range.

      Abraço !

      Excluir
    2. O 179 corresponde ao ângulo do servo, de 0 a 179.

      Excluir
  2. Como faço para ligar 4 motores? eu tenho a programação, mas as vezes liga dois, outra vez liga 1, na outra 3, mas nunca os quatro. Saberia o porque?

    ResponderExcluir
    Respostas
    1. Boa tarde Leonardo,

      Vou ficar te devendo essa informação, por enquanto. Só estou com 1 motor no momento...

      Seria alguma coisa com a fonte de alimentação dos motores ?

      Abraço!

      Excluir
    2. Conversei com diversas pessoas, creio que seja a bateria para dar partina nos motores, pois não esta conseguindo, sugeriram duas alternativas: primeira é colocar duas baterias ou colocar capacitores para dar essa partida. Estou vendo com pessoal de eletronica essa segunda alternativa, pois é a mais barata também. Abraço.

      Excluir
    3. Olá, conversei com pessoal especializado e me disseram que pode ser a bateria mesmo. Embora seja uma de 3 células e própria para aéromoledos. Estou achando que não esta tendo força para ligar todos os motores ao mesmo tempo. Me falaram de colocar um capacitor para ajudar nesse acionamento. Você saberia se isso é possível?

      Excluir
    4. Oi Leonardo,

      Vai ter ajudar, mas creio que com relação à ruídos, oscilações e coisas do tipo. O ideal seria substituir essa bateria por outra de maior potência e ver se o problema continua.

      Abraço!

      Excluir
  3. Eu tenho um ESC de 30A. Eu quero alimentar o ESC com uma fonte de CC ao invés de uma bateria. Se a fonte puder fornecer a tensão e a corrente desejada, existem algum problema em utilizá-la?
    Estou utilizando um motor brushless de 1000kV com corrente máxima de 21A.

    ResponderExcluir
    Respostas
    1. Boa noite,

      Eu pesquisei bastante sobre esse assunto, e não achei nada relacionado à algum problema em ligar o ESC em uma fonte. Eu fiz alguns testes com o motor do post, e ele funcionou normalmente com uma fonte de alimentação CC.

      Abraço!

      Excluir
    2. Qual seria a Amperagem da fonte?

      Excluir
  4. Qual seria a especificação dessa fonte? Voltagem... Amperagem... Ainda tenho muita dúvida com relação a alimentação desse ESC, consumo e etc. Obrigado

    ResponderExcluir
    Respostas
    1. Boa noite,

      Eu usei uma fonte de 9V e 2A, mas como foi só para testar o circuito, não sei se ela aguenta uma aplicação em definitivo. Sugiro dar uma olhada em blogs específicos sobre aeromodelismo, lá tem bastante informação.

      Abraço!

      Excluir
    2. Eu utilizei uma fonte de computador e um motor de HD funciona que é uma beleza

      Excluir
  5. Gostaria de saber de essa ESC tem algum firmware, pois comprei uma ESC da iflight que vem com firmware SimonK e não estou conseguindo girar os motores com o sinal PWM do arduino uno.....e estou procurando uma que não tenha isso.

    ResponderExcluir
    Respostas
    1. Boa tarde Armando,

      Encontrei um site falando que o firmware desse ESC é o Hobbywing: http://www.banggood.com/Wholesale-XXD-HW30A-30A-Brushless-Motor-ESC-For-Airplane-Quadcopter-p-50621.html

      Espero que ajude.

      Abraço!

      Excluir
  6. Pensei em usar um ESC desse, com um motor para um bicicleta eletrica, mas, ai teria que ser outro modelo de ESC? obrigado

    ResponderExcluir
  7. e se eu quiser girar no sentido anti horario?

    ResponderExcluir
    Respostas
    1. Boa noite,

      Vou ficar te devendo essa informação. Sei que é algo com a ligação dos fios (tem que inverter alguma coisa), mas não consigo te dar detalhes pq não estou mais com o motor.

      Abraço!

      Excluir
    2. Basta inverter a posição dos fios que estão ligados no motor... Não existe risco de queimar ou estragar...

      Excluir
    3. nao tem como girar o contrario atraves de um comando?

      Excluir
    4. n o unico geito é inverter dois fios do motor

      abraço

      Excluir
    5. Na verdade vc tem que trocar o esc por um que trabalhe nos dois sentidos, carrinhos de automodelismo elétrico têm esses esc. Tem que achar o esc certo.

      Excluir
    6. entao por ex ao usar este motor em um carro RC... seria necessario colocar um rele para inverter os fios do motor para mudar a direcao da rotação???

      Excluir
    7. Pelo que parece, o motor usa ímãs e fios de cobre... Se for isto, se você inverter a ligação dos fios com a bateria para que assim, o sentido da corrente mude. Ou então, achar outra maneira de inverter o sentido da corrente. Desta maneira você deve conseguir girar o motor ao contrário.

      Excluir
  8. Amigo, sabe dizer como eu controlo a velocidade do motor pelo teclado do pc ao invez do petenciometro ?

    ResponderExcluir
    Respostas
    1. Boa noite Felipe,

      Você quer controlar por exemplo pelo serial monitor ? Ou alguma aplicação específica ?

      Abraço!

      Excluir
    2. Isso msm Amigo. Pelo Serial monitor.
      Por exemplo:
      W= Liga motor, / E=aumento Vel +20, / M=Vel máxima, P=Parar Motor.

      É que no momento estou sem o Potenciometro, por isso queria testar meu Emax peloa IDE arduino.

      Agradeço se tiver alguma dica pro código.

      Excluir
    3. Bom dia Felipe,

      Não tenho nenhum exemplo pronto, mas você pode usar como base esse código para bluetooth, onde ele lê os caracteres da serial para apresentar no display.

      Abraço!

      Excluir
  9. Esses motores Blushless são motores trifásico de ima permanente
    Para inverter o sentido de rotação basta inverter 2 fases. Exemplo:
    A B C ==> B A C

    Dj.

    ResponderExcluir
  10. Boa noite a todos, gostaria de saber se posso usar este ESC para um Motor Do Ventilador Do Climatizador Interclima 24 V deste http://lista.mercadolivre.com.br/motor-ventilador-interclima-e-para-uniporte-e-maquinas-agric

    ResponderExcluir
    Respostas
    1. Boa noite Everton,

      Essa não é muito a minha área, mas acho que esse não é o controlador mais indicado para o motor que você tem. Esse ESC é para motores brushless.

      Vamos ver se alguém consegue te ajudar com mais informações.

      Abraço!

      Excluir
  11. boa tarde,

    Qual firmware foi utilizado para esse esc?

    Obrigado.

    ResponderExcluir
    Respostas
    1. Bom dia,

      Encontrei um site falando que o firmware desse ESC é o Hobbywing: http://www.banggood.com/Wholesale-XXD-HW30A-30A-Brushless-Motor-ESC-For-Airplane-Quadcopter-p-50621.html

      Abraço!

      Excluir
  12. Tudo bem Leonardo? estou fazendo um investimento pra poder produzir alguns modelos de drones e aeroplanos RC, e artigos como este são sensacionais. Porem quero investir em coisas de qualidade e queria sua opiniao sobre qual os melhores motores e controladores para Arduino.

    ResponderExcluir
  13. Olá pessoal comprei meu primeiro arduino uno estou tentando variar a velocidade dele através de um sensor ultrasonico, alguem ja fez isso tem alguma ideia poderia me ajudar com o codigo
    Muito obrigado se alguém puder me ajudar

    ResponderExcluir
  14. Bom dia amigo. Parabéns pelas informações. Gostaria de saber qual cartão você usou para efetuar a programação do esc. Grata

    ResponderExcluir
    Respostas
    1. Boa tarde,

      Não cheguei a programar, pois esse Esc já veio programado.

      Abraço e obrigado!

      Excluir
  15. Boa noite amigo,

    Estou montando um Drone com Arduino e gostei bastante do conteudo do Post, vou testar todos os motores e ESCs que comprei desse modo.
    Você teria mais algum material sobre ESCs, motores Brushless ou até controles de Voo com o Arduino? Procurei em outras postagens do blog mas não achei conteudo parecido.

    Obrigado e parabéns pelo trabalho!

    ResponderExcluir
  16. Bom dia,
    estou com um motor GT2826/04 um esc de 60A e não consigo girar o motor ele fica bipando, estou usando uma bateria de 12v de uma central de alarme.
    Sabe me dizer por que não gira?

    ResponderExcluir
  17. Conecte todo como lo pusiste y use la misma programacion pero el motor no llega a levantar tanta veocidad, tenes idea porque puede ser?

    ResponderExcluir
  18. olá pessoal. Tenho um motor Motor 4255 500kv Brushless, e um esc 60A com bec. Quero fazer o teste de bancada sem o rádio. Montei um circuito com potenciomêtro bem simples, que eu ja havia usado para outro projeto, e tambem vi que o pessoal usa pra teste. Mas não obtive resultados. O motor não acionou. E bem, eu não sei direito como é o funcionamento do esc, e se esse esc precisa ser programado primeiro. Por favor, poderiam me dar uma força?? obrigado

    ResponderExcluir
  19. Ola, fiz o teste exatamente como acima, porém No meu teste o fio do GND de referência do PWM esquentou muito quase derretendo em alguns segundos (desliguei assim que percebi). Alguém sabe me dizer o problema? MEu ESC não tem é no BEC. Porém pra isso apenas serve para alimentar com 5V, por exemplo, alguma eletrênica. Alguém sabe se o GND de um ESC é isolado do GND da bateria? Pois com 20A isso fritaria a eletrônica.

    ResponderExcluir