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

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

[复制链接]
shiyongzhu 发布时间:2014-12-30 22:59
本帖最后由 shiyongzhu 于 2015-1-17 08:45 编辑
; a" A$ r; u" C$ M1 t- @
% [/ w% i$ }/ O; P' }% j& ]6 G拿到Nucleo开发板有一段时间了,这段时间认真的学习了一下Nucleo开发板,这款开发板的开发资源实在是太丰富了,且开发板的底层驱动很完善,必需点个赞。这不年关将近,抓紧把方案给晒下。
1 d& |  `# H8 c; r3 s
- h9 B: v7 E3 y- S0 J
做四轴飞行器电调一份重要的参考资料timegate墨鸢所写的《无感无刷直流电机之电调设计全攻略》,本文主要参考该文献。目前,国内外对无刷直流电机(Brushless DC motor,BLDCM)定义一般有两种:一种定义认为只有梯形波/方波无刷直流电机才可以被称为无刷直流电机,而正弦波无刷电机则被称为永磁同步电机(permanent magnet synchronous motorPMSM);另一种定义则认为梯形波/方波无刷电机和正弦波无刷电机都是无刷直流电机。在此本帖采用第一种定义。5 L* R7 n7 x# t6 V6 g! q' C) O* }
0 k# ~5 v! Z! s1 R4 q6 h
直流无刷电机根据转子结构可分为内转子和外转子两种结构,主要区别在于转动部分处于内部还是外部。. L, o2 c7 @% [! Q

9 g8 P) l9 _0 z7 G' B: ~  F
直流无刷电机绕组通电后,线圈内产生电流,在永磁体的磁场下产生洛伦兹力,产生力矩,从而推动转子转动。为了产生持续的力矩,线圈内的电流需要根据转子所处的位置改变方向,这也就是所产说的换相。有刷电机的换相通过电刷完成,而无刷电机的换相则是通过电子器件控制电流的通断来完成。
1 ]6 J5 b: ?2 ^3 ?" ]: C
6 W3 Y4 J% g* e) H
无刷直流电机的换相与转子的位置有关,为了产生同一个方向持续的电磁力矩,需要根据位置的不同控制每相电流通断。根据换相位置的检测方式又可以分为无感和有感。有感指的是采用霍尔传感器检测转子位置,控制换相。而无感指的是直接利用电机的线圈绕组来控制换相。这也正是本次电调设计的主要方式。! t4 _/ p! B2 }/ H
8 ]  ~9 P% W# {3 \0 v+ ~* S  J9 a9 P
本次电调设计主要控制框图如下图所示,零位检测电路检测能够检测出无刷电机转子的切换位置,控制器根据转子位置,控制驱动电路进行每相通断切换,从而实现对电机的控制。
控制方案.JPG 0 C6 a# n# d; ^' A
如图所示,Nucleo开发板通过自制的电调驱动板进行电机控制。电调驱动板上设置有功率mosfet管、用于检测中性点电压的比较器等。
- ]3 v4 p+ N& Y4 v% Y
驱动板至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三相分别接上电机即可。
------------------------------分割线--------------------
$ P& R) V! X8 `( R
各位看官久等了,自从上次发布了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

) C6 I4 i  Z/ e) K1 {  l$ l. ~- K' ]

$ o  a4 s. y  v$ l* ^- n. b

( H" p/ |) E' B( g

/ A: i) z2 J% D' a+ O7 A$ z

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 编辑 6 c/ t2 W* G/ Q$ \* I2 ~6 h
' W) N7 r, U4 Z  P. G
首先请各位看官原谅俺,没有在一楼中进行内容更新,主要是因为上次更新的时候发现,所有的图片需要重新的插入,实在的费事,所以这次重开一楼了。4 o. _0 k" D* z- W: s8 v
硬件平台搭建起来已经有段时间了,本人在枫叶老师的视频教程中的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
: ~) w* |. O! v: o: P7 B
程序下载: BLDC-DIY.rar (4.58 MB, 下载次数: 1798)
zjm_z 回答时间:2015-7-8 16:10:26
shiyongzhu 发表于 2015-7-8 15:06
" P4 v# C) U8 q/ z2 T% f+ ~空闲时刻,你量下PWM的输出看下

- @! Q* U. G- t3 D( K; h抱歉,这个是我软件PA9复用了,导致烧了PMOS.现在量了,上臂,下臂全部为低,这个没有问题,现在不会烧管子了,但是我双击启动后,点击来回摆动两下,就是不启动,装不起来,楼主能提供点思路吗?还有就是5 u6 `9 e' \3 Y: j
char Check_Delay(unsigned int time)   
- Y# F8 Q0 {- p  i" m$ V  |{        ) O" `8 m, Y  z2 Z# V# _
        return (((time-countmillsecond)&0x8000)>>8);/
: u; v6 c; R# h# \. ]0 y2 i: T}. S5 p- H9 n2 Y; ~
这个实现多少的延时,实在抱歉,这个到现在都没有理解楼主的本意,希望楼主棒棒忙,我现在正在调试- N+ u  ?4 N/ N1 B4 H
zjm_z 回答时间:2015-7-24 09:01:58
shiyongzhu 发表于 2015-7-23 22:28; w6 o/ m1 X  c  S; U* d& Z
BLDC电机低速时,很容易停转的。建议你设个占空比门限,确保电机不会以太低的速度旋转。 ...

, e5 p. @9 ^* P! P; l2 Z0 s8 H; P4 {" G好的,现在就是按照你的方案,启动时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/ t. d" S1 G9 V& m; R, D/ \
后续原理图和实物出来了不?

& p+ g7 l" W7 W* F' y0 g: m  @  N$ l4 d原理图实物已有,这几天就传上论坛啊,
mlxy123xy 回答时间:2015-1-13 23:34:19
这个不是要控制4个电机吗?四个一起控制还是需要再有一个姿态控制的CPU?
shiyongzhu 回答时间:2015-1-24 20:12:29
mlxy123xy 发表于 2015-1-13 23:34# I1 Y( j  ]5 `5 ?! _
这个不是要控制4个电机吗?四个一起控制还是需要再有一个姿态控制的CPU?

, }. ~) S. @" ~四个有点难啊,先实现控制一个吧。做飞控的话,需要单独一个飞控板的。
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
# h' i+ d" c1 U  ^4 x. Q# t整4个再+上姿态控制 不是4轴飞行器?
" |5 _" {. K3 {) d. @' u
打算用这个开发板控制两个电机,然后只需要两块Nucleo开发板,就可以完成四个电机的控制了。
xuwu_19911119 回答时间:2015-1-28 19:31:21
个人觉得上桥臂的电路这样设计会有问题吧。

所属标签

相似分享

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