实验二红外测距传感器实验_第1页
实验二红外测距传感器实验_第2页
实验二红外测距传感器实验_第3页
实验二红外测距传感器实验_第4页
实验二红外测距传感器实验_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、信息工程学院实验报告课程名称:传感器原理及应用成绩:实验项目名称:实验二红外测距传感器实验实验时间: 2016.10.8班级:姓名:学号:一、实验目的指导老师 (签名):1. 学习 CC2530 单片机 ADC 模块的使用。2. 学习红外测距传感器的使用。二、实验原理1. CC2530 节点与红外测距传感器的硬件接口红外线测距传感器模块GP2Y0A21YK0F第1页共15页(1). 红外测距传感器模块 (GP2Y0A21YK0F) 引脚OUT:模拟量输出接口 (AD 模块 )GND :外接 GNDVCC :数字量输出接口 (0 和 1) 外接5V 电源(2). 传感器模块与CC2530 模块之

2、间的连接2. ADC(1). 简介CC2530 单片机的 ADC 支持多达 14 位的模拟数字转换,具有多达12 位的 ENOB(有效数字位)。它包括一个模拟多路转换器,具有多达8 个各自可配置的通道;以及一个参考电压发生器。转换结果通过 DMA 写入存储器。还具有若干运行模式。 ADC 模块的方框图如下所示:ADC 的主要特性如下:第2页共15页 可选的抽取率,这也设置了分辨率(7 到 12 位) 8 个独立的输入通道,可接受单端或差分信号 参考电压可选为内部单端、外部单端、外部差分或AVDD5 产生中断请求 转换结束时的 DMA 触发 温度传感器输入 电池测量功能(2). 寄存器简介本次实

3、验中主要涉及到ADC 模块的寄存器:第3页共15页数据的换算:例如:在CC2530 中配置ADC 的参考电压为AVDD5(3.3V) ,抽取率为512(12 位有效数据 ),由于在实验中采用单端转换方式,所以实际数据只有11 位。这时, ADC 采集到的数据记为x,则ADC 采集数据转换为电压 (单位: V) :V = x * 3.3 / 20483. GP2Y0A21YK0F 红外测距传感器(1). 概述夏普 GP2Y0A21YK0F 测距传感器是基于 PSD 的微距传感器,其有效的测量距离在80cm 内,有效的测量角度大于 40 度,输出信号为模拟电压,在 0 到 8cm 左右的范围内与距

4、离成正比非线性关系,在 10-80cm 的距离范内成反比非线性关系,平均功耗为 30mA ,反应时间约为 5ms,并且对背景光及温度的适应性较强。 GP2Y0A21YK0F 传感器的默认的测距分辨率为 1mm。第4页共15页由于 GP2Y0A21YK0F传感器采用的是PSD 光信号调制法,因此其输出的信号电压并不是标准的直流电压, 而是叠加了波幅约为0.2V,频率 1KHz 的方波,由于波幅达到0.2V,这就影响了分辨率。 如果不进行信号处理, 分辨率的精度仅能达到1mm。而如果经过有效处理,在正常情况下可以达到0.1mm 以上的精度,完全可以满足一般工程定距等方面的需求。Sharp 的红外传

5、感器都是基于一个原理,三角测量原理。红外发射器按照一定的角度发射红外光束,当遇到物体以后,光束会反射回来,反射回来的红外光线被CCD 检测器检测到以后,会获得一个偏移值L,利用三角关系,在知道了发射角度a,偏移距 L ,中心矩 X ,以及滤镜的焦距f 以后,传感器到物体的距离D 就可以通过几何关系计算出来了。传感器特点: 基本不受背景光及温度的影响, 能满足大部分工程应用的性能要求, 有很高的性价比,具有很好的工程应用价值。(2). 使用方法本实验利用CC2530 的 ADC 模块采集红外测距传感器输出的模拟电压数据,然后换算成电压值,在根据数据手册上的特性曲线,如下图所示:将特性曲线通过MA

6、TLAB可以拟合出计算公式,直接根据电压值计算出距离,假设测第5页共15页量出的电压为voltage(V) ,待测距离为distance(cm),则 distance = 26.757 * voltage-1.236。三、实验内容与步骤1. 将仿真器的一端 JTAG 接口与一个 CC2530 模块相连,并打开 CC2530 节点的电源,再将仿真器的另一端用 USB 接口与 PC 计算机相连。2. 用 MiniUSB 线将 CC2530 节点与计算机的 USB 口连接起来后,打开串口调试器软件,设置波特率 57600,校验位 None,数据位 8,停止位 1,然后点击打开串口按钮,如下图所示:说

7、明:串口号可以在设备管理器看到,具体方法如下图所示:第6页共15页3.用IAREmbedded Workbenchfor80518.10打 开 配 套 传 感 器 实 中 的“SerialPort.Edition18.IRDMSMain.eww ”工程文件。4. 点击 IAR 功能菜单上的绿色下载按钮,进入程序下载页面,如下图所示:5. 程序下载完成后,点击 IAR 开发环境中的运行程序按钮运行程序,如下图所示:此外,也可以通过点击其它按钮实现对当前程序的调试(单步、断点、暂停、步入等功能 )。6. 扩展实验为了能够更加直观地观察到传感器工作的状况,在实验过程中可以利用光盘中配套的上位机软件C

8、urveDisplay 来观察传感器的数据曲线。操作步骤(1). 将仿真器的一端 JTAG 接口与一个 CC2530 模块相连,并打开 CC2530 节点的电源,再将仿真器的另一端用 USB 接口与 PC 计算机相连。(2). 用 MiniUSB 线将 CC2530 节点与计算机的 USB 口连接起来后,打开配套传感器实验中的“ CurveDisplayCurveDisplay.exe”上位机软件,选择正确的串口号后,再设置波特率 57600,校验位 None,数据位 8,停止位 1,最后点击打开连接按钮,如下所示:第7页共15页(3).用IAREmbedded Workbench for80

9、518.10打 开 配 套 传 感 器 实 验 中 的“ Curve.Edition18.IRDMSMain.eww ”工程文件,然后通过IAR 将程序下载到CC2530 模块中。程序下载完成后,点击IAR 开发环境中的运行程序按钮运行程序。四、实验结果及分析:1. 程序正常运行后,每采集一次传感器数据,红色 LED 闪烁一下,与此同时串口调试器显示信息(功能扩展,实现按键按一下传感器采样一次)如下图所示:2. 在实验过程中,将传感器水平正对着墙壁或障碍物远离移动,可以在串口调试软件上看到相应 ADC 采集到的电压数据也发生相应的变化, 其数值越小说明两者之间的距离越大。第8页共15页3. 扩

10、展实验现象(1). 程序正常运行后, 在 CurveDisplay 软件中可以观察到传感器的数据曲线,如下图所示:(2). 在实验过程中,将传感器水平正对着墙壁或障碍物远离移动,可以在 CurveDisplay 软件上的传感器数据曲线也发生相应的变化,如下图所示:五、实验总结:通过这次学习和操作 ,我学到了对 CC2530 单片机 ADC 模块的使用,并懂的了红外测距传感器的使用。以及通过自己对其功能扩展,实现按键控制传感器的采样。这次的实验操作让我受益匪浅。六、源程 序 清 单 (加上必要的注释 )主要代码如下:#include #include /GPIO_LED 定义 (1:点亮 ,0:

11、熄灭 )#define GPIO_GLEDP1_0第9页共15页#define GPIO_RLEDP1_1/GPIO_KEY 定义 (0:被按下 ,1:未按下 )#define GPIO_SW1P1_2#define GPIO_SW2P1_3void InitClock(void) / 初始化时钟unsigned int i;/turn on 16MHz RC and 32MHz XOSCSLEEPCMD &= 0x04;/wait for 32MHz XOSC stablewhile(!(SLEEPSTA & 0x40);/chip bug workaroundasm(nop);/ 延时 6

12、3usfor(i = 0; i 504; i+)asm(nop);/Select 32MHz XOSC and the source for 32K clock CLKCONCMD = 0x00;/Wait for the change to be effectivewhile(CLKCONSTA != 0x00);/turn off 16MHz RCSLEEPCMD = 0x80;void InitGPIO(void) / 初始化 GPIO/GPIO_RLED 引脚 (P1_0,通用 IO,输出 )P1SEL &= 0x01;P1DIR |= 0x01;/GPIO_GLED 引脚 (P1_1

13、,通用 IO, 输出 )P1SEL &= 0x02;P1DIR |= 0x02;/GPIO_SW1 引脚 (P1_2,通用 IO,输入 )P1SEL &= 0x04;P1DIR &= 0x04;/GPIO_SW2 引脚 (P1_3,通用 IO,输入 )P1SEL &= 0x08;P1DIR &= 0x08;void InitUART(void) / 初始化串口 USART0第10页共15页/P05.2 配置为外设 IOP0SEL |= 0x3C;/USART 0 I/O location: Alternative 2 locationPERCFG &= 0x01;/UART modeU0CSR

14、 |= 0x80;/ 无流控制 ,无校验 ,1 位停止位 ,8 位数据位 ,起始位为低电平 ,停止位为高电平U0UCR = 0x02;/ 波特率 57600U0GCR |= 0x0A;U0BAUD = 216;/ 使能串口接收器U0CSR |= 0x40;void UART_SendStr(const unsigned char *str) /通过串口发送字符串while(*str)/ 发送一个字符U0DBUF = *str+;/ 等待发送完毕while(!UTX0IF);/ 清除发送中断标志UTX0IF = 0;void Float2Str(void *str, float Num, uns

15、igned char FractLen) /将 float 型数据转换为字符串(FractLen:小数位数 1-6)unsigned char *ptr =(unsigned char *)str);unsigned char FractCache6 = 0;unsigned char i = FractLen, j;unsigned char tmp;unsigned char sign = (unsigned char)(Num 0);unsigned long trunc; /整数部分unsigned long fract; /小数部分 (4 位)if (sign)Num *= -1;t

16、runc = (unsigned long)Num;第11页共15页fract = (unsigned long)(Num-(unsigned long)Num)*1000000);/ 处理小数部分 if (fract = 0)ptri+ = 0;elsefor(j=0; j6; j+)FractCachej = (unsigned char)(fract % 10) + 0);fract /= 10;/ 调整小数位数for(j=0; j 0)ptri+ = (unsigned char)(trunc % 10) + 0);trunc /= 10;/ 添加符号位if (sign)ptri+ =

17、 -;/ 字符串逆序输出for(j=0; j(i/2); j+)tmp = ptrj;ptrj = ptr(i-j)-1;ptr(i-j)-1 = tmp;/ 添加字符串结束符 ptri = 0;第12页共15页void DelayXus(unsigned int Xus) /延时 Xuswhile(Xus-)asm(nop);asm(nop);asm(nop);void DelayXms(unsigned int X) / 延时 Xmswhile (X-)/ 延时 1ms DelayXus(1000);void InitADC(void) / 初始化 ADC/P0.1 配置为外设 IOP0S

18、EL |= 0x02;/P0.1 配置为模拟 IOAPCFG |= 0x02;unsigned int ADC_ReadVal(void) /通过 ADC 读取 P0.1 的电压数据int val;/ADC 参考电压 : AVDD5 PinADCCON3 |= 0x80;/512 decimation rate (12 bits ENOB)ADCCON3 |= 0x30;/Single channel: AIN1ADCCON3 &= 0x0F;ADCCON3 |= 0x01;/Wait for the conversion to be donewhile(!(ADCCON1 & 0x80);/Read the result(最高位为符号位 )val = (unsigned int)ADCL;val |= (unsigned int)(ADCH 8);第13页共15页/Treat small negative as 0val = val 4;return val;void main(void)unsigned char cache16;unsigned int val;float voltage;/ 初始化时钟InitClock();/ 初始化 IO InitGPIO();/ 初始化串口 USART0 InitUART();/ 初始化 AD

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论