基于CX20106超聲波测距的调试.doc

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于CX20106超聲波测距的调试

基于CX20106超声波测距的调试 在超声测距中,一般采用40KHz的信号。可以通过硬件来产生,比如555,CMOS电路CD4046。还可以通过软件来产生。本方案中采用弹片机软件产生。 关于40KHz信号的产生。如果用单片机定时器中断产生,要特别注意中断服务程序的编写。中断服务不能过长,如果过长,单片机在前一个中断服务程序还没执行完之前,又会有下一个中断产生。所以,单片机将会产生一个错误频率的信号。往往这个错误的频率会比预期的值偏低。比如程序原本要产生一个40KHz的信号。实际单片机只能产生一个20KHz左右的信号。 40KHz的信号可以用一个汇编语言子程序来产生。程序如下: NAME CS_T ? PR? CS_T? CS_T SEGMENT CODE PUBLIC CS_T RSEG ?PR?CS_T?CS_T CS_T: PUSH ACC MOV TH0, #00H MOV TL0, #00H MOV A, #4D SETB TR0 CST_1: CPL P1.0 NOP NOP NOP NOP NOP NOP NOP NOP NOP DJNZ ACC,CS_T1 POP ACC RET ; END 平常C语言用的很多,我个人觉得C语言更富有亲切感。40KHz的信号可以用一个汇编语言子程序来产生。程序如下 /************************************ *输入整型i,从p3_5端口产生i/2个方波 ************************************* */ cs_t(unsigned char i) { while(i--) { P3_5=!P3_5; Some_Nop_T(); } } 图1 以下为超声波的接收电路 图2 关于CX20106的调试。其内部结构如图3 图3 在图2中 R4和C3 是控制CX20106 内部放大增益,R5控制带通滤波器的中心频率。一般取R4=4欧,C3=1Uf.。其余元件按图2取值。US_T为超声波接收头,OUT_INT当收到超声波是产生一个下降沿,接到单片机的外部中断上。 一些资料表示,在CX20106的1脚输入0.2mV的信号。在5脚将会输出滤波后放大的有用信号。在实测中,5脚并没有一个放大的信号输出。实际调试的时候只关心芯片的7脚在收到信号是是否有一个下降沿产生。 在本电路的调试中,如果一直发射超声波,在7脚将会有周期的低电平产生。不会像通常认为的那样,即一直发射信号时,7脚一直为低电平。这是刚用CX20106时的一个常见错误。只要通过单片机来来计算发射信号时到收到信号是产生下降沿这段时间的长度,再通过数学计算,转化为距离,然后在显示器上显示。 a CS_T CS+R 导入NUE论坛查看(756)回复(26)引用(0)好评(0) 差评(0) 加入收藏 编辑 审核 TAG: 删除+0 Guest 发表于 2006-12-04 20:09:17 想问问能测几米阿? 删除+0 Guest 发表于 2006-12-04 20:16:37 我毕业设计也做这个, 总是测不出 ,在接受端收到信号不是很有规律,我加了一级放大,随后输入20106,发射头也加到12v, 但是在远的地方测不准,可能有干扰,希望师傅指教阿。谢谢了? 删除+0 alj 发表于 2006-12-05 08:04:56 在超

文档评论(0)

fglgf11gf21gI + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档