SimpleFOC之ESP32(八)—— ABZ编码器电机

基于MT6701编码器与SimpleFOC库的I2C通信FOC控制实战 本文详细介绍了如何利用MT6701磁性编码器与SimpleFOC库实现高精度的I2C通信FOC控制。通过硬件连接指南、软件配置代码和调试技巧,帮助开发者快速搭建稳定的电机控制系统,适用于机器人、云台等需要精确位置控制的应用场景。 阅读详情
AI摘要

本文基于ESP32平台,使用SimpleFOC库实现对ABZ增量式编码器电机的闭环控制。重点介绍AB信号读取(含四倍频原理)、角度计算、单/双电机驱动实现,以及ESP32drive和ESP32drive-D硬件适配。分析了双电机失控问题,指出引脚中断缺乏硬件/软件滤波是主因,并对比AS5047P与TLE5012B磁编码器性能差异。


 
SimpleFOC教程目录:请点击
 

一、增量式编码器介绍

  • ABZ或者ABI,叫法不同但都是指 增量式编码器;
  • ABZ编码器最初是光电式的,近几年随着磁编码器的兴起,磁编码器上也增加了ABZ信号的输出;
  • A、B两相相差90度,可通过比较A相在前还是B相在前,以判断编码器的正转与反转,通过零位脉冲,可获得编码器的零位参考位。
    在这里插入图片描述
  • 一般采用四倍频技术,比如500线的编码器,转一圈可以获得2000个脉冲信号,
    在这里插入图片描述

二、ESP32drive控制ABZ电机

本节演示,只使用了AB信号,没有使用Z信号。Z信号可用于找零点,如果不找零点,可以不用。

2.1、原理图

在这里插入图片描述
 

2.2、读编码器获取角度

2.2.1、硬件准备

序号名称数量
1USB转串口1
2ESP32drive1
3带增量编码器电机1
412V电源1
5杜邦线若干

在这里插入图片描述

ESP32drive 购买链接:https://item.taobao.com/item.htm?ft=t&id=662591519566,图锐科技
2804电机 购买链接:https://item.taobao.com/item.htm?ft=t&id=643573104607,图锐科技
 

2.2.2、硬件连接

在这里插入图片描述

2.2.3、代码演示

  • 2.2.3.1、打开示例
    在这里插入图片描述
  • 2.2.3.2、修改代码
    在这里插入图片描述

2.2.4、观察角度输出

  • 如果编码器的CPR设置正确,转动电机一圈,角度输出刚好是6.28 rad,
    在这里插入图片描述
     

2.3、控制电机

2.3.1、硬件连接

在这里插入图片描述

ESP32drive 购买链接:https://item.taobao.com/item.htm?ft=t&id=662591519566,图锐科技
2804电机 购买链接:https://item.taobao.com/item.htm?ft=t&id=643573104607,图锐科技
 

2.3.2、代码演示

  • 打开示例
    在这里插入图片描述
  • 修改代码
    在这里插入图片描述
    在这里插入图片描述

2.3.3、观察电机运行

  • 性能和SPI接口差不多,
  • AS5047P和TLE5012B都经过了测试,TLE5012B的最大转速没有AS5047P的高,大概是因为TLE5012B的CPR比AS5047P大,导致进入中断的频率高,影响了单片机的处理速度。
    在这里插入图片描述
     

三、ESP32drive-D控制电机

3.1、原理图

在这里插入图片描述

3.2、硬件连接

序号名称数量
1USB转串口1
2ESP32drive-D1
3带编码器电机2
412V电源1
5杜邦线若干

在这里插入图片描述
在这里插入图片描述

ESP32drive 购买链接:https://item.taobao.com/item.htm?ft=t&id=662591519566,图锐科技
2804电机 购买链接:https://item.taobao.com/item.htm?ft=t&id=643573104607,图锐科技
 

3.3、控制单个电机

  • 代码在上面的ESP32drive的基础上修改,只需改动驱动引脚配置,
    在这里插入图片描述
     

3.4、控制双电机

3.4.1、打开示例

在这里插入图片描述
 

3.4.2、修改代码

在这里插入图片描述
 

3.4.3、观察电机运行

在这里插入图片描述

3.4.4、双电机控制出现的问题

  • 电机初始化一切正常,发送指令,电机转动也正常,但会逐渐失控,表现为转速越来越快,或者突然堵转。

问题总结分析

  • 单电机控制都正常,双电机控制不行,
  • 霍尔电机和ABZ编码器的处理方式都是利用引脚中断,在信号没有硬件和软件滤波的情况下,出现问题是正常的。
  • 目前只能学习演示,等待创作者升级。

 
 
(完)
 
 
 
请继续阅读相关文章:
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和力矩反馈

ABZ正交编码 - 异步电机常用的位置信息确定方式 例如:如果使用的编码器为 2500 线,即电机转一周反馈的 A、 B 脉冲数都为 2500个,让电机转一周, 若编码器反馈输入模式为 4 倍计数, 编码器计数器的值为 10000;2 倍计数:若为正向计数, 编码器计数器的值为 A 反馈脉冲数的 2 倍;测量位置信息可以通过 A B的脉冲数量,也可以通过测量A或者B的频率进行实现,由此产生的差异仅仅是ASW算法的一点不同而已。若为负向计数, 编码器计数器值为 B 反馈脉冲数。每转一周,索引相,即Z相经过发光二极管一次,输出一个脉冲,可作为编码器的机械零位。 阅读详情

相关推荐

麦歌恩的MT6701编码器+SimpleFoc库实现FOC控制

MT6701在simplefoc中的应用,FOC控制,ABZ,I2C等通信方式

macolin的专栏 1128

SimpleFOC移植STM32(九)—— ABZ编码器电机

ABZ或者ABI,叫法不同但指的都是同一种编码器,也叫增量式编码器。ABZ编码器最大的优点就是接口统一,兼容性好。不像SPI接口的磁编码器,不同厂家的芯片甚至同一厂家的不同型号,通信协议各不相同,换个编码器就要重新写代码。光电编码器的信号输出有开漏和推挽多种形式,不确定信号类型情况下,在单片机接口上最好能接 上拉电阻,光电编码器的工作电压一般为5V,接3.3V后不工作。驱动板103没有5V电源输出。磁编码器输出的ABZ信号一般为推挽输出,有一定的驱动能力,所以有没有上拉电阻不重要。

loop222的博客 1万+

FOC无刷电机控制实战:从原理到ESP32+SimpleFOC落地

FOC(磁场定向控制)是现代无刷电机实现高精度、低噪声、高效率运行的核心技术,其本质是通过Clark/Park坐标变换将三相交流系统解耦为直轴(d)与交轴(q)直流分量,从而实现类直流电机的转矩精准调控。该技术依赖实时电流采样、高分辨率位置反馈及微秒级闭环运算,对MCU浮点性能、ADC精度和PWM时序提出严苛要求。在Arduino生态中,ESP32与STM32等具备硬件FPU和多路独立ADC的平台成为主流载体,而SimpleFOC开源库则大幅降低了工程落地门槛。典型应用场景涵盖智能小车驱动、3D打印运动控制

weixin_29188043的博客 304

STM32 ABZ编码器模式详解

STM32 ABZ编码器配置

demonneverhunts的博客 1万+

从开环到闭环:用SimpleFOC玩转无刷电机FOC控制

磁场定向控制(FOC)是现代无刷电机高性能控制的核心算法,广泛应用于机器人、智能小车和自动化设备。传统FOC伺服系统成本高、调试复杂,而SimpleFOC开源库将FOC移植到Arduino平台,大幅降低了无刷电机精准控制的门槛。内容涵盖FOC基本原理、SimpleFOC环境配置、编码器校准、开环与闭环控制流程,以及电流环、速度环、位置环的PID调参经验,帮助开发者避开常见坑点,快速实现从“电机转动”到“伺服控制”的进阶。无论是Arduino新手还是嵌入式老手,都能通过这套方案低成本地玩转无刷电机。

weixin_33377602的博客 223

Arduino+MT6701编码器实战:从接线到SimpleFoc闭环控制(附I2C配置代码)

本文详细介绍了如何将MT6701磁编码器通过I2C接口与Arduino平台集成,并实现基于SimpleFoc库的FOC闭环控制。内容涵盖硬件接线、I2C地址与寄存器配置、代码实现及高级调试技巧,为机器人关节、云台等高精度伺服应用提供实战指南。

web39explorer的博客 226

stm32霍尔编码器电机测速原理six

如果不清楚电机功率,可以多试几个值,电源有电流显示的话观察下零点校准时的电流,只要在0.2A — 0.8A这个范围内就行,电流太小电机无力,校准可能不准确,电流太大电机会发热,容易损坏电机。voltage_sensor_align是电机零点校准时的电压值,需要根据电机功率设置,100W以内的电机基本属于小功率,可以设置的大一点,200W以上的属于大功率,设置的小一点。A、B两相相差90度,可通过比较A相在前还是B相在前,以判断编码器的正转与反转,通过零位脉冲,可获得编码器的零位参考位。

link_start_zhx的博客 2012

编码器A相B相Z相的定义

编码器的信号又A相、B相、Z相的定义,这个和电机的ABC相的没有关系,本文介绍编码器A相、B相、Z相的概念。 编码器A相B相Z相的概念 谓U相、V相、W相是指的电机的主电源的三相交流供电,与编码器没有任何关系。“A相、B相、Z相”与“U相、V相、W相”是完全没有什么关系的两种概念,前者是编码器的通道输出信号;后者是交流电机的三相主回路供电。 而编码器的A相、B相、Z相信号中,A、B两个通道的信号一般是正交(即互差90°)脉冲信号;而Z相是零脉冲信号。详细来说,就是一般编码器输出信号除A、B两相(A、B两通

weixin_41883890的博客 2万+

SimpleFOC、ODrive和VESC 教程链接汇总

一、SimpleFOC系列教程 SimpleFOC(一)—— 简介(附有文件下载链接) SimpleFOC(二)—— 快速入门 (开环控制) SimpleFOC(三)—— AS5600角度读取 SimpleFOC(四)—— 闭环控制 SimpleFOC(五)—— 双电机控制 SimpleFOC(六)—— PowerShield和AS5047P SimpleFOC(七)——STM32(Bluepill)的应用 SimpleFOC(八)—— 理论+实践 深度分析SVPWM SimpleFOC(九)——

loop222的博客 12万+

正交编码器溢出处理

16位正交编码定时器溢出处理。

只要思想不滑坡,想法总比问题多。 7534

【花雕学编程】Arduino FOC 之ABZ编码器校准

Arduino是一个开放源码的电子原型平台,它可以让你用简单的硬件和软件来创建各种互动的项目。在Arduino平台上实现FOC可以提供平滑的运行和高度的扭矩、速度和位置控制,它通过精确控制电机的电流和电压来实现高效率、高精度和低噪声的操作。5、创新:Arduino可以让你用电子的方式来表达你的创意和想象,你可以用Arduino来制作各种有趣和有用的项目,如机器人、智能家居、艺术装置等。5、机器人:工业机器人、服务机器人、仿生机器人等对电机控制性能有严格要求的领域,Arduino FOC是一个不错的选择。

雕爷学编程 1335

SimpleFOC之ESP32(三)—— 闭环控制

目录一、硬件介绍1.1、原理图1.2、ESP32drive方案1.2.1、准备清单1.2.2、硬件连接1.3、SimpleFOCShield方案1.3.1、准备清单1.3.2、硬件连接二、代码演示 — I2C接口2.1、I2C接口说明2.2、速度模式2.3、位置模式三、代码演示 — SPI接口3.1、SPI接口说明3.2、修改示例   一、硬件介绍 1.1、原理图   1.2、ESP32drive方案 1.2.1、准备清单 序号 名称 数量 1 USB转串口 1 2 ESP32driv

loop222的博客 1万+

统信UOS/麒麟ARM桌面版,不联网也能用Docker部署MySQL 5.7(离线部署详解)

本文详细介绍了在统信UOS/银河麒麟ARM桌面版系统中,如何离线部署MySQL 5.7的完整流程。通过Docker技术实现环境隔离和依赖封装,解决了封闭网络环境下的部署难题,包括资源准备、系统配置、容器化部署及安全加固等关键步骤,为政企和科研场景提供实用解决方案。

weixin_30892037的博客 228

SimpleFOC之ESP32(二)—— 开环控制

目录注意事项一、硬件介绍1.1、原理图1.2、ESP32drive方案1.2.1、准备清单1.2.2、硬件连接1.3、SimpleFOCShield方案1.3.1、准备清单1.3.2、硬件连接二、修改底层代码三、程序演示3.1、开环速度模式3.2、开环位置模式   注意事项 1、电机的三根线可以任意接在驱动器的ABC三相上,不用区分; 2、开环控制最好选择Ω级的电机,尽量不要用mΩ级的航模电机,容易烧MOS和电机。开环控制在实际中也就启动时用用,这不是电机控制的一个常态。 3、电机控制要尽快操作,不要停留

loop222的博客 1万+

VS2019 +osg3.6.5+ earth3.2+qt5.14.2+osgQt 编译教程

用vs新建工程,稍后会在写一篇博客上分享四、结语至此,所有的编译就均已完成。

king_ink的博客 1134

如何区分Info与CoWoS封装?

这篇文章主要从Info、CoWoS封装的定义、Interposer的种类以及Info、CoWoS封装的种类三方面进行了介绍,希望读者能够有所收获

wangyubo1的博客 7938

ESP32+SimpleFOC无刷电机控制实战:从接线到调参

无刷电机与磁场定向控制(FOC)是运动控制领域的核心技术,相比传统方波驱动,FOC通过坐标变换与PID调节实现定子磁场的连续控制,让电机拥有更低噪音、更高效率和更快的动态响应,广泛应用于无人机、机器人关节和伺服系统。然而,手写FOC算法涉及Clark变换、Park变换和PWM调制,门槛较高。基于ESP32与SimpleFOC开源库,这一问题被大幅简化——ESP32凭借240MHz双核、高分辨率PWM及板载WiFi/蓝牙,配合SimpleFOC封装的底层算法,让开发者能在Arduino环境中快速搭建完整的无刷

weixin_29183637的博客 244

MTK Linux Charger驱动分析(二) - power_supply_core.c

的核心作用可以概括为:提供统一的电源管理框架;管理电源设备注册、属性访问、事件通知;封装sysfs 接口和 uevent 通知,屏蔽硬件细节;驱动开发者只需要实现,不关心底层通知和接口细节。简单来说,它是电源子系统的“大脑和中枢”,具体的电池/充电器只是“信息源”。

iTom1900 1488

arduino烧录esp32-simplefoc驱动板的操作说明

arduino烧录esp32-simplefoc驱动板的操作说明

raodapeng0123的博客 4311

VM虚拟机下,通过无线,有线两种方式连接PLC的设置方法

1,VMware软件:编辑>虚拟网络编辑器。 2.右下角:更改设置(如果可以选中“添加网络”选项,则可考虑略过此步) 3.选中VMnet0,点击桥接模式,选中你的物理机有线网卡。点击确定。 4.点击添加网络,我的添加完是VMnet2,然后选中,像上一步样,点击桥接模式,在下拉菜单中选中笔记本的【无线网卡】,然后点击确定。 5.VMware软件:虚拟机>设置。 6.点击 添加>网络...

weixin_46441715的博客 2万+

SIWAVE+ADS提取PCB走线寄生参数

本文将介绍一种很适合PCB走线提取寄生电感等参数的方法,即是通过SIWAVE将PCB走线的S参数提取出来,再通过ADS将S参数转换成电感、电容值。

sinat_15150363的博客 1765

MT6701磁编码器与SimpleFOC闭环控制实战指南

闭环控制通过实时反馈实现电机精准控制,其核心在于获取转子位置信息。磁编码器基于磁阻效应,将磁场变化转换为绝对角度信号,为FOC算法提供关键反馈。在Arduino生态中,SimpleFOC库简化了磁场定向控制的实现,结合MT6701磁编码器,可显著提升低速平稳性、抗负载扰动能力和位置精度。该方案广泛应用于智能小车、机械臂关节、云台稳定系统等场景。本文详细介绍了MT6701的I2C配置、磁铁安装要点,以及SimpleFOC的闭环调试与PID整定方法,帮助开发者快速搭建高性能闭环控制系统。

weixin_33796205的博客 201

开发simulink 以及stm32半物理仿真碰到的问题,以及处理方法,Error:External Mode Open Protocol Connect command failed(实测有用)

串口实现的,但是在测试的时候发现,这个串口可以正常发送和接收数据,但是一旦把这个串口只让其进行版物理仿真就报错。直接刷写程序是可以的,最后查到问题了。我要实现半物理仿真,就是通过matlab实现可以直接控制stm32板子,实际上是通过xcp on。然后点击simulink上的观测按钮就可以直接和stm32平台进行通讯了。3,还是使用串口3,但是重新需要设置一下com口,因为重新插拔了一下,按照这个设置方法就可以。2,重新加载ioc文件。

pvmsmfchcs的博客 1499

SimpleFOC之ESP32(五)—— 电流闭环控制Lowside

目录说明一、原理说明1.1、为什么要采样电流1.2、电流检测方式 LowsideCurrent1.3、运放电路设计二、硬件介绍2.1、原理图2.2、准备清单2.3、硬件连接三、程序演示3.1、打开示例3.2、修改代码3.3、验证上传3.4、串口发送指令3.5、观察电机运行   SimpleFOC教程目录:请点击   说明 本文教程只适配ESP32drive,注意区分电流采样模式。   一、原理说明 1.1、为什么要采样电流   FOC(Field-Oriented Control),即磁场定向控制,磁

loop222的博客 1万+

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

ESP32+SimpleFOC实现电机齿槽补偿实战

齿槽转矩是永磁电机在零速与低速区产生抖动、定位不准的核心物理扰动,源于定子开槽与永磁体间的周期性磁吸力;其补偿原理是在q轴电流指令中注入与位置相关的反向前馈量,以抵消固有脉动力矩。该技术具备显著的工程价值:提升静止精度、抑制低速爬行、增强伺服平滑性,广泛应用于机器人关节、云台稳定、精密仪器等场景。本文聚焦资源受限的ESP32平台,结合SimpleFOC框架,详解如何移植ODrive工业级抗齿槽算法,涵盖I2S同步采样、LEDC硬件死区、电角度查表优化等关键适配,并提供可复现的标定流程与参数调优方法。

weixin_31815843的博客 260

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

上一篇: SimpleFOC之ESP32(七)—— 霍尔电机
下一篇: ODrive的操作演示——控制AS5047P、霍尔电机和轮毂电机
loop222
博客等级 码龄8年 4091粉丝 61原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值