完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
用Trig和Echo引脚实现测距的流程:
1.通过Trig输出一段至少10us的高电平(脉冲),触发一次测距,超声波在传输的过程中Echo一直输出高电平。 2.在Trig脉冲输出后,立即检测Echo引脚的电平,测出Echo高电平持续的时间t,t就是超声波在所测距离一个来回所需时间。 感应角度:不大于15度 探测距离:2cm-450cm 高精度可达0.2cm 利用定时器3的TIM_IT_Update中断来计数,stm32f103时钟是72M, TIM3_Int_Init(1000-1,72-1);//1Mhz的计数频率,1us计数一次,计数到1000为1ms,产生一次溢出中断 ,超声波的速度取344m/s=344mm/ms,具体可更据温度设置,以毫秒为单位乘以速度,当前counter值补足1ms时,把us换算成ms:如图 计数距离就是用上面的函数得到来回时间(ms为单位),除以2得到单程时间,再乘以速度344mm/ms,得到距离ms为单位) 2种处理数据的方法(前面两个函数实质一样) GetLength_Hc() GetLength2_Hc() GetLength3_Hc() 测试实验:1,当使用GetLength_Hc()获取长度,求和再取平均 串口现象:第一个值刚开始测距,不准确,理所应当 2,当使用GetLength2_Hc()获取长度,实际和1一样,求和再取平均 串口现象: 3,当使用GetLength3_Hc()获取长度,去掉最大最小,剩下的取平均 串口现象: 结论:最后的算法更接近真实距离。 距离大概是272-278mm,可能由于单手改代码测试,另一种手抖也造成了稍微移动,误差多少?起始距离在哪?我也不知道咋参考,请读者赐教,需要源文件的可以私信。 编程犯的几个错误: 1,比较大小时,采用min=0去比较大小,正数都比0大,请问谁能抢到min这个宝座?? 2,double GetLength3_Hc(void)函数中,计算平均值时,忘了打括号写成average=sum/N-2,正确应为average=sum/(N-2); |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1781 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1621 浏览 1 评论
1085 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
728 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1680 浏览 2 评论
1938浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
732浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
570浏览 3评论
596浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
557浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-24 09:20 , Processed in 0.784225 second(s), Total 48, Slave 42 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号