现在做什么网站好,网站做外链的技巧,莆田市建设局网站,企业seo优化方案本篇文章介绍了使用NXP公司提供的塔式快速原型系统来驱动控制带霍尔传感器的无刷直流电机。文章涉及的塔式快速原型系统主要包括以下四个独立板卡#xff1a;1.塔式系统支撑模块#xff08;TWR-Elevator#xff09;#xff0c;用以连接微控制器以及周边模块#xff1b;2.低… 本篇文章介绍了使用NXP公司提供的塔式快速原型系统来驱动控制带霍尔传感器的无刷直流电机。文章涉及的塔式快速原型系统主要包括以下四个独立板卡1.塔式系统支撑模块TWR-Elevator用以连接微控制器以及周边模块2.低电压3相电机控制模块TWR-MC-LV3PH3.通信USB、Ethernet、CAN、RS232/485塔式系统模块TWR-SER4.塔式系统K60 MCU模块TWR-K60N512。 文章从基础理论讲起帮助读者梳理电机控制相关概念了解整个电机驱动系统构成带领读者从BLDC电机控制实现的各个开发步骤来直观体验了整个实现过程。 目录
BLDC电机理论
BLDC带霍尔传感器基本信息
换相
BLDC电机数字控制
速度控制
系统描述
性能指标
概要说明
外设
数据流程图
关键技术详解
速度和位置测量
PI控制器
软件实现
函数实现
中断安装
对外接口 NXP公司把电机在汽车中的应用主要分为三类动力总成安全和地盘以及车身和舒适。下图为这三类具体包含涉及到了电机控制的汽车部分。 电机按照实现原理又分为直流有刷电机直流无刷电机步进电机永磁同步电机。下图为这四种电机在不同汽车部分的应用情况。 本文主要介绍的是带霍尔传感器的直流无刷BLDC电机的控制应用实现。 BLDC电机理论
BLDC带霍尔传感器基本信息
BLDC的定子stator是通电的线圈而转子rotor是永磁体。换句话来说BLDC 电机的磁体保持转动导体保持静止。 换相
利用磁铁同性相斥异性相吸的原理我们在定子上的线圈接入方向适当的电流即让电磁铁的磁极方向和永磁体的磁极方向正好对应不就能排斥、或者吸引转子做旋转运动了。BLDC电机将那六个线圈两两组合分成ABC三个绕组三相这样就能同时控制两个中心对称的绕组采用相同的极性从而提高了驱动效率而ABC三个绕组又会两两结对这样又能驱动相邻的两个转子提供不同的极性那么转子将会获得更高的驱动力如下面动图所示通过AB-AC-BC-BA-CA-CB这六个节拍六步依次循环驱动定子的绕组转子就能一直旋转下去。 综上所述换相可以产生旋转场通过六步控制我们总共可以获得六种可能的定子磁通向量。必须在特定的转子位置更改定子磁通向量。转子位置通常通过霍尔效应传感器检测。霍尔传感器生成三种信号这三种信号也包含六种状态。每个霍尔传感器的状态对应特定的定子磁通向量如下表所示。 顺时针旋转相序列 霍尔传感器H1霍尔传感器H2霍尔传感器H3A相B相C相001VV-NC011VNCV-111NCVV-100V-VNC000V-NCV001NCV-V
我们现在先拿六个电子开关来理解六个节拍的转化如下图 BLDC电机数字控制
对于常见的三相BLDC电机可以使用标准的H桥驱动电路如下图。 BLDC 电机控制应用采用互补双极开关PWM。利用互补双极开关两相由互补 PWM 信号供电 底部 MOSFET的开关与一相之内的顶部MOSFET的开关互补一相的占空比大于 50%另 一相的占空比为互补值小于 50%如下图所示。 互补双极开关PWM技术的优点是可以在所有四个工作象限中控制电机。双极PWM开关方案要 求顶部和底部开关PWM信号在换向事件时交换。另一个要求是在互补顶部和底部信号中插入死区。 速度控制
换相可确保BLDC电机的转子正确旋转而电机转速则仅取决于所施加电压的振幅。可使用PWM技术调整所施加电压的振幅。所需转速由速度控制器控制速度控制器由比例 - 积分 (PI) 控制器实现。实际转速与所需转速之差为PI控制器的输入该控制器随后根据此差值控制 PWM 脉冲的占空比并且此占空比与维持正确转速所需的电压振幅相对应。 系统描述
性能指标
该系统设计用于驱动三相 BLDC 电机。该应用符合以下性能规范
使用霍尔效应传感器对 BLDC 电机进行电压控制。带 TWR-K60N512 板的塔式系统解决方案。电源电压 24 VDC。控制技术包括 使用霍尔效应传感器信号进行位置检测。使用速度闭环进行 BLDC 电机电压控制。速度测量基于一个霍尔效应传感器。两个旋转方向。可从任何转子位置启动。可在每次电机启动之前对 MOSFET 前置驱动自举预充电。最小转速 500 RPM 取决于所使用的电机。最大转速 4000 RPM 取决于所使用的电机。FreeMASTER接口输入速度、测得速度、速度误差、斜坡参数、过流LED指示。以太网终端 输入速度、以太网状态。故障保护 直流母线过流故障保护硬件。电源反向极性保护电路硬件。 概要说明
K60N512运行主控制算法。根据用户接口和反馈信号它将会生成六路PWM输出信号(FTM0)。如果所需转速不为零则应用启用霍尔传感器中断并强制首次调用霍尔中断程序。每个霍尔传感器的新边沿自动调用中断程序。在此霍尔中断程序中将会扫描来自霍尔传感器的信号并交换和屏蔽对应的 PWM 通道。此过程称为换相。霍尔传感器扫描独立于速度控制FTM1。速度控制循环由PIT0定时调用此周期循环中存在速度斜坡和应用状态机。主程序中仅存在一个针对FreeMASTER协议处理的无限循环这样就可以通过FreeMASTER上位机调试此应用。 外设
为了使此应用正确工作必须使用以下外设。不允许将这些外设用于其他目的。
FTM0用于生成PWM信号的定时器在组合模式下运行开关频率为 19.2 kHz 48 MHz 的内核时钟死区时间为 1 μs。FTM1用于速度测量的定时器在输入捕捉模式下运行预分频为 128模数为 0xFFFF溢出周期为 175 ms。PIT0用于定时调用速度控制循环和应用状态机中断调用周期为 10 ms 48 MHz 内核时钟。端口A用于霍尔效应传感器中断如果在此端口上施加任何其他信号则在每个信号边沿调用此中断程序不会正确运行。端口D用于霍尔效应传感器中断如果在此端口上施加任何其他信号则在每个信号边沿调用此中断程序不会正确运行。PTE26用于紧急停止按钮。PTA27用于读取 MC33937 MOS-FET 前置驱动的过流引脚。PTA10用于表示 MC33937 MOS-FET 前置驱动上的第一级过流。SPI2用于与 MC33937 MOS-FET 前置驱动通信。 数据流程图
电机驱动应用要求表明软件将提取用户接口下发的速度等参数和传感器采集的部分数值进行处理然后生成用于电机控制的三相PWM信号。闭环BLDC电机驱动的控制数据流程图如下所示。 其中包含的关键流程如下
速度命令用户通过FreeMASTER通信软件发送的每个速度更改命令均会使speed_req变量中的值改变。缩放比例和速度斜坡提供定点32位数的比例更改和速度斜坡计算由于整个应用系统具有很大惯性因此应用时必须细化速度命令否则可能会导致系统过载。此流程会不断更新speed_scaled的值直到与speed_req值一致。速度PI控制器它用于计算实际速度与speed_scaled之差并相应地补偿PWM 模块的占空比。换相和PWM生成它用于根据霍尔传感器的信号创建旋转场。传感器中断处理程序它用于生成换相向量。速度测量实现测量当前电机转速详见下一小节。 关键技术详解
速度和位置测量
实际电机速度基于旋转周期 (time_measured) 计算得出并与用户提供的 speed_req 进行对比。随 后通过速度斜坡算法对速度命令进行处理。从斜坡算法输出获得的实际速度命令与 speed_measured进行比较将生成一个speed_error。 旋转周期通过霍尔传感器 A 和 flex timer 1 扫描可在捕捉模式下对其进行配置。 PI控制器
速度 PI控制算法用于处理speed_req和speed_measured之间的speed_error。PI控制器输出传输至 PWM发生器以作为所施加电机电压的新校正值。
PI控制器程序在PIT设备中断程序PIT0_isr中计算它每10 ms被调用一次。此中断将在电机停止时禁用从而使PI也禁用。PI控制器的积分部分在低速 低于 499 RPM时禁用因为在此情况下速度测量并不准确且PI控制器可能不稳定。要确定何时禁用程序中存在两个宏 MIN_CW_SPEED_32和MIN_CWW_SPEED_32。
PI控制器的输入为斜坡算法speed_scaled的输出另一个输入为实际speed_measured。另外两个 输入为PI控制器参数trMyPI结构的指针。所有这些参数均供PI控制器函数GFLIB_ControllerPIp 使用。
此函数输出为s32Output。它将按照PWM比例缩放为delta_duty并添加到half_duty。此处理结果为duty_cycle这将被加载至Flex Timer寄存器中。 每当速度比例更改或者电机改变时必须配置 PI速度控制器参数。 软件实现
函数实现
整个电机控制算法由中断驱动。主函数仅用于MCU和应用初始化如下图所示。初始化终止时 程序将进入无限循环或其他应用处理程序 web 服务器、 USB、FreeMASTER协议处理等。 为了使此电机应用正常工作需要使用四个中断。 四个中断处理程序分别提供以下服务
溢出中断处理程序用于电机停止检测和速度测量。溢出处理程序用于复位速度斜坡。输入捕捉中断处理程序用于读取两个霍尔传感器边沿之间的时间 处理速度传感器的基本部分。周期中断用于定时调用速度控制器、速度斜坡和应用状态机。 PIT中断在电机停止时禁用。霍尔传感器中断用于扫描霍尔传感器的状态以及换相过程。换相过程生成适当的换相模式到六个栅极信号而 PWM发生过程则为选定栅极输出生成相应的PWM 信号。可使用三位换相向量 “hall_status”从换相表中选择换相模式。换相模式随后将载入微控制器的寄存器中。 中断安装
裸机版本与MQX版本的差别仅在于中断安装方法。我们这里仅仅介绍裸机版本中的安装方法。
在裸机版本中我们可以直接安装中断。您可以通过在NVICISER寄存器中设置正确位来轻松实现中断。可以使用寄存器NVIC_IP配置中断的优先级。为了更好地理解请看以下示例。
中断安装
NVICICPR2 0x4800010; // 首先清除可能的挂起中断
NVICISER2 0x4800010; // 启用中断
NVICICPR1 | 0x80000000; // 首先清除可能的挂起中断
NVICISER1 | 0x80000000; // 启用中断
设置中断的优先级
NVIC_IP(63) 0x40; // 针对 FTM1 设置优先级
NVIC_IP(68) 0x50; // 针对 PIT0 设置优先级
NVIC_IP(87) 0x40; // 针对霍尔传感器设置优先级
NVIC_IP(90) 0x40; // 针对霍尔传感器设置优先级 对外接口
本软件除了可以通过FreeMASTER调试通信软件来控制电机速度还可以集成到一个完整的应用中作为电机驱动来使用。要达到此目的我们需要封装三个对外接口API:
/************************************************************
* 函数名称Set_speed
* 参数 所需速度带符号短整型数据格式的输入速度。输入值以 RPM 为单位。
* 电机序号此例仅有一个。
* 返回void
* 描述用于为每个电机输入所需速度。
***********************************************************/
void Set_speed(signed short speed_input, int motor_number)
{ speed_req INT16TOF32((speed_input*SPEED_TO_RPM_SCALE));}/*******************************************************
* 函数名称Get_speed
* 参数电机序号
* 返回测得的速度
* 描述用于获取每个电机的速度带符号短整型数据格式).此值以 RPM 为单位。
******************************************************/
signed short Get_speed(int motor_number)
{signed long speed_temp;speed_temp (speed_measured * MAX_SCALED_SPEED);return (speed_temp 15);
}/***************************************************
* 函数名称Get_status
* 参数无
* 返回应用状态
* 0 — 处于空闲状态
* 1 — 处于停止状态
* 2 — 处于正在运行状态
**************************************************/
unsigned char Get_status(void)
{ return App_state; } 十六宿舍 原创作品转载必须标注原文链接。 ©2023 Yang Li. All rights reserved. 欢迎关注 『十六宿舍』大家喜欢的话给个更多关于嵌入式相关技术的内容持续更新中。