基于凌阳单片机SPCE061A的红外泵液器的设计
O 引言
红外泵液器通常用于完成“伸手出水,缩手停水”功能,一般可提供手动和自动两种泵液模式,同时具有低电压检测报警以及使用完毕后语音提示等功能。红外泵液器在工作时,一般首先通过传感器将伸手出水动作转换成电信号,并通过红外发射二极管发出红外光去控制受控装置中的红外接收二极管,再利用光照强弱来改变电路中的电流。当伸出手时,接收部分收到的红外线强度降低,转换的电流强度减弱,拿开手时,红外直射到光敏管上,输出电流增强;之后的第二步,再将电流信号的强弱转换为能被SPCE06lA单片机识别的高低电平。由此需要电路具有流控电压源的功能,高电平约为5V,低电平为0V,为此,可采用双极性三极管的共射极接法来实现;第三步,则是通过对高低电压信号的判断来输出控制信号,并将控制信号输出给电机,再通过电机控制水泵。这部分主要是对IOB2的中断检测,伸手时红外线被挡住,三极管截止,IOB2得到高电平,即利用IOB2的上升沿中断申请功能(或者使用查询方法)来向SPCE06lA单片机提出放水的中断请求。
通过以上三个操作步骤,仅仅可以基本完成设计功能,而本文对上述传统设计的改进之处有以下三点:
(1)使用1*3键盘提供自动与手动切换。在自动模式下,手伸到仪器出水,手离开停止;手动模式下,按下2键出水,按3键停止。
(2)改进了工作指示灯电路模块。当电路处于工作状态时,指示灯亮。
(3)改进了语音播报,由于SPCE061A单片机集成了2个10位DAC(数一模转换)模块,因此,利用这部分资源可以方便地实现数字到模拟信号的转换,从而使人机交互更友好,同时也可以表明当前系统的工作状态。
1 红外泵液器的硬件设计
本系统的工作组成原理如图1所示。
本方案采用凌阳SPCE061A单片机。并选用GR4010l红外发射二极管作为红外发射器件.GDl6ll硅PIN型光敏二极管作为红外接收器件。微型电机选用QDB一30—3.0作为泵液器的驱动。红外传感部分可用来检测是否有人需要使用泵液器,它分为红外发射和红外接收两部分。红外发射管采用GR40101,主要通过IOB8输出一定频率的脉冲来控制红外发射管的发射频率。红外接收管则采用GD1611,可利用IOB2的外部中断功能来进行检测。语音播报部分采用SPCE061A内部的DACl输出信号到语音电路,再使用A2000格式放音。本系统提供3个按键,可用来设定出液量、自动、手动泵液等,他们占用SPCE06lA的IOA0—2共3根I/O线。系统选用微型电机来作为泵液的驱动,电机的控制是由一个三极管作为电子开关完成的。可通过IOB4控制三极管,从而控制电机。利用SPCE061A内部的LVD单元可以完成低电压检测,而不需要外接其它组件。此外,系统还提供了一个发光二极管作为工作指示灯,并可用IOA5来控制。
图2所示是系统的控制电路原理图。电路中,SPCE061A为主控制芯片,IOA5控制工作指示灯。当系统接上电源时,可通过过程控制IOA5输出高电平,工作指示灯一直亮着。1*3键盘的功能是分别设定自动与手动模式的切换、手动下出水、手动下停水,其占用IOA0-2三个端口。当第一次按下1键时,默认为自动模式,即当手伸到仪器时,IOB2口接收不到IOB8口发射出来的红外控制信号,则单片机控制IOA4口并控制电机转动泵水,当手离开时,IOB2口接收到红外信号,控制电机停止出水。当再次按下1键,则切换到手动模式,这时按下2键开始出水,按3键停止出水。当电机由转动转变为停止时,单片机控制DACl口播放“谢谢”。当电压低于开始设定的电压值时,系统播放声音报警。
图2中,SPCE06lA的IOB2口用于检测接收信号(该信号的两种状态高低电平表明伸手缩手动作),IOB8口用于控制红外发射,IOA4控制微电机,IOA5是工作指示灯,IOA0—2可控制1*3键盘,IOA9口是低压检测,DACl口接语音播报。引脚12、13是振荡器的输出和输入,引脚16、17、18分别接在线调试器的使能端、时钟脚和数据脚。
2 红外泵液器的软件设计
根据设计的功能以及硬件电路,本系统的软件部分共需要如下几部分控制程序:
第一是发射红外信号。由红外发射二极管GR40101可知,SPCE06lA单片机的IOB8应输出固定频率的脉冲,以激励器件发射红外线,因此程序首先需要完成此项功能。实际的程序应通过SPCE061A单片机内部的计时中断产生8 kHz的脉冲。具体的操作是通过SPCE061A单片机工作的晶振频率来计算经过多少分频才能将频率降低至8 kHz,由此得到计数值并将计数值填入计数器,同时对相应中断寄存器进行设置。然后在计时中断的中断服务子程序中通过语句IOB8=!IOB8来控制该IO口以输出8 kHz的方波。
其次是红外信号的接收处理。在硬件部分已经说明,本装置在伸手时,IOB2将出现高电平,其它情况该引脚输出为低电平,由此可通过IOB2的中断功能实现对高电平的检测,当IOB2出现上升沿时,表明此时伸手,系统进入IOB2的中断服务程序,该中断服务程序可完成控制水泵和指示灯的功能。
再就是键盘扫描程序。可采用查询方法循环检测是否有键按下,当检测到按键端口有低电平时,便进入相应的处理程序,其中管理自动手动模式的按键是通过这样的方法实现的,即每次有键按下,标志位变化,原来为0就置位,为1就清零,从而控制手动和自动的选择。其它的按键进入按键处理程序后作相应的处理,同时启动语音输出等。
图3所示是本系统的软件流程图。首先是系统的初始化,然后是各个IO端口的初始化,最后执行系统任务。主任务的流程是IOA0-2口都处于高电平,当按下哪个键时,哪个端口变为低电平,然后检测IOA0—2端口的电平值,如果发现有端口变为低电平,则把信息送到主任务那边的等待键盘信息,当人使用完后结束,系统返回上面一层,继续等待键盘信息;如果发现键盘的各端口都是高电平,没有变为低电平的端口,则返回,然后继续键盘扫描任务。
3 结束语
本文给出了一种由凌阳公司生产的单片机芯片SPCE061A控制的红外泵液器的改进设计方法。经改进后的泵液器增加了手动和自动模式转换、低电压检测报警以及使用完毕后语音提示等三项功能。实测证明:该装置还具有抗干扰能力强,无误操作且省电节能等特点。
评论