Tutorial de controle de motor sem escova do Arduino | ESC | BLDC
Neste tutorial vamos aprender como controlar um motor brushless usando Arduino e ESC. Caso queira mais detalhes sobre o funcionamento dos motores BLDC, consulte o outro artigo ou assista ao vídeo a seguir, que contém explicações sobre o princípio de funcionamento de um motor sem escovas e como controlá-lo usando Arduino e ESC.
Visão geral
Para este exemplo, tenho um motor BLDC outrunner com as seguintes especificações:tem uma classificação KV de 1000, pode ser alimentado com bateria LiPo 2S, 3S ou 4S e requer 30A ESC. A classificação KV em um motor sem escova define a RPM do motor por volt sem carga.
Neste caso, os 1000KV significam que, por exemplo, se alimentarmos o motor com bateria 2S LiPo que tem uma tensão de 7,4 volts, o motor pode atingir RPM máxima de 7,4 vezes 1000, ou seja, 7400 RPM.
Os motores brushless consomem muita energia e o método mais comum para alimentá-los é usando baterias LiPo. O número “S” de uma bateria LiPo indica quantas células a bateria possui e cada célula possui uma tensão de 3,7V.
Para este exemplo, usarei a bateria 3S LiPo que tem 3 células e é 11,1V. Então, posso esperar que meu motor atinja o RPM máximo de 11100.
Por fim, aqui está um ESC de 30A que usarei para este exemplo e combinará com os requisitos do motor. De um lado o ESC possui três fios que controlam as três fases do motor e do outro possui dois fios, VCC e GND, para alimentação.
Há também outro conjunto de três fios saindo do ESC e essa é a linha de sinal, +5V e terra. Esse recurso do ESC é chamado de Circuito Eliminador de Bateria e, como o nome sugere, elimina a necessidade de uma bateria separada para um microcontrolador. Com isso, o ESC fornece 5V regulados que podem ser usados para alimentar nosso Arduino.
Podemos notar aqui que esta conexão é realmente a mesma que vemos nos servo motores.
Portanto, controlar um motor sem escova usando ESC e Arduino é tão simples quanto controlar um servo usando o Arduino. Os ESCs usam o mesmo tipo de sinal de controle que o servo e esse é o sinal PWM padrão de 50Hz.
Isso é muito conveniente, porque, por exemplo, ao construir um avião RC, geralmente precisamos tanto de servos quanto de motores brushless e, desta forma, podemos controlá-los facilmente com o mesmo tipo de controlador.
Então, usando o Arduino só temos que gerar o sinal PWM de 50Hz e dependendo da largura dos pulsos ou da duração do estado alto que deve variar de 1 milissegundo a 2 milissegundos, o ESC acionará o motor do mínimo ao máximo.
Controle de motor sem escova do Arduino – diagrama de circuito
Aqui está o diagrama de circuito para este exemplo. Além do ESC usaremos apenas um potenciômetro simples para controlar a velocidade do motor.
Você pode obter os componentes necessários para este tutorial do Arduino nos links abaixo:
- Motor sem escova ………………………
- ESC 30A ……………………………………….
- Bateria Li-Po ……………….…..……
- Placa Arduino ……………………………
- Potenciômetro …………………………….
- Breadboard e jump wires …
Código Arduino para controle de motor BLDC
O código do Arduino é realmente simples com apenas algumas linhas de código.
/*
Arduino Brushless Motor Control
by Dejan, https://howtomechatronics.com
*/
#include <Servo.h>
Servo ESC; // create servo object to control the ESC
int potValue; // value from the analog pin
void setup() {
// Attach the ESC on pin 9
ESC.attach(9,1000,2000); // (pin, min pulse width, max pulse width in microseconds)
}
void loop() {
potValue = analogRead(A0); // reads the value of the potentiometer (value between 0 and 1023)
potValue = map(potValue, 0, 1023, 0, 180); // scale it to use it with the servo library (value between 0 and 180)
ESC.write(potValue); // Send the signal to the ESC
}
Code language: Arduino (arduino)
Descrição: Então, precisamos definir a biblioteca Servo, pois com a biblioteca servo podemos gerar facilmente o sinal PWM de 50Hz, caso contrário os sinais PWM que o Arduino gera estão em frequências diferentes. Em seguida, precisamos criar um objeto servo para o controle ESC e definir uma variável para armazenar a entrada analógica do potenciômetro. Na seção de configuração, usando a função attach(), definimos para qual pino do Arduino é o sinal de controle do ESC conectado e também definimos a largura mínima e máxima dos pulsos do sinal PWM em microssegundos.
Na seção de loop, primeiro lemos o potenciômetro, mapeamos seu valor de 0 a 1023 para o valor de 0 a 180. Em seguida, usando a função write(), enviamos o sinal para o ESC ou geramos o sinal PWM de 50Hz. Os valores de 0 a 180 correspondem aos valores de 1.000 a 2.000 microssegundos definidos na seção de configuração.
Então, se carregarmos este código para o nosso Arduino e, em seguida, ligarmos tudo usando a bateria, podemos controlar a velocidade do motor sem escova de zero ao máximo usando o potenciômetro.
No entanto, há algumas coisas que devemos observar aqui. Ao energizar inicialmente o motor, o valor do sinal deve ser igual ou inferior ao valor mínimo de 1 milissegundo. Isso é chamado de armamento do ESC, e o motor emite um bipe de confirmação para que saibamos que está armado corretamente. Caso tenhamos um valor maior ao ligar, o que significa que temos um acelerador, o ESC não dará partida no motor até reduzirmos o valor mínimo correto. Isso é muito conveniente em termos de segurança, porque o motor não liga caso tenhamos um acelerador ao ligar.
Calibração do ESC
Por fim, vamos explicar como funciona a calibração do ESC. Cada ESC tem seus próprios pontos altos e baixos, e eles podem variar um pouco. Por exemplo, o ponto baixo pode ser 1,2 milissegundos e o ponto alto pode ser 1,9 milissegundos. Nesse caso, nosso acelerador não fará nada nos primeiros 20% até atingir esse valor de ponto baixo de 1,2 milissegundos.
Para resolver este problema, podemos calibrar o ESC ou definir os pontos alto e baixo como quisermos. Para isso, antes de alimentar o ESC, primeiro precisamos acelerar nosso potenciômetro ao máximo ou um valor pelo menos maior que o ponto médio atual. Então podemos ligar o ESC, e ouviremos alguns bipes do motor que realmente confirmam que definimos o novo ponto alto.
Então, após 2 segundos, devemos mover nosso potenciômetro para a posição onde determinamos o novo ponto baixo. Ouviremos novamente os bipes de confirmação e com isso finalizamos a calibração do ESC. Agora nosso acelerador responderá imediatamente e podemos controlar o motor dentro desses dois novos pontos.
Isso é praticamente tudo para este tutorial. Caso você queira aprender a fazer sem fio este controle de motor sem escova do Arduino, você pode conferir meu vídeo anterior onde eu construo um transmissor RC baseado em Arduino e expliquei como controlar motores BLDC usando-o.
Espero que tenham gostado deste tutorial e aprendido algo novo. Sinta-se à vontade para fazer qualquer pergunta na seção de comentários abaixo e não se esqueça de verificar minha coleção de projetos do Arduino.
Processo de manufatura
- Tutorial de bloqueio RFID do Arduino
- Aceitar moeda de controle com Arduino
- Arduino Control Center
- Arduino com Bluetooth para controlar um LED!
- Robô seguidor de linha
- Controle do umidificador Arduino
- Plataforma de treinamento Arduino
- Arduino Tutorial 01:Começando
- BLDC Motores e Automação
- Uma introdução ao motor BLDC