从旋钮到闭环定位:应广单片机PFS173读取编码器并控制直流电机

整理编辑:逐高电子技术开发部 / 日期:2026-9-10
PFS173 · 编码器读取 · 直流电机位置控制

PFS173可以用两个普通数字输入读取增量式旋转编码器的A/B相信号,并把计数结果用于直流电机的位置闭环。对于低速、小惯量的定位机构,PFS173配合H桥驱动器、编码器和原点开关,就能完成“设定位置、转动到位、误差范围内停止”的基本控制流程。

PFS173读取旋转编码器并通过H桥控制直流减速电机的原创模块主视觉

图1:PFS173接收编码器A/B相输入,输出方向和PWM,经H桥驱动直流电机,再由编码器返回位置反馈。

更新说明,2026年9月:PFS173适合用作编码器和电机控制教学案例,但 Free PDK 已将PFS173标注为停产型号。新设计应先核对供货,再评估PFS123或PFS123B;PFS173的3KW程序空间、256字节RAM、18个IO、定时器与PWM资源,仍足以支撑本文所述的基础实现。

文章目录

PFS173读取旋转编码器的结论是什么?

PFS173读取旋转编码器的可靠方法是保存A/B两相的前后状态,只对合法的四相跳变执行加计数或减计数。PFS173不应只读取某一路引脚的高低电平,也不应依赖长延时消抖;这两种做法在旋钮速度提高或电机噪声增大后,容易产生丢计数和反向误计数。

增量式编码器通常输出A相与B相两路相差90度的方波。顺时针与逆时针的差别,不在于某个引脚是高还是低,而在于A/B状态变化的先后顺序。PFS173识别顺序后,把当前位置保存为一个有符号计数值,就得到了位置反馈。

PFS173编码器控制方案适合哪些应用?

PFS173编码器控制方案适合低速、低成本、直流供电的小型机构,例如电动旋钮、滑轨、阀门演示装置、自动百叶窗、轻载拨杆和拆机直流电机再利用项目。PFS173不适合直接承担高速伺服、高精度工业编码器或安全相关运动控制;这些场景需要更快的计数外设、可靠的故障诊断和独立的安全设计。

如果机构只需要读取人的旋钮动作,PFS173只接编码器即可。如果机构需要转到指定位置,PFS173还需要读取电机轴编码器、输出PWM、控制H桥方向,并设置原点开关或机械限位。

增量式编码器的A/B相是如何判断方向的?

增量式旋转编码器在一个完整机械周期内,会依次出现00 → 01 → 11 → 10 → 00或相反的状态序列。一个序列代表正转,另一个序列代表反转。PFS173通过比较“上一次AB状态”和“本次AB状态”判断方向。

上一次AB状态 当前AB状态 处理建议
合法相邻状态 下一个合法相邻状态 按方向加1或减1
状态保持不变 状态保持不变 不计数
非相邻状态,例如00直接跳到11 同时跳变或受到干扰 丢弃该次变化

四状态解码可以减少机械抖动和电磁干扰对位置计数的影响。若编码器每个机械刻度产生4次合法边沿,程序可以使用4倍频计数获得更高分辨率;若应用只关心旋钮刻度,则每积累4次有效变化再更新一次应用层数值。

PFS173读取编码器的最小接线是什么?

PFS173读取普通机械编码器至少需要两个数字输入、两路上拉和公共地。编码器A相、B相连接到两个PFS173输入IO,编码器公共端接GND;A相和B相各通过约10kΩ电阻上拉到逻辑电源。

编码器A相 ───── PFS173输入IO_A
编码器B相 ───── PFS173输入IO_B
编码器公共端 ── GND

IO_A ── 10kΩ ── VDD
IO_B ── 10kΩ ── VDD

低速手动旋钮可先用这一最小电路验证逻辑。电机编码器或长线编码器还应增加电源去耦、合理接地、ESD保护和线缆隔离。电机线与编码器线并行过长时,PWM换向噪声可能被误识别为编码器边沿。

PFS173编码器程序应该怎样写?

PFS173编码器程序应把上一次A/B状态与当前A/B状态组合为4位索引,再查表决定计数变化。查表法逻辑短、容易测试,也方便把非法跳变统一映射为0。

int8_t encoder_delta(uint8_t old_ab, uint8_t new_ab)
{
    uint8_t transition = (old_ab << 2) | new_ab;
    return transition_table[transition];
}

void encoder_update(void)
{
    uint8_t new_ab = read_encoder_ab();
    position += encoder_delta(last_ab, new_ab);
    last_ab = new_ab;
}

PFS173可以用轮询或中断更新编码器状态。低速人机旋钮可采用固定周期轮询;如果编码器连接在电机上,采样周期必须短于最短有效边沿间隔。对于速度更高的应用,应优先使用边沿中断或改用带专用编码器接口的MCU。

PFS173如何把编码器位置输出给外部设备?

PFS173编码器工程可采用“计数脉冲+方向”或SPI读取位置两种形式。选择哪一种取决于外部主控是否允许漏脉冲,以及是否需要随时读取完整位置。

输出方式 输出内容 优点 局限 适合场景
计数脉冲+方向 每个位移输出一个脉冲,方向脚标识正反转 接线少、外部逻辑简单 外部设备漏掉脉冲会失步 灯光调节、菜单旋钮、低速控制
SPI读取位置 主控读取PFS173保存的完整位置计数 可定期校验,避免单次漏脉冲影响 需要通信时序 多模块控制、位置显示、闭环系统

如果主控必须保证当前位置一致,应选择SPI读取位置,并在开机回零后把位置计数与机械原点绑定。计数脉冲+方向更适合作为简单输入设备接口。

PFS173如何控制直流电机的位置?

PFS173控制直流电机位置的基本方法是:编码器给出当前位置,控制程序计算目标位置与当前位置的差值,PFS173再输出方向和PWM给H桥驱动器。误差为正时电机向一个方向转动,误差为负时电机反向,误差进入死区后停止。

PFS173读取A/B相编码器并经H桥使用PWM控制直流电机位置的原创闭环示意图

图2:PFS173先识别A/B相的合法状态变化,再根据当前位置与目标位置的误差控制H桥和直流电机。

目标位置 → 位置误差计算 → PFS173方向与PWM输出
编码器反馈 ← 直流电机 ← H桥电机驱动器

原始开源案例使用MAX14870驱动直流电机,并在PFS173编码器读取逻辑基础上增加电机控制环路。MAX14870类H桥驱动器把电机电流与PFS173逻辑IO隔开,PFS173只负责方向、PWM和位置判断。

PFS173位置控制先用P控制还是直接用PID?

PFS173位置控制建议先用P控制,而不是一开始就加入完整PID。P控制仅按位置误差调整PWM,足以验证编码器方向、电机方向、最小驱动占空比和停止死区是否正确。

误差 = 目标位置 - 当前位置
PWM = abs(误差) × Kp

当误差较大时,PFS173输出较高PWM;接近目标时,PFS173降低PWM。实际程序还应限制PWM最大值,并设置最小有效PWM,避免小占空比无法克服电机静摩擦。

现象 优先处理方法
电机靠近目标后不再移动 提高最小有效PWM,或减小停止死区
电机超过目标后反复来回摆动 降低Kp,必要时加入少量D项
电机始终停在目标一侧 检查死区、编码器比例和机械摩擦
电机转向与目标相反 交换电机方向逻辑或反转编码器计数符号
电机堵转仍持续输出 加入超时、过流或“位置不变化”保护
调试顺序:对小型低速定位机构,P控制加最小PWM、最大PWM和停止死区通常更容易调试。只有在P控制已调通、仍存在持续偏差时,才应考虑积分项。

PFS173编码器电机控制的推荐程序流程

初始化时钟、编码器IO、PWM、H桥控制IO与原点开关;
读取初始AB状态;
执行回零,确认机械原点;
当前位置 = 0;

循环执行:
    更新A/B状态并修正当前位置;
    接收或读取新的目标位置;
    误差 = 目标位置 - 当前位置;

    若误差处于停止死区:
        停止电机;
    否则:
        设置H桥方向;
        由误差计算PWM;
        限制PWM的最小值和最大值;
        输出PWM;

    检查原点、超时、堵转和通信异常;

位置闭环调试时,应先断开机械负载,确认编码器计数与转向,再连接H桥,最后接入实际机构。直接在完整机械系统上调PID,通常会把接线、方向和算法问题混在一起。

PFS173编码器项目最常见的五个问题

旋钮转一格,位置跳两格或四格

这是计数倍率与应用层刻度不一致。先记录编码器转一格实际出现多少次合法状态变化,再决定使用1倍频、2倍频还是4倍频。

电机启动后编码器计数乱跳

这是电机噪声、接地回流或长线耦合造成的概率较高。应先用示波器或逻辑分析仪观察A/B相,再缩短编码器线、改善去耦、分离电机线与信号线,并检查H桥换向时的电源压降。

上电后当前位置不可信

增量式编码器无法自己知道真实机械位置。PFS173电机控制器应增加原点开关或限位开关,在启动时回零,再将位置计数清零。

目标位置附近反复抖动

目标附近抖动通常说明Kp过高、死区过小,或机械回差明显。先降低Kp,再扩大停止死区;如果电机惯量较大,再考虑加入少量D项。

电机卡住时持续加电

位置闭环不能只依赖目标误差。PFS173电机控制器应检测“PWM已输出但位置在规定时间内没有变化”的情况,并停止H桥输出,避免电机和驱动器长时间过热。

更快定位问题的检查顺序

  • 先观察编码器A/B相是否有稳定的相位差;
  • 再确认顺时针、逆时针对应的计数正负方向;
  • 然后在不接机械负载时测试H桥方向与PWM;
  • 最后接入实际负载,调节Kp、最小PWM与停止死区。

PFS173编码器与电机控制的选型边界

如果项目是教学、DIY、低速定位或拆机电机再利用,PFS173案例能清楚展示编码器解码、PWM调速和位置闭环的基本方法。如果项目需要长期量产,应先确认PFS173供货状态;Free PDK的芯片页面将PFS173标注为停产,并指出PFS123是潜在替代型号。PFS123/PFS123B在官方产品目录中具有3KW程序空间、256字节RAM、最多18个IO和PWM资源,但替换前仍应逐项核对封装、引脚、工具链和代码选项。

安全边界:本文方案用于低压、小功率、非安全关键的直流电机项目。涉及门锁、升降、夹持、高温或可能造成人身伤害的机构时,应加入硬件急停、独立限位、过流保护和失效保护,不能只依赖MCU程序。

常见问题

PFS173能否直接驱动直流电机?

不能。PFS173只能输出逻辑电平和PWM控制信号,直流电机必须通过MAX14870等H桥电机驱动器、MOSFET驱动电路或成品驱动模块供电。

PFS173能否读取绝对值编码器?

可以,但取决于绝对值编码器的输出协议。本文讲的是A/B两相增量编码器;若编码器使用SSI、SPI、I²C或专有串行协议,PFS173需要按相应协议读取,并评估时序与程序空间。

没有原点开关能否做位置控制?

可以做相对位置控制,但无法保证断电重启后的绝对机械位置正确。需要稳定绝对位置时,原点开关或绝对值编码器不可省略。

PFS173的P控制参数从哪里开始?

先使用较小Kp、较大的停止死区和安全的PWM上限。确认电机方向和编码器方向正确后,再逐步提高Kp;出现明显过冲就降低Kp,而不是立刻加入完整PID。

参考资料

应广单片机技术资料

  • 台湾应广单片机官网
  • 应广单片机例程
  • 应广单片机编程指南
  • 应广单片机定时器
  • 技术开发工具
  • 应广单片机IDE&仿真器
  • 应广单片机烧录器
  • 代码生成器
应广单片机PMS120B ADC采样值偏低?输出阻抗与RC滤波应用技术 - 逐高电子

应广单片机PMS120B ADC采样值偏低?输出阻抗与RC滤波应用技术 - 逐高电子


AI小家电一定要用32位MCU吗?应广PMS120B风扇控制方案 - 逐高电子

AI小家电一定要用32位MCU吗?应广PMS120B风扇控制方案 - 逐高电子


小家电主控如何兼顾成本、采样与驱动?应广单片机 PMS120B 8位OTP单片机选型解析 | 逐高电子

小家电主控如何兼顾成本、采样与驱动?应广单片机 PMS120B 8位OTP单片机选型解析 | 逐高电子


应广单片机PFS173电容触摸耳机控制面板:原理、硬件与低功耗设计 | 逐高电子

应广单片机PFS173电容触摸耳机控制面板:原理、硬件与低功耗设计 | 逐高电子


应广单片机PUD310选型指南:8位MCU值不值得用?从USB PD快充芯片看应广实力,完全静态以 OTP 为程序基础的 CMOS 8-bit 微处理器

应广单片机PUD310选型指南:8位MCU值不值得用?从USB PD快充芯片看应广实力,完全静态以 OTP 为程序基础的 CMOS 8-bit 微处理器


3美分芯片的逆袭:应广单片机 PMS150C 驱动300颗LED自行车灯 + 完整入门教程

3美分芯片的逆袭:应广单片机 PMS150C 驱动300颗LED自行车灯 + 完整入门教程


应广单片机比较器测电压代码详解:不用ADC检测VDD电池低压(PMS150C/PFS154)

应广单片机比较器测电压代码详解:不用ADC检测VDD电池低压(PMS150C/PFS154)


5S-P-005 应广烧录器使用指南:通用型单片机编程器 | 自动检测封装引脚 | PADAUK

5S-P-005 应广烧录器使用指南:通用型单片机编程器 | 自动检测封装引脚 | PADAUK


应广单片机PMS150C温控PWM风扇控制器开发案例:电路、BOM、代码与量产参数|逐高电子

应广单片机PMS150C温控PWM风扇控制器开发案例:电路、BOM、代码与量产参数|逐高电子


应广单片机OTP能不能反复烧?PMS150C/PFS154烧录区别与量产避坑指南

应广单片机OTP能不能反复烧?PMS150C/PFS154烧录区别与量产避坑指南


PMD040B 24位称重ADC内置温度传感器_应广科技授权代理商_逐高电子

PMD040B 24位称重ADC内置温度传感器_应广科技授权代理商_逐高电子


应广PADAUK单片机Mini-C IDE搭建与点灯实战 | 从零到LED闪烁附OTP避坑

应广PADAUK单片机Mini-C IDE搭建与点灯实战 | 从零到LED闪烁附OTP避坑


PMD040B体重秤完整开发案例:硬件设计/固件代码/产线校准_量产级24位ADC低功耗方案

PMD040B体重秤完整开发案例:硬件设计/固件代码/产线校准_量产级24位ADC低功耗方案


应广单片机程序可以不加看门狗吗?3种情况决定关闭还是开启WDT,逐高电子方案支持

应广单片机程序可以不加看门狗吗?3种情况决定关闭还是开启WDT,逐高电子方案支持


应广单片机采集数据总“飘”?5个设置技巧,从根源解决问题 | 逐高电子技术分享

应广单片机采集数据总“飘”?5个设置技巧,从根源解决问题 | 逐高电子技术分享


开发实力

专业资深的软硬件开发工程师团队,熟悉行业客户产品硬件技术平台解决方案

全球渠道

为客户提供高性价比的产品和服务,满足客户及时快速的电子生产制造需求

品质保证

专业的测试保证团队,保证每批方案的稳定性,兼容性,和抗干扰性

售后服务

专业的技术服务团队,24小时为客户提供各种软硬件的技术支持和售后服务

服务热线

0755-88364040
18902464556

义隆代理

烧录开发

技术支持

申请样品

扫描微信二维码