【花雕动手做】拆解 CASIC‑MOTOR ZWS37U 无刷行星减速电机

2026-08-07410
CASIC MOTOR ZWS37U‑CS‑001 无刷行星减速电机
CASIC为中国航天科工,属于工业级无刷行星减速电机,集成内置驱动+霍尔编码器,多用于航空座椅、机器人底盘、机械臂关节。

【花雕动手做】拆解 CASIC‑MOTOR ZWS37U 无刷行星减速电机图1

【花雕动手做】拆解 CASIC‑MOTOR ZWS37U 无刷行星减速电机图2

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(7)
驴友花雕
驴友花雕
作者



驴友花雕
驴友花雕
作者
八、ESP32 读取 ZWS37U‑CS‑001 正交编码器 AB 脉冲完整代码
硬件说明:该电机编码器输出A/B 两相正交脉冲,无 Z 相;编码器供电:白→5V,蓝→GND;CHA、CHB 接 ESP32。
ESP32 有硬件正交解码计数器 PCNT 外设,硬件计数,不占用 CPU,不会丢脉冲,优先使用硬件 PCNT,不要用外部中断轮询。
硬件接线

注意:电机 8 根线中,红黑黄绿是电机动力控制;编码器是独立 4 根(白、蓝、菲、棕)。
ESP32‑S3 同样支持 PCNT 外设,引脚分配逻辑一样。
完整代码(硬件 PCNT 正交解码)
[code]/*
ESP32 PCNT硬件正交计数器读取AB编码器
适配 CASIC ZWS37U‑CS‑001 减速无刷电机
硬件计数,不丢脉冲,主线程读取计数值即可
*/
#include
#include "driver/pcnt.h"
// =========配置区=========
#define PCNT_UNIT PCNT_UNIT_0
#define PCNT_CHANNEL PCNT_CHANNEL_0
#define ENC_A_PIN 18 // CHA A相
#define ENC_B_PIN 19 // CHB B相
// 编码器参数:根据你的电机码盘线数修改
// 重要:ZWS37U‑CS‑001 减速箱160rpm输出轴,注意:码盘在【电机高速端】不是减速输出轴!
// 脉冲数 = 原始电机码盘线数 ×4(四倍频正交),计数值对应高速电机轴,需要除以减速比得到输出轴转角
const int GEAR_RATIO = 30; //二级行星减速比,根据实际电机铭牌换算
// =======================
int16_t pulse_count = 0; //硬件计数器原始计数值
void pcnt_init()
{
//1. PCNT单元配置
pcnt_config_t pcnt_cfg = {
.pulse_gpio_num = ENC_A_PIN,
.ctrl_gpio_num = ENC_B_PIN,
.lctrl_mode = PCNT_MODE_REVERSE, // B相电平控制计数方向
.hctrl_mode = PCNT_MODE_KEEP,
.pos_mode = PCNT_COUNT_INC,
.neg_mode = PCNT_COUNT_DEC,
.counter_h_lim = 32767,
.counter_l_lim = -32768,
.unit = PCNT_UNIT,
.channel = PCNT_CHANNEL
};
pcnt_unit_config(&pcnt_cfg);
//2. 开启滤波器,消除机械抖动噪声,滤除<100ns脉冲干扰
pcnt_set_filter_value(PCNT_UNIT, 100);
pcnt_filter_enable(PCNT_UNIT);
//3. 清零计数器,启动
pcnt_counter_clear(PCNT_UNIT);
pcnt_counter_resume(PCNT_UNIT);
}
void setup()
{
Serial.begin(115200);
pcnt_init();
Serial.println("ESP32 PCNT正交编码器启动完成");
}
void loop()
{
//读取硬件计数器,非阻塞,不占用CPU
pcnt_get_counter_value(PCNT_UNIT, &pulse_count);
Serial.printf("原始脉冲:%6d | 输出轴圈数:%.3f\r\n",
pulse_count,
(float)pulse_count / (GEAR_RATIO * 4 * 11) //11是示例码盘线数,请替换为实际码盘线数
);
delay(50);
}[/code]
非常关键参数提醒(针对 ZWS37U‑CS‑001 电机)
码盘安装在无刷电机高速转子侧(减速箱输入侧),不是输出轴!
读到的pulse_count 是高速电机轴脉冲,不是减速输出轴脉冲。
四倍频正交:A/B 正交读取,每 1 个码盘刻度产生 4 个脉冲。
输出轴转 1 圈 = 高速电机轴转动 GEAR_RATIO 圈。
商家没有公开码盘线数!你需要实际标定:手动转动输出轴完整一圈,观察 Serial 打印脉冲总数,得到真实总脉冲每圈。
标定实操步骤
将代码上传,打开串口监视器;
手动用手转动电机输出轴,完整转 1 圈;
记下原始脉冲的变化差值,记做 PULSE_PER_OUTPUT_REV,之后直接使用这个数值。
示例标定:假设输出轴转一圈,脉冲变化为 1320,则
[code]float output_rev = (float)pulse_count / 1320.0f; //直接得到输出轴圈数[/code]
拓展:速度计算(定时采样,计算 RPM 转速)
不能用 delay 算速度;用micros()做时间戳,固定时间间隔读取脉冲差。
[code]// 全局变量
int16_t last_pulse = 0;
uint32_t last_time_us = 0;
float get_output_rpm(void)
{
int16_t cur_pulse;
uint32_t cur_us = micros();
pcnt_get_counter_value(PCNT_UNIT, &cur_pulse);
int delta_pulse = cur_pulse - last_pulse;
uint32_t delta_us = cur_us - last_time_us;
last_pulse = cur_pulse;
last_time_us = cur_us;
// delta_us单位微秒 → min=60*1e6 us
// PULSE_PER_OUTPUT_REV:输出轴每一转总脉冲数(你手动标定出来)
float rpm = (float)delta_pulse * 60.0f * 1000000.0f / ((float)delta_us * 1320.0f);
return rpm;
}
[/code]
放到 loop 中调用,即可得到减速输出轴实时转速 RPM,用于 PID 速度闭环。
硬件避坑清单
编码器 GND(蓝线)必须与 ESP32 GND、电机功率负极黑线共地,否则读数乱跳。
不要用普通外部中断 attachInterrupt 读取 AB 相,高速旋转时会丢失脉冲;PCNT 硬件计数器才是正确方案。
ESP32‑S3 PCNT 用法完全一样,注意部分引脚是 SPI/FLASH 复用脚,不要用 GPIO11‑17 (S3 flash 脚)。
电机驱动的大电流会带来干扰;编码器信号线建议用双绞线,远离电机电源线,必要时编码器 GND 串 100Ω 电阻或者增加磁珠。
PCNT 计数器范围:‑32768 ~ +32767,电机长时间转动会溢出;机器人项目需要在程序层做溢出补偿。
驴友花雕
驴友花雕
作者
七、Arduino‑ESP32 最小控制示例片段
[code]#define DIR_PIN 22 //黄色方向线
#define PWM_PIN 23 //绿色调速线
// 注意:PWM频率设置 >=5000Hz
// 该电机逻辑特殊:0%占空比全速,80%占空比低速
void setup() {
pinMode(DIR_PIN,INPUT); //INPUT=悬空,CW;OUTPUT_LOW=CCW
ledcSetup(0,5000,10); //通道0,5kHz,10bit分辨率 0‑1023
ledcAttachPin(PWM_PIN,0);
}
//全速运行
void motor_full_speed(){
ledcWrite(0,0); //0 对应0%占空比,满速
pinMode(DIR_PIN,INPUT); //CW方向
}
//低速23rpm附近,80%占空比 = 819(10bit 1023*0.8)
void motor_low_speed(){
ledcWrite(0, 819);
}
//停机!切换方向前必须调用
void motor_stop(){
ledcWrite(0, 820); //>80%,停机
delay(100);
}[/code]


驴友花雕
驴友花雕
作者
六、优缺点
1、优点
航天科工工业品质,金属行星减速箱,寿命长,抖动小,扭矩大,体积紧凑 37mm 直径。
驱动板内置,大大简化硬件,单片机直接 TTL 信号控制。
自带高精度霍尔编码器,非常适合机器人小车(麦克纳姆轮底盘)、小型机械臂关节、AGV。
14.8V 正好匹配 4 串 18650 锂电池机器人供电系统。
2、缺点
体积比普通有刷减速电机大;重量较重。
控制逻辑比简单有刷电机复杂,需要处理 EN、DIR、PWM,读取编码器 AB 相;不可以直接接电源硬转。
停产老型号,市面大多是拆机二手件,无全新现货。
3、适合项目
麦克纳姆轮小车、差分轮机器人底盘(ESP32 / 行空板 K10 闭环 PID 调速)
小型机械臂关节执行器
自动化平台、往复执行机构
机器人竞赛 VEX、RoboMaster 小型机构
4、注意事项
额定14.8V,不要直接上 24V,会烧毁内置驱动板,上限不超过 18V。
禁止堵转,堵转电流会远大于 1.6A,容易烧内置驱动。
编码器信号线不要和动力线捆在一起,避免干扰测速。


驴友花雕
驴友花雕
作者
五、电气引脚功能(排线)
电源:直流 14.8V 供电正负极
控制信号:PWM 调速引脚、正反转 DIR 方向引脚、使能 EN 引脚
编码器 A/B 相、电源 GND:用于读取转速、位置,做 PID 闭环调速。
✅ 特点:单电源供电,直接 TTL 电平控制,不用外接无刷电调。支持 PWM 调速,支持正反转;自带编码器直接闭环控制。


驴友花雕
驴友花雕
作者
四、结构拆解
前端:金属行星齿轮减速箱,金属行星齿轮,负载能力强,抗冲击,输出轴 D‑型轴,方便固定联轴器 / 轮子。
中段:三相无刷电机本体,内置无刷驱动,不需要外置 BLDC 电调;供电 + PWM 调速、方向信号直接给电机排线。
尾部:集成霍尔编码器模块,编码器独立排线,获取转轴位置、测速,闭环速度 / 位置控制。



驴友花雕
驴友花雕
作者
这是内置驱动板一体化行星减速 BLDC 电机,不需要外接三相无刷电调;给主电源 + 方向 + PWM 信号即可运转,尾部集成正交码盘编码器,适合机器人底盘、全向轮小车、AGV 小车项目。
一、铭牌核心参数

二、8P 引线定义(4 根功率控制 + 4 根编码器反馈)

- 没有更多了 -