实验二 红外测距传感器实验

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

信息工程学院实验报告

学号:

精心整理

一、实验目的

1. 学习CC2530 单片机ADC 模块的使用。

2. 学习红外测距传感器的使用。

二、实验原理

节点与红外测距传感器的硬件接口

红外线测距传感器模块GP2Y0A21YK0F

精心整理

1) 外接

精心整理

ADC的主要特性如下:

精心整理

精心整理

精心整理

据)为 x,

80cm 5ms , 1mm 。

由于GP2Y0A21YK0F 传感器采用的是PSD 光信号调制法,因此其输出的信号电压并不是标准的直流电压,而是叠加了波幅约为0.2V,频率1KHz 的方波,由于波幅达到0.2V,这就影响了分辨率。如果不进行信号处理,分辨率的精度仅能达到1mm。而如果经过有效处理,在正常情况下可以达到0.1mm以上的精度,完全可以满足一般工程定距等方面的需求。

Sharp 的红外传感器都是基于一个原理,三角测量原理。红外发射器按照一定的角度发射红外光束,当遇到物体以后,光束会反射回来,反射回来的红外光线被CCD 检测器检测到以后,会获得一个偏移值L,利用三角关系,在知道了发射角度a,偏移距L,中心矩X,以及滤镜的焦距 f 以后,传感器到物体的距离 D 就可以通过几何关系计算出来了。

传感器特点:

MATLAB 可以拟合出计算公式,直接根据电压值计算出距离,假设测量出

,待测距离为distance(cm),则distance = 26.757 * voltage^-1.236

三、实验内容与步骤

1. 将仿真器的一端JTAG 接口与一个CC2530 模块相连,并打开CC2530节点的电源,再将仿真器的另一端用USB 接口与PC 计算机相连。

2. 用MiniUSB 线将CC2530 节点与计算机的USB 口连接起来后,打开串口调试器软件,设置波特率57600,校验位None,数据位8,停止位1,然后点击打开串口按钮,如下图所示:

精心整理

精心整理

中的“

功能菜单上的绿色下载按钮

开发环境中的运行程序按钮运行程序,如下图所示:

)。

6. 扩展实验

为了能够更加直观地观察到传感器工作的状况,在实验过程中可以利用光盘中配套的上位机软件CurveDisplay 来观察传感器的数据曲线。

操作步骤

(1). 将仿真器的一端JTAG 接口与一个CC2530 模块相连,并打开CC2530 节点的电源,再将仿真器的另一端用USB 接口与PC 计算机相连。

(2). 用MiniUSB 线将CC2530 节点与计算机的USB 口连接起来后,打开配套传感器实验中的“CurveDisplay\CurveDisplay.exe”上位机软件,选择正确的串口号后,再设置波特率57600,

精心整理

校验位None,数据位8,停止位1,最后点击打开连接按钮,如下所示:

“模块中。

精心整理

相应

程序正常运行后,在CurveDisplay 软件中可以观察到传感器的数据曲线,如下图所示:在实验过程中,将传感器水平正对着墙壁或障碍物远离移动,可以在CurveDisplay 软件

上的传感器数据曲线也发生相应的变化,如下图所示:

精心整理

#define GPIO_GLED P1_0

#define GPIO_RLED P1_1

//GPIO_KEY定义(0:被按下,1:未按下)

#define GPIO_SW1 P1_2

#define GPIO_SW2 P1_3

void InitClock(void) //初始化时钟

{

精心整理

unsigned int i;

//turn on 16MHz RC and 32MHz XOSC

SLEEPCMD &= ~0x04;

//wait for 32MHz XOSC stable

while(!(SLEEPSTA & 0x40));

//chip bug workaround

asm("nop");

//延时63us

P1SEL &= ~0x08;

P1DIR &= ~0x08;

}

void InitUART(void) //初始化串口USART0

{

//P0[5..2]配置为外设IO

P0SEL |= 0x3C;

精心整理

//USART 0 I/O location: Alternative 2 location

PERCFG &= ~0x01;

//UART mode

U0CSR |= 0x80;

//无流控制,无校验,1位停止位,8位数据位,起始位为低电平,停止位为高电平

U0UCR = 0x02;

//波特率57600

U0GCR |= 0x0A;

unsigned char sign = (unsigned char)(Num < 0);

unsigned long trunc; //整数部分

unsigned long fract; //小数部分(4位)

if (sign)

{

Num *= -1;

}

精心整理

trunc = (unsigned long)Num;

fract = (unsigned long)((Num-(unsigned long)Num)*1000000);

//处理小数部分

if (fract == 0)

{

ptr[i++] = '0';

}

else

if (sign)

{

ptr[i++] = '-';

}

//字符串逆序输出

for(j=0; j<(i/2); j++)

{

tmp = ptr[j];

精心整理

相关文档
最新文档