simpleFOC|SimpleFOC之ESP32(十)—— ESP-NOW和力矩反馈


目录

  • 说明
  • 一、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的厂家也不知道它能做什么用,芯片是老外设计的,老外知道做什么用,但是用法还没传到国内。
    ?
    simpleFOC|SimpleFOC之ESP32(十)—— ESP-NOW和力矩反馈
    文章图片

    ?
    simpleFOC|SimpleFOC之ESP32(十)—— ESP-NOW和力矩反馈
    文章图片

    simpleFOC|SimpleFOC之ESP32(十)—— ESP-NOW和力矩反馈
    文章图片

    simpleFOC|SimpleFOC之ESP32(十)—— ESP-NOW和力矩反馈
    文章图片

    ?
一、ESP-NOP 1.1、简介
  • ESP-NOW 是由乐鑫开发的另一款协议,可以使多个设备在没有或不使用 Wi-Fi 的情况下进行通信。这种协议类似常见于无线鼠标中的低功耗 2.4GHz 无线连接——设备在进行通信之前要进行配对。配对之后,设备之间的连接是持续的、点对点的,并且不需要握手协议,
  • ESP-NOW可以是一对一双向通信,也可以是多设备两两通信,
    ?
1.2、硬件准备 因为是通信,所以至少2个设备,
simpleFOC|SimpleFOC之ESP32(十)—— ESP-NOW和力矩反馈
文章图片

或者


ESP32drive 购买链接:某宝购买
?
1.3、代码演示 1.3.1、官方示例
simpleFOC|SimpleFOC之ESP32(十)—— ESP-NOW和力矩反馈
文章图片

  • 官方示例Master和Slave,刚好可以2个设备做验证,
  • 请注意,示例中专门做了说明,esp-now是没有主次概念的,这样命名只是为了更好的理解设置,
  • 代码中有一点小问题,通道不一致是不能通信的,下图
    simpleFOC|SimpleFOC之ESP32(十)—— ESP-NOW和力矩反馈
    文章图片

    ?
  • 观察串口打印
    simpleFOC|SimpleFOC之ESP32(十)—— ESP-NOW和力矩反馈
    文章图片

    ?
1.3.2、代码改进简化
  • 官方示例的功能很强大,不需要事先知道对方的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|SimpleFOC之ESP32(十)—— ESP-NOW和力矩反馈
    文章图片

    ?
  • 观察串口打印
    simpleFOC|SimpleFOC之ESP32(十)—— ESP-NOW和力矩反馈
    文章图片

    ?
二、力矩反馈 2.1、Dagor项目介绍
  • SimpleFOC的官网提到了Dagor(应该是个人名),
    simpleFOC|SimpleFOC之ESP32(十)—— ESP-NOW和力矩反馈
    文章图片

    ?
  • 点进去到github,提供源码下载,
    simpleFOC|SimpleFOC之ESP32(十)—— ESP-NOW和力矩反馈
    文章图片

    ?
  • github上又提到了dagor的官网,点进去,
    simpleFOC|SimpleFOC之ESP32(十)—— ESP-NOW和力矩反馈
    文章图片
  • Dagor提供代码下载,但是没有PCB或者原理图,我也没有找到详细的电机调试过程。
    ?
  • B站上老外的演示视频,请点击: 触觉无刷控制演示
    ?
2.2、ESP32drive的力矩反馈
  • 本节可以参考SimpleFOC移植STM32(六)—— 双电机控制和力矩反馈,两篇文章可以互为参考,
  • 调试的结果一定要符合以下两个目标:
    1、两个电机一个转动,另一个跟随,停止转动,另一个也停止,能够自稳。
    2、拆掉一个电机,只接入任一个电机能够自稳。
2.2.1、硬件准备
  • 调试阶段仍然需要串口,程序中有角度的输出,可以查看两个电机的角度,方便调试,
    simpleFOC|SimpleFOC之ESP32(十)—— ESP-NOW和力矩反馈
    文章图片
2.2.2、修改代码
  • 两个电机用同一个代码,所以需要修改MAC,还要根据电机正反转修改减速和被减数的位置,
  • 其它电机的参数根据实际所用电机修改,此处不再赘述,如有不清楚请先把之前的教程演示后再到这里,
    simpleFOC|SimpleFOC之ESP32(十)—— ESP-NOW和力矩反馈
    文章图片

    simpleFOC|SimpleFOC之ESP32(十)—— ESP-NOW和力矩反馈
    文章图片

    ?
2.2.3、根据串口输出调试
  • 输出的角度分别为thismotor和thatmotor,也就是本机的角度和对方的角度,角度值一定是要趋近的,simpleFOC|SimpleFOC之ESP32(十)—— ESP-NOW和力矩反馈
    文章图片

    ?
2.2.4、观察电机运行

?
2.2.5、实际应用
  • ESP32drive带负载的演示,请点击:B站视频
    simpleFOC|SimpleFOC之ESP32(十)—— ESP-NOW和力矩反馈
    文章图片

    ?
2.2.5、调试总结
  • 先单独调试每个电机,保证电机是可以自稳的,
  • 电机一个CW,一个CCW,
  • 如果单个电机可以自稳,通信后基本就可以互为反馈了。
    ?
三、ESP32drive-Double的力矩反馈 3.1、一个驱动器两个电机 这个功能与SimpleMotor类似,不需要无线通信
3.1.1、硬件准备
  • 调试阶段仍需要接上串口查看电机的角度,方便调试

    ESP32drive 购买链接:某宝购买
    带编码器电机 购买链接:某宝购买
    ?
3.1.2、代码演示
  • 代码在双电机控制的基础上修改,
    simpleFOC|SimpleFOC之ESP32(十)—— ESP-NOW和力矩反馈
    文章图片

    ?
3.1.3、串口查看
simpleFOC|SimpleFOC之ESP32(十)—— ESP-NOW和力矩反馈
文章图片

?
3.2.4、观察电机运行

?
3.2、两个驱动器四个电机 3.2.1、硬件准备
  • 调试阶段仍需要接上串口查看电机的角度,方便调试
    simpleFOC|SimpleFOC之ESP32(十)—— ESP-NOW和力矩反馈
    文章图片

    ESP32drive 购买链接:某宝购买
    带编码器电机 购买链接:某宝购买
    ?
3.2.2、代码演示
  • 两个驱动器用同一个代码,所以需要修改MAC,还要根据电机正反转修改减速和被减数的位置,
  • 其它电机的参数根据实际所用电机修改,此处不再赘述,如有不清楚请先把之前的教程演示后再到这里,
    simpleFOC|SimpleFOC之ESP32(十)—— ESP-NOW和力矩反馈
    文章图片
simpleFOC|SimpleFOC之ESP32(十)—— ESP-NOW和力矩反馈
文章图片

?
3.2.3、串口查看
simpleFOC|SimpleFOC之ESP32(十)—— ESP-NOW和力矩反馈
文章图片

simpleFOC|SimpleFOC之ESP32(十)—— ESP-NOW和力矩反馈
文章图片

?
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和力矩反馈

    推荐阅读