




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要随着步入现代科技发展的高速时代,人们对美好生活的向往,对生活品质不断增长的的需求使自动门在商业、住宅、公共交通等领域得到了广泛应用。作为一种便捷、高效的出入控制设备,自动门通过电子技术和传感器技术实现自动开启和关闭,为人们提供了极大的便利。由于我国研究起步较晚,自动门控制系统的功能不够完备,但是在国家政策支持下,国内科技公司拓展业务开始研究提升自动门的功能。这些控制系统种类多样,功能参差不齐,操作复杂,结构不够简洁,因此难以向大众普及。针对以上问题,本次设计面向大众,以实际需求出发。将传感器技术与单片机技术结合,设计并实现了基于STM32单片机的自动门电路设计。以STM32单片机为核心结合红外传感器等模块完成硬件系统的设计,按照自动门控制要求设计系统功能,软件设计方面通过Keil5软件编译实现单片机控制电机转动,模拟门开关过程,并在实验过程中对系统进一步优化完成运行状态指示功能。最后,本文通过对系统功能测试,本次设计结果表明本文研究的基于STM32单片机的自动门电路设计能够满足普遍生活场景的要求,实现了操作简单,结构简洁的目的。关键词:红外感应;自动门控制;定时器中断;STM32单片机AbstractWiththehigh-speederaofmodernscientificandtechnologicaldevelopment,people'syearningforabetterlifeandthegrowingdemandforqualityoflifehavemadeautomaticdoorswidelyusedincommercial,residential,publictransportationandotherfields.Asaconvenientandefficientaccesscontroldevice,automaticdoorsareautomaticallyopenedandclosedthroughelectronictechnologyandsensortechnology,providinggreatconvenienceforpeople.DuetothelatestartofChina'sresearch,thefunctionoftheautomaticdoorcontrolsystemisnotcomplete,butwiththesupportofnationalpolicies,domestictechnologycompanieshaveexpandedtheirbusinessandbegantostudyandimprovethefunctionofautomaticdoors.Thesecontrolsystemsarediverse,functional,complexandunconcise,makingitdifficulttopopularizetothegeneralpublic.Inresponsetotheaboveproblems,thisdesignisorientedtothepublicandstartsfromtheactualneeds.Bycombiningsensortechnologywithmicrocontrollertechnology,anautomaticdoorcircuitdesignbasedonSTM32wasdesignedandimplemented.WithSTM32microcontrollerasthecore,combinedwithinfraredsensorsandothermodulestocompletethedesignofthehardwaresystem,thesystemfunctionisdesignedaccordingtotherequirementsofautomaticdoorcontrol,andthesoftwaredesigniscompiledbyKeil5softwaretorealizetherotationofthesingle-chipmicrocomputercontrolmotor,simulatethedooropeningandclosingprocess,andfurtheroptimizethesystemtocompletetheoperationstatusindicationfunctionintheexperimentalprocess.Finally,throughthefunctionaltestofthesystem,thedesignresultsshowthattheSTM32-basedautomaticdoorcircuitdesignstudiedinthispapercanmeettherequirementsofcommonlifescenarios,andachievethepurposeofsimpleoperationandsimplestructure.Keywords:Infraredsensing;Automaticdoorcontrol;Thetimerisinterrupted;STM32single-chipmicrocomputer目录1.概述 在主程序中,传感器判断状态有四种情况,系统接收来自传感器的开门命令,控制电机正转开门,接收到关门命令,控制电机反转关门。传感器状态判断流程图如图4.2所示。图4.2进出门传感器状态判断流程图对红外传感器状态进行检测,并根据检测结果控制门的开关动作。判断标志位AD2,如果AD2为0表示检测到有人靠近门并将CloseFlag2置为1;否则,将OpenFlag2置为1,标志位AD6同理。其核心代码如下。if(AD2==0)
{CloseFlag2=1;
}
else
{OpenFlag2=1;
}
if(AD6==0)
{CloseFlag6=1;
}
else
{OpenFlag6=1;
}
if((OpenFlag2==1&&AD2==0)||(OpenFlag6==1&&AD6==0))
{
CW_Circle(265);OpenFlag2=0;OpenFlag6=0;
}if((CloseFlag2==1&&AD2==1)||(CloseFlag6==1&&AD6==1))
{
CCW_Circle(265);CloseFlag2=0;CloseFlag6=0;
}如果第二个门的OpenFlag2为1且AD2为0,或者第六个门的OpenFlag6为1且AD6为0,则执行门的顺时针转动操作,即调用CW_Circle函数进行门的打开动作,并将OpenFlag2和OpenFlag6重置为0,表示门已经打开。如果第二个门的CloseFlag2为1且AD2为1,或者第六个门的CloseFlag6为1且AD6为1,则执行门的逆时针转动操作,即调用CCW_Circle函数进行门的关闭动作,并将CloseFlag2和CloseFlag6重置为0,表示门已经关闭。最后while循环的结束,实现了根据红外传感器的状态来控制门的开关动作。4.2子程序设计4.2.1定时器中断程序设计在定时器中断程序中,接到中断命令定时器开启中断。当计数值大于设定值时结束中断,关闭定时器。定时器3计数器循环流程图如图4.3所示。图4.3定时器3计数器循环voidTIM3_Init(void){RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
TIM_InternalClockConfig(TIM3);
TIM_TimeBaseInitTypeDefTIM_TimeBaseInitStructure;TIM_TimeBaseInitStructure.TIM_ClockDivision=TIM_CKD_DIV1;TIM_TimeBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up;TIM_TimeBaseInitStructure.TIM_Period=10000-1;TIM_TimeBaseInitStructure.TIM_Prescaler=7200-1;TIM_TimeBaseInitStructure.TIM_RepetitionCounter=0;TIM_TimeBaseInit(TIM3,&TIM_TimeBaseInitStructure);
TIM_ClearFlag(TIM3,TIM_FLAG_Update);TIM_ITConfig(TIM3、TIM_IT_Update、ENABLE);
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
NVIC_InitTypeDefNVIC_InitStructure;NVIC_InitStructure.NVIC_IRQChannel=TIM3_IRQn;NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=2;NVIC_InitStructure.NVIC_IRQChannelSubPriority=2;
NVIC_Init(&NVIC_InitStructure);TIM_Cmd(TIM3,ENABLE);}由上述定时器中断代码得到RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE)函数用于启用TIM3的时钟。TIM_InternalClockConfig(TIM3)函数用于配置TIM3使用内部时钟。定义TIM_TimeBaseInitTypeDef结构体TIM_TimeBaseInitStructure,用来配置定时器,并进行基础设置:将其时钟分频设置为1;计数模式为向上计数;TIM_Period=10000-1设置最大计数周期,当计数值达到最大周期时触发更新事件,即每1毫秒触发一次。TIM_Prescaler=7200-1设置时钟预分频为7200-1,即每7200个时钟周期计数器加1,相当于每1微秒加1。TIM_RepetitionCounter=0将重复计数器设置为0。TIM_TimeBaseInit(TIM3,&TIM_TimeBaseInitStructure)函数用于初始化TIM3定时器。TIM_ClearFlag(TIM3,TIM_FLAG_Update)函数用于清除更新中断标志位,而TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE)函数用于开启更新中断。NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2)将中断优先级分组设置为2,并用NVIC_InitTypeDef定义了结构体NVIC_InitStructure,用来配置中断优先级。在结构体中进行基础设置:NVIC_IRQChannel=TIM3_IRQn作用为指定中断通道为TIM3;通过NVIC_IRQChannelCmd=ENABLE完成使能中断;NVIC_IRQChannelPreemptionPriority=2、NVIC_IRQChannelSubPriority=2表示设置抢占优先级与响应优先级为2,然后初始化NVIC并使能TIM3定时器。voidTIM3_Delayus(uint16_txus){TIM_Cmd(TIM3,ENABLE);while(TIM3->CNT<xus);TIM3->CNT=0;TIM_Cmd(TIM3,DISABLE);}voidTIM3_Delayms(uint16_txms){intI;for(i=0;i<xms;i++)
{TIM3_Delayus(1000);
}}上述定时器3延时函数程序代码用两个不同参数实现不同数量级的延时,其中voidTIM3_Delayus(uint16_txus)函数用来实现微秒级延时。参数xus表示需要延时的微秒数;同理voidTIM3_Delayms(uint16_txms)函数用来实现毫秒级延时。参数xms表示需要延时的毫秒数。然后启用TIM3定时器。当TIM3的计数器的值小于给定的微秒数时,进入循环。这个循环等待计数器的值达到给定的微秒数。当计数器的值达到给定的微秒数后,将TIM3的计数器清零,以便下一次延时使用。最后关闭TIM3定时器,结束延时。同时使用for循环来控制延时的次数,使延时达到给定的毫秒数。在每次循环中,调用TIM3_Delayus函数,传入参数1000,即延时1000微秒。对定时器3代码修改,得到定时器2,其计数循环框架与定时器3一致,区别在于初始化后无需对定时器2使能。图4.4定时器2计数器循环void
TIM2_Init(void){
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,
ENABLE);
TIM_InternalClockConfig(TIM2);
TIM_TimeBaseInitTypeDef
TIM_TimeBaseInitStructure;
TIM_TimeBaseInitStructure.TIM_ClockDivision
=
TIM_CKD_DIV1;
TIM_TimeBaseInitStructure.TIM_CounterMode
=
TIM_CounterMode_Up;
TIM_TimeBaseInitStructure.TIM_Period
=
10000
-
1;
TIM_TimeBaseInitStructure.TIM_Prescaler
=
72
-
1;
TIM_TimeBaseInitStructure.TIM_RepetitionCounter
=
0;
TIM_TimeBaseInit(TIM2,
&TIM_TimeBaseInitStructure);
TIM_ClearFlag(TIM2,
TIM_FLAG_Update);
TIM_ITConfig(TIM2,
TIM_IT_Update,
ENABLE);
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
NVIC_InitTypeDef
NVIC_InitStructure;
NVIC_InitStructure.NVIC_IRQChannel
=
TIM3_IRQn;
NVIC_InitStructure.NVIC_IRQChannelCmd
=
ENABLE;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority
=
2;
NVIC_InitStructure.NVIC_IRQChannelSubPriority
=
2;
NVIC_Init(&NVIC_InitStructure);}void
TIM2_Delayus(uint16_t
xus){
TIM_Cmd(TIM2,ENABLE);
while(TIM2
->
CNT
<
xus);
TIM2
->
CNT
=
0;
TIM_Cmd(TIM2,DISABLE);}void
TIM2_Delayms(uint16_t
xms){
int
i;
for(i=0;i<xms;i++)
{
TIM2_Delayus(1000);
}}定时器2计数原理如图4.4所示。定时器2和定时器3进行同样配置,如上述代码所示。4.2.2步进电机转动程序设计首先对步进电机初始化,RCC_APB2PeriphClockCmd函数打开步进电机控制引脚所在的GPIO端口的时钟。然后配置各GPIO引脚为推挽输出模式并设置GPIO引脚的输出速度为50MHz,最后初始化每个步进电机控制引脚为低电平状态。接下来控制电机旋转流程图如图4.5、图4.6所示。这些函数通过控制步进电机的控制引脚LA、LB、LC、LD来实现顺时针旋转、逆时针旋转以及停止操作。以下是每个函数的简要说明:图4.5控制电机正转流程图图4.6控制电机反转流程图void
Step_Motor_CW(uint16_t
xms){
volatile
uint16_t
i;
uint8_t
temp
=
0;
for(i=0;i<8;i++)
{
temp
=
Steps[i];
LA
=
(uint8_t)((temp&PLA)
>>
0);
LB
=
(uint8_t)((temp&PLB)
>>
1);
LC
=
(uint8_t)((temp&PLC)
>>
2);
LD
=
(uint8_t)((temp&PLD)
>>
3);
TIM2_Delayms(xms);
}
Step_Motor_Stop();}void
Step_Motor_CCW(uint16_t
xms){
int
i;
for(i=8;i>0;i--)
{
LA
=
(uint8_t)((Steps[i-1]&PLA)
>>
0);
LB
=
(uint8_t)((Steps[i-1]&PLB)
>>
1);
LC
=
(uint8_t)((Steps[i-1]&PLC)
>>
2);
LD
=
(uint8_t)((Steps[i-1]&PLD)
>>
3);
TIM2_Delayms(xms);
}
Step_Motor_Stop();}void
Step_Motor_Stop(void){
LA
=
0;
LB
=
0;
LC
=
0;
LD
=
0;}void
CW_Circle(uint16_t
x){
uint16_t
i;
for(i=0;i<x;i++)
{
Step_Motor_CW(1);
}
}上述电机转动核心代码可得出Step_Motor_CW(uint16_txms)函数用于控制步进电机顺时针旋转。它根据传入的参数xms来控制每一步的延时时间,从而控制步进电机的旋转速度。函数通过循环遍历一个步进电机旋转顺序数组Steps[],依次将每个旋转步骤应用到步进电机的控制引脚上,并通过TIM2_Delayms()函数进行延时控制。Step_Motor_CCW(uint16_txms)函数与Step_Motor_CW()函数类似,但是实现的是步进电机逆时针旋转。它同样通过遍历Steps[]数组,逆序应用每个旋转步骤,并通过延时控制步进电机旋转速度。Step_Motor_Stop(void)函数用于停止步进电机的运动,简单地将步进电机控制引脚设置为低电平。CW_Circle(uint16_tx)函数用于控制步进电机进行顺时针旋转多个圈数。它调用Step_Motor_CW()函数来实现,传入参数x表示顺时针旋转的圈数。这些函数实现了对步进电机的控制,可以方便地控制顺时针旋转、逆时针旋转和停止操作,以及指定圈数的旋转。4.2.3PWM输出程序设计该程序的作用在于初始化了TIM2定时器和GPIOA引脚,并配置了TIM2的PWM输出功能,然后提供了一个函数用于设置PWM的占空比。其流程图如图4.7所示。图4.7PWM输出函数流程图voidPWM_Init(void){RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
GPIO_InitTypeDefGPIO_InitStructure;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0;GPIO_InitStructure.GPIO_SPEED=GPIO_Speed_50MHz;GPIO_Init(GPIOA,&GPIO_InitStructure);TIM_InternalClockConfig(TIM2);TIM_TimeBaseInitTypeDefTIM_TimeBaseInitStructure;TIM_TimeBaseInitStructure.TIM_ClockDivision=TIM_CKD_DIV1;TIM_TimeBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up;TIM_TimeBaseInitStructure.TIM_Period=20000-1;TIM_TimeBaseInitStructure.TIM_Prescaler=72-1;TIM_TimeBaseInitStructure.TIM_RepetitionCounter=0;TIM_TimeBaseInit(TIM2,&TIM_TimeBaseInitStructure);TIM_OCInitTypeDefTIM_OCInitStructure;TIM_OCStructInit(&TIM_OCInitStructure);
TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM1;TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_High;TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;TIM_OCInitStructure.TIM_Pulse=0;TIM_OC1Init(TIM2,&TIM_OCInitStructure);TIM_Cmd(TIM2,ENABLE);}由上述代码可以看出是一个用于初始化PWM功能的函数以及设置PWM占空比。首先使能并启用TIM2、GPIOA的时钟的,再对GPIO进行初始化:配置GPIOA的工作模式为复用推挽输出;GPIOA的输出速率为50MHz。将GPIOA的第0号引脚为复用推挽输出。然后对TIM2定时器进行初始化,首先选择TIM2作为内部时钟源。并定义TIM2定时器初始化结构体变量;初始化定时器时钟分频、计数模式、计数器周期和预分频器。对PWM输出进行初始化,定义TIM2的输出比较初始化结构体变量;初始化输出比较结构体变量;设置PWM输出模式、极性、输出状态和初始占空比。完成TIM2的PWM输出初始化。最后使能TIM2,启动定时器开始工作。设置PWM的占空比,即设置CCR的值,以调整PWM输出的脉冲宽度。4.3本章小结本章从STM32程序开发环境、定时器中断、步进电机控制、PWM输出、主程序编译这5个主要部分完成系统软件设计。5.系统功能测试测试是检测系统设计中着重的部分,贯穿了实验的整个阶段。主要介绍具体的系统测试。测试包括了各模块的功能测试和整体性能指标的测试。系统实物设计如图5.1所示,由STM32单片机、两个红外传感器、一块OLED显示屏、一个步进电机构成。可以看到两个传感器所连接的跳线颜色不同,其中黄蓝线连接的为出门检测的传感器,用于检测出门时状态。而橙红线连接的是进门检测的传感器,用于检测进门时的状态。图5.1系统设计的实物模型5.1门的自动开关功能系统通过红外识别模块来实现自动门的开关功能。当红外传感器识别到物体时,控制电机转动,实现自动门打开功能。当传感器未识别到物体时,控制电机反转,实现自动门关闭。在测试时用手在传感器前模拟识别物体的过程。初始状态下两个红外传感器均未识别到物体时OLED显示屏上的进门、出门状态均为1,系统初始状态如图5.2所示。图5.2系统初始状态本次设计用硬纸壳模拟自动门,初始位置可以看到门是作有记号的一面。初始时门的位置如图5.3所示。当手在出门传感器前,即传感器检测到有物体时,电机开始转动,此时可以看到面对的是未作记号的一面,如图5.4所示。图5.3自动门初始位置图5.4自动门打开后位置若出门传感器之后未再识别到物体时,控制电机回转,自动门回归初始位置,此时面对的仍是作有记号的一面,如图5.5所示。同理,当进门传感器识别到物体时,电机转动与出门时一致。经过多次实验测试,系统自动开关门功能正常,测试通过。图5.5自动门回归初始位置5.2安全保护功能系统通过电机驱动模块来实现自动门的安全保护功能。当门在闭合时识别到有物体时,在自动门开关门进行延迟,即在识别到物体靠近时电机正转反转之间有一秒的延时。使系统设计更加人性化,避免夹伤。开门之后电机的转动位置,如图5.6所示。下图则是延迟一秒之后电机进行回转时的转动位置,经对比可以看出,自动门的安全性能得到一定程度的保障。经过多次实验测试,系统安全保护功能正常,测试通过。图5.6安全保护功能测试5.3运行状态指示功能在本系统中,运行状态指示功能通过红外传感器结合OLED显示模块实现的。当物体进入传感器的探测范围时,系统自动识别到有物体进入。可以看到与初始状态图5.2所示相比,当用手遮挡传感器模拟进门传感器识别到物体时,图5.7(左)所示,OLED显示屏上进门状态由1变为0,表示此时有人进门。同理出门传感器在识别到物体时,OLED显示屏上出门状态由1变为0,图5.7(右)所示,而进门状态由于未识别到物体则保持不变,表示此时有人出门。经过多次实验测试,系统运行状态指示功能正常,测试通过。通过安装的显示屏可以更直观的看出此时进出门的状态,使本系统更加美观便捷。图5.7运行状态指示功能测试5.4本章小结本章对系统实际的功能进行检测。分析系统检验的效果,实现系统自动开关门、安全保护和运行状态显示的系统功能。对系统各模块功能进行测试,测试结果表明,系统各模块主要功能基本实现。最后总体测试结果表明,基于STM32单片机的自动门电路设计能够满足设计系统的功能需求。6.总结与展望经过本次设计,使我学会了很多东西。本文查阅大量国内外相关资料和研究现状,从市场化方面进行需求分析,设计并实现了一种基于STM32的自动门电路设计。本文主要研究成果:(1)系统通过红外识别模块来检测周围是否有物体,配合电机驱动模块实现门的自动开关。(2)系统通过延时函数完成自动门开关延迟,防止系统工作中有人受伤,提高了安全系数。本文创新点如下:系统通过OLED显示模块结合红外识别模块实现运行状态的显,优化系统设计。本文的不足:(1)红外系统的识别准确性有待提升,在系统的两个红外传感器同时识别物体时,未进行优先级的划分。影响系统可靠性。(2)系统整体的美观性有待改进,设计初期未将美观性考虑进来。参考文献戴建国.我国自动门行业现状调研报告[J].中国建筑金属结构.2014(09):60-64.它山之石:国外智能家居的发展状况[J].中国新通信,2011(23):67-67.肖俊峰,郑小琴.一种红外线自动门单片机控制系统[J].门窗,2008(10):45-48.高伟.智慧门系统的智能监控设计与开发[D].南京理工大学,2013.郑色深.旋转自动门安全控制系统的设计与实现[D].哈尔滨工业大学,2017.王强.自动门控制系统的设计及其系统软件开发[D].天津大学,2009.隋晓丽.创新安全规范——谈自动门行业核心竞争力的提升[J].中国建筑金属结构,2012(11):49-51.罗丹丹.基于指纹和人脸识别的安全专用门禁系统的设计与应用[D].四川:电子科技大学,2019.周伯
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 秦皇岛市中医院儿童雾化吸入治疗考核
- 邯郸市人民医院肝门部胆管癌根治术关键技术考核
- 2025广东省江门市蓬江区教师招聘23人模拟试卷附答案详解(黄金题型)
- 2025国家电投集团上海核工院招聘模拟试卷及答案详解(有一套)
- 2025年杭州市上城区望江街道社区卫生服务中心招聘编外1人考前自测高频考点模拟试题及答案详解(必刷)
- 2025广东韶关市南雄市中小学、幼儿园教师招聘及选聘106人考前自测高频考点模拟试题(含答案详解)
- 2025昆明市第三人民医院重症医学科见习护理人员招聘(7人)考前自测高频考点模拟试题及答案详解(易错题)
- 衡水市人民医院区域性医疗集团人力资源共享服务中心设计
- 2025安徽合肥师范学院辅导员招聘32人模拟试卷及参考答案详解1套
- 秦皇岛市中医院消化科健康教育护士授课能力考核
- 废钢钢结构拆除工程合同标准范本
- 2025年国家电网《安规》考试判断题库及答案
- 2025上海美术馆招聘6人备考考试题库附答案解析
- 检验科二级生物实验室汇报
- 盾构姿态监测-洞察及研究
- 药店店员技巧培训
- 学生进厂安全培训课件
- 2025年四川省巴中市中考数学试题
- 乡村振兴课件简介模板
- (一检)泉州市2026届高三高中毕业班质量监测(一)数学试卷(含标准答案)
- 管道热处理课件
评论
0/150
提交评论