Программа рпедназначена для программирования и проверки драйверов бесколлекторных двигателей H-KING 10 A. Должна работать с H-KING 20 A, 30 A, 50 A.
Инструкция: компилируем, прошиваем в ардуинку, открываем терминал на 9600 бод, внимательно читаем дальнейшие инструкции в терминале.
#include <Servo.h>
Servo ESC_module;
//AS-IS.
//H-KING ESC Programmer and tester. Arduino-based.
//Works with H-KING 10A ESC (maybe 20A, 35A, 50A)
//Tested on Diecimila and Arduino 1.0.6 IDE
//Will works on Arduino UNO, Arduino Nano, Arduino Mega.
void setup()
{
ESC_module.attach(9);
ESC_module.write(0);
Serial.begin(9600);
Serial.println("Init...");
delay(500);
Serial.println("Do you want to configure ESC? Send 1 - yes or 2 - no, test only");
while(1)
{
while (!Serial.available());
int val=Serial.parseInt();
if((val!=1) && (val!=2))
{
Serial.print(val,DEC);
Serial.println(" - wrong value, try again");
continue;
}
if(val == 1)
{
Serial.println("Starting ESC configuration sequence...");
Serial.println();
break;
}
else
{
Serial.println("Connect ESC control pin to arduino pin 9. Connect GND.");
Serial.println("Connect battery to ESC.");
ESC_module.write(0);
Serial.println("Starting ESC test mode. You can enter values from 0 to 180 to test ESC.");
return;
}
} //setting Q1
Serial.println("Connect ESC control pin to arduino pin 9. Connect GND.");
Serial.println("Disconnect battery from ESC. Then send any char to terminal.");
Serial.println();
while (!Serial.available());
Serial.read();
Serial.println("Now connect battery to ESC and send any char.");
ESC_module.write(180);
while (!Serial.available());
Serial.read();
Serial.println("...loading...");
Serial.println();
delay(3500);
ESC_module.write(90); //first mid pos
delay(2000);
ESC_module.write(180); //high pos
delay(2000);
ESC_module.write(90); //second mid pos
Serial.println("Now ESC in programming mode (4 rings)...");
Serial.println();
delay(2000);
Serial.println("Now ESC makes single beep that repeats: Q1");
Serial.println("Setting battery type - send char: 1 for Li-Po (default) or 2 for NiCad-NiMh");
while(1)
{
while (!Serial.available());
int val=Serial.parseInt();
if((val!=1) && (val!=2))
{
Serial.print(val,DEC);
Serial.println(" - wrong value, try again");
continue;
}
if(val == 1)
{
ESC_module.write(180); //high pos
Serial.println("Battery type 1 selected - LiPo");
Serial.println();
break;
}
else
{
ESC_module.write(5); //low pos
Serial.println("Battery type 2 selected - NiCad-MiMh");
Serial.println();
break;
}
} //setting Q1
Serial.println("If you hear rapid beeps - battery setting successfully set.");
delay(2000);
ESC_module.write(90); //mid pos
Serial.println("Now ESC makes two repeating beeps: Q2");
Serial.println("Setting brake - send char: 1 - ON or 2 - OFF (default)");
while(1)
{
while (!Serial.available());
int val=Serial.parseInt();
if((val!=1) && (val!=2))
{
Serial.print(val,DEC);
Serial.println(" - wrong value, try again");
continue;
}
if(val == 1)
{
ESC_module.write(180); //high pos
Serial.println("Brake mode ON");
Serial.println();
break;
}
else
{
ESC_module.write(5); //low pos
Serial.println("Break mode OFF");
Serial.println();
break;
}
} //setting Q2
Serial.println("If you hear rapid beeps - break setting successfully set.");
delay(2000);
ESC_module.write(90); //mid pos
Serial.println("Now ESC makes three repeating beeps: Q3");
Serial.println("Rotation direction - send char: 1 - default (default) or 2 - reversed");
while(1)
{
while (!Serial.available());
int val=Serial.parseInt();
if((val!=1) && (val!=2))
{
Serial.print(val,DEC);
Serial.println(" - wrong value, try again");
continue;
}
if(val == 1)
{
ESC_module.write(180); //high pos
Serial.println("Drirection - default");
Serial.println();
break;
}
else
{
ESC_module.write(5); //low pos
Serial.println("Drirection - reversed");
Serial.println();
break;
}
} //setting Q3
delay(2000);
Serial.println("Programming completed. ESC now may be armed.");
ESC_module.write(90);
delay(1000);
Serial.println();
Serial.println("Disconnect and connect battery.");
Serial.println();
ESC_module.write(0);
delay(5000);
Serial.println("Starting ESC test mode.");
Serial.println("You can enter values from 0 to 180 to test ESC.");
}
void loop()
{
int val;
delay(100);
if(Serial.available())
{
val=Serial.parseInt();
if ((val<0) || (val>180))
{
Serial.print(val,DEC);
Serial.println(" - wrong value, try again");
}
else
{
Serial.print(val,DEC);
Serial.println(" - OK");
ESC_module.write(val);
}
}
}
Инструкция: компилируем, прошиваем в ардуинку, открываем терминал на 9600 бод, внимательно читаем дальнейшие инструкции в терминале.
#include <Servo.h>
Servo ESC_module;
//AS-IS.
//H-KING ESC Programmer and tester. Arduino-based.
//Works with H-KING 10A ESC (maybe 20A, 35A, 50A)
//Tested on Diecimila and Arduino 1.0.6 IDE
//Will works on Arduino UNO, Arduino Nano, Arduino Mega.
void setup()
{
ESC_module.attach(9);
ESC_module.write(0);
Serial.begin(9600);
Serial.println("Init...");
delay(500);
Serial.println("Do you want to configure ESC? Send 1 - yes or 2 - no, test only");
while(1)
{
while (!Serial.available());
int val=Serial.parseInt();
if((val!=1) && (val!=2))
{
Serial.print(val,DEC);
Serial.println(" - wrong value, try again");
continue;
}
if(val == 1)
{
Serial.println("Starting ESC configuration sequence...");
Serial.println();
break;
}
else
{
Serial.println("Connect ESC control pin to arduino pin 9. Connect GND.");
Serial.println("Connect battery to ESC.");
ESC_module.write(0);
Serial.println("Starting ESC test mode. You can enter values from 0 to 180 to test ESC.");
return;
}
} //setting Q1
Serial.println("Connect ESC control pin to arduino pin 9. Connect GND.");
Serial.println("Disconnect battery from ESC. Then send any char to terminal.");
Serial.println();
while (!Serial.available());
Serial.read();
Serial.println("Now connect battery to ESC and send any char.");
ESC_module.write(180);
while (!Serial.available());
Serial.read();
Serial.println("...loading...");
Serial.println();
delay(3500);
ESC_module.write(90); //first mid pos
delay(2000);
ESC_module.write(180); //high pos
delay(2000);
ESC_module.write(90); //second mid pos
Serial.println("Now ESC in programming mode (4 rings)...");
Serial.println();
delay(2000);
Serial.println("Now ESC makes single beep that repeats: Q1");
Serial.println("Setting battery type - send char: 1 for Li-Po (default) or 2 for NiCad-NiMh");
while(1)
{
while (!Serial.available());
int val=Serial.parseInt();
if((val!=1) && (val!=2))
{
Serial.print(val,DEC);
Serial.println(" - wrong value, try again");
continue;
}
if(val == 1)
{
ESC_module.write(180); //high pos
Serial.println("Battery type 1 selected - LiPo");
Serial.println();
break;
}
else
{
ESC_module.write(5); //low pos
Serial.println("Battery type 2 selected - NiCad-MiMh");
Serial.println();
break;
}
} //setting Q1
Serial.println("If you hear rapid beeps - battery setting successfully set.");
delay(2000);
ESC_module.write(90); //mid pos
Serial.println("Now ESC makes two repeating beeps: Q2");
Serial.println("Setting brake - send char: 1 - ON or 2 - OFF (default)");
while(1)
{
while (!Serial.available());
int val=Serial.parseInt();
if((val!=1) && (val!=2))
{
Serial.print(val,DEC);
Serial.println(" - wrong value, try again");
continue;
}
if(val == 1)
{
ESC_module.write(180); //high pos
Serial.println("Brake mode ON");
Serial.println();
break;
}
else
{
ESC_module.write(5); //low pos
Serial.println("Break mode OFF");
Serial.println();
break;
}
} //setting Q2
Serial.println("If you hear rapid beeps - break setting successfully set.");
delay(2000);
ESC_module.write(90); //mid pos
Serial.println("Now ESC makes three repeating beeps: Q3");
Serial.println("Rotation direction - send char: 1 - default (default) or 2 - reversed");
while(1)
{
while (!Serial.available());
int val=Serial.parseInt();
if((val!=1) && (val!=2))
{
Serial.print(val,DEC);
Serial.println(" - wrong value, try again");
continue;
}
if(val == 1)
{
ESC_module.write(180); //high pos
Serial.println("Drirection - default");
Serial.println();
break;
}
else
{
ESC_module.write(5); //low pos
Serial.println("Drirection - reversed");
Serial.println();
break;
}
} //setting Q3
delay(2000);
Serial.println("Programming completed. ESC now may be armed.");
ESC_module.write(90);
delay(1000);
Serial.println();
Serial.println("Disconnect and connect battery.");
Serial.println();
ESC_module.write(0);
delay(5000);
Serial.println("Starting ESC test mode.");
Serial.println("You can enter values from 0 to 180 to test ESC.");
}
void loop()
{
int val;
delay(100);
if(Serial.available())
{
val=Serial.parseInt();
if ((val<0) || (val>180))
{
Serial.print(val,DEC);
Serial.println(" - wrong value, try again");
}
else
{
Serial.print(val,DEC);
Serial.println(" - OK");
ESC_module.write(val);
}
}
}
Комментариев нет:
Отправить комментарий