你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

Nucleo开发板方案设计—BLDC电机电调设计  

[复制链接]
shiyongzhu 发布时间:2014-12-30 22:59
本帖最后由 shiyongzhu 于 2015-1-17 08:45 编辑 % X' K1 A1 D0 u! y0 O, w: n( F
0 `0 ~: g& ?$ h
拿到Nucleo开发板有一段时间了,这段时间认真的学习了一下Nucleo开发板,这款开发板的开发资源实在是太丰富了,且开发板的底层驱动很完善,必需点个赞。这不年关将近,抓紧把方案给晒下。
5 E, i' Z4 E) \; W
. A7 ]: w6 w% z: W6 R" E
做四轴飞行器电调一份重要的参考资料timegate墨鸢所写的《无感无刷直流电机之电调设计全攻略》,本文主要参考该文献。目前,国内外对无刷直流电机(Brushless DC motor,BLDCM)定义一般有两种:一种定义认为只有梯形波/方波无刷直流电机才可以被称为无刷直流电机,而正弦波无刷电机则被称为永磁同步电机(permanent magnet synchronous motorPMSM);另一种定义则认为梯形波/方波无刷电机和正弦波无刷电机都是无刷直流电机。在此本帖采用第一种定义。5 i9 o# A" u, [, F6 V
) A9 Y% y( u  M. c, V1 J1 u
直流无刷电机根据转子结构可分为内转子和外转子两种结构,主要区别在于转动部分处于内部还是外部。- L9 I  A/ G) B' `( G6 w
9 t( h) S4 I: B1 W
直流无刷电机绕组通电后,线圈内产生电流,在永磁体的磁场下产生洛伦兹力,产生力矩,从而推动转子转动。为了产生持续的力矩,线圈内的电流需要根据转子所处的位置改变方向,这也就是所产说的换相。有刷电机的换相通过电刷完成,而无刷电机的换相则是通过电子器件控制电流的通断来完成。
* `7 f# @' ^1 f% G7 ~& D0 S; N! e
无刷直流电机的换相与转子的位置有关,为了产生同一个方向持续的电磁力矩,需要根据位置的不同控制每相电流通断。根据换相位置的检测方式又可以分为无感和有感。有感指的是采用霍尔传感器检测转子位置,控制换相。而无感指的是直接利用电机的线圈绕组来控制换相。这也正是本次电调设计的主要方式。
# X& O. M- e0 ^3 }# e$ B
0 B) `8 |8 E7 C% Z  n$ @! |
本次电调设计主要控制框图如下图所示,零位检测电路检测能够检测出无刷电机转子的切换位置,控制器根据转子位置,控制驱动电路进行每相通断切换,从而实现对电机的控制。
控制方案.JPG
' F! S/ z4 ~) J8 d! s如图所示,Nucleo开发板通过自制的电调驱动板进行电机控制。电调驱动板上设置有功率mosfet管、用于检测中性点电压的比较器等。2 C9 Q, B! X0 e; R
驱动板至Nucleo开发板的连接接口:
A+、B+、C+为六臂全桥驱动电路的上臂导通控制接口,高电平时导通,低电平时截止;
A-、B-、C-为六臂全桥驱动电路的下臂导通控制接口,高电平时导通,低电平时截止;
INT A、INT B、INT C为各相感应反电势与中点电压比较;
Current为电流检测电路输出的电压;
接口分配:
A+、B+、C+需要接入PWM信号,在此利用Nucleo开发板的定时器TIM1产生三路PWM信号;
A-、B-、C-只要输出低电平、高电平即可,利用普通的GPIO口即可即可;
INT A、INT B、INT C接入Nucleo开发板的中断,并要求能够上升沿和下降沿都可以检测该中断;
Current接入开发板的ADC用于检测电机工作电流。
驱动板至电机A、B、C三相分别接上电机即可。
------------------------------分割线--------------------
9 k, ?8 q. W# P
各位看官久等了,自从上次发布了BLDC电机电调设计方案后,一直没什么动静,还让管理员沐紫同学提醒了下,真心的不应该啊,在次谢罪啦,呵呵,第一次使用STM32,诸事不顺啊,闲话少叙了,现进入主题。上次发布的电调的方案中提到需要自制一块驱动板,今天将驱动板原理进行一下介绍。
电调驱动板由五部分组成,分别为六臂功率mos管桥、过零检测电路、电流检测电路、输入电源、对外接口。
六臂功率mos管桥用于控制电机线圈的通断电,也就是所说的换相。
mos1.JPG mos2.JPG mos3.JPG
过零检测电路用于检测感应电动势的过零点,提供换相的参考。
过零.JPG
电流检测电路用于实时检测电机的工作电流。
电流检测.JPG
输入电源用于对输入电源的滤波和稳压。
电源.JPG
对外接口提供了电调的控制输入、检测输入以及电源等接口。
接口.JPG
如果大家对于上述电路的原理不甚了解的话,强烈建议大家拜读下网友timegate 墨鸢所著的《无感无刷直流电机之电调设计全攻略》一文,读完此文后相信大家对BLDC的控制方法会有清晰的认识,有此强大的参考资料在,本人也就不敢班门弄斧了。下面就说下,驱动板和STM32_Nucleo开发板之间的连接。
六臂功率桥的控制信号A+、B+、C+、A-、B-、C-与高级控制定时器TIM1的输出PA8、PA9、PA10、PB13、PB14、PB15相连。过零点比较输出的CMP_A、CMP_B、CMP_C分别与PC6、PC7、PC8相连。+5V、GND与开发板的+5V、GND相连。+12V、GND与锂电池连接。PHASE_A、PHASE_B、PHASE_C与电机连接。图中MIDDLE、NULL_A、NULL_B、NULL_C为预留接口,不需要接。实物连接图如下所示。
实物图.jpg
/ Y: N- T  L4 a, h; I

. v0 s$ l% W- _  N0 M+ c
4 ^) Q  s1 ~7 Y* E+ b8 `

  ~1 W' p- Z! N) P7 d- `

BLCtrl v1.0.pdf

下载

92.9 KB, 下载次数: 533

无感无刷直流电机之电调设计全攻略.pdf

下载

4.78 MB, 下载次数: 1022

收藏 18 评论88 发布时间:2014-12-30 22:59

举报

88个回答
shiyongzhu 回答时间:2015-1-24 20:29:22
本帖最后由 shiyongzhu 于 2015-1-24 20:52 编辑 0 U. v' r3 |* Y+ h) ^& O* G
3 O/ L: {' l6 W* T: r; L
首先请各位看官原谅俺,没有在一楼中进行内容更新,主要是因为上次更新的时候发现,所有的图片需要重新的插入,实在的费事,所以这次重开一楼了。
; `# R, J* e. D4 P* v0 V0 x/ y
硬件平台搭建起来已经有段时间了,本人在枫叶老师的视频教程中的BLDC程序的基础上对本项目的BLDC程序进行了编写,初步实现了BLDC电机启动和转动工程。现将程序编写和调试过程与大家分享。主程序如图所示,非常的简单,首先进行初始化,包括系统初始化、中断初始化、系统时钟初始化、LED初始化、按键初始化等。
主程序.jpg
初始完成后进行一些变量的赋值后进入while循环,该循环中包含两个子程序按键检测和电机运行。按键检测程序采用定时运行策略,每1ms运行一次检测按键,改程序具有消除按键抖动的功能,可以检测出Nucleo开发板上user键的单击和双击,如果读者对按键检测感兴趣可以阅读一下《匠人手记》的按键漫谈一节,相信会有所收获。现介绍下我们的主角电机运行的程序,为了能够清晰明了的表示出电机运行的状态,该程序主体采用switch语句。电机运行状态转移如图所示。
电机运行状态图.JPG
由于本次DIY的电调针对的是无感的BLDC,该电机没有位置传感器,启动时需要对线圈依次循环的通电,使转子加速,然后再开启过零检测,进入正常的换向过程,因而在电机运行状态图中有电机启动状态。初始时电机处于停止状态下时,收到启动启动指令后则进入电机启动状态,当启动完成后则进入电机运行状态,启动失败则进入电机停止状态。电机启动状态又由四个子状态图组成:
电机启动状态图.JPG
首先进行一些启动的初始化,然后使转子转到AB线圈下,然后开始循环的通电加速转子,然后进入启动完成状态。
电机停止由两个子状态组成。
电机停止状态图.JPG
之所以需要两个状态是为了确保不出现电机未停稳时,电机又启动的这种情况,保护电机。
在程序调试的初期,电机经常性的启动失败,而且转速很慢,似乎没什么力量,刚开始以为是电池没电,但是测量电池电压为12.56V,电池电量充足。因而将怀疑对象转向了驱动板,查了下下臂1205 nmos管的VT电压为3-4V,而开发板的输出电压为3.3V,不足以使mos管完全导通。将驱动板进行了改动,采用三极管来驱动功率mos管,没办法飞线已经不行了,只能飞芯片了。硬件改完将程序中PWM的下臂的程序设定进行了更改,再次测试电机正常启动且转速明显比之前快,终于正常了,泪流满面啊!!!电机运行视频来了,https://v.youku.com/v_show/id_XODc4ODA4Mzg0.html
驱动桥更改.JPG
电调更改.JPG

3 H- s( r3 p5 y2 k/ y
程序下载: BLDC-DIY.rar (4.58 MB, 下载次数: 1798)
zjm_z 回答时间:2015-7-8 16:10:26
shiyongzhu 发表于 2015-7-8 15:06
* l, M5 R# J  k2 U( G空闲时刻,你量下PWM的输出看下

+ T, i1 E' ]+ I* @抱歉,这个是我软件PA9复用了,导致烧了PMOS.现在量了,上臂,下臂全部为低,这个没有问题,现在不会烧管子了,但是我双击启动后,点击来回摆动两下,就是不启动,装不起来,楼主能提供点思路吗?还有就是5 A- ]8 _% ~/ |* Y; P
char Check_Delay(unsigned int time)   1 _) M$ Q8 F  z8 c
{       
( c  C! Z, C$ c3 S; y9 v        return (((time-countmillsecond)&0x8000)>>8);/6 J! r$ V  f, I- w
}; ]8 ~& m! c4 z9 L. p
这个实现多少的延时,实在抱歉,这个到现在都没有理解楼主的本意,希望楼主棒棒忙,我现在正在调试3 N% f4 i5 U  _& t; }
zjm_z 回答时间:2015-7-24 09:01:58
shiyongzhu 发表于 2015-7-23 22:28; {; R6 p  [. Z& b; A4 b
BLDC电机低速时,很容易停转的。建议你设个占空比门限,确保电机不会以太低的速度旋转。 ...

2 l* Y2 h- C# `, K" }4 A+ E6 X好的,现在就是按照你的方案,启动时10%,闭环时20%,来控制的,效果就是我前面说的那样,我再提高占空比试试。有一点,你的那个延时我真不太懂,我自己做了延时,原理差不多,也是用Systick延时1微秒来做的,现在change_phase的频率尽然和“电机运行时”灯的闪烁频率一样,这可定事不对的,我在想想原因吧,非常感谢大侠诚恳的帮忙!
沐紫 回答时间:2014-12-31 10:30:34
Dylan疾风闪电 回答时间:2015-1-1 10:42:39
mark,备学
时光碎了天 回答时间:2015-1-4 09:56:35
好方案,学习了
万里-363223 回答时间:2015-1-7 08:41:40
电机控制,好方案
沐紫 回答时间:2015-1-13 17:17:03
后续原理图和实物出来了不?
shiyongzhu 回答时间:2015-1-13 18:15:38
沐紫 发表于 2015-1-13 17:17; N' u) Z5 s7 s- [# t
后续原理图和实物出来了不?
# W8 T8 i* s4 k" O, l0 z
原理图实物已有,这几天就传上论坛啊,
mlxy123xy 回答时间:2015-1-13 23:34:19
这个不是要控制4个电机吗?四个一起控制还是需要再有一个姿态控制的CPU?
shiyongzhu 回答时间:2015-1-24 20:12:29
mlxy123xy 发表于 2015-1-13 23:34
: Y4 I8 L/ |) g9 ?$ z( F这个不是要控制4个电机吗?四个一起控制还是需要再有一个姿态控制的CPU?
; w0 B2 I9 ]2 I9 R1 q. z8 n3 \
四个有点难啊,先实现控制一个吧。做飞控的话,需要单独一个飞控板的。
sasmike 回答时间:2015-1-28 08:32:31
很详细,不错!
wamcncn 回答时间:2015-1-28 09:30:09
整4个再+上姿态控制 不是4轴飞行器?
netlhx 回答时间:2015-1-28 09:36:45
实力贴,顶
shiyongzhu 回答时间:2015-1-28 19:03:53
wambob 发表于 2015-1-28 09:30# t6 Y9 F% j7 |" Y5 C* e9 A
整4个再+上姿态控制 不是4轴飞行器?
2 @) s* y0 k* u5 y! `
打算用这个开发板控制两个电机,然后只需要两块Nucleo开发板,就可以完成四个电机的控制了。
xuwu_19911119 回答时间:2015-1-28 19:31:21
个人觉得上桥臂的电路这样设计会有问题吧。

所属标签

相似分享

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版