SimpleFOC(九)—— 霍尔电机控制


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

一、原理说明

1.1、霍尔电机

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

  • 通过霍尔传感器判断电机当前运动状态,控制器根据霍尔采集的信号控制三相输出,让电机持续正常的工作,
  • 霍尔传感器的优点是便宜,而且几乎可以安装在任何无刷直流电机上,
  • 缺点是,由于角度测量的量化相对较高,因此低速运行不够平滑,
  • 使用霍尔传感器的另一个原因是,在无法接近电机轴,或者无法将传感器安装到电机轴上的情况下,霍尔传感器安装在电机转子周围,这使得它们非常非侵入性且易于集成,
  • 最常见的应用就是电动自行车,
  • 霍尔电机是直流无刷电机中应用最多最广泛的一个分类。
    在这里插入图片描述

在这里插入图片描述

1.2、霍尔传感器

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.3、极对数

  • 电机每转过一对磁极,霍尔输出6个状态,如果电机是2对极,则一圈有12个状态;如果电机是6对极,则一圈有36个状态。
  • 一般来说,极对数多的电机,外观短粗,转速低扭矩大;极对数少的电机,外观细长,转速高扭矩小。
  • 在SimpleFOC中,一圈的机械角为2Pi,如果一圈有12个状态,则每次角度变化为Pi/6;如果一圈有36个状态,则每次角度变化为Pi/18。

1.4、霍尔信号的连接

  • 霍尔元件一般都是开漏输出,所以需要外接上拉电阻。V2.0.3的板子上有相应配置,需要短接背面的跳线,
    在这里插入图片描述
  • Arduino UNO的板子只有两个中断引脚,Hall的三根信号线不能全部接入,
    在这里插入图片描述
  • 为了兼容UNO的板子,创作者增加软件中断功能,需要头文件<PciManager.h>和<PciListenerImp.h>,编译的时候提示没有这个文件,
    在这里插入图片描述
  • 出现这个问题后,我决定放弃Arduino UNO,直接使用STM32核心板。
  • 如果使用STM32核心板,霍尔信号可以直接接在核心板上,需要配置IO为输入上拉模式

二、读取霍尔角度

2.1、硬件介绍

2.1.1、原理图

在这里插入图片描述
注意:霍尔三根线不分顺序,接在这三个IO口上就行,原理图上标注只是为了方便描述。

2.1.2、SimpleMotor方案

2.1.2.1、准备清单

序号名称数量
1SimpleMotor1
2霍尔电机1
3USB转串口1
412V电源1
5杜邦线若干

在这里插入图片描述

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

2.1.2.2、接线

SimpleMotor霍尔电机
PB6(SCL1)Hall_U
PB7(SDA1)Hall_V
PA12Hall_W
3V3VCC
GNDGND

在这里插入图片描述

2.1.3、STM32方案

2.1.3.1、准备清单

序号名称数量
1STM32核心板1
2霍尔电机1
3USB转串口1
45V电源1
5杜邦线若干

在这里插入图片描述

2.1.3.2、接线

STM32核心板霍尔电机
PB6Hall_U
PB7Hall_V
PA12Hall_W
3V3VCC
GNDGND

在这里插入图片描述

2.2、示例演示

2.2.1、打开示例

在这里插入图片描述

2.2.2、修改代码

在这里插入图片描述

2.2.3、编译上传

2.2.4、用手转动电机,看角度变化

  根据角度变化估算极对数。
在这里插入图片描述

三、速度闭环控制

3.1、硬件介绍

3.1.1、原理图

在这里插入图片描述
注意:霍尔三根线不分顺序,接在这三个IO口上就行,原理图上标注只是为了方便描述。

3.1.2、SimpleMotor方案

3.1.2.1、准备清单

序号名称数量
1SimpleMotor1
2直流无刷减速电机1
3USB转串口1
412V电源1

在这里插入图片描述

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

3.1.2.2、接线

SimpleMotor霍尔电机
PB6(SCL1)Hall_U
PB7(SDA1)Hall_V
PA12Hall_W
3V3VCC
GNDGND

在这里插入图片描述

3.1.3、STM32方案

3.1.3.1、准备清单

序号名称数量
1STM32核心板1
2SimpleFOCShield V2.0.31
3霍尔电机1
4USB转串口1
55V电源1
612V电源1
7杜邦线若干

在这里插入图片描述

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

STM32核心板霍尔电机
PB6Hall_U
PB7Hall_V
PA12Hall_W
3V3VCC
GNDGND
STM32核心板V2.0.3
PA05
PA19
PA26
PB98
GNDGND

在这里插入图片描述

3.2、示例演示

3.2.1、修改底层代码

  • 官方代码编译运行后,PWM的频率只有550Hz(72M/2/65536),需要直接修改底层代码,提高PWM频率为25KHz。
  • 不修改也可以,只是电机有啸叫声且工作电流偏大,不熟练的同学可以先跳过这一段。
  • 在“generic_mcu.cpp”修改这两个地方,路径:我的电脑\文档\Arduino\libraries\Simple_FOC\src\drivers\hardware_specific
    在这里插入图片描述
  pinMode(PA0, PWM);
  pinMode(PA1, PWM);
  pinMode(PA2, PWM);
  Timer2.pause();
  Timer2.setPrescaleFactor(8); // 72/8=9MHz
  Timer2.setCompare(TIMER_CH1, 0);
  Timer2.setCompare(TIMER_CH2, 0);
  Timer2.setCompare(TIMER_CH3, 0);
  Timer2.setOverflow(359);  //9M/360=25kHz
  Timer2.refresh();
  Timer2.resume();
  pwmWrite(pinA, 360.0*dc_a);
  pwmWrite(pinB, 360.0*dc_b);
  pwmWrite(pinC, 360.0*dc_c);

3.2.2、打开示例

  打开的是位置控制,在这个基础上修改为速度控制,
在这里插入图片描述

3.2.3、修改代码

在这里插入图片描述
在这里插入图片描述

  • 修改angle就是位置模式,记得顺便修改位置环PID,
  • 我觉得霍尔电机不适合做位置控制,只测试了一下就没再继续,
  • FOCModulationType底层代码中默认是SPWM,实际测试SPWM和SVPWM效果差别不明显,

3.2.4、编译上传

3.2.5、串口发送指令

  观察电机转动
在这里插入图片描述
在这里插入图片描述

四、方波控制

方波控制修改两个地方:

4.1、更改IO

  • 需要三个PWM信号和三个Enable信号,
  • SimpleFOCShield V2.0.3的三个Enable连在了一起,所以不能用于方波控制,
  • PowerShield V0.2的三个使能引脚独立引出,可以用于方波控制。
    在这里插入图片描述

4.2、更改PWM调制模式

  • FOCModulationType设置为Trapezoid_120或者Trapezoid_150,
    在这里插入图片描述

  • Trapezoid_120是六步换相法,

    • a—>b,
    • a—>c,
    • b—>c,
    • b—>a,
    • c—>a,
    • c—>b,
  • Trapezoid_150是12步换相法,换相时多了一个中间状态,

    • a—>b,
    • a—>b/c,
    • a—>c,
    • a/b—>c,
    • b—>c,

4.3、方波的控制效果

在这里插入图片描述

  • 上电零点校准是“咔咔”的跳着走,与SVPWM的不同,
  • 电机转动特别是速度快了以后,比如T20,与SVPWM的效果并没有不同,
  • 理论上用方波单片机的计算量减少,电机在最大转速范围内能达到的转速更高,但实际测试与SVPWM并没太大差别。

写后感

  • 6月份的时候调试过霍尔电机,没有转起来,以为是simpleFOC不支持,并且还在Q群里放过话。后来网友陆续调试出来了,赶紧再回去看看,确实可以控制,难度并不大,大概是经过这三个月对底层代码的学习,对SimpleFOC有了更深的认识和思考。
  • 但就这么点活还是干了一周,意兴阑珊,hall的官方示例有好几个,有兴趣的同学自己研究吧!

    (完)


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


请继续阅读相关文章:
SimpleFOC(一)—— 简介(附有文件下载链接)
SimpleFOC(二)—— 快速入门 (开环控制)
SimpleFOC(三)—— AS5600角度读取
SimpleFOC(四)—— 闭环控制
SimpleFOC(五)—— 双电机控制
SimpleFOC(六)—— PowerShield和AS5047P
SimpleFOC(七)——STM32(Bluepill)的应用
SimpleFOC(八)—— 理论+实践 深度分析SVPWM

霍尔电机使用FOC控制的流程如下: 1. 初始化:首先,需要对电机进行初始化设置。这包括设置电机参数,如电机类型、电阻、电感等。 2. 传感器检测:如果使用传感器融合技术,需要进行传感器检测。对于霍尔电机,需要检测霍尔传感器的工作状态和输出情况。 3. 转子位置估算:根据霍尔传感器的输出,可以推测转子位置。这可以通过分析霍尔传感器输出的相位信息来实现。转子位置的准确估算对于FOC控制至关重要。 4. 空间矢量调制:根据转子位置和期望的电机运行状态,计算所需的电流矢量。空间矢量调制是将期望的电流矢量转换为适当的PWM信号,以驱动电机。 5. 电流控制:将计算得到的电流矢量与实际电流进行比较,并通过控制器调节电机输入电流,以使实际电流接近期望值。这可以通过PI控制器或其他控制算法来实现。 6. 速度/位置控制:根据应用需求,可以进行速度或位置控制。这涉及计算期望的转子速度或位置,并调整电机输入电流以实现所需的运动。 7. 循环控制:以上步骤循环执行,以实现实时的FOC控制。通过持续的转子位置估算和电流控制,可以实现电机的稳定运行和精确控制。 总的来说,霍尔电机使用FOC控制需要进行转子位置估算、空间矢量调制、电流控制和速度/位置控制等步骤。这些步骤可以通过编程实现,以实现高效、高性能的电机控制
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值