Tutorial : ARDUINO + ESC + Motor sem escova (Brushless) => DRONE

Depois que comprei um Drone Phantom 2, estou estudando as partes do mesmo. 

http://labdegaragem.com/forum/topics/dji-phantom-2-quadricoptero

O ESC ou controlador eletrônico de velocidade é o circuito que controla o motor sem escovas (BLDC) que é usado em Drones ou aeronaves de aeromodelismo. 

Fiz algumas medições com osciloscópio no ESC do Phantom 2, mas por ser uma aeronave cara, fiquei com receio de danificar algo. E se algum motor falhar em pleno vôo, pode ser o fim do Drone. 

Portanto comprei algumas peças (que poderão servir também de backup) : um conjunto  de 4 motores BLDC, um ESC do Phantom 2 e um ESC comum. 

Nessa plataforma da foto que estou montando, pretendo fazer testes dos ESCs e dos motores. Pretendo medir o RPM, corrente de consumo, temperatura e quem sabe até empuxo da turbina. 

Tá ficando muito legal ! Aos poucos, irei disponibilzar  os avanços no projeto. Pretendo estudar a fundo o funcionamento dos ESCs com esses motores. 

Exibições: 31417

Responder esta

Respostas a este tópico

Oi Gustavo, bom dia.

Eu uso muitos FET's de baixa voltagem e alta corrente retirados de mother boards pifados.

Tem pelo menos uns 6 em cada MB.

Rui "O  sucateiro"   kkkk

Rui , qual é o encapsulamento dos  seus FETs ? Eles são pequeninos?

Em um drone, os componentes precisam ser bem pequenos e leves. 

Abraços 

Sinal de controle do ESC :

No passado quando não havia aviões de aeromodelo com motores elétricos, devido ao peso excessivo da bateria, o circuito do receptor do controle remoto só aciona servomotores. 

Servomotores para controle dos Ailerons (2) , dos profundores (1) , do estabilizador vertical (1)  e o do acelerador do motor a combustível (1). Nessa configuração, o receptor deveria controlar cinco servos. 

http://merhobbies.blogspot.com.br/2012/06/pecas-aeromodelismo.html#

Graças ao avanço da tecnologia, com o desenvolvimento de baterias potentes e leves, como a bateria LIPO, o uso dos motores elétricos foi sendo possível nos pequenos aviões. 

Para aproveitar o receptor do controle remoto, foram desenvolvidos os ESCs (Controladores eletrônicos de velocidade) para motores elétricos (também usados em carrinhos elétricos). 

O controle dos servos analógicos(os mais antigos) é feito através de um sinal modulado por largura de pulso (PWM - pulse width modulation). 

Quanto maior a largura do pulso, maior potência no motor (acelerador = throttle) 

http://robots.dacloughb.com/project-2/esc-calibration-programming/

Atualmente, várias frequências do sinal de controle do ESC podem ser usadas (depois eu explicarei), mas para os servos analógicos, é esse o sinal padrão ( frequência de 50 Hz). A cada 20 milisegundos, o sinal é enviado. 

Essa tabela com os sinais de controle são para motores servo (angulo do movimento do eixo do motor).

http://electronics.stackexchange.com/questions/31024/how-to-convert...

Próximo passo = montar o Arduino NANO para gerar esse pulsos de 50 Hz com modulação PWM. 

Corrigindo o tópico anterior :

um dos servomotroes é usado para o Leme e não Estabilizador vertical.

Só corrigindo um detalhe.

Hoje em dia a motorização eletrica não é exclusividade para aviões pequenos.

Existem ESC de mais de 300A usando baterias de até 15S (em torno de 60V em plena carga).

Isso daria cerca de 18.000 Watts, ou, cerca de 24 cv.

http://www.hobbyking.com/hobbyking/store/__25608__Turnigy_Fatboy_V2...

http://www.hobbyking.com/hobbyking/store/__14427__Turnigy_CA120_70_...

Um motor desses equivale a um motor de 100cc para aeromodelo. É animal.

Sim Jefferson. 

Eu estava me referindo a ESC para pequenos motores sem escova (BLDC). 

Os motores sem escova são usados atualmente em ferramentas eletricas, carros elétricos , veículos especiais de duas rodas, gimbal para cameras de filmagem e muito mais.

http://www.segway.com/

Sim, são fantásticos.

Dei meu pitaco acima, porque mexo com aeromodelismo e helimodelismo. :-)

Eu tenho um helicoptero classe 450, é impressionante a força do motor, e é muito pequeno.

Jeferson Coli, o que esta achando do tutorial ?

Irei até onde conseguir, para entender essa tecnologia. 

É fascinante.

Abraços. 

Gustavo Murta

Esta ficando muito bom.

Realmente é fascinante.

Você já deu uma olhada no ArduPilot?

Oi Gustavo, bom dia.

Nas MB mais recentes eles são deste tamanho:

Rui

O tamanho e o peso são um pouquinho maiores...

Mas acho que dá para usar. Eu tenho desses ai também.

https://www.infineon.com/cms/en/product/package.html?package=%2fpac...

Calibrador de ESC com Arduino :

Os controladores eletrônicos de velocidade do motor (ESC) são programáveis. E antes de usá-los, é necessário configurá-los. Esse procedimento se chama calibragem. Alguns parâmetros podem ser ajustados como tipo de bateria, modo do freio, modo do acelerador do motor, etc.

Adicionei nesse post como exemplo, um procedimento de calibragem do ESC. Veja abaixo.

Para controlar os ESCs, um sinal pulsante é usado. A frequência do pulso pode variar, dependendo do ESC. No caso desse ESC BeastDNA, a frequência do sinal é de 50 Hz (mais comum). A tensão desse pulso pode variar entre 3,3V e 5V. A largura do pulso é que determina a velocidade do motor. Quanto maior a largura do mesmo, maior é a velocidade.

Ao ligar o ESC no modo de configuração, ele gera apitos que são usados nesse procedimento.
Normalmente os ESCs são calibrados (configurados) usando o controle remoto da aeronave. Nesse caso, o ESC precisa estar ligado ao circuito receptor. Através dos beeps do motor e usando o joystick do acelerador, pode-se selecionar os parâmetros da configuração.

Montei um circuito com o Arduino NANO para ser usado na Calibração digital de ESCs.

A biblioteca SERVO para o Arduino foi criada para controlar servo motores. Usando essa biblioteca, podemos gerar pulsos que podem variar entre 544 microsegundos e 2400 microsegundos, com a frequência de 50 Hz. Esses mesmos pulsos são usados para controlar os ESCs.

http://arduino.cc/en/reference/servo
http://playground.arduino.cc/ComponentLib/servo
http://arduino.cc/en/Reference/ServoAttach

O circuito do Calibrador Digital usa três botões e três Leds. Através desses três botões,podemos fazer a configuração de qualquer ESC. E os três leds são usados para identificar o acionamento dos botões.

O botão/Led Vermelho pára o motor e gera um pulso de 800 microsegundos.
O botão/Led verde é usado para acelerar o motor em baixa velocidade e gera um pulso de 1500 microsegundos. E o botão/Led azul é usado para velocidade máxima
(full throtle) com um pulso de 2100 microsegundos. Essas durações de pulso podem variar, dependendo do ESC. Nesse caso é só alterar no Sketch.


Na maioria dos ESCs, internamente existem os BECs (circuito eliminador de bateria). Esse circuito consiste de reguladores de tensão, normalmente de 5V. Essa
tensão de 5V pode ser usada para alimentar o circuito do Arduino. Mas muito cuidado ao ligar o cabo USB do computador ao Arduino NANO, quando estiver
programando-o. Recomendo que não ligue o 5V do BEC ao mesmo tempo.

Esse é o Sketch do Calibrador Digital de ESC :

#include <Servo.h>

#define ESC_pino 9 // Controle do ESC ligado ao pino D9 - fio branco 

int redLEDPin = 12;      // Pino D12 - Led vermelho
int greenLEDPin = 11;  // Pino D11 - Led verde 
int blueLEDPin = 10;    // Pino D10 - Led azul 

int redSwitchPin = 7;    // Botão D07 - vermelho - pára o motor 
int greenSwitchPin = 6; // Botão D06 - verde - velocidade baixa do motor 
int blueSwitchPin = 5;   // Botão D05 - azul - velocidade máxima do motor

Servo ESC;

void setup()
{

ESC.attach(ESC_pino);

pinMode(redLEDPin, OUTPUT);
pinMode(greenLEDPin, OUTPUT);
pinMode(blueLEDPin, OUTPUT);
pinMode(redSwitchPin, INPUT_PULLUP);
pinMode(greenSwitchPin, INPUT_PULLUP);
pinMode(blueSwitchPin, INPUT_PULLUP);

digitalWrite(redLEDPin, LOW);
digitalWrite(greenLEDPin, LOW);
digitalWrite(blueLEDPin, HIGH);
ESC.writeMicroseconds(2100);
}

void loop()
{
if (digitalRead(redSwitchPin) == LOW)
{
digitalWrite(redLEDPin, HIGH);
digitalWrite(greenLEDPin, LOW);
digitalWrite(blueLEDPin, LOW);
ESC.writeMicroseconds(800);     // pára o motor 
}
if (digitalRead(greenSwitchPin) == LOW)
{
digitalWrite(redLEDPin, LOW);
digitalWrite(greenLEDPin, HIGH);
digitalWrite(blueLEDPin, LOW);
ESC.writeMicroseconds(1500);  // Velocidade baixa do motor 
}
if (digitalRead(blueSwitchPin) == LOW)
{
digitalWrite(redLEDPin, LOW);
digitalWrite(greenLEDPin, LOW);
digitalWrite(blueLEDPin, HIGH);
ESC.writeMicroseconds(2100);  // Velocidade máxima do motor
}

delay(10);
}

Proximo passo : Video do procedimento de calibração do ESC . 

Anexos

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço