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

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

[复制链接]
shiyongzhu 发布时间:2014-12-30 22:59
本帖最后由 shiyongzhu 于 2015-1-17 08:45 编辑 : u4 ]6 F6 |0 X: x( o2 ?
2 |/ w5 Z- G* t6 O3 g
拿到Nucleo开发板有一段时间了,这段时间认真的学习了一下Nucleo开发板,这款开发板的开发资源实在是太丰富了,且开发板的底层驱动很完善,必需点个赞。这不年关将近,抓紧把方案给晒下。& Z  J/ ~& ?/ v* T* Y* Z
, {8 |* E& ]  U0 q; s( R% r+ x
做四轴飞行器电调一份重要的参考资料timegate墨鸢所写的《无感无刷直流电机之电调设计全攻略》,本文主要参考该文献。目前,国内外对无刷直流电机(Brushless DC motor,BLDCM)定义一般有两种:一种定义认为只有梯形波/方波无刷直流电机才可以被称为无刷直流电机,而正弦波无刷电机则被称为永磁同步电机(permanent magnet synchronous motorPMSM);另一种定义则认为梯形波/方波无刷电机和正弦波无刷电机都是无刷直流电机。在此本帖采用第一种定义。' z/ A  _3 ^2 o/ [7 ]5 a8 H

1 J7 W/ j: `6 W% {
直流无刷电机根据转子结构可分为内转子和外转子两种结构,主要区别在于转动部分处于内部还是外部。' [4 z0 k  @( |
- w/ \! K! M( v8 d6 k
直流无刷电机绕组通电后,线圈内产生电流,在永磁体的磁场下产生洛伦兹力,产生力矩,从而推动转子转动。为了产生持续的力矩,线圈内的电流需要根据转子所处的位置改变方向,这也就是所产说的换相。有刷电机的换相通过电刷完成,而无刷电机的换相则是通过电子器件控制电流的通断来完成。0 d' G5 x. W1 P; N8 K9 f6 W3 e
* I$ C7 |' R: a* J  E* I
无刷直流电机的换相与转子的位置有关,为了产生同一个方向持续的电磁力矩,需要根据位置的不同控制每相电流通断。根据换相位置的检测方式又可以分为无感和有感。有感指的是采用霍尔传感器检测转子位置,控制换相。而无感指的是直接利用电机的线圈绕组来控制换相。这也正是本次电调设计的主要方式。
2 K: g4 P+ J/ f0 P+ v
0 Z; f, w' j4 N/ ~9 a# R3 O; ]
本次电调设计主要控制框图如下图所示,零位检测电路检测能够检测出无刷电机转子的切换位置,控制器根据转子位置,控制驱动电路进行每相通断切换,从而实现对电机的控制。
控制方案.JPG
# y$ i% J3 y8 O! `$ ^如图所示,Nucleo开发板通过自制的电调驱动板进行电机控制。电调驱动板上设置有功率mosfet管、用于检测中性点电压的比较器等。- |0 F4 u/ C# T) m( M+ }
驱动板至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三相分别接上电机即可。
------------------------------分割线--------------------
. _3 t) U" b, H5 o' Q4 N" `
各位看官久等了,自从上次发布了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

8 c  |1 q( x  n% n! j: y8 c9 V1 M0 o
3 T! L$ x# m2 n' ?7 Z- E
' _! P. E# C% X6 E& `$ C4 x8 v
  [! c( `4 E2 l4 T7 Q7 J$ z' I9 g

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 编辑
. Q3 ~. @! h' T0 B) x+ R
, s4 y9 h; M5 K) n& M首先请各位看官原谅俺,没有在一楼中进行内容更新,主要是因为上次更新的时候发现,所有的图片需要重新的插入,实在的费事,所以这次重开一楼了。
0 y9 b% w" u- S& O/ c5 E# l( U
硬件平台搭建起来已经有段时间了,本人在枫叶老师的视频教程中的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

; H( l/ N. I9 j; B
程序下载: BLDC-DIY.rar (4.58 MB, 下载次数: 1798)
zjm_z 回答时间:2015-7-8 16:10:26
shiyongzhu 发表于 2015-7-8 15:068 t5 ~' [3 f  x' [: M7 m& S' A0 J
空闲时刻,你量下PWM的输出看下
; H$ ?% l0 _3 O& e
抱歉,这个是我软件PA9复用了,导致烧了PMOS.现在量了,上臂,下臂全部为低,这个没有问题,现在不会烧管子了,但是我双击启动后,点击来回摆动两下,就是不启动,装不起来,楼主能提供点思路吗?还有就是9 Q4 z3 Z% U8 F( I4 O; p0 Y7 Y$ H
char Check_Delay(unsigned int time)   
9 @. E* N( U8 J4 M+ U{        ' n0 v- f: g0 P( R9 p* D
        return (((time-countmillsecond)&0x8000)>>8);/; R5 C& ~. ^+ V3 Z' k7 f
}$ s& `" R* C' }9 N9 t3 R0 I! V2 Y
这个实现多少的延时,实在抱歉,这个到现在都没有理解楼主的本意,希望楼主棒棒忙,我现在正在调试
- D9 k) y% T" {' Q. ?
zjm_z 回答时间:2015-7-24 09:01:58
shiyongzhu 发表于 2015-7-23 22:281 q9 \7 b& ]5 _9 q' |+ ?' H4 v
BLDC电机低速时,很容易停转的。建议你设个占空比门限,确保电机不会以太低的速度旋转。 ...
2 B* M( ]" @$ s; f
好的,现在就是按照你的方案,启动时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
6 Y- L3 x6 k  @后续原理图和实物出来了不?

3 {/ |- _. u* v! P  Z6 ^5 w原理图实物已有,这几天就传上论坛啊,
mlxy123xy 回答时间:2015-1-13 23:34:19
这个不是要控制4个电机吗?四个一起控制还是需要再有一个姿态控制的CPU?
shiyongzhu 回答时间:2015-1-24 20:12:29
mlxy123xy 发表于 2015-1-13 23:34
# |' V; {+ p. H这个不是要控制4个电机吗?四个一起控制还是需要再有一个姿态控制的CPU?
$ f# x& E  L( g" I4 D2 K
四个有点难啊,先实现控制一个吧。做飞控的话,需要单独一个飞控板的。
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:307 R' Z4 B. Y7 ~* b  r, C- _) C
整4个再+上姿态控制 不是4轴飞行器?

4 A' Q, s9 O* J& S打算用这个开发板控制两个电机,然后只需要两块Nucleo开发板,就可以完成四个电机的控制了。
xuwu_19911119 回答时间:2015-1-28 19:31:21
个人觉得上桥臂的电路这样设计会有问题吧。

所属标签

相似分享

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