NXP公司K60N512+PWM控制BLDC电机
本篇文章介绍了使用NXP公司提供的塔式快速原型系统来驱动控制带霍尔传感器的无刷直流电机。文章涉及的塔式快速原型系统主要包括以下四个独立板卡:1.塔式系统支撑模块(TWR-Elevator),用以连接微控制器以及周边模块;2.低电压3相电机控制模块(TWR-MC-LV3PH);3.通信(USB、Ethernet、CAN、RS232/485)塔式系统模块(TWR-SER);4.塔式系统K60 MCU模块(TWR-K60N512)。
文章从基础理论讲起,帮助读者梳理电机控制相关概念,了解整个电机驱动系统构成,带领读者从BLDC电机控制实现的各个开发步骤来直观体验了整个实现过程。
目录
BLDC电机理论
BLDC(带霍尔传感器)基本信息
换相
BLDC电机数字控制
速度控制
系统描述
性能指标
概要说明
外设
数据流程图
关键技术详解
速度和位置测量
PI控制器
软件实现
函数实现
中断安装
对外接口
NXP公司把电机在汽车中的应用主要分为三类:动力总成,安全和地盘以及车身和舒适。下图为这三类具体包含涉及到了电机控制的汽车部分。
电机按照实现原理又分为直流有刷电机,直流无刷电机,步进电机,永磁同步电机。下图为这四种电机在不同汽车部分的应用情况。
本文主要介绍的是带霍尔传感器的直流无刷(BLDC)电机的控制应用实现。
BLDC电机理论
BLDC(带霍尔传感器)基本信息
BLDC的定子(stator)是通电的线圈,而转子(rotor)是永磁体。换句话来说,BLDC 电机的磁体保持转动,导体保持静止。
换相
利用磁铁同性相斥,异性相吸的原理,我们在定子上的线圈接入方向适当的电流,即让电磁铁的磁极方向和永磁体的磁极方向正好对应,不就能排斥、或者吸引转子做旋转运动了。BLDC电机将那六个线圈两两组合,分成A,B,C三个绕组(三相),这样就能同时控制两个中心对称的绕组采用相同的极性,从而提高了驱动效率,而A,B,C三个绕组又会两两结对,这样又能驱动相邻的两个转子提供不同的极性,那么转子将会获得更高的驱动力,如下面动图所示,通过AB-AC-BC-BA-CA-CB,这六个节拍(六步),依次循环驱动定子的绕组,转子就能一直旋转下去。
综上所述,换相可以产生旋转场,通过六步控制,我们总共可以获得六种可能的定子磁通向量。必须在特定的转子位置更改定子磁通向量。转子位置通常通过霍尔效应传感器检测。霍尔传感器生成三种信号,这三种信号也包含六种状态。每个霍尔传感器的状态对应特定的定子磁通向量,如下表所示。
霍尔传感器H1 | 霍尔传感器H2 | 霍尔传感器H3 | A相 | B相 | C相 |
0 | 0 | 1 | V+ | V- | NC |
0 | 1 | 1 | V+ | NC | V- |
1 | 1 | 1 | NC | V+ | V- |
1 | 0 | 0 | V- | V+ | NC |
0 | 0 | 0 | V- | NC | V+ |
0 | 0 | 1 | NC | V- | 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.
欢迎关注 『十六宿舍』,大家喜欢的话,给个👍,更多关于嵌入式相关技术的内容持续更新中。
相关文章:

NXP公司K60N512+PWM控制BLDC电机
本篇文章介绍了使用NXP公司提供的塔式快速原型系统来驱动控制带霍尔传感器的无刷直流电机。文章涉及的塔式快速原型系统主要包括以下四个独立板卡:1.塔式系统支撑模块(TWR-Elevator),用以连接微控制器以及周边模块;2.低…...

CAA的VS Studio安装
文章目录 一、官网下载VS Studio二、勾选如下安装信息三、更改软件安装位置四、17专业版密钥 一、官网下载VS Studio 官网下载地址: https://visualstudio.microsoft.com/zh-hans/downloads/ 下载对应版本后,以VS Studio2017为例: 二、勾…...

条件查询和数据查询
一、后端 1.controller层 package com.like.controller;import com.like.common.CommonDto; import com.like.entity.User; import com.like.service.UserService; import jakarta.annotation.Resource; import org.springframework.web.bind.annotation.GetMapping; import …...

JSP旅游平台管理
本系统采用基于JAVA语言实现、架构模式选择B/S架构,Tomcat7.0及以上作为运行服务器支持,基于JAVA、JSP等主要技术和框架设计,idea作为开发环境,数据库采用MYSQL5.7以上。 开发环境: JDK版本:JDK1.8 服务器&…...

简单走近ChatGPT
目录 一、ChatGPT整体背景认知 (一)ChatGPT引起关注的原因 (二)与其他公司的竞争情况 二、NLP学习范式的发展 (一)规则和机器学习时期 (二)基于神经网络的监督学习时期 &…...
10.3作业
#include <myhead.h> int main(int argc, const char *argv[]) { mkfifo(“./f1”,0777); mkfifo(“./f2”,0777); pid_t cpid fork(); if(0 < cpid) { int fdw open(“./f1”,O_WRONLY); int fdr open(“./f2”,O_RDONLY); char buf[128] “”; while(1) { bzero…...
Springboot中的@Import注解~
Import注解是Spring框架中的注解之一,用于导入其他配置类或者组件 Import注解的作用有以下几点: 导入其他配置类:可以使用Import注解导入其他的配置类,将其加入到当前配置类中,从而可以共享配置信息 导入其他组件&am…...

Linux 安全 - SUID机制
文章目录 一、文件权限位二、SUID简介 一、文件权限位 (1) $ ls -l text.txt -rw-rw-r-- 1 yl yl 0 Sep 28 16:25 text.txt其中第一个字段-rw-rw-r–,我们可以把它分为四部分看: -rw-rw-r--(1)- &a…...

Nginx与Spring Boot的错误模拟实践:探索502和504错误的原因
文章目录 前言502和504区别---都是Nginx返回的access.log和error.log介绍SpringBoot结合Nginx实战502 and 504准备工作Nginx配置host配置SpringBoot 502模拟access.logerror.log 504模拟access.logerror.log 500模拟access.logerror.log 总结 前言 刚工作那会,最常…...

全志ARM926 Melis2.0系统的开发指引①
全志ARM926 Melis2.0系统的开发指引① 1. 编写目的2. Melis2.0 系统概述3. Melis2.0 快速开发3.1. Melis2.0 SDK 目录结构3.2. Melis2.0 编译环境3.3. Melis2.0 固件打包3.4. Melis2.0 固件烧录3.5.串口打印信息3.6. Melis2.0 添加和调用一个模块3.6.1. 为什么划分模块…...

2024级199管理类联考之数学基础(下篇)
平面几何(平均2题) 三角形(性质、特殊三角形、全等与相似) 性质 由不在同一直线的三条线段首尾依次连接所组成的图形三条边、三个内角、三个定点三角形内角和为180度,外角和为360度,多边形的外角和为360度,n多边形的内角和为(n-2)*180度一个外角等于不相邻的两个内角之和任意…...

HTML之如何下载网页中的音频(二)
简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…...

【现代机器人学】学习笔记十四:中文版印刷/翻译勘误
首先声明,这个印刷/勘误并非经过官方的认可,只是我个人的粗浅的理解。如果内容有误,恳请大家谅解指正。 其实有的并不算错,只是我个人认为不太准确,在我学习过程中产生了一些小疑惑和误解。 都是一些小毛病ÿ…...

[架构之路-229]:计算机体硬件与系结构 - 计算机系统的矩阵知识体系结构
目录 一、纵向:目标系统的分层结构 1.1 目标系统的架构 1.2 网络协议栈 1.3 计算机程序语言分层 二、横向(构建目标系统的时间、开发阶段):软件工程 三、二维矩阵知识体系结构 一、纵向:目标系统的分层结构 1.1…...

第一章 visual studio下载安装
一、官网下载 地址:https://visualstudio.microsoft.com/zh-hans/ 点击免费visual studio 二、安装 运行下载好的exe文件,自定义安装目录 三、选择需要的组件安装 只需要选择标记组件,然后点击安装 等待安装完成就行 四、重启电脑 安装完之后…...

【服务器】在 Linux CLI 下安装 Anaconda
【服务器】在 Linux CLI 下安装 Anaconda 1 系统环境2 下载安装包3 安装 1 系统环境 查看系统信息 cat /etc/os-release2. 查看架构 uname -a # output # Linux localhost.localdomain 4.18.0-193.28.1.el8_2.x86_64 #1 SMP Thu Oct 22 00:20:22 UTC 2020 x86_64 x86_64 x86…...
Python中Lambda用法
在Python中,lambda函数是一种形式较短的函数,又称为匿名函数。与正常的函数不同,lambda函数没有名称,因此只能在定义时直接传递给其他函数或变量使用,而不能单独调用。 lambda函数的语法非常简单,格式如下…...

nodejs+vue养老人员活体鉴权服务系统elementui
系统 统计数据:统计报表、人员台账、机构数据、上报数据、核验报表等,养老人员活体鉴权服务是目前国家养老人员管理的重要环节,主要为以养老机构中养老人员信息为基础,每月进行活体鉴权识别并统计数据为养老补助等管理。前端功能&…...
解决caffe中的python环境安装的问题(补充)
上一篇(解决caffe中的python环境安装的问题_qiuchangyong的博客-CSDN博客)说到了安装过程中遇到的常见问题,其实还有一个忘了补充,就是在执行命令"sudo python -m pip install -r requirements.txt"后,出现p…...
面试常用排序查找算法
文章目录 1 二分查找2 冒泡排序3 堆排序4 插入排序5 快速排序6 选择排序7 希尔排序 1 二分查找 定义两个变量left和right,分别表示数组的左边界和右边界,初始值分别为0和len - 1,其中len是数组的长度。计算数组的中间位置mid,公式…...

【JavaEE】-- HTTP
1. HTTP是什么? HTTP(全称为"超文本传输协议")是一种应用非常广泛的应用层协议,HTTP是基于TCP协议的一种应用层协议。 应用层协议:是计算机网络协议栈中最高层的协议,它定义了运行在不同主机上…...

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试
作者:Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位:中南大学地球科学与信息物理学院论文标题:BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接:https://arxiv.…...
uniapp中使用aixos 报错
问题: 在uniapp中使用aixos,运行后报如下错误: AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...

Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

用机器学习破解新能源领域的“弃风”难题
音乐发烧友深有体会,玩音乐的本质就是玩电网。火电声音偏暖,水电偏冷,风电偏空旷。至于太阳能发的电,则略显朦胧和单薄。 不知你是否有感觉,近两年家里的音响声音越来越冷,听起来越来越单薄? —…...
代码随想录刷题day30
1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...

android13 app的触摸问题定位分析流程
一、知识点 一般来说,触摸问题都是app层面出问题,我们可以在ViewRootImpl.java添加log的方式定位;如果是touchableRegion的计算问题,就会相对比较麻烦了,需要通过adb shell dumpsys input > input.log指令,且通过打印堆栈的方式,逐步定位问题,并找到修改方案。 问题…...
tomcat入门
1 tomcat 是什么 apache开发的web服务器可以为java web程序提供运行环境tomcat是一款高效,稳定,易于使用的web服务器tomcathttp服务器Servlet服务器 2 tomcat 目录介绍 -bin #存放tomcat的脚本 -conf #存放tomcat的配置文件 ---catalina.policy #to…...

MyBatis中关于缓存的理解
MyBatis缓存 MyBatis系统当中默认定义两级缓存:一级缓存、二级缓存 默认情况下,只有一级缓存开启(sqlSession级别的缓存)二级缓存需要手动开启配置,需要局域namespace级别的缓存 一级缓存(本地缓存&#…...

相关类相关的可视化图像总结
目录 一、散点图 二、气泡图 三、相关图 四、热力图 五、二维密度图 六、多模态二维密度图 七、雷达图 八、桑基图 九、总结 一、散点图 特点 通过点的位置展示两个连续变量之间的关系,可直观判断线性相关、非线性相关或无相关关系,点的分布密…...