黄工无刷电机学习
直播中

张娟

7年用户 2059经验值
私信 关注
[问答]

电调驱动原理是什么?有哪些注意事项?

电调驱动原理是什么?有哪些注意事项?

回帖(1)

石利军

2021-9-24 15:53:44
好盈无刷电调驱动-stm32与arduino控制电调





电调驱动原理以及注意事项

原理:
电调每次上电(电调由板子供电),即板子每次启动,都要给电调设置油门行程:最高油门与最低油门,方式是:调制一个占空比高一点pwn波设置最高油门与调制一个占空比低一点pwn波设置最低油门,这里的占空比是指一个pwn周期内高电平持续的时间,即高电平脉宽。
电调图为:









6V/5A:电调输出电压是6v,即电调的vcc与gen之间为6v,5A不知道啥意思
2-6S Lipo是指2到6个锂电池(大概3.7V,具体百度)
P:pwn输入
R:6V输出
G:地线
威廉希尔官方网站 图如下:




一个12V的铅酸蓄电池+一个arduino MEGA 2560(stm32)+电调+电机,接线的时候注意电调输出的三相不要接触(图中用红色胶布绝缘),电调的三个引脚中只有P与G接板子引脚,不要搞错了!!!
操作方式与现象:
1、打开电调电源开关,使得威廉希尔官方网站 导通;
2、打开单片机开关
3、电调与电机发出两声短的“”滴”~“”滴”,在发出一声长的滴,油门行程设置完成;
4、单片机给一个油门控制信号(代码中写好的),电机转动。
注意事项:
1、设置油门行程与操控油门时,pwn波频率为50HZ,即周期为20ms;
2、设置油门行程与操控油门时,不是调制pwn波输出电压,而是调制pwn一个周期内(这里为20ms)中高电平持续的时间,这里一定要切记,作者在这里被坑了;
3、油门行程一旦设置好了,只要电调的控制线,即P与G之间信号一直有,电调的电源通与不通都没有影响,比如说:先设置好了油门行程、然后把电调电源线断开,此时如果单片机不掉电的话,重新给电调接上电源线,此时单片机不需要再设置油门行程,直接给一个油门控制信号就可以让推进器转动;
4、推进器速度大小控制:给定一个在油门行程中的脉宽,脉宽越大,速度越快,脉宽越小,速度越小,如何使得控制推进器速度更加平滑,需要多次测试。
arduino控制电调

我用的是arduino MEGA 2560
这里参考了Mr.forgetful的博客:https://blog.csdn.net/weixin_43426470/article/details/89415726,感谢大佬!
代码如下:
void setup(){  pinMode(9,OUTPUT);//选取9号引脚接电调信号线  /*油门行程校准(i<=1000时,整个循环用时3-4秒)*/    //该循环运行时会伴有“哔-哔-”油门最高点确认音  for(int i=0;i<=1000;i++){  digitalWrite(9,HIGH);  delayMicroseconds(2000);//高电平持续2000微秒(油门最高点,脉宽为2毫秒)  digitalWrite(9,LOW);  delayMicroseconds(18000);}  //该循环运行时会伴有N声短鸣声(表示锂电池节数)和“哔-”油门最低点确认音   for(int i=0;i<=1000;i++){  digitalWrite(9,HIGH);  delayMicroseconds(1000);//高电平持续1000微秒(油门最低点,脉宽为1毫秒)  digitalWrite(9,LOW);  delayMicroseconds(19000);    }       /*现在可以加大高电平持续时间,即加大油门,实现电机的启动  */  //该循环运行的时间即电机低速转动的时间,进一步证明了i<=1000时,整个循环用时3-4秒  for(int i=0;i<=1000;i++){  digitalWrite(9,HIGH);  delayMicroseconds(1100);//油门1100  digitalWrite(9,LOW);  delayMicroseconds(18900);    }  }    //loop()函数使油门保持在1600  void loop(){  for(int i=0;i<=1000;i++){  digitalWrite(9,HIGH);  delayMicroseconds(1600);  digitalWrite(9,LOW);  delayMicroseconds(18400);    }      } 这里的for循环内部就是一个周期了,可以看到这里电调的频率是50HZ,周期是20ms,最大油门2ms,最小油门1ms,下面是我测得的高电平脉宽-输出电压-速度表:
高电平持续时间 pwn输出电压 速度
1100 1.50 慢
1150 1.57
1200 1.60
1250 1.65
1300 1.70
1350 1.78 较快
1400 1.84
1450 1.91
1500 2.04 快
≥1500 没测试 估计很快
stm32控制电调

代码如下:
int main(void) {                        delay_init();                     //延时函数初始化            TIM4_PWM_Init();    //定时器初始化 周期为20ms         delay_ms(2000);           //延时2s         TIM_SetCompare1(TIM4, 320);   //设置最高油门 脉宽3.2 ms          delay_ms(20000);    //延时2s      delay_ms(20000);  //延时2s         TIM_SetCompare1(TIM4, 90);  //设置最低油门 脉宽0.9 ms          delay_ms(20000);    //延时2s          delay_ms(20000);    //延时2s           while(1)        {            TIM_SetCompare1(TIM4, 140);//设置油门 脉宽1.4 ms,此时推进器按照一定速度转动        }          } 源代码链接下载:
链接:https://pan.baidu.com/s/1syOTvJleUZ-gDtnlHwW-Sg
提取码:gg***
电调的P与G分别接stm的Pin_12与Pin_13,电调驱动放在真实的项目中的话,需要将上述设置油门代码写成一个函数,在main函数GPIOinit之后就马上调用,之后不在设置油门行程,就可以直接设置推进器速度。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分