SimpleFOC移植STM32(一)—— 简介

这篇具有很好参考价值的文章主要介绍了SimpleFOC移植STM32(一)—— 简介。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


SimpleFOC的教程比较多,做了一个总的链接,欢迎点击阅读:SimpleFOC教程链接汇总

本系列教程包含以下文章,欢迎阅读:
SimpleFOC移植STM32(二)—— 开环控制
SimpleFOC移植STM32(三)—— 角度读取
SimpleFOC移植STM32(四)—— 闭环控制
SimpleFOC移植STM32(五)—— 电流采样及其变换
SimpleFOC移植STM32(六)—— 双电机控制和力矩反馈

一、代码移植说明

  多年前第一次听说“开源”这个事儿的时候非常不理解,自己辛苦写的代码让别人随意下载研究多吃亏呀,后来见的多了,发现开源也有它自身的一套商业逻辑。但是无论如何开源促进了技术的进步,避免大家重复造轮子,所以这是一件好事!

  网上很多文章讲FOC都是以无感电机为例,讲一堆诸如观测器,磁链方程,滑模观测器,FAST观测器,反正切等等深奥的理论,导致大家觉得FOC非常难。实际对于有感电机来说,通过编码器直接读取角度θ,所有跟位置相关的算法全都不用,甚至电机的电感电阻这些参数也可以不用。创作者从有感电机入手,避开了无感电机复杂的算法,我觉得这个项目是学习FOC的最佳切入点。

  原版代码要兼容多平台,所以在结构上会有更多的抽象层,移植后的代码只针对STM32,所以一些不必要的中间层会被省略掉,这是结构上的优化,但在程序上尽可能的保留了原版风貌,只对严重影响性能和功能的部分代码做了优化,方便大家学习对比。本次只移植了磁编码器云台电机的对应代码,其它类型的电机(比如步进电机、hall电机和ABZ编码器)本次没有移植,请知悉!

  在上一个系列文章中,一直没有演示电流采集部分的功能,本次移植把这部分的功能也添加了上来。另外创作者的代码还在不断更新中,本次代码是在Simple FOC V2.1.1的基础上移植。20211222升级了代码,在simpleFOC V2.2.0基础上移植。

二、控制原理

2.1、有感FOC控制原理

  本次移植对应如下原理框图,其中核心函数的功能对应图中方框部分,输入的三个参数也在图中标记,setPhaseVoltage(float Uq, float Ud, float angle_el)。
SimpleFOC移植STM32(一)—— 简介

2.2、有感FOC(不带电流采样)控制原理

  去掉电流采样及变换公式,这样看起来是不是更加简单了。实际上这样做也可以控制电机,simpleFOC(一)——(八)系列就是对应下图原理,本系列的前几节也都围绕这个原理图来讲,请大家认真看图。
SimpleFOC移植STM32(一)—— 简介

2.3、FOC heart function

  原版代码包含了FOC的四种模式:Trapezoid_120、Trapezoid_150、SPWM和SVPWM,本次只移植了大家最关心的SVPWM部分。掌握核心函数的应用意义重大(你可以不了解算法,只要知道大概原理,会用即可),可以帮你快速理解整个程序。(原版代码路径:此电脑\文档\Arduino\libraries\Simple_FOC\src\BLDCMotor.cpp)
SimpleFOC移植STM32(一)—— 简介
  下图为移植后的代码,
SimpleFOC移植STM32(一)—— 简介

三、适配硬件

3.1、Bluepill

  本次移植的代码支持Bluepill,单电机控制和双电机控制,按照教程接线,编译后下载运行。
SimpleFOC移植STM32(一)—— 简介
SimpleFOC移植STM32(一)—— 简介

3.2、SimpleMotor

  为了减少跳线,让大家能够更专注于代码学习,本人开发了SimpleMotor驱动板,STM32F103C8T6单片机,支持大功率双电机驱动,兼容《SimpleFOC(七)——STM32(Bluepill)的应用》演示的大部分代码,本次移植的所有代码都将在这个驱动器上运行。
SimpleFOC移植STM32(一)—— 简介

驱动板103 购买链接:https://item.taobao.com/item.htm?ft=t&id=656368067494,图锐科技
电机 购买链接:https://item.taobao.com/item.htm?ft=t&id=643573104607,图锐科技

四、程序架构

  原版代码中几乎不用中断(必须赞叹下创作者高超的软件写作能力),我猜测是为了提高跨平台时的兼容性,本次移植只增加了一个中断,TIMER4的1ms中断(已有串口接收中断),通过中断累加计时,在主循环中控制LED指示灯或者打印需要的数据,主要为调试方便,20211222升级了代码,《SimpleFOC移植STM32(五)—— 电流采样及其变换》对应的代码已经取消了1ms中断,通过嘀嗒时钟累加计时

SimpleFOC移植STM32(一)—— 简介

五、演示功能

  总体与SimpleFOC(一)——(八)系列教程的示例一致,增加了电流采样和更多大电机的控制演示。
  1、SimpleFOC移植STM32(一)—— 简介
  2、SimpleFOC移植STM32(二)—— 开环控制
  3、SimpleFOC移植STM32(三)—— 角度读取
  4、SimpleFOC移植STM32(四)—— 闭环控制
  5、SimpleFOC移植STM32(五)—— 电流采样及其变换
  6、SimpleFOC移植STM32(六)—— 双电机控制

=============================================

六、2021.9.3更新

6.1、当前的问题

  一个月前写的这篇文章,当时代码已经移植完并测试了大部分功能,只剩电流采样和电流环的测试,原计划很快就可以调试完然后开始写教程,中间却出了问题,硬件设计和电流PID调参的问题混在一起,找到问题重新设计PCB,再测试就到现在了。

  硬件的问题主要是第一版PCB把电流运放芯片和模拟电路放到了一起,虽然电源是分开的但还是干扰明显,第二版中把运放和数字电路放到一起干扰问题解决了。(VESC就是把运放和模拟电路放到了一起,但是也很稳定,第一版PCB参考了它的设计但是却不行,我所说的这个问题只针对我这个PCB。)

  电流环PID的问题调试了几天没有解决,暂时不调了。电流采样的AD值总会有波动,如果PI参数过大,就会放大这个波动,如果PI参数过小,运行时达不到设定值,这挺矛盾的。网上有个说法FOC不一定非得电流环,也可以把电流检测作为电流限制,这个说法我暂时接受,而且实际测试使用电压方式也还行。这个问题等我以后找到更好的方法后再来解决,或者代码开源后有热心网友能解决那就更好了。20211222升级了代码,所有问题已经解决,升级内容在《SimpleFOC移植STM32(五)—— 电流采样及其变换》中有说明。

  电流环这个问题只针对SimpleMotor这样的大电流驱动,官方的V2.0.3最大电流只有5A,是不存在这个问题的,因为放大倍数小,AD值的微小波动转为电流值以后仍然很小,对系统稳定性几乎没有影响。
SimpleFOC移植STM32(一)—— 简介

6.2、驱动器性能

  有同学问到STM32F103C8T6控制两个电机并且还要跑浮点数,能跑的动吗?103C8跑浮点数确实很吃力。
  实际测试只带一个电机,
    I2C的编码器AS5600(硬件I2C,400KhZ),主循环,voltage模式1885Hz,foc_current模式1110Hz。
    SPI的编码器TLE5012B(硬件SPI2,9MhZ),主循环,voltage模式3180Hz,dc_current模式1990Hz,foc_current模式1460Hz。
  如果是双电机,估计还要一半。这和主流的10kHz的速度差太远了。
  提升速度的方式有两种,一个是用带浮点运算的单片机,比如STM32F407,方法简单,但是由此会导致成本的上升,另一个办法是把浮点数转换为定点数来运算,效率也会成倍提升,但是归一化后的代码会非常难以理解,不利于代码的学习。所以这是一个取舍,创作者既然把它命名为SimpleFOC,还要让代码运行在MEGA328这样的芯片上,我觉得包含了把它定位为入门学习的这样一个目的。
SimpleFOC移植STM32(一)—— 简介

6.3、电源选择

  1、锂电池最好,电机减速时会进入发电模式,发电的电压高低跟电机的功率和转速有关,电池可以吸收发电,保证母线电压不会超过电池电压,
SimpleFOC移植STM32(一)—— 简介

  2、可调电源,本质上是开关电源,增加了电压和电流显示,操作起来更直观,
SimpleFOC移植STM32(一)—— 简介

  3、适配器,属于小功率开关电源,小功率电机可以用用,
SimpleFOC移植STM32(一)—— 简介

  4、大功率开关电源,
SimpleFOC移植STM32(一)—— 简介

6.4、sublime

  代码查看我用的是这个软件,如果你有自己习惯的编辑器也可以,
官网下载:https://www.sublimetext.com/。可以免费也可以付费,免费的每次打开软件都提示付费,不用管就行。可以单独打开C文件查看代码,也可以把整个文件夹拖入,查找关键字非常方便,具体用法可以百度。
SimpleFOC移植STM32(一)—— 简介


(完)


keil工程:点亮LED
链接:https://pan.baidu.com/s/11ye8sKlJjhnTJRZB_9tHTA
提取码:c9nu


欢迎加入simpleFOC技术交流群:923734429 群已满根据提示添加新群 (入群申请写:CSDN)


请继续阅读相关文章:
SimpleFOC移植STM32(一)—— 简介
SimpleFOC移植STM32(二)—— 开环控制
SimpleFOC移植STM32(三)—— 角度读取
SimpleFOC移植STM32(四)—— 闭环控制
SimpleFOC移植STM32(五)—— 电流采样及其变换
SimpleFOC移植STM32(六)—— 双电机控制和力矩反馈文章来源地址https://www.toymoban.com/news/detail-423009.html

到了这里,关于SimpleFOC移植STM32(一)—— 简介的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32移植LVGL8.0.2超详细的保姆级教程附移植好的工程文件

    网上教程那么多,为什么你要写这个教程? 问的好,csnd上很多类似的教程,他们写的都很好,但是有些过于简洁,对刚上手的小伙伴不太友好,移植到一半遇到bug就想放弃。一些第三方的教程很详细,但是由于lvgl的版本迭代很快,移植的过程有了一些变化,所谓失之毫厘差

    2024年02月03日
    浏览(42)
  • STM32平台下官方DMP库6.12超详细移植教程

    Motion Driver官方库:Motion_Driver_6.12 STM32工程源码:STM32F103C8-软件MPU6050(DMP) MPU6050软件I2C驱动,带OLED显示,移植了匿名地面站,可显示姿态信息(匿名地面站通信协议6.0版本,本人使用测试的匿名地面站版本V6.56版本) —————————————————————————

    2024年02月15日
    浏览(36)
  • 全网最简单的stm32f103c8t6移植ucosiii教程(附移植好的工程)

       最近在做一个机器人项目,需要使用到stm32f103c8t6核心板。考虑程序中的多任务特性,因此决定使用ucosiii用于多任务管理。ucosiii移植可能对于一些嵌入式老鸟来说,可能是信手拈来,但是对于很多新手特别是刚入门的小白来说还是有一定的难度的。尤其是全网的移植教程

    2024年02月16日
    浏览(39)
  • 【uC/OS-III篇】uC/OS-III 移植到 STM32 简明教程

    一、uC/OS-III 介绍 二、获取UCOS-III源码 三、建立项目工程 四、解决工程编译报错 五、修改项目文件 下一篇博客: 【uC/OS-III篇】uC/OS-III 创建第一个任务(For STM32) 移植后的工程自取方式: 移植好的Keil工程 一、uC/OS-III 介绍 uC/OS-III 是 MicroC/OS-III 的一种版本,是由 Micrium 公司

    2024年04月13日
    浏览(33)
  • U8g2库的STM32硬件SPI(DMA)移植教程(HAL、OLED显示、四线SPI、DMA)

    本文教你把U8g2图形库移植到STM32上,基于STM32的硬件SPI、CubeMX U8g2库Github网址:https://github.com/olikraus/u8g2 U8g2库CSDN镜像网址:https://gitcode.net/mirrors/olikraus/u8g2?utm_source=csdn_github_accelerator 硬件准备:STM32C8T6(STM32系列芯片)、0.96寸OLED(128×64)、J-Link(或其他) 引脚连接: 出自此

    2024年02月09日
    浏览(47)
  • 【FOC控制】英飞凌TC264无刷驱动方案simplefoc移植(3)-FOC控制原理矢量控制

    无刷电机是矢量控制,是交流电机调速的核心,也是Foc控制的核心 以下内容学习自【自制FOC驱动器】深入浅出讲解FOC算法与SVPWM技术 以电流闭环控制为例,也就是让电机始终产生一个恒定的力矩(也就是恒定的电流,因为力矩和电流成正比) 可以看到控制器的输入是最左边

    2024年02月02日
    浏览(74)
  • STM32入门教程课程简介(B站江科大自化协学习记录)

    STM32最小系统板+面包板硬件平台 STM32面包板入门套件 Windows电脑 万用表、示波器、镊子、剪刀等 Keil MDK 5.24.1 是一款嵌入式软件开发工具,它提供了一个完整的开发环境,包括编译器、调试器和仿真器。它支持各种微控制器,包括 ARM、Cortex-M、Cortex-R 和 8051 等。Keil MDK 是一款

    2023年04月08日
    浏览(65)
  • 【STM32】STM32 移植鸿蒙操作系统

    随着 OpenHarmony3.1 的正式发布,其功能也在不断完善。OpenHarmony LiteOS-M 内核是面向IoT领域构建的轻量级物联网操作系统内核,具有小体积、低功耗、高性能的特点,其代码结构简单,主要包括内核最小功能集、内核抽象层、可选组件以及工程目录等,分为硬件相关层以及硬件无

    2024年02月09日
    浏览(53)
  • 移植STM32官方加密库STM32Cryptographic

    感谢这位博主,文章具有很高的参考价值: STM32F1做RSA,AES数据加解密,MD5信息摘要处理_我以为我爱了的博客-CSDN博客 ST官方在很多年前就推出了自己的加密库,配合ST芯片用起来非常方便,支持ST的所有MCU,官方已经给出了例程,移植起来非常简单方便,其他厂家Cotex-M内核芯

    2024年02月09日
    浏览(38)
  • 【GD32/STM32】FreeRtos移植

    ​ (1)下载FreeRtos源码包 ​ FreeRTOS - Market leading RTOS (Real Time Operating System) for embedded systems with Internet of Things extensions ​ (2)将源文件添加至工程 ​ (3)将GD32中的三个中断交由FreeRtos接管 ​ (4)配置管理FreeRTOS.h文件 ​ (5)FreeRtos基本使用方法 源码包结构 1.Demo中存放的

    2024年01月20日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包