用pwm去控制超声波模块时,借鉴的程序中:pwm的技术工作模式是one shot,每次去获取超声波模块返回的值,都是一样,肯定是cnt没有变。但如果设置为自动装载mode,能连续获取不同的值。查看TRM,说要重复写CMP值才可以连续不断地one shot。
我不明白的是:PWM_ConfigOutputChannel()这个函数不是已经配置了cmp,我把写在while()中,不就已经相当于重写cmp了,为什么不能连续one shot?
还有一些题外话:自动装载模式下,超声波的噪音很大!!!为什么呢???
谢谢,请帮忙
共2条
1/1 1 跳转至页
用pwm去控制超声波模块时,自动装载模式下,超声波的噪音很大是为什么?
2楼
首先,让我们来解答为什么用PWM控制超声波模块时,在自动装载模式下会有很大的噪音。
超声波模块在进行测距时有一个回声时间的概念,即向目标发送超声波信号后,等待接收到回声信号的时间。超声波模块通常通过一个引脚将回声信号输出给控制器,控制器可以通过测量回声信号的脉冲宽度或计算回声信号的时间来确定距离。
当使用PWM来控制超声波模块时,通常会使用一个定时器来生成PWM信号。定时器通过在每个周期中改变引脚的电平来控制超声波的发送周期。在自动装载模式下,定时器会自动加载一个比较器(CMP)值来确定PWM信号的高电平持续时间。
然而,对于超声波测距来说,精确的回声时间非常重要。如果PWM信号的高电平持续时间不准确或不稳定,就会导致超声波模块接收到的回声信号有很大的噪音。这是因为当回声信号与发送信号在接收器中混合时,由于回声信号的持续时间发生变化,会导致噪音。
在你提供的信息中,并没有提到具体的代码和硬件架构,所以无法对你的具体代码进行分析和解答。但是根据你的描述,如果你在`while`循环中不断地写入CMP值,理论上是可以实现连续的one shot模式的。你可以通过打印输出CMP的值来确认是否得到了不同的值。
另外,要注意的是,如果你的超声波噪音很大,可能还有其他因素导致。一种可能性是超声波模块本身的质量问题,或者环境中的干扰导致了噪音。你可以尝试在不同的环境下测试,或者更换超声波模块来排除这些问题。
总结一下,要解决超声波模块噪音问题,你可以尝试以下步骤:
1.确认PWM信号的高电平持续时间稳定,并在每个周期内保持一致。
2.确认超声波模块的质量和环境因素是否导致了噪音。
3.根据具体的硬件和代码情况,进一步分析和调试问题。
希望以上信息对你有帮助!
共2条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
【换取逻辑分析仪】自制底板并驱动ArduinoNanoRP2040ConnectLCD扩展板被打赏47分 | |
【分享评测,赢取加热台】RISC-V GCC 内嵌汇编使用被打赏38分 | |
【换取逻辑分析仪】-基于ADI单片机MAX78000的简易MP3音乐播放器被打赏48分 | |
我想要一部加热台+树莓派PICO驱动AHT10被打赏38分 | |
【换取逻辑分析仪】-硬件SPI驱动OLED屏幕被打赏36分 | |
换逻辑分析仪+上下拉与多路选择器被打赏29分 | |
Let'sdo第3期任务合集被打赏50分 | |
换逻辑分析仪+Verilog三态门被打赏27分 | |
换逻辑分析仪+Verilog多输出门被打赏24分 | |
【分享评测,赢取加热台】使用8051单片机驱动WS2812被打赏40分 |