刷了BLHeli请问怎么设置

刷了BLHeli请问怎么设置,第1张

所需材料。

刷blheli程序:arduino nano一块。

USB公头转miniUSB公头线一根。

好赢电调一块(型号不限)其实只要是用c8051f330单片机的电调都行。

刷电调主要过程

1 把arduino nano驱动安装到电脑上。

2 和程序连接

3 连接电调

4 刷程序

5 改参数

blheli程序设置选项:

1. Closed loop P gain: PID 中的P增益。P * Diff 就是你收敛速度,越高电机响应越快,但是负载也会增大。

2. Closed loop I gain: PID中的I 增益。 控制你锁定转速的精度,I越高越精确,太高会造成电机震动。

3. Closed loop mode:

a. HiRange: 最高达20万RPM

b. MiddleRange: 10万RPM

c. LowRange: 5万RPM

Low Voltage Limiter —电池电压低门限

Governor Mode —定速模式(四种模式)

Tx:遥控器油门曲线控制定速值。只要油门曲线是一条水平线,就保持相应的定速.这种模式不能像普通电调那样设置斜上升的油门曲线,否则电调根据油门的变化不断地修正定速,会有很明显的 *** 作延迟感觉

Arm:每次飞机启动时读取一次遥控器油门值,这个值用于后续飞行的定速值(油门曲线对主电机不再起作用,但是注意,油门曲线对尾电机起作用,所以通过设置合适的V型曲线可以帮助三轴加强锁尾)

Setup:用Gorvernor Setup Targe项所设置的值作为定速值(类似于Arm模式,但是不需要每次通电都设一次定速值. 同样,油门曲线对主电机不再起作用,但是注意,油门曲线对尾电机起作用,所以通过设置合适的V型曲线可以帮助三轴加强锁尾)

Off:关闭定速功能,将电调当成普通电调使用

Governor P-Gain —定速P增益调整定速软硬

Governor I-Gain —定速I增益 调整定速软硬

Governor Range —调速范围

Governor Target RPM—定速模式的期望定速值

*************************************************************************************************************

Startup Power — 启动功率

Startup RPM —启动瞬间电机的转速

Startup Acceleration — 启动至定速所需时间

这三个值共同决定了启动瞬间电机行为。 如果启动有困难,适当加大Startup Power,如果电机转后易被卡住而停转,可以加大Startup RPM。

Startup Method —启动方法

Throttle Change Rate —油门变化率

Motor / Gear Setup —电机/齿轮设置

*************************************************************************************************************

Moter Direction —电机转动方向

Demag Compensation — ????? 补偿

PWM Frequency —无刷电机PWM开关频率Low为8-12Khz, High为20-25Khz

Damping Force —强制减震力

Motor Timing —电机调速

*************************************************************************************************************

Input Polarity —信号线相位,对于Mcpx/FBl100,从电机端取信号,选择Positive;如果从MCU输出或者电机MOS输入端取信号,选择Negative。对于华xx机型, 从电机端取信号,选择Negative;如果从MCU输出或者电机MOS输入端取信号,选择Positive。

PWM Min Throttle —最小油门PWM开关频率

PWM Max Throttle —最大油门PWM开关频率

Beep Strength —蜂鸣声强度

Beacon Strength —信号灯强度

Beacon Delay —信号灯延迟

Motor Timing 电机进角

做舵机信号测试一下用可以51的定时器中断实现。舵机信号一般脉宽为0.5ms~2.5ms的PWM方波周期20ms。

做四轴的话还是建议采用ARM,国外有个关于四轴的开源网站可以参考。

了解舵机信号可以参考 百度文库搜:航模舵机控制原详解

#include <reg51.h>

#define uchar unsigned char

#define uint unsigned int

/*

变量定义

*/

uchar key_stime_counter,hight_votage=15,timeT_counter

bit key_stime_ok

/*

引脚定义

*/

sbit control_signal=P0^0

sbit turn_left=P3^4

sbit turn_right=P3^5

/*****************************************************************

名称:定时器0初始化

功能:20ms定时,11.0592M晶振

初值=65536-11059200*0.02/12=65536-18432=47104=0xB800 20ms

初值=65536-11059200*0.0001/12=65536-92.16=64430=0xFFA3 0.1ms

*****************************************************************/

void TimerInit()

{

control_signal=0

TMOD=0x01 //设置定时器0为工作方式1

EA=1 //开总中断

ET0=1 //定时器0中断允许

TH0 = 0xFF //定时器装初值

TL0 = 0xA3

TR0=1 //启动定时器0

}

/**********************************************

定时器0中断服务函数

***********************************************/

void timer0(void) interrupt 1 using 0

{

TH0=0xFF

TL0=0xA3//定时器0重新装入数值

if (++key_stime_counter>=200)

{

key_stime_counter=0

control_signal=1

key_stime_ok = 1 // 20ms到

timeT_counter=0

}

if (key_stime_ok&&(++timeT_counter>=hight_votage))

{

key_stime_ok=0

timeT_counter=0

control_signal=0 // hight_votage*0.1ms到

}

}

/*********************************************

名称:键盘扫描

功能:在按键稳定期内判断键值,并返回键值

**********************************************/

uchar keyscan(void)

{

static char key_state = 0

static char key_value = 0

uchar key_press, key_return = 0

key_press=turn_left&turn_right//读按键I/O电平

switch (key_state)

{

case 0 : // 按键初始态

if (key_press==0) key_state = 1// 键被按下,但需要确认是否是干扰

break

case 1 : // 按键确认态

if (key_press==0)//如有键按下则不是干扰,判断键值

{

if(turn_left==0) //判断是哪一个按键被按下

key_value=1 //按键较多时可采用switch选择结构

else if(turn_right==0)

key_value=2

else

key_value=0

key_state = 2// 状态转换到键释放态

}

else

key_state = 0// 按键已抬起,属于干扰,转换到按键初始态

break

case 2 :

if (key_press==1)

{

key_return=key_value//按键释放后再输出键值,如果按下键就输出则可省略key_value

key_value=0

key_state = 0//如果按键释放,转换到按键初始态

}

break

}

return key_return//返回键值

}

/*********************************************

名称:按键处理

功能:

**********************************************/

void key_operation(void)

{

switch (keyscan()) //根据键值不同,执行不同的内容

{

case 1:

hight_votage-=1

if(hight_votage<5)

hight_votage=5

break

case 2:

hight_votage+=1

if(hight_votage>25)

hight_votage=25

break

default :

break

}

}

//LED显示函数

void diplay()

{

if(hight_votage>=5&&hight_votage<=7) P1=0xFD //1灯亮,舵机接近或到达右转极限位置

if(hight_votage>7&&hight_votage<=10) P1=0xFB //2灯亮

if(hight_votage>10&&hight_votage<=13) P1=0xF7 //3灯亮

if(hight_votage>13&&hight_votage<=16) P1=0xEF //4灯亮,舵机到达中间位置

if(hight_votage>16&&hight_votage<=19) P1=0xDF //5灯亮

if(hight_votage>19&&hight_votage<=22) P1=0xBF //6灯亮

if(hight_votage>22&&hight_votage<=25) P1=0x7F //7灯亮,舵机接近或到达左转极限位置

}

/*主程序*/

void main(void)

{

TimerInit()

while(1)

{

key_operation()

diplay()

}

}

以上代码我也是在网上下来的没做测试(现在在玩STM32。51的东西都收拾起来了)可以供你参


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8077254.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存