APM32F035有感矢量控制方案

一、先来几句废话

        首先这两年公司越来越多的开始使用国产的MCU,用过GD32、AT32、APM32等等,目前稳定使用的是APM32,包括身边朋友工作室,也开始从TI、STM、NXP换成APM32。上个月有幸拿到APM32F035电路控制板,非常感谢面包板社区提供的这个机会。一直很忙,刚好今天要周末了,来测试一下。之前可能通信方面做得比较多,很少接触电机控制,刚好朋友有一个项目要用,借这个机会,一起搞定。看看后面能否直接用这个方案。

二、电路板介绍

        先来一张电路板照片(还是挺好看的,黑色的电路板感觉颜值比较高)

 硬件框图

  • 气参数:12~72VDC 宽电压输入,最大功率 100W
  • 支持电机类型:BLDC,PMSM
  • 支持编码器类型:霍尔,光电,磁编码器
  • 通讯接口:SCI,SPI,I2C,CAN
  • 电流采样方式:单 / 双电阻采样,三相反电动势采样

        硬件整体来说中规中矩,使用Gate driver + MOSFET来驱动电机。配合一些霍尔传感器检测电路和相电流检测,基本上就是一个电机控制的最基本部分。核心MCU用的是极海自己的APM32F035,APM32F035作为一款32位FoC矢量控制MCU,内置Vector Computer多种专用数学运算加速器,提供整套FoC控制算法支持。该款新品具有优异的高效运算与处理速度,丰富的模拟与连接特性赋予电机更多的新功能属性。

三、软件方面介绍

        软件方面,极海提供了多种电机控制方案,满足不同的使用需求,如下图

      

        此项目整体代码架构主要可划分为 4 层,用户层、外设驱动层、电机控制驱动层以及电机算法层,具体功能描述如下:

  • 用户层( 用户层(USER 层)

main.c:主函数入口,负责初始化电机参数、底层外设、中断优先级、while 循环及低速状态机
环路的切换;
apm32f035_int.c:所有的中断处理函数,重点包括捕获中断函数、ADC 中断处理函数;
user_function.c:包括电机参数的初始化配置、参数复位等处理函数;
parameter.h:包括了所有的需要配置参数信息;

  • 外设驱动层( 外设驱动层(HARDWARE 层)

外设驱动层主要负责 APM32F035 芯片的外设驱动函数及配置,主要涉略包括 GPIO、PWM、
ADC、OPA、COMP、M0CP 协处理器等,具体如下图所示。

  • 电机控制驱动层(MOTOR_CONTROL 层)

电机控制驱动层主要负责电机的控制运行逻辑及核心处理算法调用,具体如下图所示。

  • 极海电机算法层( 电机算法层(Geehy_MCLIB 层)

电机算法层包括坐标变换、矢量控制等相关函数,数学库,HALL 角度估算等库函数。

   我打算使用的是有感的FOC控制方案,所以我们就APM32F035_Lv_HallFOC_V2.2.zip提供的源代码进行测试.打开工程(基于MDK5)如下:

状态机介绍 状态机介绍
本案例中采用了主状态机嵌套子状态机的结构,如下所示:
四个主状态:INIT、STOP、FAULT、RUN;
同时主状态 RUN 的六个子状态:run-calib、run-ready、run-align、run-spin、run-freewheel。
对主状态机的描述如下:
Fault:当系统有错误发生时一直处于此状态,直到错误的标志位被清除。而后会延时一段时间,然后从 Fault 状态跳转到 STOP 状态等待起动命令。
Init:此主状态执行变量初始化。
Stop:系统完成初始化等待速度命令。此状态内 下关闭 PWM 输出。
Run:当在运行状态时,若有 Stop 指令下发,便会执行系统停止运行操作。当运行在 Run 状态时,其子状态会相应被调用并执行:
Run-Calib:可以执行电流偏置 ADC 自校准功能。执行完此状态后系统将切 Ready 状态,同时
禁止 PWM 输出。
Ready:使能 PWM 输出,同步采样电流,并执行异常状态检查。

Align:执行采样电流,调用预定位算法,同时更新 PWM。在指定时间内执行态,同时采样直流
母线电压并滤波处理。
Spin:采样电流,调用观测器估计转子转速和位置,调用相应算法,更新 PWM,电机开始切入
闭环运行。
Freewheel:使能 PWM 输出,并采用短接制动的方式进行停机,由于转子惯性,需等待到电机
停止运行后在进行状态的切换,进而切换到 Ready 状态。如果有错误发生则将进入 Fault 状态。

四、电机调试

1、电机参数配置 

电机我使用的是硬石开发板配套的4对极直流无刷电机

根据官方提供的方案调试介绍,因此需要核对电机的极对数、额定转速、限制电流(结
合电机的功率考虑)、定标转速(结合额定转速评估)等。如下图所示。

2、电流内环的 PI 参数进行整定确认

        在 Align 状态中进行调试,调节 DQ 轴下的电流环 PI 参数(如下图所示,一般 DQ 轴采用一
样的 PI 参数),类似其中的 Q 轴,通过给定 Iq_cmd(可以直接给到值或者采用斜坡给定的方式
设定一定加速度及数值),通过观察 Vq 的输出是否能快熟稳定、以及 Iq_cmd 及实际的 Iq 波形数
据是否能跟随上,判断当前的 PI 参数是否合适。

3、HALL 角度自检

        当电流内环 PI 参数已经合适时,此时说明可以使用预定位功能,则开启 HALL 相序的自检功能。还是在“parameter.h”参数配置文件中,打开“HALL_PHASE_TEST”宏参,进行 HALL相序的自检功能,在此先介绍下 HALL 相序的作用,HALL 的相位角度差是 60°,即其可以输出六个角度点,类似按照正转 CW 的方式 HALL 值输出如 2-6-4-5-1-3。(注:可以先自行测试HALL 的相序顺序是否与程序中给的一致,可以通过手动让电机其转动一圈看看实际读到的 hall值,确认 hall 正转与反转的顺序,并将对应的 hall 相序进行核对,类似读出是 6-4-5-1-3-2,与上述设定顺序一致则无需修改,而若出现类似 6-4-1-5-2-3 这种与程序中的顺序不相符的,将该顺序填入 user_function.c 中的 u8CW_Hall_Value 与 u8CCW_Hall_Value 数组列表中,同时也需要对应填写下 CW_hall_table 与 CCW_hall_table 数组列表。u8CW_Hall_Value[6]:表示实际的霍尔序列,注意霍尔序列与角度序列的对应关系;CW_hall_table[8]:前一个位置的霍尔值序列,例如程序内 hall:1 的前一个位置是 hall:5,CW_hall_table[1] = 5,hall:2 的前一个位置是 hall:3,CW_hall_table[2] = 3以此类推:u8CW_Hall_Value[6]={ 1,3,2,6,4,5},对应 CW_hall_table[8]={ 0,5,3,1,6,4,2,0};u8CW_Hall_Value[6]={ 2,3,1,6,4,5},对应 CW_hall_table[8]={ 0,3,5,2,6,4,1,0})。

其次,实际 HALL 传感器的安装位置与电机对应的机器角度间是会有安装角度偏差的,即机器角度偏差角,此时 HALL 相序的自检功能就是为了计算出该偏差角,并把HALL 值对应的实际角度一一匹配上。如下图所示,开启“HALL_PHASE_TEST”宏参后进入调试模式,观察“stc_align_hall”该结构体的相关成员变量,配置函数“Align_HallCal_Phase_Init”与“Align_HallCal_Phase”实现,核心参数修改主要在于定位时间以及定位 Iq 电流的设定,以及偏移角度的设定(若检测角度异常可适当调节该值,常用推荐 0“0°”或者 5461“30°”的偏移角度)。如“stc_align_hall”中的“u8Dir”表示方向,
s16CW_arr_HallPhase_Cal 与 s16CCW_arr_HallPhase_Cal 是最终生成计算获取 HALL 相序角度表,需将其填入 user_function.c 中的“s16CW_arr_HallPhase”与“s16CCW_arr_HallPhase”数组列表中。

五、最后效果

APM32F035 有感FOC电机控制

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/301801.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Pytest自动化测试框架

1、pytest简介 pytest是Python的一种单元测试框架,与python自带的unittest测试框架类似,但是比unittest框架使用起来更简洁,效率更高。 执行测试过程中可以将某些测试跳过,或者对某些预期失败的case标记成失败能够支持简单的单元…

服务器网卡介绍

本篇文章对服务器网卡进行基础介绍,包括基本概念、网卡厂商及网卡绑定策略等。 1、基本概念 服务器网卡(Network Interface Card)是一种用于连接服务器与网络之间的硬件设备。它允许服务器通过网络与其他设备进行通信,包括传输数…

九州金榜孩子厌学原因及解决方法

厌学是根据不同类型孩子,表现也有差异,但是者都会对成绩产生很大的影响。那么作为家长,我们应该怎么面对不同类型孩子的厌学,又该怎么样去解决呢,我们要如何让孩子重拾学习的信心呢?下面,我们从…

如何查看崩溃日志

​ 目录 描述 思路 查看ipa包崩溃日志 简单查看手机崩溃信息几种方式 方式1:手机设置查看崩溃日志 方式2: Xocde工具 方式3: 第三方软件克魔助手 环境配置 实时日志 奔溃日志分析 方式四:控制台资源库 线上崩溃日志 线上监听crash的几种方式 方式1: 三…

SQLServer设置端口,并设置SQLServer和SQLServer Browser服务

SQLServer默认使用动态端口,即每次启动sqlserver.exe时,端口port都会动态变化。若要使用静态端口,比如port1433,则需要在SQL Server Configuration Manager(简称SSMS)里配置。这里以SQL Server 2005 Configuration Man…

计算机基础面试题 |16.精选计算机基础面试题

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

2024年【安全员-A证】及安全员-A证证考试

题库来源:安全生产模拟考试一点通公众号小程序 安全员-A证考前必练!安全生产模拟考试一点通每个月更新安全员-A证证考试题目及答案!多做几遍,其实通过安全员-A证复审模拟考试很简单。 1、【多选题】《建设工程安全生产管理条例》…

JavaScript版数据结构与算法(一)栈、队列、链表、集合、树

一、前言 为什么要学习数据结构与算法?最重要的就是面试要考算法,另外就是如果在实际工作当中,能够使用算法优化代码,会提升代码质量和运行效率,作为一名前端人员可能在实际中用的并不是特别多。数据结构与算法是分不…

在win10和Linux上配置SSH 无密码登录

文章目录 一、用途二、在本地机器上使用ssh-keygen产生公钥私钥对1)在Linux (或macOS) 上产生SSH公私钥的方法2)在win10上产生SSH公私钥的方法a)检查windows 本地是否安装有sshb)在本地生成SSH密钥对(公钥和私钥&#…

Java TBA访问NetSuite Restlet时的403错误

本周有同学问为啥Java访问NetSuite Restlet时,按照知识会之前的文章分享,会一直报403 INVALID_LOGIN_ATTEMPT错误。 https://nk-community.blog.csdn.net/article/details/131399801https://nk-community.blog.csdn.net/article/details/131399801原因是…

jenkins 参数化构建过程,jenkins下拉框选择要部署项目,jenkins部署java微服务项目,jenkins部署微服务

1. jenkins部署demo 优化点: 选择丢弃旧的构建,最大个数可以选择3或者5个,如果微服务,十个jar,占用很多空间,多来几次部署,硬盘满了 2. 选择参数构建,需要部署哪个项目 名称可以设置为你的项目…

CANFDLog-OTL 的UDS诊断和刷写功能应用简介

随着汽车电控系统比重增加和车辆下线自动化程度的提高,企业生产节拍逐渐加快,整车下线的稳定可靠越来越依靠下线诊断系统。 下线诊断流程如下: 1.程序刷写 对控制器进行程序刷写,支持S19/HEX/BIN等格式 2.防盗匹配 钥匙防盗匹配功能和智能钥匙…

vue-springboot基于java的实验室安全考试系统

本系统为用户而设计制作实验室安全考试系统,旨在实现实验室安全考试智能化、现代化管理。本实验室安全考试管理自动化系统的开发和研制的最终目的是将实验室安全考试的运作模式从手工记录数据转变为网络信息查询管理,从而为现代管理人员的使用提供更多的…

list-watch和节点亲和性和node亲和性

k8s的集群调度 scheduler:负责调度资源,把pod调度到node节点 预算策略 优先策略 1、list-watch k8s集群当中,通过list-watch的机制进行每个组件的协作,保持数据同步,每个组件之间解耦 kubectl配置文件,向APIserv…

Docker极限压缩tar镜像,20G变10G

🎈普通打包命令: docker save -o [压缩包名字] [镜像名字] 👑极限压缩命令: docker save [镜像名字] | gzip> [压缩包名字] 先上主题,放上两条命令,请随意取用。 对于动态修改的环境,一…

网络安全学习资源

好久没写博客了,记录一些宝藏学习资源,不定时更新 Regex Learn - Step by step, from zero to advanced. 这是一个我认为最好的正则表达式学习网站,很多正则表达式学习资料都只提供了一个概念,但是正则表达式需要大量的练习&#…

视频怎么做成活码?活码二维码制作的步骤

现在很多人会将自己拍摄的视频做成二维码图片之后分享给其他人,这样就可以通过一张二维码让其他人同时扫码获取视频内容,使用起来更加的方便,那么视频二维码制作的步骤是什么样的呢?下面就让小编来通过本文给大家分享一下二维码生…

个性化语音生成:五种基于Python的方法

引言 随着人工智能技术的不断发展,语音生成已经成为一个热门的研究领域。个性化语音生成技术可以根据用户的需求和特点,生成具有高度相似度的语音,广泛应用于语音助手、虚拟人物、语音合成等领域。本文将介绍五种基于Python的个性化语音生成…

欧盟GDPR 和车联网个人数据保护指南

1. 前言 本文主要讨论三部法律。分别如下: 1.1 GDPR 欧盟《一般数据保护条例》(General Data Protection Regulation,简称GDPR)在2018年5月25日生效。 在一些媒体的报道中,这一保护条例被称为“史上最严数据保护条…

速卖通店铺销量飙升:掌握自养号测评(补单),轻松提升销售量

很多卖家在经营速卖通店铺时,都希望能提高自己店铺的曝光率。但对于一些新手卖家来说,可能不太清楚曝光率的具体含义以及如何提升。那么,让我们一起来探讨一下这个问题。 曝光率,简而言之,是指您的店铺和产品展示给顾…