新闻  |   论坛  |   博客  |   在线研讨会
超声波测距器的设计
tvb2058 | 2009-01-04 11:01:41    阅读:1705   发布文章

 超声波测距器的设计

 

 

超声波测距器在汽车倒车,建筑工地和一些工业现场有着很广泛的用途。其测量范围0.10~4.0 m,测量精度可高达1 cm左右。

 

                                                图1.1

本设计采用新型8051控制器c8051f020,系统采用22.1184MHZ的高精度晶振,来获得稳定的时间频率,以减少测量误差。C8051f020用P3.0端口输出超声波换能器所需的40khz方波信号,利用中断口检测超声波接收电路输出的返回信号。显示电路采用SPI延伸的LCD1602液晶。

 

本设计的重点就是超声波的接收和发射电路。

超声波的发射电路如下图1.2

点击看大图

                          图1.2

发射电路主要由反向器74HC04和超声波换能器构成,P3.0端口输出的40khz方波信号一路经反向器送到超声波换能器的一个电极,另一路经两级反向器后送到超声波换能器的另一个电极,用这种方式可以提高超声波的发射强度。

超声波接收电路如下图1.3

点击看大图

                                            图1.3

集成电路CX20106A是一款红外接收的专用芯片,常用于电视红外遥控器。常用的载波频率38khz与测距的40khz较为相近,可以利用它来做接收电路。适当的改变C3的大小,可以改变接受电路的灵敏度和抗干扰能力。

显示电路如下图1.4

                                               图1.4

采用c8051f020 的SPI 从而驱动595控制lcd1602. 其中LCDCS为595的片选信号

本设计把片选信号 定义为P3.1 .

sbit   LCDCS  P3^1;

 

另一个重点就是超声波测距的算法计算。

D =  S/2(v+t)/2     ---------------------------------------------------------------------------(1-1)

其中D为被测物与测距器的距离。

    S为声波的来回路程。

    V为声速。

    T为所用时间。

 

C8051F020 外设及其丰富,本设计只用到了外部中断和SPI的部分管脚,在此基础上还可以增加不少内容,纯粹使用前后台系统,会使系统的适时性受到限制,在下篇我会详细介绍基于c8051f020的ucos_II的移植。

代码部分:

 

//-------------------------------------------------------------------------

//  SPI_Init()

//-------------------------------------------------------------------------

void SPI0_Init (void)

{

   SPI0CFG = 0x07;                     // data sampled on 1st SCK rising edge

                                       // 8-bit data words

   SPI0CFG|=0x40;                      //CKPOL =1;01000111

 

   SPI0CN = 0x03;                      // Master mode; SPI enabled; flags

                                       // cleared

   SPI0CKR = SYSCLK/2/2000000-1;       // SPI clock <= 8MHz (limited by

                                       // EEPROM spec.)

}

 

void MSPI_SendData(unsigned char  ddata)

    LCDCS = 0;                      // 片选HC595

     SPIF = 0;

     SPI0DAT = ddata;

     while (SPIF == 0);                   // 等待写结束

    LCDCS = 1;

}

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客