基于CX20106超声波测距的调试

 

 (提供拆机件CX20106芯片:3元/片)

      在超声测距中,一般采用40KHz的信号。可以通过硬件来产生,比如555CMOS电路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();

     }

}

 

 

 

以下为超声波的接收电路

 

 

关于CX20106的调试。其内部结构如图1

 

                       1

在图2

R4C3 是控制CX20106 内部放大增益,R5控制带通滤波器的中心频率。一般取R4=4欧,C3=1Uf.。其余元件按图2取值。US_T为超声波接收头,OUT_INT当收到超声波是产生一个下降沿,接到单片机的外部中断上。

一些资料表示,在CX201061脚输入0.2mV的信号。在5脚将会输出滤波后放大的有用信号。在实测中,5脚并没有一个放大的信号输出。实际调试的时候只关心芯片的7脚在收到信号是是否有一个下降沿产生。

在本电路的调试中,如果一直发射超声波,在7脚将会有周期的低电平产生。不会像通常认为的那样,即一直发射信号时,7脚一直为低电平。这是刚用CX20106时的一个常见错误。只要通过单片机来来计算发射信号时到收到信号是产生下降沿这段时间的长度,再通过数学计算,转化为距离,然后在显示器上显示。

 

 

提供拆机件:CX20106芯片:3元/只  

 

 1.货到付款点此进入>>>

 2.银行汇款点此进入 >>>
 3.
淘宝店铺点此进入 >>>

 4.拍店铺点此进入 >>>

 

saxmcu@126.com

 

TEL:0371--66987238    13733178417