找回密码
 立即注册
查看: 54|回复: 7

有没有什么方法可以使用单片机测量某信号初次到达时的脉冲宽度?

[复制链接]
  • 打卡等级:常住居民I
  • 打卡总天数:67
  • 最近打卡:2025-08-11 08:06:01
已绑定手机

8

主题

29

回帖

356

积分

中级会员

积分
356
发表于 5 天前 | 显示全部楼层 |阅读模式
场景如下:              
      目标信号是一个近似的方波信号,周期为20ms,出现时间未知,出现相位未知,可以通过测量信号出现时的初始脉冲宽度,获取信号到达时的相位信息。

示意图

示意图

      我尝试在while循环中不断轮询信号引脚的电平,高电平开启计时至下降沿停止计时,以此来获取信号的初始脉冲宽度。但发现测量出的脉冲结果异常,出现个别大于10ms的情况(13ms,15ms、18ms等),而方波信号的周期只有20ms,由于信号刚到达时波形不完全,理论上测量到的脉冲宽度应该小于10ms,出现大于10ms的结果,说明测量方法有误。

       想问问各位前辈有没有什么方法可以使用单片机测量信号初始波形的脉冲宽度?



回复

使用道具 举报 送花

3

主题

2077

回帖

1002

积分

等待验证会员

积分
1002
发表于 5 天前 | 显示全部楼层
针对您提出的问题,即如何使用单片机测量目标信号初次到达时的脉冲宽度,以下为专业分析与解决方案。

一、问题分析

目标信号为一个周期为20ms的方波,其出现时间与相位未知。您希望通过测量该信号首次出现时的初始脉冲宽度来获取其到达相位信息。然而,您在实现过程中发现存在脉冲宽度超过10ms的情况(如13ms、15ms、18ms等),这显然不符合预期。

1.1 脉冲宽度测量异常原因分析
轮询方式效率低:采用while循环轮询信号引脚电平的方式,可能导致检测延迟,尤其是在信号突变时,无法及时捕捉到上升沿或下降沿。
信号不稳定或干扰:由于信号刚到达时波形不完全,可能受到噪声或抖动影响,导致误触发或误测。
计时机制不准确:若未采用高精度定时器或中断机制,可能导致计时误差,从而影响测量结果。

二、推荐解决方案

2.1 使用外部中断 + 定时器测量脉冲宽度

建议采用外部中断配合定时器的方式进行脉冲宽度测量,以提高响应速度和精度。

实现步骤:

1. 配置外部中断:
将目标信号接入单片机的外部中断引脚(如INT0或INT1)。
设置中断为下降沿触发,用于检测信号的下降沿。

2. 开启定时器:
在检测到信号上升沿时启动定时器,记录起始时刻。
在检测到下降沿时停止定时器,计算脉冲宽度。

3. 处理信号初发情况:
可设置标志位,仅在首次检测到信号时执行测量操作,避免重复测量。
若信号多次出现,可设置延时后再次检测,防止误判。

示例代码结构(以STM32为例):
  1. c
  2. volatile uint32t pulsewidth = 0;
  3. volatile uint8t pulsedetected = 0;
  4. void EXTI0IRQHandler(void) {
  5.     if (EXTIGetITStatus(EXTILine0) != RESET) {
  6.         if (!pulsedetected) {
  7.             // 检测到信号下降沿,开始测量
  8.             pulsedetected = 1;
  9.             TIMCmd(TIM2, ENABLE); // 启动定时器
  10.         } else {
  11.             // 停止定时器并计算脉冲宽度
  12.             TIMCmd(TIM2, DISABLE);
  13.             pulsewidth = TIMGetCapture2(TIM2);
  14.             // 处理脉冲宽度数据
  15.         }
  16.         EXTIClearITPendingBit(EXTILine0);
  17.     }
  18. }
复制代码

2.2 提高信号稳定性
硬件滤波:在信号输入端加入RC低通滤波器,抑制高频噪声。
软件去抖:在中断中增加延时判断,确保信号稳定后再进行测量。

2.3 利用捕获/比较单元(CCU)

多数现代单片机(如STM32、ESP32、MSP432等)内置了捕获/比较单元(CCU),可用于精确测量脉冲宽度。
配置CCU为输入捕获模式,设置为上升沿触发,记录信号上升沿时间;
再次配置为下降沿触发,记录下降沿时间;
计算两次捕获时间差,得到脉冲宽度。

此方法具有更高的精度和实时性,适用于对时间敏感的应用场景。

三、注意事项

1. 信号同步问题:由于目标信号出现时间未知,需确保单片机能够快速响应信号变化。
2. 定时器分辨率:选择足够高的定时器频率(如1MHz以上),以保证脉冲宽度测量精度。
3. 避免误触发:合理设置中断触发条件,避免因噪声或抖动导致误测。

四、结论

您当前采用的轮询方式存在较大局限性,容易造成测量误差。建议改用外部中断 + 定时器或捕获/比较单元的方式进行脉冲宽度测量,可以显著提升测量精度与响应速度。同时,应结合硬件滤波与软件去抖策略,进一步提高系统稳定性。

如需进一步优化或具体型号的实现方案,欢迎提供更多细节,我将为您继续提供支持。

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

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:612
  • 最近打卡:2025-08-11 10:09:25

120

主题

2058

回帖

6079

积分

论坛元老

积分
6079
发表于 5 天前 | 显示全部楼层
要兼顾相位信息,实在有点难度
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:524
  • 最近打卡:2025-08-11 07:16:53
已绑定手机

86

主题

5879

回帖

1万

积分

超级版主

积分
10609
发表于 5 天前 | 显示全部楼层
两个信号,相位才有意义
只有一个信号,相位没有意义
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民I
  • 打卡总天数:67
  • 最近打卡:2025-08-11 08:06:01
已绑定手机

8

主题

29

回帖

356

积分

中级会员

积分
356
发表于 5 天前 | 显示全部楼层
xxkj*** 发表于 2025-8-6 10:39
要兼顾相位信息,实在有点难度

相位信息可以另外换算,当前问题是如何正确测算信号初次到达时,不完全波形的高电平持续时间
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民I
  • 打卡总天数:67
  • 最近打卡:2025-08-11 08:06:01
已绑定手机

8

主题

29

回帖

356

积分

中级会员

积分
356
发表于 5 天前 | 显示全部楼层
Debu*** 发表于 2025-8-6 10:42
两个信号,相位才有意义
只有一个信号,相位没有意义

有的有的,这个信号其实就是被触发后产生的

现在想知道,它究竟是在哪个时间点被触发产生,至少是距离下降沿多长时间出现的

(如果信号出现时是低电平,会做一定的延时处理,确保单片机采集信号时,这个被触发信号处在高电平)

点评

“被触发后产生” 指的是外部型号触发?那这个信号单片机采集了吗? 如果触发信号也采集了,那可以画出触发信号和待测信号的时序图 配置一个定时器,比如10us周期的,触发信号清零定时器并启动,待测信号到来时读出  详情 回复 发表于 4 天前
周期20ms频率较低可以用查询的方式,也可以用外部中断 [attachimg]110805[/attachimg]  详情 回复 发表于 5 天前
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:524
  • 最近打卡:2025-08-11 07:16:53
已绑定手机

86

主题

5879

回帖

1万

积分

超级版主

积分
10609
发表于 5 天前 | 显示全部楼层
紫*** 发表于 2025-8-6 10:59
有的有的,这个信号其实就是被触发后产生的

现在想知道,它究竟是在哪个时间点被触发产生,至少是距离下 ...


周期20ms频率较低可以用查询的方式,也可以用外部中断,用定时器对外部信号计时也可以
截图202508061129473968.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:511
  • 最近打卡:2025-08-11 00:11:18
已绑定手机

39

主题

2385

回帖

3159

积分

荣誉版主

积分
3159
发表于 4 天前 | 显示全部楼层
紫*** 发表于 2025-8-6 10:59
有的有的,这个信号其实就是被触发后产生的

现在想知道,它究竟是在哪个时间点被触发产生,至少是距离下 ...

“被触发后产生” 指的是外部型号触发?那这个信号单片机采集了吗?
如果触发信号也采集了,那可以画出触发信号和待测信号的时序图
配置一个定时器,比如10us周期的,触发信号清零定时器并启动,待测信号到来时读出计时值,计时值x10uS就是脉冲时间宽度
睁开眼睛做场梦~~~
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-8-11 13:11 , Processed in 0.122922 second(s), 89 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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