qqzgq 发表于 2025-5-16 15:26:01

用PWM控制电机转速,实现舵机功能,如何采集到电机的负载电流

请问给为大伸们,现在用STC8H1K08T做舵机控制,现在控制没有问题,想做电流过载保护,但是因为PWM控制的原因,不能随时采集电流,想知道基于STC8H1K08T这颗芯片的电流采集方法。

国芯人工智能 发表于 2025-5-16 15:28:00

针对基于STC8H1K08T的舵机控制系统电流采集需求,结合PWM控制特性,建议采用以下专业解决方案:

一、技术挑战分析
1. PWM控制与电流采样的时序冲突
在PWM低电平期间,H桥处于关断状态,电流路径断开
传统连续采样会捕获到零电流或噪声信号
高电平期间电流存在瞬态波动,直接采样易产生误差

二、硬件设计优化方案
1. 电流采样拓扑选择
   (1) 低侧采样方案
在H桥下端串联采样电阻(推荐值5-50mΩ)
优点:共地设计,电路简单
注意事项:需补偿MOSFET导通压降影响

   (2) 高侧差分采样方案
采用INA199类差分放大器
优点:可检测真实负载电流
电路复杂度:需配置精密电阻网络

2. 信号调理电路设计
二阶有源低通滤波器(截止频率1-2kHz)
增益设置:确保最大电流对应ADC量程的80%
共模抑制:添加TVS管和RC滤波网络

三、时序同步采集策略
1. PWM与ADC触发联动
利用芯片的PWM中断触发ADC转换
设置ADC采样点在PWM上升沿后延时20-50μs(具体取决于电机电气时间常数)
推荐使用Timer2自动重装载模式生成同步信号

2. 多周期滑动窗口采样
在连续5-10个PWM周期内采集有效电流值
采用中值滤波+移动平均复合算法
存储深度建议8-16个样本点

四、STC8H1K08T资源配置
1. ADC模块配置要点
时钟设置:建议ADC时钟=SYSCLK/16
采样时间:设置为239.5个ADC时钟周期
通道选择:优先使用P1.0-P1.3高精度通道

2. 关键寄存器配置示例:
C
P1ASF = 0x01;      // 使能P1.0模拟功能
ADCRES = 0;         
ADCCONTR = 0x80;    // 开启ADC电源
CLKDIV |= 0x20;   // 设置ADC时钟分频

五、过载保护实现方案
1. 动态阈值算法
基准值 = 空载电流 × 安全系数(推荐1.2-1.5)
过载判定条件:Iavg > 基准值且持续3-5个PWM周期

2. 分级保护机制
Level1(110%负载):降低PWM占空比
Level2(150%负载):软关断PWM输出
Level3(200%负载):硬件强制关断

六、抗干扰设计要点
1. PCB布局规范
采样电阻采用开尔文连接方式
模拟地与数字地单点连接
信号走线远离PWM高频路径

2. 软件滤波增强
实施递推平均滤波:y(n) = (x(n)+x(n-1)+x(n-2))/3
异常值剔除:丢弃超出±3σ的采样点
温度补偿:根据内置温度传感器修正基准值

七、验证与调试方法
1. 静态校准流程
使用精密可调负载验证0.5A-3A量程
记录ADC原始值建立查找表
计算非线性误差补偿系数

2. 动态测试方案
使用函数发生器模拟堵转工况
测试保护响应时间(目标

[本文内容由国芯人工智能辅助生成,仅供参考]

qqzgq 发表于 2025-5-16 15:33:58

因为只有一个ADC控制器,需要检测位置、温度、电流,现在的是三路轮回检测。
因为pwm输出控制,在没有有输出时,检测的电流是无效的,所以设置了PWM溢出中断,在中断中启动ADC并且置位输出标志,同时启动PWM的对应通道的捕获比较中断,该中断中清零输出标志。从而确保ADC有效。但是不是每次都进PWM溢出中断和捕获比较中断,不知道什么原因

qqzgq 发表于 2025-5-16 16:02:42

国芯人工智能 发表于 2025-5-16 15:28
针对基于STC8H1K08T的舵机控制系统电流采集需求,结合PWM控制特性,建议采用以下专业解决方案:

一、技术 ...

1、硬件部分我采用的是低侧采样方案,请问如何补偿MOSFET的导通影响?
2、信号调理电路能给个案例吗
3、时序同步,我用的是PWM溢出中断,这颗芯片有上升沿中断吗?我用溢出中断的时候,发现经常就收不到这个中断了,是因为没有pwm输出的时候,就没有溢出中断了,是不是?

DebugLab 发表于 2025-5-16 18:49:16

检测电流需要外接运放或专用芯片(如INA139)配合小阻值电阻
可以用DMA ADC自动采样

王昱顺 发表于 2025-5-16 19:11:31

qqzgq 发表于 2025-5-16 15:33
因为只有一个ADC控制器,需要检测位置、温度、电流,现在的是三路轮回检测。
因为pwm输出控制,在没有有输 ...

因为舵机的过载保护并不需要那么精致,可以直接使用软件进行保护
具体思路为:检测当前电机转速低于某个阈值(通过计算位置传感器两次移动位置实现),判断当前占空比输出是否高于某个值,高于则认为堵转,此时计入一次堵转计数,然后延时一点点时间,再判断是否堵转,重复计数直到超过20次左右(堵转后的延迟生效时间,用于避开启动时的误判),就进入堵转保护,直接将占空比降低到某个安全值
主要原理是:堵转是力量没有输出负载的大,被迫造成速度降低,所以判断速度低条件,同时因为闭环问题,输出会持续走高,此时就可以通过两个条件来判断堵转

王昱顺 发表于 2025-5-16 19:13:09

qqzgq 发表于 2025-5-16 16:02
1、硬件部分我采用的是低侧采样方案,请问如何补偿MOSFET的导通影响?
2、信号调理电路能给个案例吗
3、 ...

也可以不用补偿导通影响,直接以比pwm还高的速率,用dma采样后,再做平均值就可以拿到电流了。
亦或者是直接在采样输入上加入rc滤波电路,也可获得平滑的电流adc值

qqzgq 发表于 2025-5-19 16:34:01

王昱顺 发表于 2025-5-16 19:11
因为舵机的过载保护并不需要那么精致,可以直接使用软件进行保护
具体思路为:检测当前电机转速低于某个 ...

你好,要实现舵机的控制控制,再一动不动的情况下负载越大,输出的扭矩越大,所以没法根据转动角度量进行判断

qqzgq 发表于 2025-5-19 16:35:01

王昱顺 发表于 2025-5-16 19:13
也可以不用补偿导通影响,直接以比pwm还高的速率,用dma采样后,再做平均值就可以拿到电流了。
亦或者是 ...

不同的PWM输出都有可能,占空比比较大的时候,还可以,占空比小,可测量的范围也小

王昱顺 发表于 2025-5-19 16:44:42

qqzgq 发表于 2025-5-19 16:35
不同的PWM输出都有可能,占空比比较大的时候,还可以,占空比小,可测量的范围也小 ...

我说的是高采样率直接取平均的做法,并不会受到PWM频率和占空比的影响,无需对齐PWM周期
页: [1] 2
查看完整版本: 用PWM控制电机转速,实现舵机功能,如何采集到电机的负载电流