资源描述
基于CX20106超声波测距的调试
(提供拆机件CX20106芯片:3元/片)
在超声测距中,一般采用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();
}
}
以下为超声波的接收电路
关于CX20106的调试。其内部结构如图1
图1
在图2中
R4和C3 是控制CX20106 内部放大增益,R5控制带通滤波器的中心频率。一般取R4=4欧,C3=1Uf.。其余元件按图2取值。US_T为超声波接收头,OUT_INT当收到超声波是产生一个下降沿,接到单片机的外部中断上。
一些资料表示,在CX20106的1脚输入0.2mV的信号。在5脚将会输出滤波后放大的有用信号。在实测中,5脚并没有一个放大的信号输出。实际调试的时候只关心芯片的7脚在收到信号是是否有一个下降沿产生。
在本电路的调试中,如果一直发射超声波,在7脚将会有周期的低电平产生。不会像通常认为的那样,即一直发射信号时,7脚一直为低电平。这是刚用CX20106时的一个常见错误。只要通过单片机来来计算发射信号时到收到信号是产生下降沿这段时间的长度,再通过数学计算,转化为距离,然后在显示器上显示。
提供拆机件:CX20106芯片:3元/只
saxmcu@
TEL:0371--66987238 13733178417
再加点资料,我已试验好几遍了,大虾们帮我看看阿
CX20106的总放大增益约为80dB,以确保其⑦脚输出的控制脉冲序列信号幅3.5-5V范围内。总增益大小由②脚外接的R1, C1决定,R1越小或C越大,增益越高。C1取值过大时将造成频率响应变差,通常取为luf,C2为检波电容,一般取3.3UF, CX20106采用峰值检波方式,当C2容量较大时将变成乎均值检波,瞬态响应灵敏度会变低,C2较小时虽然仍为峰值检波,且瞬态响应灵敏度很高,但检波输出脉冲宽度会发生较大变动,容易造成解调出错而产生误操作。R2为带通滤波器中心频率f0的外部电阻,改变R2阻值,可改变载波信号的接受频率,当f0偏离载波频率时,放大增益会显著下降,C3为积分电容,一般取330PF,取值过大,虽然可使抗干扰能力增强,但也会使输出编码脉冲的低电平持续时间增长,造成遥控距离变短。⑦脚为输出端,CX20106处理后的脉冲信号由⑦脚输出给后续电路在加工处理推动负载工作。
展开阅读全文