资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,光照传感器模块重点,目 录,四、实训步骤,二、实训内容,一、实训目的,三、实训原理,实训目的,1掌握CC2530的ADC工作原理,2掌握光敏传感器工作原理,3能实现光敏传感器采集功能,目 录,四、实训步骤,二、实训内容,一、实训目的,三、实训原理,实训内容,采用光敏传感器和,ZigBee,模块,测量光线的强弱,并将数据通过串口上传到,PC,机端。,目 录,四、实训步骤,二、实训内容,一、实训目的,三、实训原理,实训原理,4.1 CC2530的ADC工作原理,ADC支持多达14位的模拟数字转换,具有多达12位的ENOB有效数字位。它包括一个模拟多路转换器,具有多达8个各自可配置的通道;以及一个参考电压发生器。转换结果可以通过DMA写入存储器。CC2530芯片的ADC的主要特性如下:,可选的抽取率。,实训原理,8个独立的输入通道,可接收单端或差分电压差信号。,参考电压可选为内部单端、外部单端、外部差分或AVDD5供电电压,引脚21。,参考电压可选为内部单端、外部单端、外部差分或AVDD5供电电压,引脚21。,产生中断请求。,转换完毕时DMA触发。,可以将片内的温度传感器作为输入。,电池测量功能。,4.1.1 ADC相关存放器,ADC的相关存放器有ADCLADC数据低位、ADCHADC数据高位、ADCCON1ADC控制1、ADCCON2ADC控制2、ADCCON3ADC控制3等,具体描述如表4. 1所示。,表4.1 ADC相关存放器描述,表4.1 ADC相关存放器描述,表4.1 ADC相关存放器描述,表4.1 ADC相关存放器描述,表4.1 ADC相关存放器描述,表4.1 ADC相关存放器描述,4.1.2 ADC操作,输入,端口P0引脚的信号可以用作ADC输入,涉及到的引脚有:AIN0AIN7。可以把这些引脚AIN0AIN7配置为单端或差分输入。,1单端输入。可以分为AIN0AIN7共8路输入。,2差分输入。可以分为AIN0和ANI1、AIN2和ANI3、AIN4和ANI5、AIN6和ANI7共四组输入,差分模式下的转换取自输入对之间的电压差,例如:第一组AIN0和ANI1作为输入,那么实际输入电压为AIN0和ANI1这两个引脚之差。,除了输入引脚AIN0AIN7外,片上温度传感器的输出也可以选择作为ADC输入,用于片上温度测量。还可以输入一个对应AVDD5/3的电压作为一个ADC输入。这个输入允许诸如需要在应用中实现一个电池监测器的功能。注意在这种情况下参考电压不能取决于电源电压,比方AVDD5 电压不能用作一个参考电压。,用16个通道来表示ADC的输入,通道号码0到7表示单端电压输入,由AIN0到AIN7组成;通道号码8到11表示差分输入,由AIN0AIN1、AIN2AIN3、AIN4AIN5和AIN6AIN7组成;通道号码12到15表示GND12温度传感器14,和AVDD5/315。这些值在和中选择。,2. ADC 转换结果,数字转换结果以2的补码形式表示。对于单端配置,结果总是为正,这是因为结果是输入信号和地面之间的差值,它总是一个正符号数Vconv=Vinp-Vinn,其中Vinn=0V。当输入幅度等于所选的电压参考VRE时,到达最大值。,对于差分配置,两个引脚对之间的差分被转换,这个差分可以是负符号数。对于抽取率是512的一个数字转换结果的12位MSB,当模拟输入Vconv等于VREF时,数字转换结果是2047。当模拟输入等于-VREF 时,数字转换结果是-2048。,当设置为1时,数字转换结果是可以获得的,且结果放在ADCH和 ADCL中。注意转换结果总是驻留在ADCH和ADCL存放器组合的MSB段中。当读取 位时,它们将指示转换在哪个通道上进展。,4.2 光敏传感器工作原理,光敏电阻传感器是利用半导体的光电效应制成的一种电阻值随入射光的强弱而改变的电阻器;入射光强,电阻减小;入射光弱,电阻增大。光敏传感器模块如图4.1所示。光敏传感器可用于路灯的自动点灭、照相机的测光计等设备上,光敏传感器应用电路如图4.1所示,图为ZigBee模块的局部线路图。,图4.1 光敏传感器模块,图4.2 ZigBee模块的局部线路图,目 录,四、实训步骤,二、实训内容,一、实训目的,三、实训原理,实训步骤,第一步,新建工程、配置工程相关设置。具体参照实训3操作。,第二步,编写程序。由于程序很长,只能对关键局部的程序进展分析。详细见“实训4 光敏传感器模块/Project目录包含的源程序文件。,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_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行,get_adc()函数为读取AD转换电压值。, 第14行,把采集数据按格式连接成字符串写入到pTxData中。,实训步骤, 第16行,把采集数据发到本地串口,在PC机串口调试终端显示出来。, 第50行,将字符串“光照传感器电压:%d.%02dVrn转换成字符存入数组pTxData中,其中%d.为sensor_val/100.,%02d为sensor_val%100,V为字符。,中的关键代码,void hal_adc_Init(void), APCFG |=1; /模拟I/O配置,AIN0作为模拟I/O使用 P0SEL |= (1 (0);/设置为外设功能,P0DIR /设置为输入方向 ,实训步骤,uint16 get_adc(void), uint32 value;,hal_adc_Init(); / ADC初始化,ADCIF = 0; /清ADC 中断标志,ADCCON3 = (0x80 | 0x10 | 0x00); /采用基准电压,通道0,启动AD转化,while ( !ADCIF ), ; /等待AD转化完毕,实训步骤,value = ADCL;/ADC转换结果的低位局部存入value中,value |= (uint16)ADCH) 15; /根据计算公式算出结果值 return (uint16)value;,第三步,模块连接及下载程序。,将光敏传感器插在ZigBee模块上,用串口线将ZigBee模块的串口连接至PC串口上。给ZigBee模块上电,重新编译程序无误后,下载程序到ZigBee模块中,如下图。,实训步骤,图,4.3,ZigBee模块与光敏传感器模块连接示意图,第四步,运行程序。,1翻开串口调试软件,把串口的波特率设置为38400。,实训步骤,2.翻开手机手电筒产生不同的光强,根据光敏的不同,在PC机的串口调试终端上显示不同的光照传感器电压信息。如下图。,图4.4 串口调试窗口,谢谢观赏,
展开阅读全文