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.
Nenhum comentário:
Postar um comentário