单片机/MCU论坛
直播中

南风一号

8年用户 1000经验值
擅长:EMC/EMI设计
私信 关注
[问答]

用pwm去控制超声波模块时,自动装载模式下,超声波的噪音很大是为什么?

用pwm去控制超声波模块时,借鉴的程序中:pwm的技术工作模式是one shot,每次去获取超声波模块返回的值,都是一样,肯定是cnt没有变。但如果设置为自动装载mode,能连续获取不同的值。查看TRM,说要重复写CMP值才可以连续不断地one shot。

我不明白的是:PWM_ConfigOutputChannel()这个函数不是已经配置了cmp,我把写在while()中,不就已经相当于重写cmp了,为什么不能连续one shot?

还有一些题外话:自动装载模式下,超声波的噪音很大!!!为什么呢???

谢谢,请帮忙

回帖(2)

李雪雅

2024-1-17 09:38:46
one shot触发就会,达到比较值就会停了。所以必须重新让pwm计数。

问题2要拿示波器看,是不是信号有反射现象
举报

china

2024-1-17 15:01:32
首先,让我们来解答为什么用PWM控制超声波模块时,在自动装载模式下会有很大的噪音。

超声波模块在进行测距时有一个回声时间的概念,即向目标发送超声波信号后,等待接收到回声信号的时间。超声波模块通常通过一个引脚将回声信号输出给控制器,控制器可以通过测量回声信号的脉冲宽度或计算回声信号的时间来确定距离。

当使用PWM来控制超声波模块时,通常会使用一个定时器来生成PWM信号。定时器通过在每个周期中改变引脚的电平来控制超声波的发送周期。在自动装载模式下,定时器会自动加载一个比较器(CMP)值来确定PWM信号的高电平持续时间。

然而,对于超声波测距来说,精确的回声时间非常重要。如果PWM信号的高电平持续时间不准确或不稳定,就会导致超声波模块接收到的回声信号有很大的噪音。这是因为当回声信号与发送信号在接收器中混合时,由于回声信号的持续时间发生变化,会导致噪音。

在你提供的信息中,并没有提到具体的代码和硬件架构,所以无法对你的具体代码进行分析和解答。但是根据你的描述,如果你在`while`循环中不断地写入CMP值,理论上是可以实现连续的one shot模式的。你可以通过打印输出CMP的值来确认是否得到了不同的值。

另外,要注意的是,如果你的超声波噪音很大,可能还有其他因素导致。一种可能性是超声波模块本身的质量问题,或者环境中的干扰导致了噪音。你可以尝试在不同的环境下测试,或者更换超声波模块来排除这些问题。

总结一下,要解决超声波模块噪音问题,你可以尝试以下步骤:
1.确认PWM信号的高电平持续时间稳定,并在每个周期内保持一致。
2.确认超声波模块的质量和环境因素是否导致了噪音。
3.根据具体的硬件和代码情况,进一步分析和调试问题。

希望以上信息对你有帮助!
举报

更多回帖

发帖
×
20
完善资料,
赚取积分