SimpleFOC之ESP32(六)—— 双电机控制
目录
- 说明
- 一、硬件介绍
- 1.1、原理图
- 1.2、ESP32drive-D方案
- 1.2.1、准备清单
- 1.2.2、硬件连接
- 1.3、SimpleFOCShield方案
- 1.3.1、SimpleFOCShield原理图及跳线
- 1.3.2、硬件清单
- 1.3.3、硬件连接
- 二、代码演示 — 双I2C接口
- 2.1、打开官方示例
- 2.2、编译报错
- 2.3、查找错误原因
- 2.4、修改代码
- 2.5、验证测试
- 三、代码演示 — 双电机驱动
- 3.1、速度模式
- 3.2、其它模式
SimpleFOC教程目录:请点击
说明
本文教程适配SimpleFOCShield和ESP32drive-D两款驱动器。
一、硬件介绍
1.1、原理图
- ESP32drive-D的M1有三个使能引脚,与PowerShield V0.2大功率驱动板的控制方式一致,
- SimpleFOCShield只需一个使能引脚,在本文中定义为IO32,本文的演示代码以SimpleFOCShield为例,
- SPI和I2C2的引脚有复用,所以不能同时使用。
1.2、ESP32drive-D方案
- ESP32drive-D的两边采用非对称电路,M1为3个使能引脚独立模式,与PowerShield V0.2 的控制方式一致,M2的使能引脚并联,与SimpleFOCShield V2.0.4 保持一致。这样设计可以实现功能最大化,调试时注意这个区别!
1.2.1、准备清单
序号 | 名称 | 数量 |
---|---|---|
1 | USB转串口 | 1 |
2 | ESP32drive-D | 1 |
3 | 带编码器电机 | 2 |
4 | 12V电源 | 1 |
5 | 杜邦线 | 若干 |
电机 购买链接:某宝购买
ESP32drive 购买链接:某宝购买
1.2.2、硬件连接
1.3、SimpleFOCShield方案
1.3.1、SimpleFOCShield原理图及跳线
电流采样需要PWM输出与采样输入引脚对应,所以必须了解SimpleFOCShield的原理图,
1.3.2、硬件清单
序号 | 名称 | 数量 |
---|---|---|
1 | ESP32-DevKitC | 1 |
2 | simpleFOCShield | 2 |
3 | 云台电机 | 2 |
4 | USB线 | 1 |
5 | 12V电源 | 1 |
6 | 杜邦线 | 若干 |
SimpleFOCShield 购买链接:某宝购买
电机 购买链接:某宝购买
1.3.3、硬件连接
两块SimpleFOCShield堆叠
ESP32-DevKitC | SimpleFOCShield |
---|---|
33 | 5 |
26 | 9 |
14 | 6 |
32 | 8 |
35 | A0 |
34 | A2 |
16 | 3 |
17 | 10 |
5 | 11 |
4 | 7 |
39/VN | A1 |
36/VP | A3 |
3V3 | VCC |
GND | GND |
如果是AS5600编码器,如下
ESP32-DevKitC | AS5600电机1 |
---|---|
21 | SDA1 |
22 | SCL1 |
3V3 | VCC |
GND | GND |
ESP32-DevKitC | AS5600电机2 |
---|---|
18 | SDA2 |
19 | SCL2 |
3V3 | VCC |
GND | GND |
如果是AS5047P编码器,如下
ESP32-DevKitC | AS5047P电机 |
---|---|
23 | MOSI |
19 | MISO |
18 | SCLK |
13 | SS |
GND | GND |
3V3 | VCC |
二、代码演示 — 双I2C接口
双电机控制的难点在于两个I2C的配置,所以演示双电机驱动前,先把双I2C的接口调试通过。
2.1、打开官方示例
2.2、编译报错
升级后的simpleFOC库已经修改了这些错误,请勿纠结。20220520
2.3、查找错误原因
- 2.3.1、ESP32有2个I2C接口,
- 2.3.2、I2C接口可以配置到任意引脚,
- 2.3.3、定义其它引脚的函数如下,
可以用setPins()和setClock()函数代替begin()函数。
- 2.3.4、驱动中已经声明了两个I2C的结构体:Wire和Wire1,
2.4、修改代码
2.5、验证测试
接两个编码器测试读取的角度。
三、代码演示 — 双电机驱动
3.1、速度模式
3.1.1、打开示例
3.1.2、修改代码
3.1.3、验证上传
3.1.4、串口发送指令
速度模式,单位rad/s,
控制A电机,发送“A6.28”,表示6.28rad/s,也就是1圈/秒,
控制B电机,发送“B20”,
3.1.5、观察电机运行
3.2、其它模式
双电机控制还可以力矩模式和角度模式,或者混合模式,只需修改控制模式和对应的PID即可,不再赘述。
(完)
请继续阅读相关文章:
SimpleFOC之ESP32(一)—— 搭建开发环境
SimpleFOC之ESP32(二)—— 开环控制
SimpleFOC之ESP32(三)—— 闭环控制
SimpleFOC之ESP32(四)—— 电流闭环控制Inline
SimpleFOC之ESP32(五)—— 电流闭环控制Lowside
SimpleFOC之ESP32(六)—— 双电机控制
SimpleFOC之ESP32(七)—— 霍尔电机
SimpleFOC之ESP32(八)—— ABZ编码器电机
SimpleFOC之ESP32(九)—— WIFI、UDP和TCP
SimpleFOC之ESP32(十)—— ESP-NOW和力矩反馈
SimpleFOC之ESP32(六)—— 双电机控制相关推荐
- SimpleFOC移植STM32(六)—— 双电机控制和力矩反馈
目录 一.说明 二.硬件介绍 2.1.原理图 2.2.准备清单 2.3.接线 三.程序演示 3.1.设置参数 3.2.编译下载 3.3.根据设置的控制模式操作 四.双电机控制总结 五.力矩反馈 5.1 ...
- SimpleFOC之ESP32(二)—— 开环控制
目录 注意事项 一.硬件介绍 1.1.原理图 1.2.ESP32drive方案 1.2.1.准备清单 1.2.2.硬件连接 1.3.SimpleFOCShield方案 1.3.1.准备清单 1.3.2 ...
- SimpleFOC之ESP32(十)—— ESP-NOW和力矩反馈
目录 说明 一.ESP-NOP 1.1.简介 1.2.硬件准备 1.3.代码演示 1.3.1.官方示例 1.3.2.代码改进简化 二.力矩反馈 2.1.Dagor项目介绍 2.2.ESP32drive ...
- SimpleFOC之ESP32(八)—— ABZ编码器电机
目录 一.增量式编码器介绍 二.ESP32drive控制霍尔电机 2.1.原理图 2.2.读编码器获取角度 2.2.1.硬件准备 2.2.2.硬件连接 2.2.3.代码演示 2.2.4.观察角度输出 ...
- SimpleFOC之ESP32(三)—— 闭环控制
目录 一.硬件介绍 1.1.原理图 1.2.ESP32drive方案 1.2.1.准备清单 1.2.2.硬件连接 1.3.SimpleFOCShield方案 1.3.1.准备清单 1.3.2.硬件连接 ...
- SimpleFOC之ESP32(九)—— WIFI、UDP和TCP
目录 说明 一.网络通信 1.1.准备工作 1.2.UDP通信 1.3.TCP通信 二.硬件准备 三.代码参考 四.代码演示 4.1.WIFI_AP模式UDP通信 4.2.WIFI_STA模式TCP ...
- SimpleFOC之ESP32(七)—— 霍尔电机
目录 一.霍尔电机介绍 二.ESP32drive控制霍尔电机 2.1.原理图 2.2.读霍尔角度 2.2.1.硬件准备 2.2.2.硬件连接 2.2.3.代码演示 2.3.控制霍尔电机 2.3.1.硬 ...
- Arduino ESP32 Web网页控制RGB灯
Arduino ESP32 Web网页控制RGB灯
- ESP32:蓝牙BLE控制M3508电机
ESP32:蓝牙BLE控制M3508电机 先给各位朋友拜个年,祝大家新春快乐,事事顺利,身体健康啊! 还是熟悉的3508,内容概述: ESP32主控 蓝牙BLE通信 使用实时系统(FreeRTOS) ...
最新文章
- centos java tomcat_centos配置Tomcat以指定的身份(非root)运行
- 集成两路MAX1169的STC8G1K08模块,带有两路PWM输出
- 解决 Iframe跨域session 丢失问题
- Linux中断线程化的优势,记一个实时Linux的中断线程化问题
- 集中火力 专项击破|数据分析可视化广深线下培训火热来袭
- ssm三个框架分别用来干什么_SSM三大框架整合详细教程(Spring+SpringMVC+MyBatis)
- HEVC SAO技术阅读
- group by 为什么 distinct 效率高
- html5在线聊天插件,纯js网页在线聊天对话插件(原创)
- qq邮箱发html版式是乱的,为什么在Word里编辑的内容到QQ邮箱里发给别人是乱的,我用附件发的呀...
- 可以说是迄今为止最好用的右键菜单管理工具
- 0717Python总结-return返回值,全局及局部变量,函数名的使用,函数的嵌套,nonlocal修改局部变量,及locals和globals
- 如何做好性能压测(一):压测环境的设计和搭建
- java使用多态打印个人信息_java 多态 回顾
- 在win10上编译webRTC(问题篇)
- opencv(人脸检测和识别)
- 单片机I/O常用的驱动与隔离电路设计
- win7系统解决耳机插口的问题
- SQuAD 数据预处理(1)
- js的编码成gb2312的编码函数(URLEncode)
热门文章
- C# Access数据库查询条件LIKE
- 高中女生校服怎么画?怎样才能画好高中女生校服?
- 苹果数据线不能充电_啥?苹果数据线还能给安卓充电?
- axios请求跨域前端解决_完美解决axios跨域请求出错的问题
- OSG两个独立的相机观测
- 路由器管理:为已知设备分配固定IP,设置连接人数限制
- android 6.0魅族首批,有你的手机吗?首批安卓6.0升级名单一览
- cad命令栏还原默认_怎么把cad2014恢复默认设置(怎么讲CAD快捷键还原为默认模式?)...
- Android大厂面试题锦集附答案(BAT TMD JD 小米)
- 【数通学员心得】成功没有捷径,HCIE也没有侥幸