sexta-feira, 14 de novembro de 2014

Drone - Teste de ESC / Motor e Propeller

Fiz um novo teste, utilizando também o Propeller encaixado.
Motores 1000kv; ESC 30A e Propeller 1045, com um Arduino Uno + LCD Shield.




Código fonte para Arduino Uno com LCD Shield

 /*  
  Arduino ESC / Motor Brushless Test - by Valter F.C.  
  Porta PWM 3 -> S do ESC  
  Pino 5v -> 5v do BEC  
  Pino GND -> GND do BEC  
  ** OBS.: 5v e GND - opcional, pode usar conectado na USB do PC **  
   
  The circuit of LCD Shield:  
  * LCD RS pin to digital pin 8  
  * LCD Enable pin to digital pin 9  
  * LCD D4 pin to digital pin 4  
  * LCD D5 pin to digital pin 5  
  * LCD D6 pin to digital pin 6  
  * LCD D7 pin to digital pin 7  
  * LCD BL pin to digital pin 10  
  * KEY pin to analog pin 0  
  */  
   
 #include <LiquidCrystal.h>  
 LiquidCrystal lcd(8, 9, 4, 5, 6, 7); //config LCD
   
 int value;  
 int pwmPort = 3;  
 int delayTime = 800; //500;
 int maxPwm = 255; //255  
 int minPwm = maxPwm/2; //0  
 int incPwm = 5; //5  
 float motorRPM = 1000.0;  
    
 void setup()
 {  
  pinMode(pwmPort, OUTPUT);  
  lcd.clear();   
  lcd.begin(16, 2);  
  lcd.setCursor(0,0);   
  lcd.print("ESC / Motor test");   
  writeInitialValue();  
  delay(7000); //time to init
 }  
   
 void loop()
 {  
  //up
  for(value=minPwm; value<=maxPwm; value=value+incPwm)  
  {  
   writeValue(); //write to ESC  
   writeValueToLCD();  
   delay(delayTime);  
  }  
    
  delay(3000);  
   
  //down
  for(value=maxPwm; value>=minPwm; value=value-incPwm)  
  {  
   writeValue(); //write to ESC  
   writeValueToLCD();  
   delay(delayTime);  
  }  
    
  delay(1000);  
 }  
   
 void writeInitialValue()
 {  
  value=maxPwm/2;  
  writeValue();  
 }  
   
 void writeValue()
 {  
  analogWrite(pwmPort, value); //write to ESC
 }  
   
 void writeValueToLCD()
 {  
  lcd.clear();  
  lcd.setCursor(0,0); // ----------------------
  lcd.print("Out: ");  
  lcd.print(100.0*value/maxPwm);  
  lcd.print(" %");  
  lcd.setCursor(0,1); // ----------------------
  lcd.print("RPM: ");  
  //lcd.print(value*motorRPM/(50+1));  
  lcd.print(value*motorRPM/maxPwm);  
  lcd.print(" kv");  
 }  
   

Este é o LCD, mostrando os pinos que utilizei.

Aqui é o máximo registrado pelo multímetro. Passou da capacidade máxima da fonte, mas foi um pulso rápido. O valor pode ter sido limitado pela própria fonte.



quinta-feira, 13 de novembro de 2014

Drone - Teste de ESC e Motor

Agora que chegaram os ESCs e Motores, e ainda não tenho tudo para fazer um teste completo, decidi criar um método utilizando Arduino Uno para testá-los. É bem simples, mas dá conta do recado.
Utilizei:
- fonte 12v x 8.3a
- Arduino UNO
- bloco de terminais - para fazer conexão fácil e manter os fios separados
- uma morsa (torno de mesa) para segurar o motor
- o ESC e o motor a serem testados


Puxei a alimentação do BEC que tem no ESC:
- 5v do BEC -> 5v do Arduino
- GND do BEC -> GND do Arduino
- sinal do BEC (S) -> pino 9 do Arduino

Fotos do kit que comprei.




Pinagem do BEC:

Se quiser, pode não usar a voltagem do BEC, usando apenas a porta USB do PC, e apenas conectar o pino GND e o S (signal) no pino 9 do Arduino.

Foto da montagem:


O código do Arduino é o seguinte:
 /*  
  codigo arduino para controle de ESC - by Valter F.C.  
  pinagem  
    5v -> 5v do BEC  
    GND -> GND do BEC  
   pin 9 -> S do ESC  
    
  OBS.: utilizar 5v e GND do BEC eh opcional, podendo utilizar o USB do PC  
 */  
 int rotacao;  
 int porta = 9;  
    
 void setup()
 {  
 }  
    
 void loop()
 {  
  for(rotacao=0; rotacao<=255; rotacao=rotacao+5)  
  {  
   analogWrite(porta,rotacao);  
   delay(500);  
  }  
    
  delay(1000);  
  for(rotacao=255; rotacao>=0; rotacao=rotacao-5)  
  {  
   analogWrite(porta,rotacao);  
   delay(500);  
  }  
    
  delay(1000);  
 }