外设模块学习(4)——JGA25-370带编码器的直流减速电机
一、引言
带编码器直流减速电机是一种集动力输出与精确反馈于一体的机电装置,广泛应用于可以应用于测速小车、二轮平衡小车、竞速小车、循迹小车等领域。其核心功能是通过直流电机提供动力,经减速齿轮箱增强扭矩,并利用编码器实现转速与位置的监测和控制。本文将对这类电机进行整体的基本概述,并以JGA25-370这款微型直流减速电机为例,讲述一下带编码器的直流减速电机的控制原理。
二、基本概述
带编码器直流减速电机是一种复合型驱动装置,整合了直流电机、减速齿轮箱和编码器三个主要部分:
-
直流电机:提供旋转动力,通常采用6V、12V或24V直流电源驱动。
-
减速齿轮箱:通过齿轮组降低输出转速,同时提升扭矩,满足高负载应用需求。
-
编码器:监测电机轴的转动状态,输出位置、速度和方向信息,支持闭环控制。
该类电机以其高性价比、易于集成和精确控制的特点,成为自动化领域的首选组件,典型应用包括机器人导航、机械臂定位和工业传送带控制。
三、JGA25-370 整体概述
我们以JGA25-370-21.3K(280转/分钟)为例,这是一款常见的微型带编码器直流减速电机,直径25mm,适用于轻量级自动化项目,在两轮平衡车中应用广泛。其主要参数如下:
-
额定电压:12V DC
-
空载转速:280 RPM(减速比21.3:1)
-
额定扭矩:约1-2 kg·cm
-
编码器分辨率:11 PPR(每转11脉冲)
-
重量:约80-100g
-
接线:6根(2根电机电源,4根编码器信号:A、B相及电源、地)
该型号通过其紧凑设计和高精度反馈,适用于机器人轮驱动或精确角度控制,价格通常在20-50元,适合初学者实验和开发。
四、工作原理
带编码器直流减速电机可分为两个主要模块:电机主体(动力输出)和编码器(反馈系统)。下面,我们来逐个部分分别介绍各自的工作方式与控制原理。
4.1 电机主体
-
构成与功能:电机主体包含直流电机和减速齿轮箱。直流电机基于电磁感应原理,通过定子磁场与转子电流的相互作用产生旋转力矩。减速齿轮箱通过多级齿轮传动降低输出轴转速,同时按减速比(如21.3:1)放大扭矩。
-
工作机制:输入直流电压(例如12V)后,电机内部线圈通电,在磁场中产生洛伦兹力驱动转子旋转。高速旋转(数千RPM)经齿轮箱减速后,输出轴转速降低(如280 RPM),扭矩相应提升,适用于驱动重载或低速应用。
-
关键参数
-
电压:6-24V,决定电机运行功率。
-
转速:输出轴转速由减速比决定。
-
扭矩:与减速比成正比,满足不同负载需求。
-
-
设计特点:齿轮箱通常采用金属或高强度塑料,确保耐用性和低噪声。
-
控制原理:该电机准确来说,属于直流有刷减速电机,其控制原理和咱小时候玩具车上的小马达的控制类似,核心均在于PWM信号的生成。更简单地说,就是在可承受范围内给电机输入不同大小的电压即可控制这类电机的转速,电压越大,转速越高,反之亦然。当然,单片机控制这类电机还需要电机驱动,因为驱动这种电机一般需要DC12V左右的供电,因此单靠单片机中3.3V~5V的电压是比较难的。常用的电机驱动如TB6612、L298N等。
4.2 霍尔编码器
-
构成与功能:编码器通常为增量式霍尔效应编码器,安装于电机输出轴,包含磁性编码盘和霍尔传感器,用于检测转动状态并生成数字信号。
-
工作机制:编码盘随轴旋转,磁场变化触发霍尔传感器,输出A、B两相正交脉冲信号(分辨率如11 PPR)。通过分析脉冲计数和相位差,可确定转速、位置和旋转方向。信号通过4根线(A、B相及5V电源、地)传输至控制器(如MCU)。
-
关键参数
-
分辨率:11 PPR,单圈精度约0.03度。
-
信号类型:方波(TTL电平),便于数字电路处理。
-
供电:通常5V,与常见单片机兼容。
-
-
设计特点:霍尔编码器抗尘抗振,适合工业环境;信号线需屏蔽以防电磁干扰。
模块协同:电机主体提供动力,编码器实时反馈转动数据。控制器根据编码器信号调整PWM(脉宽调制)驱动,实现闭环控制,确保转速或位置精确。
关于编码器在前面外设模块学习中也简单介绍过其工作原理,本例中电机带有的编码器控制原理和前面所介绍的旋转编码器原理基本相同,即通过获取编码器旋转输出的计数脉冲来间接计算电机的圈数、转速以及旋转方向等,这里就不再赘述。
带编码器直流减速电机通过电机主体的高效动力输出与编码器的精确反馈,实现了动力与控制的完美结合。以JGA25-370-21.3K为例,其紧凑设计和高性价比使其成为初学者与工程师的理想选择。理解其原理(动力模块与反馈模块)有助于快速上手应用。
五、案例实践——基础速度闭环控制
简单学习带编码器的直流减速电机的工作原理后,接下来我们开始实践,上手控制这类电机转动,并利用其包含的编码器实现基本的速度闭环控制。
5.1 案例概述
基于 STM32F103C8T6 微控制器,使用寄存器开发方式实现 JGA25-370 直流减速电机的速度闭环控制,通过电机内置的 AB 双相增量式磁性霍尔编码器反馈转速,结合位置式 PID 调节 PWM 输出,实现基本稳定的速度控制。
5.2 硬件平台
-
主控芯片:STM32F103C8T6(72MHz 主频)
-
电机:JGA25-370-21.3K 直流减速电机(额定 280 RPM,带 AB 双相增量式磁性霍尔编码器,基础脉冲 11 PPR,减速比 21.3:1,四倍频后约 937 计数/圈),如下图所示。

-
编码器:内置于 JGA25-370 的霍尔编码器,支持 3.3V/5V 供电,带上拉整形电阻,PH2.0 接口,AB 相方波输出,响应频率 100kHz,22 极磁环(11 对极),如下图所示。

-
电机驱动:TB6612FNG 电机驱动模块

-
串口模块:CH340(USB 转 TTL,用于调试输出)

-
烧录工具:ST-Link V2
-
串口助手:vofa+等
5.3 接线说明
| 外设模块 | 引脚连接 (STM32F103C8T6) | 接线细节 |
|---|---|---|
| JGA25-370 编码器 | C1(A相)→ PB6 C2(B相)→ PB7 VCC → 3.3V GND → GND | 编码器 A、B相连接到 PB6 和 PB7,VCC 和 GND 连接到 STM32 的 3.3V 和 GND(支持 3.3V/5V,推荐 3.3V)。使用 PH2.0 接口和标配连接线。 |
| JGA25-370 电机 | M1, M2 → TB6612 AO1, AO2 | 电机电源 M1、M2 连接 TB6612 输出端,电压与电机匹配(6V 或 12V)。 |
| TB6612 电机驱动 | AIN1 → PB1 AIN2 → PB0 PWMA → PA3 VM → 6V/12V VCC → 5V GND → GND | PB1 和 PB0 控制电机方向,PA3 输出 PWM 信号,TB6612 VM 连接电机电源(6V/12V),VCC 连接 5V,GND 共地。 |
| CH340 串口模块 | TX → PA10 RX → PA9 VCC → 3.3V GND → GND | PA9 为串口 TX,PA10 为 RX,连接 CH340 的 RX 和 TX,波特率 115200。 |
| ST-Link V2 | SWDIO, SWCLK, GND, 3.3V | 严格对应引脚连接,为单片机提供调试和烧录接口。 |
特别注意:
-
所有外设的 GND 必须与 STM32 的 GND 连接(共地)。
-
JGA25-370 电机电源(M1、M2 通过 TB6612)需与电机额定电压匹配(6V 或 12V,推荐)。
-
编码器支持 3.3V/5V 供电,推荐使用 3.3V 与 STM32 一致,避免电平不匹配。
-
确保 TB6612 的 VM 电源与电机电压一致,VCC 使用 5V 供电。
5.4 应用逻辑
/*
* @Descripttion: JGA25-370直流减速电机速度环demo
* @Author: JaRyon
* @version: v1.0
* @Date: 2025-09-25 12:03:52
*/
#include "includes.h"
int main(void)
{
BSPInit();
printf("PID motor speed control test start...\r\n");
PID_TypeDef pid;
PID_Init(&pid, 2.1f, 0.8f, 0);
pid.SetSpeed = 140.0f;
while (1)
{
// PID 计算
float pid_output = PID_Calc(&pid, rpm_global);
// 设置电机速度
JGA25_370_SetSpeed((int32_t)pid_output);
// 串口输出
printf("%.2f,%.2f,%.2f\r\n", pid.SetSpeed, rpm_global, pid_output);
Delay_ms(20);
}
}
5.5 完整代码获取
注:本案例仅为一个简单的demo,基本实现相关功能,还有很多地方可以进行完善和优化,该案例旨在熟悉和掌握对直流减速电机的单片机控制方法以及初步体验PID控制原理。
笔者小白,能力有限,以上内容难免存在不足和纰漏,仅供参考,各位阅读时请带着批判性思维学习,遇到问题多查查。同时欢迎各位评论区批评指正。谢谢。
更多推荐



所有评论(0)