1. 项目概述:定时器采集编码器信号的核心价值
在电机控制、位置检测和速度测量等嵌入式应用中,旋转编码器是最常用的传感器之一。而STM32系列MCU内置的定时器模块,其编码器接口模式(Encoder Interface Mode)为这类应用提供了硬件级的完美支持。这个实验点的核心在于利用TIM3定时器的编码器功能,实时捕获编码器脉冲并准确计算位置和速度信息。
相比软件中断计数方案,硬件编码器接口有三大不可替代的优势:首先,计数过程完全由硬件自动完成,不占用CPU资源;其次,能够识别旋转方向(通过双通道正交信号);最重要的是,在高速旋转时不会丢失脉冲。以常见的1024线编码器为例,在3000RPM转速下,单相脉冲频率就高达51.2kHz,软件方案很难可靠捕获。
2. 硬件设计关键点解析
2.1 编码器信号接入方案
增量式编码器通常输出A、B两相正交信号(部分还有Z相零位信号)。以欧姆龙E6B2-CWZ6C为例,其接线方式需要特别注意:
- A/B相建议接入定时器的CH1/CH2(如TIM3的PA6/PA7)
- 信号线需加RC滤波(典型值:R=100Ω,C=100nF)
- 长距离传输时应采用双绞线并做好屏蔽
关键提示:编码器电源地与MCU数字地之间建议用0Ω电阻或磁珠隔离,避免引入高频干扰。
2.2 定时器配置参数计算
TIM3工作在编码器模式时,关键参数设置需要根据编码器规格确定:
-
计数方向:
- Encoder Mode TI1:仅在TI1边沿计数
- Encoder Mode TI2:仅在TI2边沿计数
- Encoder Mode TI1 and TI2:双沿计数(4倍频)
-
自动重装载值ARR:
应设置为最大计数值(如16位定时器设为65535),避免溢出导致位置计算错误。 -
滤波器设置:
根据信号质量配置ICx_FILTER值,典型设置:c复制
TIM_EncoderInterfaceConfig(TIM3, TIM_EncoderMode_TI12, TIM_ICPolarity_Rising, TI
