"); //-->
通过凌阳16位单片机SPCE061A实现一个液体点滴速度控制系统,其中包括键盘设置、动态显示、点滴速度检测、储液瓶液面检测以及电机控制、异常情况报警等功能,并且该系统作为一个子系统能够和主系统进行通讯。
从站部分
1.系统功能
该系统能够完成以下功能,示意图如图1所示。
图1
(1)基本功能
①在滴斗处检测点滴速度,并制作一个数显装置,能动态显示点滴速度(滴/分)。
②通过改变h2控制点滴速度,如图1所示;点滴速度可用键盘设定并显示,设定范围为10~200(滴/分),控制误差范围为设定值±10%±1滴。
③调整时间≤3分钟(从改变设定值起到点滴速度基本稳定,能人工读出数据为止)。
④当h1降到警戒值(2~3cm)时,能发出报警信号。
(2)扩展功能
①能输出从站号、点滴速度和报警信号;从站号和点滴速度可以任意设定。
②接收主站设定的点滴速度信息并显示。
2.方案设计与论证
(1)点滴速度检测可以选择红外发射检测的原理来实现,我们可以在滴斗壁的一端安装一个红外发射传感器,另一端来接收,当有水滴滴下时,传感器会产生一个跳变信号,通过该信号来计算点滴滴下的数目,以此计算出点滴的速度(滴/分),这里用到的传感器是一种光电开关传感器俗名“15mm”,不需要外接任何电路,三根连线分别是:5V、GND和OUT,使用非常方便。当电源和地连接好后,可以将输出直接接一个发光二极管,用手在发射和接收之间穿过,就可以看到二极管会亮灭一次。
(2)储液检测电路可以通过两根单芯电缆线插入储液瓶口内2~3cm处,一端连接5V的电源,另一端接I/O口,并连接一个下拉电阻到地,当液面高于瓶内导体时I/O口为高电平,否则为低电平,参见图2。
图2
需要注意的是,深入水中的两根线一定要注意绝缘好,不能让水沿着线流入电源和I/O口。
(3)电机控制电路该电路是用来改变h2高度,以此控制点滴的速度,这里我们选用的是永磁异步四相8拍的步进电机,型号为42BYG228,根据电机的正转和反转来控制储液瓶的高度。
(4)键盘设置点滴速度按键功能说明:
①0~9为数字键,该数字键表示站号或者速度,a~f只表示10到15号从站;
②Speed_setup/3键:该键有两个功能,一个是设置点滴速度的功能键,另一个是数字键3;③F/ENTER键:该键有两个功能,一个是第十六号从站号F,另一个是确认键;
③E/Cancel键:该键有两个功能,一个是第十五号从站号E,另一个是删除当前所设置的数字。举例:设置第15号从站的速度为120滴/分(说明,从站号从第一个到第十六分别为0~F)。
步骤:①先按下Speed_setup/3键,表示现在开始设置站号和速度;
②再输入E/Cancel键,表示输入第十五号从站号;
③依次输入1、2、0,即输入所设置的速度;
④按F/ENTER表示确认;
⑤设置完毕。
(5)数码管显示电路数码管显示用到的是共阴极的4位7段显示。
(6)通讯电路在这里主站和从站之间的通讯采用RS-232通讯的方式。
(7)声光报警当发生异常现象时,如:当储液瓶内液体降至警戒值2~3cm时,发光二极管会点亮,同时会有语音提示:“请注意点滴即将结束”,并发送报警信息给主机。
3.系统硬件电路设计
(1)电路方框图及说明
图3是整个系统的结构图,共包括7个部分的模块,从图中也可以了解到各个模块对I/O口的占用情况。
图3
(2)各部分电路设计
图4
点滴速度检测(图4)利用IOB3来检测点滴数,硬件只需要将IOB3口连接到检测滴速的光电开关的OUT端即可,这样每当有水滴滴下时,传感器会输出一个高低电平,单片机的IOB3接收到会产生一个中断信号。
储液检测电路(图5)
图5
利用IOB2判断储液瓶是否快要空,将两根线分别插入瓶中,当液面高于线时,两根线会导通,则IOB2输入的是高电平,反之如果液面低于线时,两根线会断开,这时IOB2读到的是低电平,而当IOB2的状态由高电平变为低电平时,会产生中断,此时会启动报警信息。
电机控制电路(图6)
图6
电机控制用到的电机是四相8拍的永磁步进电机,其中IOB6、IOB8、IOB9、IOB11分别连接四相:A、B、C和D,通过I/O模拟电机转动的时序来控制电机。键盘设置点滴速度(图7)这里键盘的扫描是通过A口的低8位来完成的。
图7
其中,A0~A3为行输入,而A4~A7则为列输出,由于SPCE061A内部自带有100~200kΩ的上拉和下拉电阻,并在不同电压时阻值不同,所以不需要再外接上拉或下拉电阻。
数码管显示电路(图8)显示电路中:B口的高4位作为位选信号,驱动部分用到的三极管是NPN型的8050,电阻为470Ω;A口的高8位作为数码管的段码控制,数码管采用的是共阴极的;
图8
图9是显示的示意图,从左到右依次表示,其中第一位显示的是站号,第二到第四位显示的是速度的值。
图9
通讯电路(图1 0)
图10
声光报警电路(图11)声音报警部分,直接采用SPCE061A的DAC输出经过功放然后外接喇叭播放出来:即语音信号由DAC引脚21或22经语音集成放大器SPYOO30放大,然后输出,SPY0030是凌阳的芯片,相当于LM386,但是比386音质好,它可以工作在2.4~6.0V范围内,最大输出功率可达700mW(386必须工作在4V以上,而且功率只有100mW)。
图11
光报警是通过点亮二极管(图12)来实现的:当点滴即将结束时,IOB0会输出
图12
一个高电平点亮发光二极管,其中限流电阻采用330Ω。
软件设计
1.I/O的分配
I/OA口的分配IOA0~IOA7:键盘输入;
IOA8~IOA15:数码管的段码的显示;
剩余端口:无。
I/OB口的分配IOB口分配情况如下:
IOB0为光报警二极管;
IOB2、IOB3为外部中断;
IOB7、OB10为通讯时用到的RX和TX;
IOB6、IOB8、IOB9、IOB11为电机控制;
IOB12~IOB15为数码管的位选;
剩余端口为IOB1、IOB4、IOB5。
2.程序设计说明及流程
(1)主程序结构整个程序考虑到需要处理的任务较多,因此采用模块化编程,具体的结构可以参见主程序流程(图13)
图13
图14为中断子程序流程图。
图14
(2)各部分实现方法
键盘部分键盘部分采用128Hz的中断实现扫描,键值处理部分主要是对站号及其速度的设置,当设置完毕并按下确认键后,便会将所设置的站号及其速度送到设置的Buffer中,在10s检测的模块中会将该设置的值和当前点滴的速度进行对比,如果不一致则会控制电机的转动来调节直到相同,这里误差设置为10,即当误差在10滴内认为是相同的,电机停止转动。
数码管的显示部分数码管的显示部分采用的是动态扫描的方法,程序每执行一次显示一位,当程序执行4次后又会从数码管的第一位开始显示,依次循环,所以我们看到的是四位同时显示。储液瓶液面高度的检测储液瓶内液面高度的检测采用的是外部中断2即EXT1实现的,上电后IOB2为高电平,当液面到达距离底部2~3mm时电路断开,IOB2变为低电平,触发中断产生一个报警信号。
10s检测模块10s检测模块中,主要是将定时10s后计算得到的值送显示得Buffr,同时和设置的Buffer进行对比,判断设置启动电机的标志。
点滴速度的检测点滴速度的检测在前面已经说过了,采用的是一种光电开关传感器,当检测到有液滴滴下时会产生一个从高到低电平的跳变,触发外部中断2即EXT2,在EXT2中每进一次会将点滴数加一,用4Hz中断定时10s即进入中断40次,读一次点滴数,然后计算出点滴的速度(滴/分)。电机的控制部分电机的控制部分很简单,当判断到预设值和当前速度不同时,电机根据所给的标志进行正转或反转,直到两个速度相同时停止转动。
主站部分
1.主站功能分析
(1)定点检测在该方式下,可以固定检测来自某一从站的从站号、从站点滴速度。
(2)巡回检测巡回检测方式下,可以实现循环检测所设定的从站号及对应的点滴速度。
(3)设定通过设定键设置需要查询的从站数量、从站号和各从站的点滴速度。
(4)报警显示及报警解除收到从站报警讯号后,进行声光报警并显示相应的从站号,按取消键可解除报警。
2.方案设计
(1)人机界面设计键盘布局如图15所示。
图15
其中,说明:4*4键盘中,数字键用于设定从站号、点滴速度、从站数量值,设定时采用分屏显示。按下设定键,便可以开始设置,用一个数码管显示1 6个从站号(显示范围:0~F),三个数码管显示点滴速度(显示范围:20~~150,十进制),设置完成后按确认键;按定点检测键,开始对设定的从站进行定点检测;按巡回检测键,将循环检测设定的各个从站的点滴速度,同时显示从站号;取消键用于取消输入及解除报警;统计键用于设定需巡回检测的从站数量。
(2)通讯协议在这里主站和从站之间的通讯采用RS-232通讯的方式。061采用UART实现主从机通信。需要传送的数据有从站号、点滴速度和报警标志。通讯协议采用如下方式:
主从标志用于判断是主站发送的信息还是从站发送的信息,为11时表示主站,为00时表示从站。命令号用于区分检测还是设定,为11时表示检测,为00时表示设定;报警标志用于从站传送报警信号,默认值为00,表示未报警,ff表示报警。
(3)光报警及解除在检测方式下,主站可以检测到任意一从站的报警信号,并作光报警提醒工作人员,报警时主站将显示报警从站相关信息,按取消键将解除报警。
3.电路方框图(图16)
图16
4.软件设计
(1)主程序结构根据主站功能,可以将程序分为以下四个主要模块:键扫描和键处理、数码管显示数据发送接收和声光报警。图17是大致程序流程图。
图17
(2)各部分实现方法
键盘部分键盘程序调用4*4键盘扫描子程序,主程序循环一次,对键盘扫描一次。键盘扫描子程序的键值存于寄存器R1中,在键值分析处理程序中,对输入键进行移位处理、置功能键标志、从站号输入的处理。图18为键盘中断子程序的流程图。
图18
数据发送根据系统功能要求,需要有三种发送方式:在设置状态下的单个逐步发送、定点检测时对当前设置从站的单个发送、巡回检测时的连续发送。设置状态下的单个逐步发送时,设置完一从站后,按确认键将发送设置的数据,接着可进入下一从站的设置。在巡回检测时,主程序循环一次,将给一个从站发送查询信息,直至发送完所有要查询的从站。定点检测时,只发送当前设置的从站查询信息,通知该从站发送它的从站号、当前点滴速度。数据接收在定点检测或巡回检测时将用查询方式接收从站信息,主程序循环一次,将接收一个从站的数据,数据存相应Buffer。显示部分显示的位选及写送段码在FIQ中断中实现,FIQ的定时时钟源为TimerA的4kHz时钟。在巡回检测时的各从站的信息显示采用5s定时,即5秒显示一个从站信息。
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。