1、任务四 光照传感器模块,目 录,实训目的,(1)掌握CC2530的ADC工作原理(2)掌握光敏传感器工作原理(3)能实现光敏传感器采集功能,目 录,实训内容,采用光敏传感器和ZigBee模块,测量光线的强弱,并将数据通过串口上传到PC机端。,目 录,实训原理,4.1 CC2530的ADC工作原理ADC支持多达14位的模拟数字转换,具有多达12位的ENOB(有效数字位)。它包括一个模拟多路转换器,具有多达8个各自可配置的通道;以及一个参考电压发生器。转换结果可以通过DMA写入存储器。CC2530芯片的ADC的主要特性如下:可选的抽取率。,实训原理,8个独立的输入通道,可接收单端或差分(电压差)信
2、号。参考电压可选为内部单端、外部单端、外部差分或AVDD5(供电电压,引脚21)。参考电压可选为内部单端、外部单端、外部差分或AVDD5(供电电压,引脚21)。产生中断请求。转换结束时DMA触发。,可以将片内的温度传感器作为输入。电池测量功能。4.1.1 ADC相关寄存器ADC的相关寄存器有ADCL(ADC数据低位)、ADCH(ADC数据高位)、ADCCON1(ADC控制1)、ADCCON2(ADC控制2)、ADCCON3(ADC控制3)等,具体描述如表4. 1所示。,表4.1 ADC相关寄存器描述,表4.1 ADC相关寄存器描述,表4.1 ADC相关寄存器描述,表4.1 ADC相关寄存器描述
3、,表4.1 ADC相关寄存器描述,表4.1 ADC相关寄存器描述,4.1.2 ADC操作1.ADC输入端口P0引脚的信号可以用作ADC输入,涉及到的引脚有:AIN0AIN7。可以把这些引脚(AIN0AIN7)配置为单端或差分输入。(1)单端输入。可以分为AIN0AIN7共8路输入。(2)差分输入。可以分为AIN0和ANI1、AIN2和ANI3、AIN4和ANI5、AIN6和ANI7共四组输入,差分模式下的转换取自输入对之间的电压差,例如:第一组AIN0和ANI1作为输入,则实际输入电压为AIN0和ANI1这两个引脚之差。,除了输入引脚AIN0AIN7外,片上温度传感器的输出也可以选择作为ADC
4、输入,用于片上温度测量。还可以输入一个对应AVDD5/3的电压作为一个ADC输入。这个输入允许诸如需要在应用中实现一个电池监测器的功能。注意在这种情况下参考电压不能取决于电源电压,比如AVDD5 电压不能用作一个参考电压。用16个通道来表示ADC的输入,通道号码0到7表示单端电压输入,由AIN0到AIN7组成;通道号码8到11表示差分输入,由AIN0AIN1、AIN2AIN3、AIN4AIN5和AIN6AIN7组成;通道号码12到15表示GND(12)温度传感器(14),和AVDD5/3(15)。这些值在ADCCON2.SCH和ADCCON3.SCH中选择。,2. ADC 转换结果数字转换结果
5、以2的补码形式表示。对于单端配置,结果总是为正,这是因为结果是输入信号和地面之间的差值,它总是一个正符号数(Vconv=Vinp-Vinn,其中Vinn=0V)。当输入幅度等于所选的电压参考VRE时,达到最大值。对于差分配置,两个引脚对之间的差分被转换,这个差分可以是负符号数。对于抽取率是512的一个数字转换结果的12位MSB,当模拟输入Vconv等于VREF时,数字转换结果是2047。当模拟输入等于-VREF 时,数字转换结果是-2048。,当ADCCON1.EOC设置为1时,数字转换结果是可以获得的,且结果放在ADCH和 ADCL中。注意转换结果总是驻留在ADCH和ADCL寄存器组合的MS
6、B段中。当读取 ADCCON2.SCH位时,它们将指示转换在哪个通道上进行。4.2 光敏传感器工作原理光敏电阻传感器是利用半导体的光电效应制成的一种电阻值随入射光的强弱而改变的电阻器;入射光强,电阻减小;入射光弱,电阻增大。光敏传感器模块如图4.1所示。光敏传感器可用于路灯的自动点灭、照相机的测光计等设备上,光敏传感器应用电路如图4.1所示,图4.2为ZigBee模块的部分线路图。,图4.1 光敏传感器模块,图4.2 ZigBee模块的部分线路图,目 录,实训步骤,第一步,新建工程、配置工程相关设置。具体参照实训3操作。第二步,编写程序。由于程序很长,只能对关键部分的程序进行分析。详细见“实训
7、4 光敏传感器模块/Project”目录包含的源程序文件。1. sensor.c中的main函数void main(void) uint16 sensor_val; uint16 len = 0; halBoardInit(); /模块相关资源的初始化 /ConfigRf_Init(); /无线收发参数的配置初始化 halLedSet(1); halLedSet(2); Timer4_Init(); /定时器初始化,实训步骤,Timer4_On(); /打开定时器 while(1) APP_SEND_DATA_FLAG = GetSendDataFlag(); if(APP_SEND_DATA
8、_FLAG = 1) /定时时间到 sensor_val=get_adc(); /取模拟电压 printf_str(pTxData,光照传感器电压:%d.%02dVrn,sensor_val/100,sensor_val%100); halLedToggle(3); / 绿灯取反,无线发送指示 halUartWrite(pTxData,strlen(pTxData); /数据也发到本地串口,便于调试,实训步骤,Timer4_On(); /打开定时 程序分析: 第11行,是由T4进行2s定时,即每2s标志位APP_SEND_DATA_FLAG有效一次,从而使得第12行的if有效一次。 第13行,
9、get_adc()函数为读取AD转换电压值。 第14行,把采集数据按格式连接成字符串写入到pTxData中。,实训步骤, 第16行,把采集数据发到本地串口,在PC机串口调试终端显示出来。 第50行,将字符串“光照传感器电压:%d.%02dVrn”转换成字符存入数组pTxData中,其中%d.为sensor_val/100.,%02d为sensor_val%100,V为字符。2. get_adc.c中的关键代码void hal_adc_Init(void) APCFG |=1; /模拟I/O配置,AIN0(P0.0)作为模拟I/O使用 P0SEL |= (1 15; /根据计算公式算出结果值 return (uint16)value;第三步,模块连接及下载程序。将光敏传感器插在ZigBee模块上,用串口线将ZigBee模块的串口连接至PC串口上。给ZigBee模块上电,重新编译程序无误后,下载程序到ZigBee模块中,如图4.3所示。,实训步骤,图4.3 ZigBee模块与光敏传感器模块连接示意图,第四步,运行程序。1打开串口调试软件,把串口的波特率设置为38400。,实训步骤,2.打开手机手电筒产生不同的光强,根据光敏的不同,在PC机的串口调试终端上显示不同的光照传感器电压信息。如图4.4所示。,图4.4 串口调试窗口,谢谢!,
Copyright © 2018-2021 Wenke99.com All rights reserved
工信部备案号:浙ICP备20026746号-2
公安局备案号:浙公网安备33038302330469号
本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。