简介主控板G431RB主控板Nucleo-G431RB的核心是STM32G431RBT6,170MHz的主频、Cortex-M4内核,内置了硬件加速单元、运算放大器等等外设,在处理涉及大量三角函数运算的实时控制算法时,能显著减轻MCU的负担。板子和其他Nucleo系列一样,自带ST-LINK V3,调试非常方便;排针是按STM32 Morpho和 Arduino Uno 两种引脚布局设计的,方便设计通用扩展板。板载复位按键(黑色)和USER按键(蓝色),Workbench生成的代码中,电机启停就是通过USER按键控制的。
驱动板IHM16M1驱动板X-Nucleo-IHM16M1是为STSPIN830电机驱动芯片设计的评估工具,这颗芯片支持7V~45V的宽电压输入,最大输出电流能力为1.5ARMS。本次使用的是灯哥DengFOC配套的12V、100kV、额定功率6W的小型云台电机做测试,可以用这块板子安全驱动。
板子内部集成了三路采样电阻和电流采样运放、电位器、热敏电阻等等,对于电流监测、过流、过热保护、调速等应用适配度高,同时,板子也预留了霍尔传感器的接口,可以外接霍尔传感器,适合用于FOC或者其他无刷电机驱动算法的学习。
堆叠后的开发套件如下图所示:
实验用电机的部分参数: MCSDK的安装与使用官网有提供免费使用的开发软件套件:X-CUBE_MCSDK安装包 登录MyST之后,下载所需要的软件版本。
下载完成后可以得到一个压缩包,安装步骤全程无坑,一直下一步就好了。因为我已经安装过一遍了,写测评文章的时候没有出现安装路径选择,这一步填写自己需要的安装路径即可。更具体的安装过程可以参考这篇文章:安装X-CUBE_MCSDK
安装后可以得到这两个软件: 其中Workbench是MCSDK配置和生成代码的主要工具,支持选择官方提供的开发板和电机,或者新建自己的开发板和电机;而Motor Pilot是MCSDK的上位机,连接串口后可以在软件内调节电机速度、调节电流速度曲线、修改PID参数、查看并记录各种数据的曲线等等功能,十分实用。
1.使用Workbench配置软硬件参数首先打开MotorControl Workbench软件,软件界面如下图所示。可以通过右上角切换中英文,软件每次打开都默认使用英文。点击左上角的New Project 新建新项目。 点击中间的Board选择开发板套件(如果有配套电机,也可以直接选择左边的PACK选择IHM03完整的开发套件),分别查找得到IHM16M1和G431两块板子,选中并点击OK。 NUCLEO-G431RB开发板 添加完主控板和驱动板之后的界面应如下图所示: 接下来添加电机:如果有跟驱动电机的参数相近的,可以直接选中,如果没有的话,可以复制一份,修改名称和参数。因为列表中没有和我这个电机参数相近的电机,所以我复制了BR2208电机并重命名为Deng2208。 按照实际测试的数据填入参数,填错不要紧,后面生成工程的时候可以修改。 填写完成后,点击Go To Summary到下一步总结页面: 这一页主要是选择驱动算法使用FOC还是六步,同时检查配置是否完善。确认无误之后点击Create创建工程。 创建后不会自动帮你保存到本地的,需要先点一下保存,防止意外发生。如果电机参数没有问题的话,这部分的配置不需要太多修改,只需要检查一下引脚配置是否无误即可。
引脚映射如下图所示。
可能需要修改的地方:
启停按钮和通信接口的修改在User Interface中修改,默认使用PC13作为用户按钮,USART2,1843200波特率作为通信的USART接口,通过ST-Link的虚拟串口与上位机连接。
如果需要修改电机参数,则在最顶部的Motor页修改。
MC Workbench会根据填入的电机参数,自动计算好电流环和速度环等等的PI(D)参数值,不需要手动调参。
值得注意的是,无感FOC速度环采用观测器,在低速下可能会因为无法准确估计转子位置失效,如果电机已安装霍尔传感器或正交编码器,建议启用有感模式以提升精度,电机配置中也有适配这两种编码器的选项。 2.生成代码和下载保存一下,并点击Generate the Project生成工程文件夹和代码,工具链可以按照个人选择CubeIDE、Keil等等开发环境,界面设计还是很简明易懂的。
代码生成后需要打开工程文件去编译下载;并且每次重新修改参数和生成代码都需要很长时间,这一点不是很方便。如果能像TouchGFX那样集成自动烧录,并且生成代码时只替换修改的部分参数,效率会更高一些。
MC Workbench生成工程的文件结构和CubeMX生成的是高度相似的,我用的是CubeIDE v2.0.0,找到项目文件的路径如下图所示,与.stwb6文件同名文件夹->STM32CubeIDE->.cproject文件,即可打开CubeIDE的项目文件。 将G431开发板的USB口连接到电脑,编译并下载。一些IDE如果没有ST-Link驱动的话可能下载不了:STSW-LINK009
Motor Pilot上位机打开Motor Pilot软件,选择Discover Board就可以进入电机控制软件界面。上位机和MCU之间采用的是UART通信,默认1843200波特率,以Workbench里设置的值为准。选择后会自动连接开发板串口,如果没连接上可以在上方选择对应串口并连接。
连接后的界面如下图所示: 此时可以按下开发板上的蓝色用户按钮启动电机,或者点击上位机左侧的Start启动电机。启动后滑动Speed Reference的滑块或者填写目标速度和时间,点击Execute Speed Ramp,可以改变电机速度。 点击Rev-up可以切换到电机启动的加速曲线界面,曲线和Workbench中设置的是一致的,不同点是这里修改之后不会永久保存在MCU的程序中,重启软件或者开发板就丢失了。 点击Advanced Configuration可以调整算法参数。 点击右上角左边的曲线图标,可以实时观测多个量的变化曲线,多次右键可以在同一坐标系中加入多条曲线,比如电流、电压、编码器速度等等。右上角右边的圆圈图标是Record记录功能,加入观测的变量之后会变成红色,点击就可以记录曲线了。 如果电机出现运行错误自动停下(如果是启动过程停下,通常是PI参数或者速度环观测器里面的G1/G2设置有问题,或者最开始的反电势常数填的有问题;如果是运行过程停下,可能就是速度太小,速度反馈误差太大报错),STatus会显示具体错误原因,点击高亮的问题可以跳转到帮助文档了解怎么解决。要让它重新运行需要点击Ack Fault响应错误,否则直接点启动是没有作用的。如果确定原本的参数有问题,可以在Pilot里面修改具体参数,多次试错;最佳参数需要搬到Workbench的设置里重新生成代码,因为Pilot和开发板重启后都会恢复默认值。 如果电机运行中出现错误并自动停机,Status会显示具体故障原因,目前遇到过的有下面两种情况:若在启动阶段停机,通常是因为电机设置的反电动势常数、转动惯量等等不准确,导致自动计算的PI参数、观测器中的G1/G2增益有问题;若在运行过程中停机,则可能是转速过低,速度反馈误差过大而触发保护,可以调整容错阈值解决。点击蓝色高亮的错误信息可跳转至帮助文档查看解决方案。要重新启动电机,必须先点击 “Ack Fault” 确认并清除故障状态,再点击启动,直接点Start或者按用户按钮是无效的。
点击蓝色高亮错误后跳转到解决文档(原文是英文,这里开了翻译插件): 若确认错误是参数问题,或者运行效果不太满意,可在Pilot中临时修改并多次试错,注意Pilot的修改在开发板或软件重启后会恢复默认值。确定最佳参数后,最好将其填入Workbench的配置中并重新生成代码。 视频演示这边好像放不了,上传的GIF比较模糊
总结总的来说,这套组合在中小功率的电机控制开发上提供了一个非常成熟的起点。硬件可靠,软件生态也给力,无论是做算法验证还是产品原型开发,都能少走很多弯路。尤其是对于不想把时间耗在搭驱动电路的开发者,这套开发套件性价比很高。 |
微信公众号
手机版