您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 电气安装工程 > 基于单片机的声控燃气灶设计论文
基于凌阳单片机的声控智能化燃气灶设计摘要:文章以凌阳公司16位单片机SPCE061A为核心,与传统电子燃气灶结合,设计出家庭厨房应用的声控智能化燃气灶。该燃气灶是用语音控制点火、火力大小调节以及熄火。在硬、软件设计中,系统采用SPCE061A型单片机为控制核心,使用C语言为编程语言,提高了系统整体的稳定性。关键词:普通燃气灶;SPCE061A;步进电机;脉冲点火器,光耦隔离器;声控燃气灶是家庭普及率非常高的厨房电器,科技在不断发展,燃气灶也在不断更新换代,百姓的生活逐步走向自动化、完美化。电子燃气灶正在朝着自动化、智能化方向发展。本文设计的智能燃气灶实现了语音控制燃气灶的电火、火力大小以及熄火等功能。设计并实现智能燃气灶,对于实现厨房智能化、自动化有着重要的现实意义。一、工作原理该燃气灶系统由普通燃气灶、SPCE061A单片机、步进电机、脉冲点火器,光耦隔离器、51单片机等组成。图片1:普通燃气灶图片2:SPCE061A单片机图片3:步进电机图片4:光耦隔离器图片5:脉冲点火器智能燃气灶系统的工作原理:1.系统接收来自使用者的“点火”语音信号,由单片机给出相关信号控制步进电机打开燃气阀给燃气灶通天然气,同时控制脉冲点火器点火;2.当系统接收到来自使用者的“右转”(大火)语音信号时,由单片机给出相应信号控制步进电机正转合适角度调节燃气阀增大燃气进气量,来达到增加火力的目的;3.当系统接收到来自使用者的“左转”(小火)语音信号时,由单片机给出相应信号控制步进电机调节反转合适角度燃气器阀减小燃气进气量,从而实现减小火力;4.当系统接收到来自使用者的“熄火”语音信号时,由单片机给出相应信号控制步进电机调节燃气阀停止供气,以达到熄火目的。二、硬件设计我们选择凌阳公司(Sunplus)开发的16位SPCE061A,它的突出优点是低功耗和功能集成,内部的语音资源可实现语音控制功能,并适合于自动信号采集、自动控制电机、点火器等领域应用。该系统的控制部分电路,主要由SPCE061A单片机、步进电机、脉冲点火器、光耦隔离器构成,其中通过步进电机来控制燃气阀的开断。控制部分以凌阳SPCE061A单片机为控制核心。(一)点火部分点火部分由两部分组成,包括光耦隔离器模组和脉冲点火器部分。光耦隔离器模组用于实现弱电控制强电,其目的是减小脉冲点火器产生的高压脉冲对单片机的影响。该模组接单片机端有三个接线端,分别GND、VCC、IN三个端口,IN端接单片机相应IO口;接脉冲点火器端有两个端口分别为COM、CK,COM端接脉冲打火器的GND端,CK端接脉冲打火器的VCC端。脉冲点火器产生电火花点燃燃气,完成点火需要外接电源,外接电源由三节1.5V干电池提供。光耦隔离器制板图(二)火力控制部分火力控制主要有两种方法,一种是通过传统旋钮进行对火力大小进行控制,另一种是通过控制步进电机来控制火力大小,从大火力转到小火力控制时通过单片机发出控制信号,控制步进电机,然后再控制燃气阀调节进气口的进气量来调节火力大小和关断燃气灶的。控制火力过程如下,通过单片机控制启动点火装置与步进电机,将燃气灶点燃并让火力处于中火位置。当需要大火时,使用者发出“大火”语音信号,CPU接收到语音信号并给出相应控制信号,控制步进电机产生相应动作,调节燃气阀增大进气量,从而增加火力。当需要小火时,使用者发出“小火”语音信号,CPU接收到语音信号并给出相应控制信号,控制步进电机产生相应动作,调节燃气阀减小进气量,从而减小火力。三、软件设计本系统使用凌阳单片机支持的C语言进行编写,程序采用模块化的编程方法,将程序分为主程序、脉冲点火程序、火力大小调节程序等几部分。(一)主程序流程图51单片机程序流程图:1开始扫描点火信号P1^0点火扫描p1^1~p1^3熄火左转(小火)右转(大火)结束(二)程序设计SPCE061A语音控制程序#includebsrsd.h#defineNAME_ID0x100#defineCOMMAND_ONE_ID0x101#defineCOMMAND_TWO_ID0x102#defineCOMMAND_THREE_ID0x103#defineCOMMAND_FOUR_ID0x104#defineRSP_INTR0#defineRSP_NAME0#defineRSP_FIRE1#defineRSP_GUARD2#defineRSP_AGAIN3#defineRSP_NOVOICE4#defineRSP_NAMEDIFF5#defineRSP_CMDDIFF6#defineRSP_STAR7#defineRSP_MASTER8#defineRSP_HERE9#defineRSP_GUNSHOT0#defineRSP_PATROL11#defineRSP_READY12#defineRSP_COPY13#defineRSP_NOISY14//..................全程变量....................intgActivated=0;//该变量用于检测是否有触发命令,当有识别出语句//为触发名称则该位置1intgTriggerRespond[]={RSP_MASTER,RSP_HERE,RSP_MASTER};intgComm2Respond[]={RSP_PATROL,RSP_READY,RSP_COPY};externvoidClearWatchDog();intPlayFlag=0;voidPlayRespond(intResult){BSR_StopRecognizer();SACM_S480_Initial(1);SACM_S480_Play(Result,3,3);while((SACM_S480_Status()&0x0001)!=0){SACM_S480_ServiceLoop();ClearWatchDog();}SACM_S480_Stop();BSR_InitRecognizer(BSR_MIC);BSR_EnableCPUIndicator();}intTrainWord(intWordID,intRespondID){intres;PlayRespond(RespondID);while(1){res=BSR_Train(WordID,BSR_TRAIN_TWICE);if(res==0)break;switch(res){case-1://没有检测出声音PlayRespond(RSP_NOVOICE);return-1;case-2://需要重新训练一遍PlayRespond(RSP_AGAIN);break;case-3://环境太吵PlayRespond(RSP_NOISY);return-1;case-4://数据库满return-1;case-5://检测出声音不同if(WordID==NAME_ID)PlayRespond(RSP_NAMEDIFF);//两次输入名称不同elsePlayRespond(RSP_CMDDIFF);//两次输入命令不同return-1;case-6://序号错误return-1;}}return0;}intmain(){intx,res,timeCnt=0,random_no=0;InitIO();BSR_DeleteSDGroup(0);//初始化存储器RAM//PlayRespond(RSP_INTR);//播放开始训练的提示音请输入触发名称//..........训练名称..............................while(TrainWord(NAME_ID,0)!=0);//..........训练第一条命令.......................while(TrainWord(COMMAND_ONE_ID,1)!=0);//..........训练第二条命令.......................while(TrainWord(COMMAND_TWO_ID,2)!=0);//..........训练第三条命令.......................while(TrainWord(COMMAND_THREE_ID,12)!=0);//..........训练第四条命令.......................while(TrainWord(COMMAND_FOUR_ID,13)!=0);//..........开始识别命令.........................BSR_InitRecognizer(BSR_MIC);//辨识器初始化BSR_EnableCPUIndicator();//启动实时监控PlayRespond(RSP_STAR);//播放开始辨识的提示音while(1){random_no++;if(random_no=3)random_no=0;res=BSR_GetResult();if(res0)//识别出命令{if(gActivated){timeCnt=0;switch(res){caseNAME_ID://触发命令响应PlayRespond(gTriggerRespond[random_no]);break;caseCOMMAND_ONE_ID://识别第一个命令PlayFlag=1;LED_RED_ON();PlayFlag=0;gActivated=0;break;caseCOMMAND_TWO_ID://识别到第二条命令LED_RED_OFF();gActivated=0;break;caseCOMMAND_THREE_ID://识别第三条命令LED_GRE_ON();for(x=500;x0;x--);LED_REDD_OFF();gActivated=0;break;caseCOMMAND_FOUR_ID://识别第四条命令LED_GRE_OFF();for(x=500;x0;x--);LED_REDD_OFF();gActivated=0;break;}}else{if(res==NAME_ID){PlayRespond(gTriggerRespond[random_no]);gActivated=1;timeCnt=0;}}}elseif(gActivated){if(++timeCnt450)//超出定时{PlayRespond(RSP_NOVOICE);//在设定时间内没有检测出声音gActivated=0;timeCnt=0;}}}}51单片机控制程序部分#includereg52.hsbitD1=P0^0;sbitD2=P0^1;sbitD3=P0^2;sbitD4=P0^3;sbitopenfire=P0^7;unsignedchara[]={0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9};voiddelay(intx){intm,n;for(m=x;m0;m--)for(n=10;n0;n--);}voiddianjiz(intx){intz,i=0;intcishu;cishu=x;while(cishu--){for(z=50;z0;z--){for(i=0;i8;i++){P1=a[i];delay(12);}}}}voiddianjif(intx){intz,i=0;intcishu;cishu=x;while(cishu--){for(z=50;z0;z--){for(i=7;i=0;i--){P1=a[i];delay(12);}}}}voiddianhuo(){delay(2000);openfire=0;delay(1000);openfire=1;}voidmain(){unsignedintfire=0,huoli;while(1){if((D1==0)&&(fire==0)){huoli=2;dianjiz(2);dianhuo();fire=1;}if((D2==0)&&(fire==1))
本文标题:基于单片机的声控燃气灶设计论文
链接地址:https://www.777doc.com/doc-122030 .html