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



SimpleFOC教程目录:请点击

一、增量式编码器介绍

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

二、ESP32drive控制霍尔电机

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技术交流群: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和力矩反馈

<think>嗯,用户现在想了解AB编码器ABZ编码器的区别和应用。之前他们问过关于嵌入式开发中的“cannot evaluate”错误,可能是在调试编码器时遇到了问题,现在想更深入了解编码器本身。 首先,我需要确认用户的需求。他们可能是在开发中使用编码器时遇到了问题,或者在选择编码器类型时需要指导。需要明确AB和ABZ编码器的结构、工作原理、区别以及典型应用场景。 AB编码器是最常见的增量式编码器,输出两路正交信号,用于检测位置和方向。而ABZ编码器多了一个Z相(零位)信号,用于提供参考点。用户可能需要知道何时选择哪一种,比如是否需要归零功能。 接下来,要解释基本结构,包括信号输出和波形特点。可能还需要比较它们的优缺点,比如ABZ在定位上的优势,但成本稍高。应用场景方面,AB适用于连续运动控制,而ABZ适用于需要绝对位置的场合,比如机床回零。 还需要考虑硬件连接和软件处理的差异,比如Z相的中断处理。用户可能在代码中处理Z相信号时遇到问题,比如中断冲突,这在之前的对话中有提到,可能需要给出建议。 另外,用户可能关心选型指南,比如根据应用需求、成本、安装环境等因素选择。比如机器人关节可能需要ABZ来确保每次启动时的准确位置,而电机调速可能只需要AB。 最后,确保回答结构清晰,分点说明,使用例子帮助理解,并且结合之前的解决方案,比如中断优先级设置,可能对处理Z相信号有帮助。</think>--- ### AB编码器ABZ编码器详解 --- #### 一、基本结构对比 | 类型 | 信号输出 | 典型波形示意图 | |------------|------------------------------|-------------------------| | **AB编码器** | 两路正交脉冲(A相/B相) | ![AB波形](https://example.com/ab_wave.png) | | **ABZ编码器** | 三路信号(A相/B相/Z相) | ![ABZ波形](https://example.com/abz_wave.png) | **关键差异**: - **Z相功能**:ABZ编码器每旋转一周输出一个零位脉冲(Z相),用于绝对位置校准 --- #### 二、工作原理 1. **AB编码器**: - **方向判断**:通过A/B相位的90°偏移实现 $$ \text{方向} = \begin{cases} +1 & A\text{相上升沿时}B\text{相为低} \\ -1 & A\text{相上升沿时}B\text{相为高} \end{cases} $$ - **位置计算**: $$ \Delta\theta = \frac{4 \times \text{脉冲数}}{PPR} \quad (\text{四倍频模式下}) $$ (PPR:每转脉冲数) 2. **ABZ编码器**: - **绝对定位**:利用Z相建立原点坐标系 ```c // 典型初始化流程 while(!Z_SIGNAL); // 等待Z相脉冲 encoder.zero_point = 0; // 归零位置寄存器 ``` - **误差补偿**:周期性消除累积误差 --- #### 三、典型应用场景 | 应用领域 | AB编码器适用场景 | ABZ编码器必要场景 | |----------------|-----------------------------|---------------------------| | 工业机器人 | 关节速度控制 | 末端重复定位(±0.1mm精度)| | CNC机床 | 进给轴速度反馈 | 刀具自动换刀定位 | | 无人机云台 | 姿态实时调整 | 开机自检归零 | | 电梯控制 | 轿厢运行监控 | 平层精准停靠 | --- #### 四、硬件接口差异 1. **AB编码器接口**: ```c // STM32编码器模式配置(TIMx) TIM_Encoder_InitTypeDef sConfig = { .EncoderMode = TIM_ENCODERMODE_TI12, // 双通道模式 .IC1Polarity = TIM_ICPOLARITY_RISING, .IC2Polarity = TIM_ICPOLARITY_RISING }; ``` 2. **ABZ编码器扩展处理**: ```c // Z相中断服务例程 void EXTI0_IRQHandler(void) { if(__HAL_GPIO_EXTI_GET_IT(GPIO_PIN_0)) { encoder.position = 0; // 绝对位置归零 __HAL_GPIO_EXTI_CLEAR_IT(GPIO_PIN_0); } } ``` --- #### 五、选型指南 1. **必须选择ABZ的情况**: - 系统需要断电位置记忆功能 - 要求消除长期运行累积误差 - 存在机械回程间隙需补偿(如丝杠传动) 2. **可仅用AB的情况**: - 纯速度控制应用(如风机调速) - 相对位置测量系统 - 低成本消费电子产品 --- #### 六、信号质量验证 使用示波器检测关键参数: 1. **正交性验证**: $$ \Delta t = \frac{T}{4} \quad (T为脉冲周期) $$ (A/B相上升沿应有1/4周期的时差) 2. **Z相有效性**: - 每转仅出现1次脉冲 - 脉冲宽度应大于控制器中断响应时间 $$ t_{width} > t_{intr\_response} + t_{software\_overhead} $$ --- #### 七、常见问题解决方案 **问题现象**:ABZ编码器Z相无法触发归零 **排查步骤**: 1. 检查Z相电压匹配:3.3V TTL电平需串联1kΩ电阻(5V编码器接STM32时) 2. 验证中断配置: ```c // 正确配置示例(STM32CubeMX) GPIO_InitStruct.Pull = GPIO_NOPULL; // 禁用内部上拉 GPIO_InitStruct.Speed = GPIO_SPEED_HIGH; // 高速模式 HAL_NVIC_SetPriority(EXTI0_IRQn, 0, 0); // 最高优先级 ``` 3. 检测机械安装:Z相应对齐机械零点 --- 通过理解AB/ABZ编码器的特性差异,开发者可根据具体应用需求选择最合适的传感器类型,并设计对应的软硬件解决方案。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值