首页 最新 热门 推荐

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

SimpleFOC图形上位机SimpleFOC Stuido的使用

  • 23-09-28 04:02
  • 2806
  • 10572
blog.csdn.net

文章目录

    • 1.前言
      • 1.1.上位机安装
      • 1.2.注意事项
    • 2.SimpleFOC硬件端程序
    • 3.软件操作
      • 3.1.打开软件
      • 3.2.添加页面
      • 3.3.连接电机
      • 3.4.功能使用
      • 3.5.参数配置生成代码
    • 4.中间遇到的问题

1.前言

1.1.上位机安装

下载地址
根据github上的readme.md文件安装即可。其实需要做一件事,就是进如下载的文件夹,运行pip install -r "requirements.txt"命令,要安装的文件作者已经全部去写在里面了,一键安装即可。

1.2.注意事项

这个上位机是使用串口实时打印的,并且处于主循环中,其优先级与motor.loopFOC函数相同,所以会很大程度上影响电机的控制,控制应用中一定不能用,调参可以用。

2.SimpleFOC硬件端程序

以位置控制程序为例,程序实例如下:

#include 

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


float target_angle = 0;      // 初始目标角度为0
Commander command = Commander(Serial);    
void doTarget(char* cmd) { command.scalar(&target_angle, 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::angle;
  
  // PID参数
  motor.PID_velocity.P = 0.3;
  motor.PID_velocity.I = 10;
  motor.PID_velocity.D = 0;
  motor.P_angle.P = 0.5;
  
  //其他参数
  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."));
  Serial.println(F("Set the target angle using serial terminal:"));
  _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_angle);

  // 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
  • 77
  • 78

3.软件操作

3.1.打开软件

进入下载的文件夹,运行python simpleFOCStudio.py启动上位机

3.2.添加页面

在这里插入图片描述

3.3.连接电机

以tree view页面布局为例:
在这里插入图片描述

3.4.功能使用

在这里插入图片描述

3.5.参数配置生成代码

在这里插入图片描述

基本上就这些功能。最关键的是最开始的连接下位机SimpleFOC的操作,连接上了剩下的就很简单了。

4.中间遇到的问题

一开始能连上,串口数据也有回传,但是发送目标位置指令电机就是没有反应,发热还很大。当时很懵逼,搞了好久也没弄好。
直到我直接使用Arduino IDE的串口,才发现电机PP校准失败了,因为我的电机14极对数,而示例是11极对数,我忘了改。
因此,使用这个上位机连接上SimpleFOC后,一定要检查一下串口回传的初始化信息是否正常!

注:本文转载自blog.csdn.net的Cc1924的文章"https://blog.csdn.net/qq_42731705/article/details/116803591"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

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

分类栏目

后端 (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