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

ESP-IDF 配置 SimpleFOC 项目

创建 ESP-IDF 项目
使用VSCode创建第一个ESP-IDF项目_vscode串口监视器在哪-CSDN博客

idf.py create-project motor_test

进入项目文件夹

cd motor_test

设置 freertos 时钟频率

创建项目后执行 idf.py menuconfig设置(Top) → Component config → FreeRTOS → Kernel (100) configTICK_RATE_HZ1000 (为了使用 arduino 组件)

添加 arduino-esp32 到 components

使用命令进行安装

idf.py add-dependency "espressif/arduino-esp32^3.0.2"

或者手动进行安装

a. 下载 arduino-esp32 ,需要注意 esp-idf 和 arduino-esp32 的版本对照关系
b. 在项目根目录创建 components 文件夹

mkdir -p components
cd components

c. 将下载的 arduino-esp32 放到components 文件夹后,执行 idf.py menuconfig更新设置。

添加 SimpleFOC 组件

idf.py add-dependency "espressif/esp_simplefoc"

执行 idf.py menuconfig更新设置。

修改项目为可执行 C++ 代码

a. 修改源文件为 .cpp 后缀(motor_test.cpp),并修改源码为导出 C 接口

#include <stdio.h>
#include <stdlib.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_simplefoc.h"
#include "driver/gpio.h"

#if CONFIG_SOC_MCPWM_SUPPORTED
#define USING_MCPWM
#endif

#define PWMA_GPIO GPIO_NUM_5
#define PWMB_GPIO GPIO_NUM_18
#define PWMC_GPIO GPIO_NUM_19
#define ENABLE_GPIO GPIO_NUM_21

BLDCMotor motor = BLDCMotor(7);
BLDCDriver3PWM driver = BLDCDriver3PWM(PWMA_GPIO, PWMB_GPIO, PWMC_GPIO, ENABLE_GPIO);

// 目标变量
float target_velocity = 0.5;

// 串口指令设置
Commander command = Commander(Serial);
void doTarget(char *cmd)
{
    command.scalar(&target_velocity, cmd);
}

extern "C" void app_main(void)
{
    Serial.begin(115200);

    driver.voltage_power_supply = 9;
    driver.init();

    motor.linkDriver(&driver);
    motor.voltage_limit = 9;   // [V]
    motor.velocity_limit = 30; // [rad/s]

    // 开环控制模式设置
    motor.controller = MotionControlType::velocity_openloop;

    // 初始化硬件
    motor.init();

    // 增加 T 指令
    command.add('T', doTarget, const_cast<char *>("target velocity"));


    vTaskDelay(pdMS_TO_TICKS(1000));

    for (;;) {
        motor.move(target_velocity);
        command.run();
        vTaskDelay(pdMS_TO_TICKS(1));
    }
}

b. 修改 CMakeLists.txt 文件中对象的源文件名称

idf_component_register(SRCS "motor_test.cpp"
                    INCLUDE_DIRS ".")

代码运行结果:
在这里插入图片描述

参考链接:

1. GitHub - yiyangc18/ESP-FOC: the foc driver on esp-idf
2. ESP SimpleFOC - - — ESP-IoT-Solution latest 文档
3. 在 ESP-IDF 中使用 Arduino 框架和Arduino的第三方库_esp-idf arduino-CSDN博客
4. Arduino-as-an-ESP-IDF-component-------—-Arduino-ESP32-latest-documentation


http://www.kler.cn/a/375854.html

相关文章:

  • 制作安装k8s需要的离线yum源
  • 智能指针(内存泄漏问题)
  • BGP路径属性与路由反射器
  • C++STL详解(九)map和set的使用
  • R语言机器学习与临床预测模型79--机器学习总览
  • 前端如何实现进度条
  • 企业如何通过架构蓝图实现数字化转型
  • Unity 游戏性能优化实践:内存管理与帧率提升技巧
  • Android和iOS有什么区别?
  • redis详细教程(4.GEO,bitfield,Stream)
  • 自动驾驶上市潮中,会诞生下一个“英伟达”吗?
  • 基于深度学习的机器人智能控制算法 笔记
  • 【Linux】编辑器vim 与 编译器gcc/g++
  • OpenCV Python 版使用教程(二)摄像头调用
  • 二叉树选择题
  • 11.01学习
  • Linux云计算 |【第五阶段】CLOUD-DAY7
  • Shell 编程-Shell三剑客 Grep 学习
  • K8s pod 调度策略
  • 数据库相关概念
  • leaflet 地图基础应用篇
  • ssh和ssl的区别在哪些方面?
  • Facebook群控策略详解
  • 基于微信小程序的公务员考试信息查询系统+LW示例参考
  • 农作物病害图像分割系统:深度学习检测
  • UniFormat工具发布V1