目录
- 说明
- 一、ESP-NOP
-
- 1.1、简介
- 1.2、硬件准备
- 1.3、代码演示
-
- 1.3.1、官方示例
- 1.3.2、代码改进简化
- 二、力矩反馈
-
- 2.1、Dagor项目介绍
- 2.2、ESP32drive的力矩反馈
-
- 2.2.1、硬件准备
- 2.2.2、修改代码
- 2.2.3、根据串口输出调试
- 2.2.4、观察电机运行
- 2.2.5、实际应用
- 2.2.5、调试总结
- 三、ESP32drive-Double的力矩反馈
-
- 3.1、一个驱动器两个电机
-
- 3.1.1、硬件准备
- 3.1.2、代码演示
- 3.1.3、串口查看
- 3.2.4、观察电机运行
- 3.2、两个驱动器四个电机
-
- 3.2.1、硬件准备
- 3.2.2、代码演示
- 3.2.3、串口查看
- 3.2.4、观察电机运行
?
SimpleFOC教程目录:请点击
?
说明
- 一 开始并没打算做ESP32的产品和教程,在B站无意中看到了老外的触觉控制(Haptic Control),觉得非常炫酷,甚是心动。仔细研究了Dagor这个项目,国内貌似没有销售这个产品(2021年8月份),板子上用的TI芯片正缺货,我就想能不能用分立元件搭建电路,实现同样的功能,凭借十几年的经验我觉得应该可以拿下。过程还算顺利,两个月做了四版PCB,实现了Dagor的全部功能。这个产品借鉴了老外的创意,参考了老外的代码,只能算半个原创吧!
- Haptic Control,这个术语我专门百度翻译了下,触觉控制,但是大家都叫力矩反馈,只好随大流了。
- ESP32drive这个产品目前最大的问题是没有应用场景,不知道这个产品能做什么用。工业环境下CAN或者485似乎更可靠,为什么要用无线通信呢。而我之所以要做这个技术完全是被esp-now的触觉控制所吸引,这么炫酷的技术肯定有它的价值,大概现在是超前市场了。
- 【simpleFOC|SimpleFOC之ESP32(十)—— ESP-NOW和力矩反馈】有一种传言,说国内的芯片都是找的国外研发机构设计的,国外设计好国内直接拿去生产,最典型的就是近两年突然冒出的很多可以兼容STM32F103的芯片。当然这不是本文要讨论的,我想说的是ESP32这个芯片会不会也是这种模式。《SimpleFOC之ESP32(二)—— 开环控制》文中 修改底层代码 一节,描述了一个问题,这个问题并不重要,重要的是创作者在这里放了一个网址:https://github.com/espressif/esp-idf/issues/5429,打开网址,描述了一个问题,大胆揣测,可以脑补出事件过程:国外专业研发机构设计的这个芯片,其中包含有MCPWM功能,但这个功能并没受到ESP的重视,因为当前的主要应用场景是物联网,网络通信是重点。研发部工程师(可能是一个211或985刚毕业的研究生 )根据功能写底层驱动,因为领导不太重视MCPWM这个功能,所以驱动写好以后简单测试下就上传了,工程师没多久也辞职了。不久老外发现了这个问题,厂家给解决了,但解决的并不利索,我编译的时候又遇到了问题。
- 对问题细节的推敲很好的解释了我的疑惑,为什么我做了这个产品却不知道能做什么用,因为ESP的厂家也不知道它能做什么用,芯片是老外设计的,老外知道做什么用,但是用法还没传到国内。
?
文章图片
?
文章图片
文章图片
文章图片
?
- ESP-NOW 是由乐鑫开发的另一款协议,可以使多个设备在没有或不使用 Wi-Fi 的情况下进行通信。这种协议类似常见于无线鼠标中的低功耗 2.4GHz 无线连接——设备在进行通信之前要进行配对。配对之后,设备之间的连接是持续的、点对点的,并且不需要握手协议,
- ESP-NOW可以是一对一双向通信,也可以是多设备两两通信,
?
文章图片
或者
ESP32drive 购买链接:某宝购买
?
1.3、代码演示 1.3.1、官方示例
文章图片
- 官方示例Master和Slave,刚好可以2个设备做验证,
- 请注意,示例中专门做了说明,esp-now是没有主次概念的,这样命名只是为了更好的理解设置,
- 代码中有一点小问题,通道不一致是不能通信的,下图
文章图片
? - 观察串口打印
文章图片
?
- 官方示例的功能很强大,不需要事先知道对方的MAC就可以连接,当然这也导致了代码看起来有点复杂,
- 稍微做了点改进,用最简洁的代码实现ESP-NOW,前提是需要事先知道对方的MAC,
//读取本机MAC
#include void setup() {
Serial.begin(115200);
WiFi.mode(WIFI_MODE_STA);
Serial.print("ESP32 Board MAC Address:");
Serial.println(WiFi.macAddress());
//打印本机MACpinMode(2, OUTPUT);
}void loop() {
digitalWrite(2, HIGH);
//turn on
delay(500);
digitalWrite(2, LOW);
//turn off
delay(500);
}
?
- 把读取的MAC填入下图数组中,上传代码时选择对方的MAC
文章图片
? - 观察串口打印
文章图片
?
- SimpleFOC的官网提到了Dagor(应该是个人名),
文章图片
? - 点进去到github,提供源码下载,
文章图片
? - github上又提到了dagor的官网,点进去,
文章图片
- Dagor提供代码下载,但是没有PCB或者原理图,我也没有找到详细的电机调试过程。
? - B站上老外的演示视频,请点击: 触觉无刷控制演示
?
- 本节可以参考SimpleFOC移植STM32(六)—— 双电机控制和力矩反馈,两篇文章可以互为参考,
- 调试的结果一定要符合以下两个目标:
1、两个电机一个转动,另一个跟随,停止转动,另一个也停止,能够自稳。
2、拆掉一个电机,只接入任一个电机能够自稳。
- 调试阶段仍然需要串口,程序中有角度的输出,可以查看两个电机的角度,方便调试,
文章图片
- 两个电机用同一个代码,所以需要修改MAC,还要根据电机正反转修改减速和被减数的位置,
- 其它电机的参数根据实际所用电机修改,此处不再赘述,如有不清楚请先把之前的教程演示后再到这里,
文章图片
文章图片
?
- 输出的角度分别为thismotor和thatmotor,也就是本机的角度和对方的角度,角度值一定是要趋近的,
文章图片
?
?
2.2.5、实际应用
- ESP32drive带负载的演示,请点击:B站视频
文章图片
?
- 先单独调试每个电机,保证电机是可以自稳的,
- 电机一个CW,一个CCW,
- 如果单个电机可以自稳,通信后基本就可以互为反馈了。
?
3.1.1、硬件准备
- 调试阶段仍需要接上串口查看电机的角度,方便调试
ESP32drive 购买链接:某宝购买
带编码器电机 购买链接:某宝购买
?
- 代码在双电机控制的基础上修改,
文章图片
?
文章图片
?
3.2.4、观察电机运行
?
3.2、两个驱动器四个电机 3.2.1、硬件准备
- 调试阶段仍需要接上串口查看电机的角度,方便调试
文章图片
ESP32drive 购买链接:某宝购买
带编码器电机 购买链接:某宝购买
?
- 两个驱动器用同一个代码,所以需要修改MAC,还要根据电机正反转修改减速和被减数的位置,
- 其它电机的参数根据实际所用电机修改,此处不再赘述,如有不清楚请先把之前的教程演示后再到这里,
文章图片
文章图片
?
3.2.3、串口查看
文章图片
文章图片
?
3.2.4、观察电机运行
?
?
(完)
?
?
欢迎加入simpleFOC技术交流群:923734429 群已满根据提示添加新群 (入群申请写:CSDN)
?
?
请继续阅读相关文章:
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|SimpleFOC之ESP32(八)—— ABZ编码器电机
- ESP32|[教程] ESP32+TFT+分光棱镜实现透明小电视
- 拯救NodeMCU ESP-32S v1.1
- PlatformIO IDE搭建统一的物联网嵌入式开发环境
- esp32的spi驱动的编写遇到的问题
- esp8266|arduino ESP32各外设例程 esp32外设代码查询