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

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

[复制链接]
shiyongzhu 发布时间:2014-12-30 22:59
本帖最后由 shiyongzhu 于 2015-1-17 08:45 编辑 8 y4 q# @! M. r5 ^
, `% T6 R/ Z$ f7 ^$ e" j
拿到Nucleo开发板有一段时间了,这段时间认真的学习了一下Nucleo开发板,这款开发板的开发资源实在是太丰富了,且开发板的底层驱动很完善,必需点个赞。这不年关将近,抓紧把方案给晒下。
( q$ H4 U; b# p) @& h. g( x/ C/ t( N9 y* t# K
做四轴飞行器电调一份重要的参考资料timegate墨鸢所写的《无感无刷直流电机之电调设计全攻略》,本文主要参考该文献。目前,国内外对无刷直流电机(Brushless DC motor,BLDCM)定义一般有两种:一种定义认为只有梯形波/方波无刷直流电机才可以被称为无刷直流电机,而正弦波无刷电机则被称为永磁同步电机(permanent magnet synchronous motorPMSM);另一种定义则认为梯形波/方波无刷电机和正弦波无刷电机都是无刷直流电机。在此本帖采用第一种定义。
+ T# E( ~& e  M0 a7 a
4 z' s% M2 X$ ~; f; N4 Z
直流无刷电机根据转子结构可分为内转子和外转子两种结构,主要区别在于转动部分处于内部还是外部。& S* q4 x9 y4 W* P. t
: a$ f3 ]9 ^' k8 z" M, H
直流无刷电机绕组通电后,线圈内产生电流,在永磁体的磁场下产生洛伦兹力,产生力矩,从而推动转子转动。为了产生持续的力矩,线圈内的电流需要根据转子所处的位置改变方向,这也就是所产说的换相。有刷电机的换相通过电刷完成,而无刷电机的换相则是通过电子器件控制电流的通断来完成。# f9 x6 n. _* |, y: g

& F9 \$ j. D/ Q7 N, y
无刷直流电机的换相与转子的位置有关,为了产生同一个方向持续的电磁力矩,需要根据位置的不同控制每相电流通断。根据换相位置的检测方式又可以分为无感和有感。有感指的是采用霍尔传感器检测转子位置,控制换相。而无感指的是直接利用电机的线圈绕组来控制换相。这也正是本次电调设计的主要方式。- d2 _5 B6 l# S4 T

3 B* v+ n* o; O  s$ k+ S
本次电调设计主要控制框图如下图所示,零位检测电路检测能够检测出无刷电机转子的切换位置,控制器根据转子位置,控制驱动电路进行每相通断切换,从而实现对电机的控制。
控制方案.JPG
- a1 ^3 y! X! }8 k5 b5 e8 v. B+ S如图所示,Nucleo开发板通过自制的电调驱动板进行电机控制。电调驱动板上设置有功率mosfet管、用于检测中性点电压的比较器等。3 `$ g  }4 g5 }
驱动板至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三相分别接上电机即可。
------------------------------分割线--------------------8 C6 L0 E( f: }* i/ {$ h
各位看官久等了,自从上次发布了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

" M- R- e; I' M  s/ H" G

% J4 O' I% f# y2 O

6 o! K$ L( D' R" G

' R9 r+ p$ b: `* r. w" p

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 编辑
7 r: I$ F$ F2 |5 S0 z
) o( L7 b3 u$ V! H: W3 D' C首先请各位看官原谅俺,没有在一楼中进行内容更新,主要是因为上次更新的时候发现,所有的图片需要重新的插入,实在的费事,所以这次重开一楼了。* b- w) {$ q( _: c
硬件平台搭建起来已经有段时间了,本人在枫叶老师的视频教程中的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
6 ?8 g* I+ f  U& i6 d
程序下载: BLDC-DIY.rar (4.58 MB, 下载次数: 1798)
zjm_z 回答时间:2015-7-8 16:10:26
shiyongzhu 发表于 2015-7-8 15:06: n. C, B% F* v- _% f4 I/ Z
空闲时刻,你量下PWM的输出看下
5 G& N1 C8 e: K/ C1 C0 e
抱歉,这个是我软件PA9复用了,导致烧了PMOS.现在量了,上臂,下臂全部为低,这个没有问题,现在不会烧管子了,但是我双击启动后,点击来回摆动两下,就是不启动,装不起来,楼主能提供点思路吗?还有就是$ q. q3 ?: ?0 h0 d2 F3 `/ o5 P5 C
char Check_Delay(unsigned int time)   0 h, s- {5 u4 \1 A1 D' R
{        , q. V' T5 ]+ n  L/ ]( Z4 F
        return (((time-countmillsecond)&0x8000)>>8);/0 o' q4 |& l; f3 N1 C8 ]. C
}
: E2 a$ [& |& S; V0 ]' R这个实现多少的延时,实在抱歉,这个到现在都没有理解楼主的本意,希望楼主棒棒忙,我现在正在调试
) U  v6 g0 C- }
zjm_z 回答时间:2015-7-24 09:01:58
shiyongzhu 发表于 2015-7-23 22:28
% v, A, y3 p7 v- E9 |BLDC电机低速时,很容易停转的。建议你设个占空比门限,确保电机不会以太低的速度旋转。 ...
+ e4 r; w8 _" ]4 `7 p
好的,现在就是按照你的方案,启动时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:174 \- ]" @2 b: \9 ?2 ?! G" O+ e
后续原理图和实物出来了不?
4 \" g$ S3 O+ F, P7 L
原理图实物已有,这几天就传上论坛啊,
mlxy123xy 回答时间:2015-1-13 23:34:19
这个不是要控制4个电机吗?四个一起控制还是需要再有一个姿态控制的CPU?
shiyongzhu 回答时间:2015-1-24 20:12:29
mlxy123xy 发表于 2015-1-13 23:34
) T0 P7 K& b7 c3 J. c; G% z/ @这个不是要控制4个电机吗?四个一起控制还是需要再有一个姿态控制的CPU?
0 Q# s3 ]" }8 J' i
四个有点难啊,先实现控制一个吧。做飞控的话,需要单独一个飞控板的。
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. i1 B! ]4 k* C
整4个再+上姿态控制 不是4轴飞行器?

  Z1 H. F' X! }2 [! r- a% o/ L: \打算用这个开发板控制两个电机,然后只需要两块Nucleo开发板,就可以完成四个电机的控制了。
xuwu_19911119 回答时间:2015-1-28 19:31:21
个人觉得上桥臂的电路这样设计会有问题吧。

所属标签

相似分享

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