首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

SimpleFOCStudio安装使用说明及PID调试

  • 23-09-28 04:01
  • 2821
  • 13009
blog.csdn.net

目录

  • 说明
  • 一、SimpleFOCStudio安装
    • 1.1、安装的是什么
    • 1.2、安装python
    • 1.3、下载simplefocstudio
    • 1.4、安装插件
    • 1.5、运行SimpleFOCStudio
  • 二、硬件代码
    • 2.1、添加通信函数
    • 2.2、通信函数源码和路径
    • 2.3、Arduino UNO示例
    • 2.4、ESP32示例
  • 三、软硬件联调
    • 3.1、硬件连接
    • 3.2、打开SimpleFOCStudio并配置
    • 3.3、点击Connect
    • 3.4、点击Start
  • 四、PID调参

 
SimpleFOC教程目录:请点击
 
 

说明

  1、PID调试时需要反复的更改参数,如果每次都要下载代码非常繁琐,使用SimpleFOCStudio,参数通过串口下载非常方便高效,电机运动效果通过图形化的方式展现出来,非常直观,很容易找到PID参数的设置规律,所以建议大家通过这个软件调试PID。
  2、SimpleFOCStudio是一个“纯软件”的上位机软件,能读到这篇文章的大部分都是玩电机的偏硬件的同学,这对大家来说有一定难度,软件硬件的技术其实是非常类似的,它们的差别主要是思维方式的差别,所以先明白我们要安装的是什么这点很重要。
  3、SimpleFOCStudio的运行需要电机驱动器的配合,提供通信协议对接,还要有一定的电机控制技术为前提,所以一个专业的软件工程师虽然能安装这个软件,但并不能很好的操控这个软件。
  4、SimpleFOC做为开源项目,是一个专业的团队在运营。如果你自己实在装不好这个软件(这很正常),找同学或者朋友帮忙,学习工作中要有团队精神,学会合作!
 

一、SimpleFOCStudio安装

1.1、安装的是什么

按照官方说法大概分以下几步:

  • 1、安装python,(官方让安装 anaconda,这是个坑,不要踩)
  • 2、下载simplefocstudio源码,
  • 3、pip install -r “requirements.txt” ,
  • 4、python simpleFOCStudio.py 。

为什么要这么安装,我来一 一解释:

  • 1、SimpleFOCStudio是用python代码写的,所以需要先安装它的运行环境,这就好比是你要写STM32的代码要先安装keil一样。
  • 2、下载软件源码,这个不解释。
  • 3、在下载的源码中找到 requirements.txt 这个文件,打开可以看到
    在这里插入图片描述
    requirements.txt 文件中只有这四行,代表了四个插件,所以 pip install -r “requirements.txt” 这句话本质上是要安装这四个插件,这些插件做为开源项目,版本不停迭代更新,就目前(20220123)这些都有更新的版本,如果直接 pip install -r “requirements.txt” ,很可能会因为找不到这些老旧的版本而卡住,所以直接安装最新版本就可以。稍微解释下这个四个插件的用途,
    • PyQt5是图形界面,SimpleFOCStudio的界面运行在这个插件上,没有它界面打不开;
    • pyqtgraph是画图的,电机运动的波形绘制需要这个插件;
    • pyserial是负责串口的插件,软硬件的通信是通过串口实现的;
    • numpy是负责计算的插件,类似keil中的math.h头文件。
  • 上面的三步做完以后,也就安装好了编译环境和插件,python simpleFOCStudio.py 运行软件。
     

1.2、安装python

1.2.1、python官网下载:www.python.org在这里插入图片描述
1.2.2、下载后安装
在这里插入图片描述
1.2.3、等待安装完毕
在这里插入图片描述
1.2.4、验证是否安装成功
按 WIN+R 组合键(WIN键就是左下角的第二个键),电脑左下角弹出小窗口,输入“cmd”
在这里插入图片描述
1.2.5、在弹出的黑窗口中输入“python”,回车;有如下输出表示安装成功(版本不同输出略有不同),
在这里插入图片描述
输入 exit() 并回车,退出交互模式;或者直接关闭黑窗口。
 

1.3、下载simplefocstudio

1.3.1、github下载网址:https://github.com/JorgeMaker/SimpleFOCStudio/tree/main,国外网站时好时坏,多点几次。
在这里插入图片描述
1.3.2、下载的代码放到不含中文的路径中,方便稍后的操作
在这里插入图片描述
 

1.4、安装插件

按照官方的说法 pip install -r “requirements.txt” ,你可以试下,如果一切顺利那再好不过。但是这条指令的输入需要先选择 requirements.txt 这个文件所在的路径,方法看下面的1.5;
本人操作时候卡住了,所以一个个安装比较可靠,方法如下:
1.4.1、WIN+R组合键调出小窗口,输入“cmd”
在这里插入图片描述
1.4.2、在弹出的黑窗口分别输入以下指令,每次输入一个,等待安装完毕后再输入下一个,其中安装pyqtgraph时顺便安装了numpy,所以四个插件只需输入三次指令。有些插件的安装可能会卡顿迟缓,请耐心等待。
在这里插入图片描述

pip install PyQt5
pip install pyqtgraph
pip install pyserial
  • 1
  • 2
  • 3

 

1.5、运行SimpleFOCStudio

1.5.1、WIN+R组合键调出小窗口,输入“cmd”,在黑窗口中输入 SimpleFOCStudio 文件下载的路径,输入运行指令:python simpleFOCStudio.py,
在这里插入图片描述

d:
cd ******SimpleFOCStudio
python simpleFOCStudio.py
  • 1
  • 2
  • 3

 
1.5.2、运行指令后软件打开
在这里插入图片描述
1.5.3、选择 Tree View
在这里插入图片描述
 

二、硬件代码

2.1、添加通信函数

要和SimpleFOCStudio上位机通信,主要是把通信的函数加入到simpleFOC的代码中,通信的函数是

void onMotor(char* cmd){ command.motor(&motor, cmd); }    //定义函数
command.add('M',onMotor,"my motor");    //setup中加入这个函数
motor.monitor();    //loop中加入这个函数,使用simpleFOC Studio上位机设置的时候,这句一定要打开。会影响程序执行速度,慎用
  • 1
  • 2
  • 3

只需要增加这三句代码就可以实现和SimpleFOCStudio的通信,函数名字可能略有不同,但函数形式一样。
 

2.2、通信函数源码和路径

在simpleFOC库中的路径如下,有兴趣可以研究下(下图所用编辑器为sublime),
在这里插入图片描述
 

2.3、Arduino UNO示例

网上能找到的SimpleFOCStudio安装教程,一般用的是Arduino UNO,

#include 

// magnetic sensor instance - SPI
//MagneticSensorSPI sensor = MagneticSensorSPI(AS5147_SPI, 10);   //SPI编码器,AS5047,AS5048A是一样的
MagneticSensorI2C sensor = MagneticSensorI2C(AS5600_I2C);
// BLDC motor & driver instance
BLDCMotor motor = BLDCMotor(7);     // 电机极对数
BLDCDriver3PWM driver = BLDCDriver3PWM(9, 5, 6, 8);     // 电机ABC相PWM引脚,使能引脚


float target_velocity = 0;      // 初始目标角度为0
Commander command = Commander(Serial);    
void doTarget(char* cmd) { command.scalar(&target_velocity, cmd); }    // 串口控制指令:目标值
void onMotor(char* cmd){ command.motor(&motor,cmd); }      // 串口控制指令:电机


void setup() {
  // 编码器设置
  sensor.init();
  motor.linkSensor(&sensor);

  // 驱动设置
  driver.voltage_power_supply = 12;
  driver.init();
  motor.linkDriver(&driver);

  // 选择调制方式为SVPWM
  motor.foc_modulation = FOCModulationType::SpaceVectorPWM;
  // 控制模式为角度模式
  motor.controller = MotionControlType::velocity;
  
  // PID参数
  motor.PID_velocity.P = 0.3;
  motor.PID_velocity.I = 10;
  motor.PID_velocity.D = 0;
  
  //其他参数
  motor.voltage_limit = 6;    //最大电压
  motor.velocity_limit = 20;   //最大速度,rad/s
  motor.LPF_velocity.Tf = 0.01;  //速度的滤波时间常数

  // 串口设置
  Serial.begin(115200);
  motor.useMonitoring(Serial);  //使用串口监视器
  //初始化
  motor.init();
  motor.initFOC();

  // 添加串口命令
  command.add('T', doTarget, "target angle");
  command.add('M',onMotor,"my motor"); 
  
  Serial.println(F("Motor ready."));
  _delay(1000);
}

void loop() {  
  // main FOC algorithm function
  // the faster you run this function the better
  // Arduino UNO loop  ~1kHz
  // Bluepill loop ~10kHz 
  motor.loopFOC();

  // Motion control function
  // velocity, position or voltage (defined in motor.controller)
  // this function can be run at much lower frequency than loopFOC() function
  // You can also use motor.move() and set the motor.target in the code
  motor.move(target_velocity);

  // function intended to be used with serial plotter to monitor motor variables
  // significantly slowing the execution down!!!!
  motor.monitor();    //使用simpleFOC Studio上位机设置的时候,这句一定要打开。但是会影响程序执行速度
  
  // user communication
  command.run();
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76

 

2.4、ESP32示例

UNO的速度比较慢,所以本人用ESP32的示例,具体可以到对应教程中查看。
在这里插入图片描述
 

三、软硬件联调

3.1、硬件连接

在这里插入图片描述
电机 购买链接:某宝购买
ESP32drive 购买链接:某宝购买
 

3.2、打开SimpleFOCStudio并配置

  • 通过黑窗口输入路径打开,比较繁琐,
  • 可以找到文件夹,双击simpleFOCStudio.py文件 打开软件,如下:
    在这里插入图片描述

在这里插入图片描述
 

3.3、点击Connect

在这里插入图片描述
 

3.4、点击Start

上传周期可修改为稍大一点,数据上传太频繁影响电机运行效果,
在这里插入图片描述
 

四、PID调参

  • 不同电机,不同驱动板的PID参数是不一样的,PID参数完全是一个经验值,需要反复的实验验证,找到最优值,本节只讲下大概的方法,仅供参考。
  • 新手调参推荐用云台电机,电机内阻大,不容易烧坏;
  • 先调试电流环的PI参数,再调试速度环的PI参数,最后再调试位置环的PI参数;
  • 如果用电压模式,可以直接调试速度环的PI参数;
  • 设置I=0,调试P,待P参数差不多时再添加I参数,参数从小向大逐渐增加;
  • P太大会过冲,P太小会不足,达不到设定值;
  • I参数实在调不了就设置为0,只有P参数电机也能转;
    在这里插入图片描述
    通过软件多次修改参数后,电机运行似乎不准,可以重启下单片机。
     
     
    写本文时参考了这篇文章,大家可以对比阅读:SimpleFOC图形上位机SimpleFOC Stuido的使用
    (完)
     
    欢迎加入simpleFOC技术交流群:923734429 群已满根据提示添加新群 (入群申请写:CSDN)
     
注:本文转载自blog.csdn.net的loop222的文章"https://blog.csdn.net/loop222/article/details/122647643"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top