描述
基于ATmega32M1和ATAVRMC320的无刷直流电机无传感器换相控制
一、引言
在无刷直流电机(BLDC)的控制中,无传感器换相技术是一项关键技术。本文将介绍如何使用ATAVRMC320开发套件实现BLDC电机的无传感器换相。ATmega32M1集成了多种外设,可减少BLDC应用中所需的外部组件数量,既适用于无传感器换相,也适用于带霍尔传感器的换相,本文主要聚焦于无传感器换相。在深入研究之前,建议先仔细阅读AVR928应用笔记,它详细阐述了无传感器控制方法的理论。
文件下载:ATAVRMC320.pdf
由于网络问题,暂时无法获取无传感器换相技术优势的相关信息。不过我们继续了解硬件和固件等方面的内容。
二、硬件部分
2.1 硬件组成
整套硬件包括ATAVRMC310和ATAVRMC300板,它们是ATAVRMC320入门套件的两个部分。详细的使用说明可参考AVR430(MC300硬件用户指南)和AVR470(MC310硬件用户指南)。
2.2 MC310跳线设置
| AVR172固件是基于特定的跳线设置开发的,以下是具体设置: |
Designator |
Setting |
Function |
| J5 |
Vm connect PB4 to Vm’ (motor voltage measurement if necessary) |
必要时用于电机电压测量 |
| J6 |
PFC OC Connect to overcurrent signal |
连接过流信号 |
| J7 |
none |
用于CAN应用 |
| J8 |
ShCo connect PC5 to ShCo for current measurement |
用于电流测量 |
| J9 |
GNDm connect PC4 to GNDm for current measurement |
用于电流测量 |
| J12 |
TxD connect PD3 to the RS232 driver MOSI A Connect PD3 to ISP connector (for ISP use) RxDUSB Connect PD3 to RxD1 (for USB interface use) |
连接RS232驱动、用于ISP和USB接口 |
| J13 |
RxD connect PD4 to the RS232 driver SCK Connect PD3 to ISP connector (for ISP use) TxDUSB Connect PD3 to RxD1 (for USB interface use) |
连接RS232驱动、用于ISP和USB接口 |
| J15 |
none |
用于CAN应用添加终端电阻 |
| J21 |
Cmp- connect ACMP0- to V+W bemf conditioning |
用于反电动势调节 |
| J22 |
Cmp+ connect ACMP0+ to U bemf conditioning |
用于反电动势调节 |
| J23 |
Cmp- connect ACMP1- to U+W bemf conditioning |
用于反电动势调节 |
| J24 |
Cmp+ connect ACMP1+ to V bemf conditioning |
用于反电动势调节 |
| J25 |
Cmp- connect ACMP2- to U+V bemf conditioning |
用于反电动势调节 |
| J26 |
Cmp+ connect ACMP2+ to W bemf conditioning |
用于反电动势调节 |
| J28 |
VCC supply the on board USB dongle from the board power supply |
为板载USB加密狗供电 |
2.3 MC300跳线设置
| Designator |
Setting |
Function |
| J2 |
none |
为ATAVRMC310板提供 +5V 电源 |
在ATAVRMC300上,Vm和Vin连接器可由同一个 +12V/7A 电源供电,也可使用单独的 +12V/1A 电源为Vin(处理器电源电压)供电。
2.4 电源供应
此固件示例配置的电源电压 Vm = 12V,该电源必须能够提供高达 4A 的输出电流。
2.5 电机参数
MC320和MC300电机控制套件中的BLDC电机具有以下特性:
- 制造商:TECMOTION
- 相数:3
- 极数:8(4 对)
- 额定电压:24V
- 额定转速:4000 rpm
- 额定扭矩:62.5 Nm
- 扭矩常数:35 Nm/A = k_tau
- 线间电阻:1.8 ohm = R
- 反电动势:3.66 V / Krpm = k_e
- 峰值电流:5.4A
当 Vm = 12V 时,额定转速为 2000 rpm。
2.6 ATmega32M1配置
ATmega32M1必须使用PLL编程为以 16MHz 运行(设置相应的熔丝位),同时要禁用CKDIV8熔丝。扩展/高/低熔丝配置为:FF/DF/F3。
2.7 技术建议
- 断开BLDC电机:在电机运行或线圈有电流时,切勿断开BLDC电机。只有当PWM占空比为 0% 且转子静止,即线圈中无电流时,才允许断开电机。要注意,当停止电源或PWM时,转动惯量大的BLDC电机可能会继续运行较长时间。
- 接地和电源布线:在设计自己的电路板时,要注意接地布线和电源布线。处理器和附加信号调理组件(如附加快速比较器、运算放大器等)的电源必须与电机电源解耦。接地连接应具有低电阻和低电感,以防止因大电流导致的电压降和噪声。建议在多层PCB中使用接地平面以确保正常运行。
三、固件部分
3.1 固件基础
示例固件基于AVR928应用笔记中描述的无传感器方法,使用ATmega32M1内部比较器以无传感器模式运行。套件中BLDC电机的霍尔传感器线可以保持未连接状态。源文件目录中包含一个HTML文档,可通过readme.html文件打开。
3.2 主流程图
固件的主流程图由每 1.024ms 由Timer0产生的g_tick来调度任务。
3.3 MS_ALIGN阶段
ALIGN阶段将电机强制置于特定位置,该阶段的时间由ALIGN_TIME常数控制,它是ru_period_counter的初始值(对于MC310电机为 200)。
3.4 RAMP_UP阶段
- 参数表:斜坡上升特性(占空比和时间)存储在两个表中:ramp_up_duty_table[]提供步骤的占空比,ramp_up_time_table[]提供步骤的长度(ru_step_length)。这两个表针对特定的电机和应用。
- 计数器:通过三个独立的计数器实现步骤序列的扫描和步骤长度的监控:
- ru_step_length_cntr:计算换相时间(直到ru_step_length变量)
- ru_period_counter:计算步骤长度(直到RAMP_UP_PERIOD常数)
- ramp_up_index:计算步骤编号(直到RAMP_UP_INDEX_MAX常数)
- 步骤时间和数量:步骤时间RAMP_UP_PERIOD = 50ms,RAMP_UP_INDEX_MAX = 9 定义了 10 步的斜坡上升。
- 参数表定义:在固件示例中,表根据套件中电机的特性定义:
- ramp_time_table[] = {26,23,20,17,14,11,8,5,3,2,2};
- ramp_dup_duty_table[] = {122,124,126,129,131,133,135,137,140,143,145};
- Sp1/pwm1参数:AVR928应用笔记中描述的通常参数为Pwm 1 = 50%,Sp 1 = Sp_max / 60。对于MC310 Tecmotion电机,Pwm 1 = 48%(= 122 / 256),Sp1由ru_step_length的初始值定义,ru_step_length = RAMP_UP_STEP_MAX = 40,这意味着每 40ms 进行一次换相,电机的电气旋转时间为 120ms,机械旋转时间为 480ms,旋转速度为 125 rpm,所以Sp 1 = Sp_max / 32。
- Sp2/pwm2参数:AVR928应用笔记中描述的理论参数为Pwm 2 = 60%,Sp2 = Sp_max / 6 = Sp 1 / 10。对于Tecmotion电机,Pwm 2 = 57%(= 145 / 256),Sp2由ru_step_length的最后一个值 2 定义,这意味着每 4ms 进行一次换相,电机的电气旋转时间为 12ms,机械旋转时间为 48ms,旋转速度为 1250 rpm,所以Sp2 = Sp_max / 3.2,这也证实了AVR498应用笔记中定义的Sp1和Sp2之间通常的比例为 10。
3.5 LAST_RAMP_UP阶段
为避免最后一步过短,该阶段监控最后一个斜坡上升步骤,以确保在进入闭环运行之前正确结束。
3.6 RUNNING阶段
- 闭环框图:运行阶段是一个无传感器闭环,其框图展示了系统的整体控制结构。
- 运行流程图:流程图显示了电机状态保持为MS_RUNNING,mci_set_ref_speed()函数根据电位器调整或串行传输接收到的速度命令更新速度设定点。在mc_regulation_loop()函数中,duty_cycle_reference是控制PWM发生器的占空比变量,它是不同模式下相关函数的计算结果:
- 在OPEN_LOOP模式下:由mci_set_ref_speed()函数确定。
- 在SPEED_LOOP模式下:根据ref_speed和监测到的mci_get_measured_speed()计算,measured_speed = (KSPEED * 4) / mci_measured_period,mci_measured_period在模拟比较器 1 的中断向量中计算,该中断使用Timer 0 计算周期。
- 在CURRENT_LOOP模式下:由mc_control_current(mc_get_potentiometer_value())确定。
- 无传感器检测和换相管理:使用模拟比较器 0、1 和 2 检测 U、V 和 W 相的过零点。Timer 1 用于监测两个连续过零点之间的时间,该时间对应电机电气旋转的一个扇区,即整个电气周期的 60°。当发生过零事件时,Timer 1 的值被存储,然后除以 2(得到 30° 时间)并加载到Timer 1 的比较 A 寄存器中,再加上自身的一半得到 45° 时间并加载到Timer 1 的比较 B 寄存器中。Timer 1 比较 A 事件在过零后 30° 发生,激活下一个换相状态并屏蔽过零,以避免在步骤结束时有源开关释放时产生的电感放电(去磁)脉冲。由于电机线圈的电感,会产生一个等于 -Ldi/dt 的电压,去磁通过功率桥的二极管完成。Timer 1 比较 B 事件释放过零屏蔽,根据motor_step变量启用比较器 n 中断,该Timer1中断提供去磁屏蔽延迟。
四、通信部分
4.1 RS232通信
- 连接设置:通过直接电缆将PC的COM端口连接到ATAVRMC310的RS232连接器。串行配置为:38400波特率、8 位数据位、1 个停止位、无握手。
- PC应用:用户可以使用常见的PC串行通信应用(如Hyperterminal)或从Atmel网站(http://www.atmel.com)下载的“Motor Control Center”应用通过RS232与固件通信。
-
| PC终端消息和命令:上电时,终端会收到欢迎消息“ATMEL Motor Control Interface”。可以向固件发送以下命令: |
Command |
Action |
| ru |
运行电机 |
| st |
停止电机 |
| help |
获取帮助 |
| fw |
设置电机正转 |
| bw |
设置电机反转 |
| ss |
设置速度(后跟速度值) |
| gi |
获取ID |
| g0 |
获取状态 0 |
| g1 |
获取状态 1 |
- Motor Control Center:用户指南可在安装目录(C:Program FilesAtmelMotor Control CenterhelpOverview.htm)中找到。使用时需先选择AVR172目标以获得正确的配置。
4.2 USB通信
可以通过PC与MC310板的USB连接器进行通信,具体配置细节可参考AVR470(MC310硬件用户指南)。通信端口将成为虚拟COM端口,可使用与RS232通信相同的工具通过该虚拟COM端口进行通信。
在实际应用中,你是否遇到过类似的电机控制问题呢?对于无传感器换相技术,你还有哪些疑问或想法?欢迎在评论区交流分享。
打开APP阅读更多精彩内容