Link

SimpleFOCStudio by @JorgeMaker

SimpleFOClibrary 的图形用户界面,允许使用串行端口通信和 Commander 接口来调整和配置任何BLDC/步进电机的 SimpleFOClibrary 受控设备。

特点:

  • 即插即用 SimpleFOClibrary 2.1版+
  • 电机的实时调整和配置
  • 实时
  • 代码生成,以便在写代码时更轻松地集成优化参数
  • 基于 PyQt5 和标准化的SimpleFOCConnector接口构建,该接口可用作从python到 SimpleFOClibrary 设备的网关。

安装

别担心,SimpleFOCStudio很容易安装,即使你以前从未使用过终端!😃 只需采取几个步骤:

  1. 如果尚未安装Python,请安装它
    • 我们建议使用蟒蛇Anaconda 点击这里查看如何安装
    • 运行Anaconda后,打开终端(在windows Anaconda提示符下)并运行:
       conda create -n simplefoc python=3.6.0
      
    • 完成此操作后,你将不再需要再次运行该命令,从现在起,你只需要:
       conda activate simplefoc
      
  2. 复制此存储库或下载zip文件
  3. 使用终端输入包含存储库的文件夹
    • 该命令如下所示:
       cd  some_path_on_disk/SimpleFOCStudio
      
  4. 安装的最后一步是为 SimpleFOCStudio 安装所有必要的库:
     pip install -r "requirements.txt"
    

当你完成上述所有步骤后,无需再重复。下次只需在 SimpleFOCStudio 目录中打开终端并运行以下命令:

python simpleFOCStudio.py

或者如果使用 Anaconda :

conda activate simplefoc
python simpleFOCStudio.py

使用 SimpleFOCStudio

SimpleFOCStudio 有几个有用的功能:

  • 调整电机设置的简单方法
    • 用于快速运动控制PID/LPF调整的窗体视图
    • TreeView控件 可进行更深入的挖掘和实验
  • 将找到的参数转换为 Arduino 代码形式
  • 集成了各种命令功能的串行终端

Motion control tunning windows

当运行应用程序时,单击 工具栏中的“style=”height:18px”>电机按钮。你可以选择“style=”height:18px”>TreeView或FormView。

  • 要连接到你的设备,首先通过单击配置按钮

  • 添加com端口信息并单击“OK”

  • 然后添加已添加到指挥官的设备命令ID,通常为M
    • 命令M,Arduino 代码:Command.add('M',doMotor,“my motor”)
    • 命令A , Arduino 代码 : command.add('A',doMotor,"my motor")
  • 然后点击连接按钮!

代码生成

SimpleFOCStudio 帮助你更轻松地将经过仔细调整的参数传输到Arduino的代码中。一旦你对系统的性能感到满意,你就可以自动生成已调整参数的arduino代码。要生成代码,请执行以下操作:

  • 点击工具栏中的Arudino按钮。
  • 选择要为其生成代码的参数集,然后单击“OK”
  • 在新选项卡中,你将得到一个优化参数的代码。

在调用motor.init()之前,你可以在 setup() 函数中复制/粘贴生成的代码

集成串行终端

SimpleFOCStudio 还集成了串行终端,便于调试和监控。

Arduino 代码

基本上,你需要做两件事:

  1. 使用commander界面并将电机添加到commander
  2. 使用监视器并在循环中添加motor.monitor()

下面是代码的模型:

#include <SimpleFOC.h>

....

// 包括 commander 接口
Commander command = Commander(Serial);
void doMotor(char* cmd) { command.motor(&motor, cmd); }

void setup(){
  ....
  // 将电机添加到 commander 接口
  // 你将提供给SimpleFOCStudio的字符(这里是M)
  command.add('M',doMotor,'motor');
  // 让电机使用监控
  motor.useMonitoring(Serial);
  motor.monitor_downsample = 0; // 首先禁用监视器-可选
  ...

}
void loop(){
  ....

  ....
  // 实时监控通信
  motor.monitor();
  // 实时 commander通信
  command.run();
}