【FOC控制】英飞凌TC264无刷驱动方案simplefoc移植(6)- foc速度闭环控制

simpleFOC控制无刷电机理论及实践 1. 阅读详情
AI摘要

本文详细介绍了基于英飞凌TC264的三相无刷电机FOC(磁场定向控制)的移植过程,包括电机选择、电机参数初始化、FOC初始化、PID控制、主函数调用和速度闭环控制。通过电机的选择、零点偏移量和极对数检测,实现了电机稳定低速转动。同时,文章讨论了PID控制器的设置,以及如何在速度模式下进行闭环控制,确保电机的精确运行。最终,通过主函数调用move()和loopFOC()函数,实现了电机的动态控制。

【FOC控制】英飞凌TC264无刷驱动方案simplefoc移植(6)- foc速度闭环控制

一、电机选择

FOC可以实现电机在低速的时候,可以稳定的转动,为了适应编码器,我这里选择一款全新的三相无刷电机,云台电机,型号2804 ,无限位,可以360度连续运转,不带驱动板,运转时低功耗,DC24V时电流才60MA,转速是5050转,扭力还挺好的,静音,低功耗,适合长时间运转。

在这里插入图片描述极对数是7

在这里插入图片描述

二、电机参数初始化

首先设置必要的参数,供电电压12v,电压模式,速度模式

    voltage_power_supply=12;   //V
    voltage_limit=6;           //V,最大值需小于12/1.732=6.9
    velocity_limit=20;         //rad/s angleOpenloop() and PID_angle() use it
    voltage_sensor_align=1;    //V     alignSensor() and driverAlign() use it,大功率电机0.5-1,小功率电机2-3
    torque_controller=Type_voltage;  //当前只有电压模式
    controller=Type_velocity;  //Type_angle; //Type_torque;    //
    target=1;

电机初始化函数,配置电机极对数,我选用的电机极对数7,电机旋转的方向为不确定。

/******************************************************************************/
void Motor_init(void)
{
   
   
	printf("MOT: Init\r\n");
	
//	new_voltage_limit = current_limit * phase_resistance;
//	voltage_limit = new_voltage_limit < voltage_limit ? new_voltage_limit : voltage_limit;
	if(voltage_sensor_align > voltage_limit) voltage_sensor_align = voltage_limit;
	
	pole_pairs=7;
	sensor_direction=UNKNOWN;
	
	//M1_Enable;
	printf("MOT: Enable driver.\r\n");
}
/******************************************************************************/

三、FOC初始化

这是整个步骤最关键的一步,往往很多时候,错误都是卡在了这里 alignSensor();

/******************************************************************************/
void Motor_initFOC(void)
{
   
   
    alignSensor();    //检测零点偏移量和极对数

    //added the shaft_angle update
    angle_prev=as5600_getAngle();  //as5600_getVelocity(),make sure velocity=0 after power on
    systick_delay_ms(STM0,5);

    shaft_velocity = shaftVelocity();  //必须调用一次,进入主循环后速度为0
    systick_delay_ms(STM0,5);
    shaft_angle = shaftAngle();// shaft angle
    if(controller==Type_angle)target=shaft_angle;//角度模式,以当前的角度为目标角度,进入主循环后电机静止

    systick_delay_ms(STM0,200);
}

首先执行的函数为alignSensor( )
先使得,电机按照正弦规律转一定角度,记录中值角度
然后,电机按照正弦规律反方向转一定角度,记录终值角度
然后计算两次角度的差值,判断电机运动,进而判断电机方向和检测电机极对数
最后计算一次零点偏移角度,以后的角度都从当前角度开始算,
关闭电机。


/******************************************************************************/
int alignSensor(void)
{
   
   
    long i;
    float angle;
    float mid_angle,end_angle;
    float moved;

    printf("MOT: Align sensor.\r\n");

    // find natural direction
    // move one electrical revolution forward

    for(i=0; i<=500; i++)
    {
   
   
        angle = _3PI_2 + _2PI * i / 500.0;
        setPhaseVoltage(voltage_sensor_align, 0,  angle);
        systick_delay_ms(STM0,2);
    }

    mid_angle = (float)as5600_getAngle();

    for(i=500; i>=0; i--)
    {
   
   
        angle = _3PI_2 + _2PI * i / 500.0 ;
        setPhaseVoltage(voltage_sensor_align, 0,  angle);
        systick_delay_ms(STM0,2);
    }

    end_angle = (float)as5600_getAngle();
    setPhaseVoltage(0, 0, 0);
    systick_delay_ms(STM0,200);

    printf("mid_angle=%f\r\n",mid_angle);
    printf("end_angle=%f\r\n",end_angle);


    systick_delay_ms(STM0,200);

    moved =  fabs(mid_angle - end_angle);
    if((mid_angle == end_angle)||(moved < 0.02))  //相等或者几乎没有动
    {
   
   
        printf("MOT: Failed to notice movement loop222.\r\n");
        IfxCcu6_setT12CompareValue
simple foc 移植KEIL驱动双路电机 SIMPLE FOC 的通信控制协议加ST的定点算法才能较好的用在实际项目。首先需要将SIMPLE FOC 移植到KEIL中。 阅读详情

相关推荐

SimpleFOC调参1-力矩控制

simpleFOC studio调参,FOC各参数图形化含义总结

sinat_22081411的博客 1万+

SensorlessFOC_FAN_源代码_xmc1300_英飞凌xmc1300_无传感器BLDC_

英飞凌XMC1300无传感器BLDC驱动源代码

fpga在线升级 linux_仅5000行Verilog代码、可在FPGA上跑轻量级Linux系统的RISC-V内核

本文发布于www.hackster.io,由东京理工大学的计算机学院开发,专用于教学与加速用(苏老师也一直认为这是RISC-V当前的主要方向)。目前市场上开源的RISC-V内核已经很多,但很少有公开的RISC-V计算系统是非常轻型且能跑Linux系统的。这一款RISC-V内核就可以运行在FPGA上,用Verilog编写的,需要很少硬件的资源就能跑起来,所以可以运行在一个低成本的FPGA上。来看一下...

weixin_34083807的博客 1867

【SABRE 3D, SABRE 3DxT,LAM设备】2025年9月13日-安全配置-准备工作

请遵循本规程将SABRE 3D/3DxT/3D Scimitar系统设置为安全配置,以便能够在电镀单元、APT模块、XMM(或SRD)模块、工厂接口(FI)外壳或中央通道内部及周边区域执行作业p104-p117。在生产过程中暂停调度程序存在一定风险:若待维护模块未离线且在其他模块完成处理前重启调度程序,可能对生产晶圆造成影响。维护人员需特别注意电镀模块内的晶圆状态,并尽可能快速地恢复调度程序。确认待维护模块内无晶圆滞留暂停调度程序并将相应模块设置为离线状态打开模块检修门并关闭安全盖板(槽位)

weixin_46735260的博客 1368

Unity安卓打包实战:SDK与JDK配置全攻略

本文详细介绍了Unity安卓打包过程中SDK与JDK的配置方法,包括工具下载、安装步骤、环境变量设置及常见错误排查。通过实战指南帮助开发者快速完成Unity安卓打包环境搭建,提升开发效率。

weixin_30338481的博客 415

latex写论文(TeXstudio工具)

目录前言IEEE模板模板免费分享参考文献写作方法我的.tex文件代码 前言 学校老师要求我们以IEEE顶级会议格式与标准写报告,于是过程虽然麻烦点,但是效果还是不错了,下面先展示一下自己写完的效果。 IEEE模板 我是在 Overleaf 上注册了个账号下载了模板,里面有各种会议论文的写作模板,这个注册还挺麻烦,要外网注册,国内邮箱都不行。进行后点菜单,菜单里有下载源码。 https://cn.overleaf.com/project/5fe5b082dff088649fc67106 模板免费分享 已

小样yx的博客 6751

智能座舱音频系统集成与调试:从芯片选型到音质优化实战

在智能座舱域控制器架构中,音频系统已从简单的功放加扬声器演进为SoC、数字音频总线、外部DSP与多通道功放协同的复杂子系统。TDM总线的时隙分配、PDM麦克风阵列的信号完整性,以及AEC回声消除算法如何与硬件协同,直接决定多音区体验和语音交互的可靠性。工程实践中,音频调试的关键在于先理顺供电、接地、时钟与数据路由,再针对功放削波、采样率失配、TDM slot错位等典型问题进行系统性排查。从芯片选型到系统级指标验收,只有将音频链路视为整车电子电气架构的一个协同整体,才能真正实现从“响”到“好听”的跨越。本文结

weixin_30162121的博客 364

ThinkPHP 8.1 + think-swoole 4.1 实战:5分钟搞定WebSocket聊天室(附完整代码)

本文详细介绍了如何使用ThinkPHP 8.1和think-swoole 4.1快速构建高并发WebSocket聊天室。通过5分钟实战教程,开发者可以轻松实现用户列表、消息广播等核心功能,支持2000+并发连接,适用于客服系统、在线协作等实时通信场景。

ol789012345的博客 126

Unreal Engine开发:角色动画与状态机_动画混合:通过混合节点实现平滑动画过渡

动画混合是提升游戏动画质量的关键技术之一。Unreal Engine提供了多种混合节点,包括BlendSpace1D、Blend Two By Bool、Blend Two By Alpha和Sequencer,每种节点适用于不同的场景。通过合理使用这些节点,可以实现平滑、自然且高效的动画过渡效果。此外,遵循最佳实践和高级应用技巧,可以进一步优化动画质量和性能。希望本节内容对你在Unreal Engine中实现动画混合有所帮助,使你的游戏角色动作更加流畅和自然。

chenlz2007的博客 1245

训练救星!EMA多尺度注意力让YOLOv11轻松攻克自定义数据集不涨点难题

在目标检测模型训练中,自定义数据集不涨点是阻碍算法落地的核心痛点之一。传统训练策略在数据分布特殊、样本量有限的场景下极易陷入收敛停滞,而 EMA(指数移动平均)结合多尺度注意力的方案,在自定义数据集上实现mAP 提升 6.5%,同时让训练曲线从“平缓停滞”转为“持续攀升”,彻底解决创新点在自有数据上的性能瓶颈。本教程将带你从原理到实践,通过 EMA 多尺度注意力为 YOLOv11 注入训练稳定性,让你的自定义数据集模型训练实现质的飞跃。EMA 衰减率:小样本数据集建议将decay。

FJN110的博客 160

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

上一篇: 【FOC控制】英飞凌TC264无刷驱动方案simplefoc移植(5)-磁编码器移植AS5600 软件IIC
下一篇: 【MPU6050_DMP】dmp初始化校准设置,取消上电零度
Mount.W
博客等级 码龄7年 477粉丝 35原创
评论 8
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值