找回密码
 立即注册
查看: 239|回复: 10

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

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2025-05-19 16:34:01

5

主题

21

回帖

115

积分

注册会员

积分
115
发表于 2025-5-16 15:26:01 | 显示全部楼层 |阅读模式
请问给为大伸们,现在用STC8H1K08T做舵机控制,现在控制没有问题,想做电流过载保护,但是因为PWM控制的原因,不能随时采集电流,想知道基于STC8H1K08T这颗芯片的电流采集方法。
回复

使用道具 举报 送花

3

主题

717

回帖

145

积分

等待验证会员

积分
145
发表于 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. 关键寄存器配置示例:
  1. C
  2. P1ASF = 0x01;        // 使能P1.0模拟功能
  3. ADCRES = 0;         
  4. ADCCONTR = 0x80;    // 开启ADC电源
  5. 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. 动态测试方案
使用函数发生器模拟堵转工况
测试保护响应时间(目标

[本文内容由国芯人工智能辅助生成,仅供参考]
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2025-05-19 16:34:01

5

主题

21

回帖

115

积分

注册会员

积分
115
发表于 2025-5-16 15:33:58 | 显示全部楼层
因为只有一个ADC控制器,需要检测位置、温度、电流,现在的是三路轮回检测。
因为pwm输出控制,在没有有输出时,检测的电流是无效的,所以设置了PWM溢出中断,在中断中启动ADC并且置位输出标志,同时启动PWM的对应通道的捕获比较中断,该中断中清零输出标志。从而确保ADC有效。但是不是每次都进PWM溢出中断和捕获比较中断,不知道什么原因

点评

因为舵机的过载保护并不需要那么精致,可以直接使用软件进行保护 具体思路为:检测当前电机转速低于某个阈值(通过计算位置传感器两次移动位置实现),判断当前占空比输出是否高于某个值,高于则认为堵转,此时计入  详情 回复 发表于 2025-5-16 19:11
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2025-05-19 16:34:01

5

主题

21

回帖

115

积分

注册会员

积分
115
发表于 2025-5-16 16:02:42 | 显示全部楼层
国芯人*** 发表于 2025-5-16 15:28
针对基于STC8H1K08T的舵机控制系统电流采集需求,结合PWM控制特性,建议采用以下专业解决方案:

一、技术 ...

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

点评

也可以不用补偿导通影响,直接以比pwm还高的速率,用dma采样后,再做平均值就可以拿到电流了。 亦或者是直接在采样输入上加入rc滤波电路,也可获得平滑的电流adc值  详情 回复 发表于 2025-5-16 19:13
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:468
  • 最近打卡:2025-06-16 07:06:57
已绑定手机

79

主题

5131

回帖

9138

积分

超级版主

DebugLab

积分
9138
发表于 2025-5-16 18:49:16 | 显示全部楼层
检测电流需要外接运放或专用芯片(如INA139)配合小阻值电阻
可以用DMA ADC自动采样
截图202505161846393986.jpg
DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:499
  • 最近打卡:2025-06-16 10:06:31
已绑定手机
已实名认证

112

主题

2391

回帖

6016

积分

版主

积分
6016
发表于 2025-5-16 19:11:31 | 显示全部楼层
qqz*** 发表于 2025-5-16 15:33
因为只有一个ADC控制器,需要检测位置、温度、电流,现在的是三路轮回检测。
因为pwm输出控制,在没有有输 ...

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

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:499
  • 最近打卡:2025-06-16 10:06:31
已绑定手机
已实名认证

112

主题

2391

回帖

6016

积分

版主

积分
6016
发表于 2025-5-16 19:13:09 | 显示全部楼层
qqz*** 发表于 2025-5-16 16:02
1、硬件部分我采用的是低侧采样方案,请问如何补偿MOSFET的导通影响?
2、信号调理电路能给个案例吗
3、 ...

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

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2025-05-19 16:34:01

5

主题

21

回帖

115

积分

注册会员

积分
115
发表于 2025-5-19 16:34:01 | 显示全部楼层
王*** 发表于 2025-5-16 19:11
因为舵机的过载保护并不需要那么精致,可以直接使用软件进行保护
具体思路为:检测当前电机转速低于某个 ...

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

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2025-05-19 16:34:01

5

主题

21

回帖

115

积分

注册会员

积分
115
发表于 2025-5-19 16:35:01 | 显示全部楼层
王*** 发表于 2025-5-16 19:13
也可以不用补偿导通影响,直接以比pwm还高的速率,用dma采样后,再做平均值就可以拿到电流了。
亦或者是 ...

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

点评

我说的是高采样率直接取平均的做法,并不会受到PWM频率和占空比的影响,无需对齐PWM周期  详情 回复 发表于 2025-5-19 16:44
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:499
  • 最近打卡:2025-06-16 10:06:31
已绑定手机
已实名认证

112

主题

2391

回帖

6016

积分

版主

积分
6016
发表于 2025-5-19 16:44:42 | 显示全部楼层
qqz*** 发表于 2025-5-19 16:35
不同的PWM输出都有可能,占空比比较大的时候,还可以,占空比小,可测量的范围也小 ...

我说的是高采样率直接取平均的做法,并不会受到PWM频率和占空比的影响,无需对齐PWM周期
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-6-16 18:11 , Processed in 0.422699 second(s), 107 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表