SimpleFOC移植STM32(八)—— 霍尔电机

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



SimpleFOC、ODrive和VESC 教程链接汇总:请点击

说明

SimpleFOC(九)—— 霍尔电机控制
SimpleFOC之ESP32(七)—— 霍尔电机

之前写过这两篇教程,测试中都表现出了极大的不稳定性,所以霍尔电机部分的代码我一直没有移植,
本次移植后的代码测试稳定性还可以,迄今没有发现问题。

而之前表现的各种不稳定,我总结了下有两种可能:
1、引脚中断需要避开相同中断源,比如STM32的PA11和PB11,都是同一个中断源EXTI_Line11,在霍尔信号的中断代码中是无法区分的。这个问题在移植keil的时候很容易就能发现,但是在官方的SimpleFOC代码中,稍不注意就出错了。
2、arduino环境下的中断不太好用,特别是跨平台的兼容性可能还不够好。

ODrive的操作演示——控制AS5047P、霍尔电机和轮毂电机
当然simpleFOC主打的就是simple,所以电机实际效果和ODrive 的驱动效果相比有一定差距,仅仅适合入门。

需要说明:霍尔电机主要用于做轮子,不适合做高精度控制,虽然FOC可以实现任意角度的控制,但是霍尔信号的分辨率太低,盲区太大。

一、霍尔电机

霍尔电机就是带有霍尔传感器的直流无刷电机。

1.1、电机的种类

因为霍尔传感器的成本低,体积小可以安装在电机内部,所以应用非常广泛,种类非常丰富。

SimpleFOC移植STM32(八)—— 霍尔电机
SimpleFOC移植STM32(八)—— 霍尔电机

1.2、霍尔传感器

SimpleFOC移植STM32(八)—— 霍尔电机

SimpleFOC移植STM32(八)—— 霍尔电机

SimpleFOC移植STM32(八)—— 霍尔电机

  • 常见的霍尔信号是120度和60度安装方式,SimpleFOC只处理120度的霍尔信号。(60度的只需把其中一相的信号取反,就可以得到和120度一样的状态值,这是我花了几百块钱在峰岹科技的代码中看到的处理方式)。据说还有45度的电机,我没有遇到过,本节不做讨论。 120度和60度的更多说明请看这篇文章: 电动机的霍尔信号
  • 霍尔传感器的电源一般标注为5V,实际3.3V也可以,大概是现在的霍尔芯片电压兼容性更好了。
  • 理论上霍尔信号输出为开漏,所以信号的电压是由上拉电阻决定的,即使霍尔信号电源接5V,输出信号也是3.3V。
  • 但实际的情况是有的电机用5V电源,信号的电压为3.7V,说明信号输出不是简单的开漏,有一定的驱动能力,所以最好接3.3V电源。
  • 有些电机必须用5V电源,3.3V的电源没有信号输出,都是看起来比较老旧的电机,大概早期的霍尔元件电压兼容性不够。
  • 本次移植本人测试了以下电机
    SimpleFOC移植STM32(八)—— 霍尔电机

SimpleFOC移植STM32(八)—— 霍尔电机
驱动板103 购买链接:https://item.taobao.com/item.htm?ft=t&id=656368067494,图锐科技

1.3、SimpleFOC的霍尔电机控制原理

  • 驱动板103和驱动板405 都使用中断方式处理霍尔信号。霍尔信号发生边沿跳变时进入中断,在中断中读取霍尔状态,判断当前角度。

  • 下面用一个图片说明simpleFOC的驱动原理。
    SimpleFOC移植STM32(八)—— 霍尔电机
    假如霍尔电机是2对极,那么cpr=12,示意图刚好相当于一个钟表,假如当前电机的电角度在12点,q轴如上图,电机的转矩将一直保持这个状态,直到触发到下一个霍尔跳变,代码检测到新的角度,产生新的矢量q1并持续到下一个状态,所以simpleFOC对霍尔电机的控制效果等同于六步换相法。而在ODrive中使用了角度插值的方法,所以q轴会跟随电机的转动而变化,电机更加平稳。

  • 当然SimpleFOC提供了一个最简单的控制方法,保证电机能够转起来,你不要一看它的控制效果不好扭头就走,你知道了原理下一步就可以把ODrive的角度插值法移植过来,电机就可以实现ODrive的效果,是不是很简单。

  • 本次移植没有再像之前那样,把所有编码器放到一起通过 myprojcet.h 设置来选择。而是把霍尔电机的代码单列出来,这样代码看起来更简洁一点。

二、电机驱动板103

霍尔信号为开漏输出,所以需要上拉电阻,代码中对应的引脚已经配置为打开内部上拉,外部如果有上拉电阻也尽量使用,驱动板103默认接10K上拉电阻。

SimpleFOC移植STM32(八)—— 霍尔电机

SimpleFOC移植STM32(八)—— 霍尔电机

2.1、读取霍尔角度

读取霍尔角度目的是为了确认电机的极对数,以便在稍后代码中可以准确的控制电机。如果你已经知道了电机的极对数,也可以跳过本小节。

2.1.1、接线
只需接霍尔信号线,SCL1(PB6)、SDA1(PB7)、PA12和3.3V电源,三个信号随便接,不用区分顺序。下图:
SimpleFOC移植STM32(八)—— 霍尔电机

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

2.1.2、修改代码

修改极对数,如果极对数正确,那么电机转动一圈,角度变化刚好是6.28;如果不正确,比如电机实际极对数为4,代码中写的是2,那么电机转动一圈,角度变化为12.57。同理,如果是3对极,角度变化为9.42,如果是5对极,角度变化为15.71。

SimpleFOC移植STM32(八)—— 霍尔电机


2.1.3、串口查看角度变化

下载完代码后,用手拧动电机转动,刚开始的几个角度值不准确,我估计是没有赋初值,不想再折腾代码了,大家将就着用吧。所以需要先来回转动半圈,然后转动电机让角度归零,观察电机转一圈角度的变化。转动的结果应该是3.1415926的整倍数,如果不是说明手动转的有误差,不是刚好一圈,请自行估算就近极对数。

SimpleFOC移植STM32(八)—— 霍尔电机

2.2、驱动霍尔电机M1

2.2.1、接线
SimpleFOC移植STM32(八)—— 霍尔电机

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

2.2.2、修改代码

  • 极对数按照实际写入,
  • voltage_sensor_align是电机零点校准时的电压值,需要根据电机功率设置,100W以内的电机基本属于小功率,可以设置的大一点,200W以上的属于大功率,设置的小一点。
  • 如果不清楚电机功率,可以多试几个值,电源有电流显示的话观察下零点校准时的电流,只要在0.2A — 0.8A这个范围内就行,电流太小电机无力,校准可能不准确,电流太大电机会发热,容易损坏电机。
  • 初次调试请选择 Type_voltage 模式,因为可以跳过电流环,电流环的PI参数非常难设置。
  • 速度环的PI请自行设置,不清楚可以先把速度I参数设置为0,只用速度P参数,先让电机转起来再说。不同电机的PI参数不相同,具体请百度。

SimpleFOC移植STM32(八)—— 霍尔电机

2.2.3、下载代码,观察电机运行

SimpleFOC移植STM32(八)—— 霍尔电机

发送指令T6.28,电机以每秒一圈的速度转动,霍尔信号的分辨率低,对于一些电机来说齿槽效应更明显,可以调高速度试试。

2.3、驱动霍尔电机M2

  • SCL2(PB10)、SDA2(PB11)和SWD(PA13)接hall信号,三个信号随便接,不用区分。
  • 其实最初的设计是打算接PA11引脚的,但是调试代码的时候发现PB11和PA11是同一个中断源EXTI_Line11,并且在中断代码中无法区分,所以用SWD(PA13)来代替。
  • SWD(PA13)并没有设计外部上拉电阻,反复测试后确定只要代码中打开了内部上拉也可以的。
  • 只是占用SWD后不能再用ST-link下载代码了,请大家使用串口下载。
  • 串口下载的方法在 SimpleFOC移植STM32(二)—— 开环控制 的第3.2小节有说明,不清楚的可以去查看。

SimpleFOC移植STM32(八)—— 霍尔电机
驱动板103 购买链接:https://item.taobao.com/item.htm?ft=t&id=656368067494,图锐科技
本小节的其它操作与M1的操作一样,请参考上面的2.2小节。

2.4、驱动双霍尔电机

SimpleFOC移植STM32(八)—— 霍尔电机

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

请结合上面的2.2和2.3小节操作。
需要注意的是,控制M1的电机发送指令以 A开头,比如 A6.28;控制M2的电机发送指令以 B开头,比如 B6.28。

三、电机驱动板405

霍尔信号为开漏输出,所以需要上拉电阻,代码中对应的引脚已经配置为打开内部上拉,同时驱动板405 的ABZ引脚接有3.3K上拉电阻。霍尔信号和下一篇的ABZ信号都接在ABZ引脚上。
SimpleFOC移植STM32(八)—— 霍尔电机

SimpleFOC移植STM32(八)—— 霍尔电机

3.1、读取霍尔角度

读取霍尔角度目的是为了确认电机的极对数,以便在稍后代码中可以准确的控制电机。如果你已经知道了电机的极对数,也可以跳过本小节。

3.1.1、接线
只需接霍尔信号线,M0的ABZ三个引脚和3.3V电源,三个信号随便接,不用区分顺序。下图:
SimpleFOC移植STM32(八)—— 霍尔电机
驱动板405 购买链接:https://item.taobao.com/item.htm?ft=t&id=656368067494,图锐科技


下载代码,手拧电机,观察串口打印的角度变化,具体看上面2.1小节吧,不想重复写了。

3.2、驱动霍尔电机M0

3.2.1、接线
SimpleFOC移植STM32(八)—— 霍尔电机

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

3.2.2、修改代码

  • 极对数按照实际写入,
  • voltage_sensor_align是电机零点校准时的电压值,需要根据电机功率设置,100W以内的电机基本属于小功率,可以设置的大一点,200W以上的属于大功率,设置的小一点。
  • 如果不清楚电机功率,可以多试几个值,电源有电流显示的话观察下零点校准时的电流,只要在0.2A — 0.8A这个范围内就行,电流太小电机无力,校准可能不准确,电流太大电机会发热,容易损坏电机。
  • 初次调试请选择 Type_voltage 模式,因为可以跳过电流环,电流环的PI参数非常难设置。
  • 速度环的PI请自行设置,不清楚可以先把速度I参数设置为0,只用速度P参数,先让电机转起来再说。不同电机的PI参数不相同,具体请百度。

SimpleFOC移植STM32(八)—— 霍尔电机

3.2.3、下载代码,观察电机运行

SimpleFOC移植STM32(八)—— 霍尔电机


发送指令T6.28,电机以每秒1圈的速度转动,发送指令T31.4,电机以每秒5圈的速度转动。
串口通信使用USART2的DMA方式接收,空闲中断,所以指令后面可以不用“回车”,当然你输入了也没有错。

3.3、驱动霍尔电机M1

霍尔信号接在M1对应的ABZ排针上,其它操作与上面的M0相同。

SimpleFOC移植STM32(八)—— 霍尔电机
驱动板405 购买链接:https://item.taobao.com/item.htm?ft=t&id=656368067494,图锐科技

3.4、驱动双霍尔电机

请结合上面的3.2和3.3小节操作。
需要注意的是,控制M0的电机发送指令以 A开头,比如 A31.4;控制M1的电机发送指令以 B开头,比如 B31.4。
SimpleFOC移植STM32(八)—— 霍尔电机

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

四、总结

SimpleFOC移植STM32(八)—— 霍尔电机

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


驱动小电机时感觉还算平稳,大电机振动就比较明显了,再把代码烧写为ODrive,效果立马提升。

SimpleFOC移植STM32(八)—— 霍尔电机


SimpleFOC解决了有无问题,但想要更好的性能表现,还得从ODrive中找方法。


(完)

文章来源地址https://www.toymoban.com/news/detail-466869.html

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

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

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

相关文章

  • SimpleFOC、ODrive和VESC 教程链接汇总

          教程按照发布顺序排列,最新教程请向下翻看   SimpleFOC(一)—— 简介(附有文件下载链接) SimpleFOC(二)—— 快速入门 (开环控制) SimpleFOC(三)—— AS5600角度读取 SimpleFOC(四)—— 闭环控制 SimpleFOC(五)—— 双电机控制 SimpleFOC(六)—— PowerShield和AS

    2023年04月22日
    浏览(82)
  • Makerbase SimpleFOC ESP32例程4 双电机闭环速度测试

    1.1 硬件清单 序号 品名 数量 1 ESP32 FOC V1.0 主板 1 2 YT2804电机 2 3 12V电源适配器 1 4 USB 线 1 5 6pin杜邦线 2 注意:YT2804是改装的云台无刷电机,带有AS5600编码器,可实现360°连续运转。 主要参数如下: 序号 品名 数量 1 输入电压 12V 2 极对数 7 3 工作电流 180mA 4 最大转速 3840RPM 5 编码

    2024年02月08日
    浏览(40)
  • Makerbase SimpleFOC ESP32 例程10 步进电机开环速度测试

    1.1 硬件清单 序号 品名 数量 1 ESP32 FOC V1.0 主板 1 2 35HB27-401A步进电机 1 3 12V电源适配器 1 4 USB 线 1 注意: 35HB27-401A是两相1.8°步进电机,对应极对数为50。   硬件清单如下图所示: ESP32 FOC V1.0主板说明书等更多资料请加入企鹅群(732557609)下载 1.2 硬件连接 1.步进电机的四根驱

    2024年02月11日
    浏览(50)
  • 【32单片机学习】(3)霍尔编码器减速直流电机控制及测速

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 1.实验现象 2.实验接线及原理图 接线图 原理图  电机接线图 3.代码部分 1.主函数  main.c 2.按键部分   key.c  key.h pwm代码   pwm.c  pwm.h 电机驱动   motor.c   motor.h  OLED显示 oled.c oled.h  编码器

    2024年02月11日
    浏览(54)
  • Odrive STM32F405配置说明

    通过Odrive V3.6版本电路板来编写自己电机驱动软件,以下是MCU部分的Cubemax配置。 此工程只配置M0(单轴)。 其他为默认配置 外部晶振配置 8MHz ,系统时钟PLL倍频到 168MHz 。 时基源选择:TIM14 滴答定时器用于FreeRTOS (STM32中断,及FreeRTOS中断优先级配置:https://blog.csdn.net/ybhuangfugu

    2024年02月05日
    浏览(49)
  • 电动车电机霍尔转换角

    电动车霍尔的意思是霍尔效应,霍尔效应是磁场中的传感器,其中有一种使用半导体制成的霍尔元件,对磁场非常敏感,结构和体积较为简单,因为它输出的电压伏值范围较广阔,使用的年限比较长,所以它在自动化市场需求涉及的方面非常广,总体来说这是一个名字叫做霍

    2024年02月12日
    浏览(53)
  • 霍尔编码器电机与TB6612电机驱动相关学习

    简单粗暴的说下,电机-电机驱动-单片机该怎么连线。 先简单认识一下霍尔编码器电机 以上选用的平衡小车之家的,市面上基本都跟这个差不了多少。 电机线-+这两个引脚 与电机驱动相连接 来控制电机的正反转(自己的浅显理解)  编码器的AB相 连接单片机(定时器)  编

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

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

    2024年02月02日
    浏览(74)
  • 基于STM32的实时操作系统FreeRTOS移植教程(手动移植)_stm32移植freertos(1)

    直接意识代码: 这是我们大脑最希望的添加代码方式,很显然他是 错的 , 两个任务之间产生了相互的影响 ,使得两个任务都执行错误,这种思想在 裸机开发 中肯定是 错的 ,但是在我们的 RTOS 中他就可以是 对的 。 任务型代码: 这是 独立的两个任务内容 ,我们只需要把

    2024年04月10日
    浏览(105)
  • 【STM32】STM32 移植鸿蒙操作系统

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

    2024年02月09日
    浏览(53)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包