基于ATmega32M1和ATAVRMC320的无刷直流电机无传感器换相控制

电子说

1.4w人已加入

描述

基于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阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分