简介 基于 MM32SPIN360C 电机开发板驱动无感 BLDC 电机的说明文档,分为硬件平台介绍,原理分析,以及软件架构解析,用于描述 MM32SPIN360C 的电机相关硬件介绍及外设应用参考例程,包含无刷电机相关基础理论单个外设的例程,比如 ADC、TIM 等,也包含电机控制应用中需要的外设互连框架设计,比如 ADC、TIM之间的互联。文档内容以外设配置程序逐行解释、电机配置、测试方式和测试结果为主。 Demo 例程中为电机提供的功能有: 顺逆风启动、过流保护、过压保护、恒流运转、恒功率运转、恒速运转、急加速、按键正反转、ppm调速、电位器调速、FG信号输出、电机蜂鸣。 本文档介绍基于 MM32SPIN360C 硬件平台及无感方波理论技术讲解,MM32SPIN360C 软件驱动及电机调参等相关介绍将于下一篇博文讲解。 一 硬件平台 本软件使用的开发板是世平集团基于MM32SPIN360C的低压无刷电机驱动的开发板。 MM32SPIN360C 是 Arm® Cortex®-M0 为内核的 32 位微控制器,最高工作频率96MHz。 VCC引脚内置LDO输出电压为5V为MCU提供工作电压。 128KB Flash。 12KB RAM。 12 位的 ADC,采样速度高达 1Msps。 5 个通用定时器、2 个针对电机控制的 PWM 高级定时器。 1 个 I2C 接口、2 个 SPI 接口和 2 个 UART 接口。 针对电机应用内置 3 个运放,3 个比较器。 预驱工作电压高达 60V。 方案链接:https://www.wpgdadatong.com/solution/detail?PID=7090 1.2核心硬件原理图 我们需要按照红色框内的连接方式来连接跳帽,以实现用 ADC 来采集反电动势过零点,获取转子位置信息。
2.1机械角与电角度的关系 2.1.1 机械角 机械角就是电机转一圈的角度,它的范围是 0-360 度。 2.1.2 电角度 从转子来看, 转子上分布有 N 对磁铁,电角度以一对磁铁为基准,形成电磁场的绕组经过一对磁铁的 N 极、S 极、再回到另一对磁铁的N极时,完成从N、S、再到 N 极一对磁钢的跨越,这就是电角度的一周。从 N 极只到 S 极,则转子只运行了 180°。一台电动机的转子转动一圈有多少电角度,视磁铁磁对数而定,只有一对磁铁时,电角度和机械角度一致,有两对磁铁时,为 2X360°。 2.2 换相时序 2.2.1 正向旋转 (1) U->V 2.2.2 反向旋转 (1) U->W 注:换相时机取决于转子的位置,与转速无直接关系。 2.3 导通角,延时 30° 角,超前角,中点电压的关系 2.3.1 导通角 电机在换相时序过程中,最佳的换相时间。 2.3.2 延时30°角 假设两次换相之间速度不变,则延时的时间就是两次过零点间隔的一半。 如:占空比突然加大了,转速也是慢慢加上去,所以相邻两次换相的换相间隔是不会突变的,所以需要记下上一次的换相间隔,然后检测到过零点之后再延时所记下间隔的一半时间再换相。 3.超前角 提前于导通角多少度(最高为 30°)。 一般来说:在电机高转速情况下,需要在每个换相点(导通角)前插入一定的超前角(程序中的 Lead Angle)以达到在电机带负载情况下,在工作转速(或范围)下找出电机效率最高(输出功率/输入功率)、电机噪音和震动最小的状态。 2.3.4 中点电压 电机正常运转时,电机三相输入电压,输入电压/2 处就是过零点。当PWM波的占空比不是 100% 时,这里的输入电压应再乘以占空比的百分数。 注:在程序中根据转速动态调整'补偿角'和'延时角(角度会转变为时间变量做计算)。 举例:PWM 基本周期频率 20KHz(50μs),7 极对电机,在转速 2000r/m 时,求角度变化值 (3):1/233.33 = 4.28ms (每个电周期需要的时间) (4):4.28ms/6 = 713μs (每 60 度需要的时间) (5):713μs/50μs = 14.2次 (每 60 度内 PWM 周期的次数) (6):60°/14.2=4.2° (每个 PWM 周期增加的角度值) 2.4反电动势,过零点 2.4.1对同一个电机来说,反电动势峰值跟电机转速几乎是固定的比例。 2.4.2如上图所示 此时的驱动逻辑是 U->V ,可得 Vu=VCC,Vv=0V。EU, EV, EW 为电机三相反电动势电压,Vu, Vv, Vw 为三相半桥中点电压,也就是电机三相输入电压。Ul, Vl, Wl 为电机三相相电感,iu, iv, iw为电机三相输入电流,Ur, Vr, Wr 为电机三相输入电阻(考虑三相电阻相等), Vn 为电机三相中点电压。 推导过程: 2.5.1第一种方法 在开环启动的状态下,转速达到一定后,根据标题三中的举例计算出每 60° 需要的时间,预设换相时间,接下来的换相后设置定时器,检到过零点后,读出时间值,当前时间值再减去基于速度配置中的 30° 延时角与补偿角的差,换相进入闭环。 2.5.2第二种方法 在开环启动的状态下,转速达到一定后,检到过零点后就立即换相,这样处理器会省点事,电机照样正常运转,只是可能稍损失一点电源效率,过大的噪声和震动等。 2.6.1调节转速 电机的转速与 KV 值有关,也就是与供电电压基本是成比的,电机某一相通电时,只要调节 MOS 管的导通占空比,相当于调压,也就实现了调速。 2.6.2转速的计算方法 例:7 对极电机每 1 个 ms 换相一次 2.7.1电机工作状态分析 在电机静止时,无法知道转子当前的实际位置的,从而也无法判断到底该通哪两相电进行驱动。原因就在于反电动势检测只有在电机正常转起来之后才能正常工作。而且在低速状态下,反电动势输出极低,波形也比较乱,从而也无法用反电动势过零检测法进行换相。你必须确保在开环的情况下,使电机运行到一个比较快的速度,等反电动势波形输出正常了,然后才能利用反电动势的过零检测换相使电机正常工作和换相。 2.7.2三段式的驱动方式 (1):预定位 (3):开环切入闭环阶段 2.8.1软减速 在电机运行状态下逐渐将 PWM 占空比降低,以达到减速。 2.8.2硬刹车 使 U,V,W 三相短路(上臂同时关断,下臂同时导通),以达到刹车。 三、总结 本文介绍了如何在灵动微的 MM32SPIN360C 这款 MCU 下, 采用 ADC 检测电机的反电动势,计算出转子位置,实现无速度传感器的无刷电机方波驱动的方法。本文档主要是硬件平台介绍与实现技术分析,关于软件 demo 分析、调参等,详见下篇博文。 四、参考文献 (1) SPIN360C Datasheet (2) 灵动微官网MM32SPINMCU 无感方波 BLDC 电机驱动原理篇文档简介 |