当前位置: 首页 > news >正文

simple foc 移植odriver foc的 anti-cogging(抗齿槽算法)

文章目录

    • ESP32 simple foc 移植odriver anti-cogging.
      • 1.硬件,在淘宝买的。esp32 +simple foc(最新). 下电阻三采样。
      • 2. 效果,见视频https://www.bilibili.com/video/BV1xg4y1X7Yr/?vd_source=4fd70d693021f289fb2d339c6c040719
      • 3.代码添加(生成前馈数组,就与补偿齿槽效应的扭矩)
      • 基本原理

ESP32 simple foc 移植odriver anti-cogging.

1.硬件,在淘宝买的。esp32 +simple foc(最新). 下电阻三采样。

2. 效果,见视频https://www.bilibili.com/video/BV1xg4y1X7Yr/?vd_source=4fd70d693021f289fb2d339c6c040719

3.代码添加(生成前馈数组,就与补偿齿槽效应的扭矩)


void loop() {static int ccc,changed_tar,dis_cc;static float tar = 0;// iterative setting FOC phase voltagemotor.loopFOC();// iterative function setting the outter loop targetmotor.move();if (1){if (fabs(motor.shaftVelocity())<0.0001 && fabs(motor.shaftAngle()-tar)<0.0003 && ccc>100 && changed_tar){char bufcmd1[50];if (changed_tar == 1){ccc = 0;changed_tar = 2;}else{   sprintf(bufcmd1,"stop:%f %f %f %f %f",tar*180/3.14159,motor.shaftAngle()*180/3.14159,fabs(motor.shaftAngle()-tar)*180/3.14159,motor.shaftVelocity(),motor.current_sp);Serial.println(bufcmd1);ccc = 10001;changed_tar = 0;}}if(ccc++>10000 && changed_tar == 0){char bufcmd[50];unsigned int buf;changed_tar = 1;ccc = 0;tar +=0.0035;//0.2 degreemotor.target = tar;}}// monitoring the state variables
//  motor.monitor();   //会影响程序执行速度,与studio交互的配置3共3处// user communicationcommand.run();}

补偿位置 ,在BLDCMotor.cpp下的。void BLDCMotor::move(float new_target)

case MotionControlType::velocity:static int ffccc;int ttt;// velocity set point - sensor precision: this calculation is numerically precise.shaft_velocity_sp = target;// calculate the torque commandif (shaft_angle<0){ind = floor(fmod(-shaft_angle,2*_PI)*286.0f);}else{ind = floor(fmod(shaft_angle,2*_PI)*286.0f);}ttt = ind;if (ind>=1797)ind = 1796;if (ind<=0)ind = 0;current_sp = anti_cogging_map[ind]*anti_cogging_coef+PID_velocity(shaft_velocity_sp - shaft_velocity); // if current/foc_current torque controlif (ffccc++>20000){char buf[40];ffccc = 0;sprintf(buf,"V:%f %f %f %d %d",target,current_sp,shaft_angle,ttt,torque_controller);Serial.println(buf);}// if torque controlled through voltage control

基本原理

  • 就是每次步进一个很小的角度(我这里是0.2度),选择360度,然后生成一个大的数组,以后在到达的角度固定前馈进去就行了,主要是保存上面的motor.current_sp.存成一个数组就行了。

后续再补充。

http://www.lryc.cn/news/236181.html

相关文章:

  • 基于深度学习的恶意软件检测
  • 环境配置|GitHub——解决Github无法显示图片以及README无法显示图片
  • AIGC(生成式AI)试用 12 -- 年终再总结
  • Linux下 tar 命令详解
  • SQL单表复杂查询where、group by、order by、limit
  • 安卓中轻量级数据存储方案分析探讨
  • 数据结构【DS】栈的应用
  • 大数据数仓建模基础理论【维度表、事实表、数仓分层及示例】
  • FlinkCDC数据实时同步Mysql到ES
  • 【Feign】 基于 Feign 远程调用、 自定义配置、性能优化、实现 Feign 最佳实践
  • 小迪安全笔记(3)——基础入门3、基础入门4
  • SOME/IP 协议介绍(六)接口设计的兼容性规则
  • 吴恩达《机器学习》8-5->8-6:特征与直观理解I、样本与值观理解II
  • 『亚马逊云科技产品测评』活动征文|借助AWS EC2搭建服务器群组运维系统Zabbix+spug
  • 文件转换,简简单单,pdf转word,不要去找收费的了,自己学了之后免费转,之后就复制粘贴就ok了
  • Jmeter——循环控制器中实现Counter计数器的次数重置
  • [创业之路-85]:IT创业成功老板的品质、创业失败老板的特征、成功领导者的品质、失败管理者的特征
  • 警惕.360勒索病毒,您需要知道的预防和恢复方法。
  • 人力资源小程序
  • 【多线程 - 10、线程同步3 ThreadLocal】
  • 【Flink 问题集】The generic type parameters of ‘Collector‘ are missing
  • 数据分析—将txt文件转为csv文件;将csv文件转为xls文件
  • 【算法】二分查找-20231120
  • WPF实现将鼠标悬浮在按钮上时弹出菜单
  • 车载以太网-传输层-UDP
  • uniapp如何上传文件,使用API是什么
  • 【狂神说Java】Docker概述 | Docker安装 | Docker的常用命令
  • Git精讲
  • 读书笔记:Effective C++ 3.0版2005年Scott Meyers : 55条建议(47-55)
  • Golang Context 的并发安全性探究