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.
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:
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:
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.
//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.
Gostou? Confira outros posts com motores aqui mesmo no Arduino e Cia!
Por que o range de 0-179? tem algum motivo para o valor máximo da conversão de valor ser 179?
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 !
O 179 corresponde ao ângulo do servo, de 0 a 179.
Boa noite,
]Na programação diz que o pino de controle do motor é o pino "6", porém no diagrama de ligação esta no pino "5", caso alguém também não esteja conseguindo basta fazer a alteração no fio do 5 para o 6 OU na programação do 6 para o 5.
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?
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!
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.
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?
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!
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.
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!
Qual seria a Amperagem da fonte?
Não tem problema nenhum. Uso meu ESC com uma fonte de CC e está funcionando perfeitamente. Abraços!
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
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!
Eu utilizei uma fonte de computador e um motor de HD funciona que é uma beleza
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.
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!
Pensei em usar um ESC desse, com um motor para um bicicleta eletrica, mas, ai teria que ser outro modelo de ESC? obrigado
e se eu quiser girar no sentido anti horario?
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!
Basta inverter a posição dos fios que estão ligados no motor… Não existe risco de queimar ou estragar…
Valeu Ademir!
Abraço.
nao tem como girar o contrario atraves de um comando?
n o unico geito é inverter dois fios do motor
abraço
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.
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???
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.
Amigo, sabe dizer como eu controlo a velocidade do motor pelo teclado do pc ao invez do petenciometro ?
Boa noite Felipe,
Você quer controlar por exemplo pelo serial monitor ? Ou alguma aplicação específica ?
Abraço!
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.
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!
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.
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
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!
Não serve porque esse seu ventilador trabalha com corrente alternada alta frequência.
boa tarde,
Qual firmware foi utilizado para esse esc?
Obrigado.
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!
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.
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
Bom dia amigo. Parabéns pelas informações. Gostaria de saber qual cartão você usou para efetuar a programação do esc. Grata
Boa tarde,
Não cheguei a programar, pois esse Esc já veio programado.
Abraço e obrigado!
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!
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?
Conecte todo como lo pusiste y use la misma programacion pero el motor no llega a levantar tanta veocidad, tenes idea porque puede ser?
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
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.
Olá, tenho uma dúvida em relação a motores brushless: Sei que há motores de vários tipos, tamanhos e formatos e percebi que, no caso dos modelos com alto rpm são usados esses controladores ESC, mas no caso de motores para serem usados em gimbals, por exemplo, como são controlados? com drivers, da mesma forma que motores de passo?
tem como publicar qual bateria utilizar? quero utilizar quatro motores tem como, preciso de quantas baterias para isso?
Agradeço
qual bateria utilizar para utilizar 4 motrores? ou devo usar quatro baterias … desde já agradeço
Para testes vc pode usar uma bateria 12v/7ah de nobreak
Olá boa noite, sou meio que novo no quesito de lidar com Arduino, Tenho quatro (4) Arduino UNO MEGA 328 ( Aqueles cor laranja ) e com motor brushless, tenho dois (2) E dois (2) ESC de 30 Amp., Gostaria de saber se o Código Fonte que disponibilizou pode rodar os 2 motores ao mesmo tempo, como ligo eles e se tem jeito de AUMENTAR e DIMINUIR a velocidade Através de controle remoto, Obrigado
Oi amigo.voce pode ligar 2 motores ao mesmo tempo sim.porem vc precisa de uma bateria com amperagem maior
Boa noite. Estou com uma bomba magnética, que possui um motor DC e, ao que me parece, já possui um ESC integrado. Supondo que ela seja selada, como ficaria o controle?
é possível controlar este motor com uma ponte H tipo o L298N?
boa noite tenho um esc venon 80 amp e motor venon 3300kv
estou tendo dificuldade para ligar
alguma dica?
Boa tarde, o meu não quis funcionar!
Quero montar um sistema Arduino + ESC + Motor para controlar sua rotação, mas SEM usar um potenciometro. Quero ligar o motor, e o Arduino automaticamente acelera o motor com uma rampa suave de velocidade crescente até chegar à rotação nominal (ou outra programada) do motor. Alguem pode me ajudar??
posso usar este mesmo programa num motor de hd ou tem que se so este motor mesmo
Estou pensando em usar esse código como speed de um motor brushless, o potenciômetro funciona acoplado em um gatilho com mola. Como faço para criar dentro desse código uma função que trave a última leitura do potenciômetro, e destrave através de uma tecla e/ou novo acionamento do potenciômetro. Alguém pode me ajudar? grato..
Obrigado pelo tutorial.
É possível fazer essa mesma ligação em um motor Brushless de um pequeno aerogerador, no entanto com o objetivo de medir tensão e corrente?
estou acionando um motor 24V num esc de 30A, mas ele só dá partida em 17 volts, com o potenciometro no 40, ai após uns 10 segundos aumento o potenciometro pra 45 e subo a tensão pra 24 volts ai posso ir até ao 167 no potenciometro. mas eu quero partir do 24 volts, como faço? tenho que alterar a biblioteca?
Olá pessoal!
Essa ligação serve para o raspberry também?
Pretendo controlar o motor via o raspberry.
Obrigado.
Oi Juan,
Consegue sim, os princípios são os mesmos.
Abraço!
Adilson
Quando eu inicio o potenciômetro em 0, o motor não aciona. Conforme vou aumentando, ele aumenta sua velocidade. Quando volto para o 0 novamente ele não para de vez. Fica num loop parando e girando. Como posso resolver isso nessa programação?
Oi Klara,
Conseguiu resolver? Eu refiz o circuito aqui e funcionou normalmente. Me parece que a porta analógica onde está ligado o seu potenciômetro está com variação no valor de entrada.
Lembrando que eu usei um potenciômetro de 10K.
Abraço!
Adilson
Fiz o teste no entanto meu motor só ligou quando o sinal chegou em 120 e parava assim que chegasse em 160, será que tem haver com a qualidade do meu motor ?