基于stm32-M3智能照明毕业设计论文(7)

2019-06-11 13:43

天津工业大学本科毕业论文

4.4.1 ADC采集光敏传感器lsens的信号值

为保障读取的信息的准确,这里我们又建立了一个函数Get_Adc_Average。该函数的作用就是多次读取ADC的值,然后取平均值反馈回函数。

我们这里对于光敏信号的采集采用了连续读取10次ADC1通道1信号值,取平均值,然后将值赋给lsens。

具体程序如下: //获得ADC值 //ch:通道值 0~3 u16 Get_Adc(u8 ch) {

//设置指定ADC的规则组通道,一个序列,采样时间 }

//获取ADC平均值

u16 Get_Adc_Average(u8 ch,u8 times) { }

21

ADC_RegularChannelConfig(ADC1, ch, 1, DC_SampleTime_239Cycles5 ); //ADC1,ADC通道,采样时间为239.5周期 ADC_SoftwareStartConvCmd(ADC1, ENABLE); //使能指定的ADC1的软件转换启动功能

while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC )); //等待转换结束

return ADC_GetConversionValue(ADC1); //返回最近一次ADC1规则组的转换结果

u32 temp_val=0; u8 t;

for(t=0;t

return temp_val/times;

temp_val+=Get_Adc(ch); delay_ms(5);

天津工业大学本科毕业论文

4.4.2 ADC采集热释电红外传感器infrared信号值

这里我们建立了Get_Infrared函数。为减少误操作发生率,该函数作用是多次读取ADC1通道2信号值,若达到设置值则为达标,规定次数之内达标次数超过90%则视为有人,反之则为无人。

我们这里对于热释电红外传感器信号采集,规定次数为60次,若有人则将infrared赋值为1,反之赋值为0。

因为多次读取ADC获取值并计算判断的耗时较长,然而又不能耽误KEY键值的获取判断,所以在Get_Infrared函数获取人体活动红外信号的过程中加入了KEY键值的判断。

具体主要程序如下: u8 Get_Infrared(u8 time) {

u8 t=0; u8 x=0; u8 y=0; vu8 key=0; u16 infrare; }

22

while((t

if(x>(time*9/10)) else

y=1; y=0;

t++;

infrare=Get_Adc_Average(ADC_Channel_2,10); if(infrare>=3000)

x+=1;

if(KEY1==0)

key=KEY1_PRES; if(KEY3==0)

key=KEY3_PRES; delay_ms(1);

return y;

天津工业大学本科毕业论文

4.5 PWM控制LED照明亮度

本设计中,针对不同情景模式有不同的照明亮度,关闭、小夜灯、完全打开三种模式。所以需要PWM来控制小灯的亮度。

如何进行PWM 脉宽调制是一个令LED能任意调节亮度的关键。PWM中文名称叫脉冲宽度调制,英文全称叫“Pulse Width Modulation”,我们这里就叫做脉宽调制。利用微处理器的数字输出转化为类似模拟输出的非常好而有效的技术。控制占空比,简单来说,就是对脉冲宽度的控制。

STM32 的定时器除了 TIM6 和 TIM7。其他的定时器都可以用来产生 PWM 输出。那么这里面就有了高级定时器和通用定时器之分。高级定时器有 TIM1 和 TIM8 ,他俩可以同时产生7 路脉宽调制输出,而通用定时器能同时产生4 路的脉宽调制输出,我们这里就用的TIM3,加起来 STM32 最多可以同时产生 30 路 PWM 输出。这里我们仅利用 TIM3 的 CH2 产生一路 PWM 输出。通过多路PWM控制灯的亮度,我们还可以组成多种采光模式,可以拓展到智能家居上。

本设计要使用 TIM3,需要进行很多步骤:如图4-3所示。 (1) 开启 TIM3 的时钟。

(2) 配置 PB5 为复用输出。TIM3_CH2 默认是接在 PA7 上的,由此我们需要设置 TIM3_REMAP 为部分重映射以便 TIM3_CH2 重映射到 PB5 上。此时TIM3_CH2 通道将重映射到 PB5 上,在这个时候,PB5 属于复用功能输出。因为 STM32 重映射只能重映射到特定的端口。具体做法是,我们可以把第一个入口参数理解为设置重映射的类型,我们可以将其设置为GPIO_PartialRemap_TIM。

(3) 设置 ARR 和 PSC 两个寄存器的值来控制输出 PWM 的周期。当 PWM 周期达到一定速度(高于于 50Hz)的时候,我们的人眼才不会觉得闪烁。因此,PWM 周期在这里不应该设置的太小。

(4) 我们要设置 TIM3_CH2 为脉宽调制模式, DS0 为低电平亮,我们需要当 CCR2 的值小的时候,DS0 就暗,反之,DS0 就亮,由此要通过配置 TIM3_CCMR1 的位来控制TIM3_CH2 的模式,在库函数中,PWM 通道设置是通过函数 TIM_OC1Init()~TIM_OC4Init()来设置的,我们在这用的是通道 2,所以要用函数 TIM_OC2Init()。 (5) 使能 TIM3。

在此,脉宽调制开始输出了,只不过此时占空比和频率都是固定的,我们需要通过修改 TIM3_CCR2 则控制 CH2 的输出占空比。继而控制 DS0 的亮度。 本设计运用库函数void TIM_SetCompare2(TIM_TypeDef* TIMx, uint16_t Compare2)来修改 TIM3_CCR2 占空比。

23

天津工业大学本科毕业论文

因此,本设计中所用到的三种模式分别对应的函数为:关闭LED模式TIM_SetCompare2(TIM3,0);小夜灯模式TIM_SetCompare2(TIM3,50);完全打开LED模式TIM_SetCompare2(TIM3,899); 开始开启 TIM3 时钟以及复用功能时钟,配置 PB5 为复用输出。 设置 TIM3_CH2 的 PWM 模式,使能 TIM3 的 CH2 输出设置 TIM3_CH2 重映射到 PB5 上。 使能 TIM3。 初始化 TIM3,设置 TIM3 的 ARR 和 PSC修改 TIM3_CCR2 来控制占空比以调节LED亮度结束图4-3 TIM3控制占空比流程图 24

天津工业大学本科毕业论文

第五章 系统测试及结果

5.1外部信号采集模块的测试

嵌入式系统、单片机系统的测试方法多种多样,包括串口测试,JTAG在线测试,以及利用一些显示设备,例如TFT LCD,数码管,LED指示灯,蜂鸣器等。但最终目的在于调试系统的软件和硬件,使系统正常工作,达到预期效果。在该系统调试的过程中,主要利用LED指示灯,TFT LCD显示调试信息的方法。

光电传感器模块电源由开发板提供3.3V。信号采集线接入PA1。实物图如图5-1。

图5-1 光敏传感器模块实物图

热释电红外传感器模块电源也由开发板提供同样为3.3V,信号采集线接入PA2。实物图如图5-2。

图5-2 热释电红外传感器模块实物图

主控MCU将光电传感器模块和热释电红外传感器模块采集的信息进行处理,然后在TFTLCD上进行显示,虽然最后系统并不需要LCD显示,但是为了更直观的发现数据采集上的问题,安装了LCD模块,并进行了驱动程序的编写。利用TFT实时显示采集的信息值和转化后的电压值,调试程序。如图5-3和图5-4所示,可以明显看到,当光照较强时,光敏传感器采集的信息lsens在200~1900之间;当光照较弱时lsens在3000~3900之间;当光线过暗时lsens达到3900以上。有人在热释电红外传感器周围活动时,infrared值为1;若没人或一段时间感应不到人活动,则infrared值为0。达到了预期工作状态。

25


基于stm32-M3智能照明毕业设计论文(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:04道路运输企业驾驶人宣传教育活动记录表(2015)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: