发表于:2005-01-04 14:22:00
楼主
巧用RS-232串口RTS信号线在“虚拟灶台”的应用技术
詹根基(华东交通大学 南昌 330017)
摘要 本文通过对作者自行设计的电饭锅控制电路进行分析,介绍了应用Visual Basic软件编程开发了“虚拟灶台”软件。该软件实际上是通过MSConmm控件对串口RTS信号线的进行控制,实现了定时定时煮饭和文火加热控制。
关键词 RS-232串口,固态继电器,MSConmm控件,RTS(要求发送)信号线。
前言
现在的电饭锅一般是采用双金属片实现保温的简单控制,这种控制方式有着明显的不足的地方:如1,由于现代生活节奏的越来越快,普通的电饭锅不能实现定时煮饭,很影响用户的时间。2,普通的电饭锅只能简单的煮饭,还不能实现文火加热的功能。3,不能实现远程控制,如通过办公室的电脑来控制家里的电脑来进行煮饭的控制操作。
信息化已经渗入社会生活的各个角落,也必将走进厨房。原来的简单控制方式越来越不适应用户的生活要求,就势必要求新的更加人性化的控制系统。随着计算机科学技术的发展,微机在电气控制的各领域中得到了越来越广泛的应用。
本文采用Visual Basic软件通过编程,实现对串口的RTS信号线在对普通电饭锅定时煮饭和文火控制这一实例来讲述。在将本实例使用到其它家用电器时的控制也可触类旁通,相互参照。对于远程控制,作者在这里不作讨论。
硬件的设计
本实例采用的串口线是从原来的PC串口鼠标拆下来的。在鼠标中,用RTS(要求发送)线和GND(接地端)来产生鼠标的工作电源。在一般的串口通信中,RTS通常是作为握手信号线。在次实例中,作者通过RTS信号线进行设定和复位,从而使其来控制一个固态继电器的开和关,相当于一个DO(数据输出线)。根据实际测量的结果,计算机上的RS-232的“高电位”约为+9V,而“低电位”约为-9V,并且RS-232以正负9V表示0和1的状态,因而是采用负逻辑来表示信号的状态。
硬件的控制图见见图一
IN4l48 RTS GND
计算机 固态继电器
RS232
电路的简单分析:使用输入端为3V~32V的直流固态继电器,其输出端的电压为480V,电流10A,把它接到220V的电源。平时RTS信号线无效时处于1为-9V,而如果在VB中MSConmm控件中的PortOpen属性为Ture(打开串口)且RTSEnable属性也为Ture(RTS信号线有效)时,RTS信号线就会被设置为0为+9V。所以在这里利用二极管IN4l48的单向导电性,就使RTS信号线无效时不能让固态继电器输入端得电。只有通过软件的办法让RTS信号线有效,才能让固态继电器的输入端得电,使其输出端的常开触点闭合,从而让电饭锅接通电源。
软件的设计和开发
1,文火控制的控制原理图如下:
先让水烧30分钟,把水烧开 再烧5分钟
停5分钟
由于烧开后,即使断电,电饭锅的电热盘还是发热的,等冷却5分钟后在加热,以后反复得电和断电。这样就起作文火加热的效果了。整个文火加热的时间过程设定为2个小时。
2,定时煮饭的操作步骤如下:
先单击“定时煮饭”按钮,让滚动条有效。通过划动滚动条来设定开始煮饭的时间,当计算机的系统时间等于设定时间时,就开始煮饭。
为了方便读者的阅读,先介绍一下窗体设计见图二。
1, 在窗体区上双击,VB中将显示窗体的Load事件程序,输入以下代码:
MSComm1.CommPort = 1 ‘使用Com1
MSComm1.PortOpen = True ‘打开通信端口
timer1.Interval =500 ‘定时器1的执行间隔为0.5秒
timer2.Interval =500 ‘定时器2的执行间隔为0.5秒
timer3.Interval =60000 ‘定时器3的执行间隔为60秒
Timer2.Enabled = False ‘控制定时煮饭的定时器无效
Timer3.Enabled = False ‘控制文火的定时器无效
HScroll1.Enabled = False ‘设定小时的滚动条无效
HScroll1.Min=0 ‘设定小时的滚动条范围
HScroll1.Max=23
HScroll2.Enabled = False ‘设定分钟的滚动条无效Hscroll2.Min=0 ‘设定分钟的滚动条范围
Hscroll2.Max=59
Label1.BackColor = vbGreen ‘Label1控件背景颜色为绿色,表示“文火”按钮没按下。
Label2.BackColor = vbGreen ‘Label2控件背景颜色为绿色,表示“定时煮饭”按钮没按下。
2, 双击“文火”按钮,在它的Click事件程序中输入以下代码:
Label1.BackColor = vbRed ‘Label1控件背景颜色为红色,表示“文火”按钮被按下。
Label2.BackColor = vbGreen ‘Label2控件背景颜色为绿色,表示“定时煮饭”按钮没按下。
Timer2.Enabled = False ‘控制定时煮饭的定时器无效
Timer3.Enabled = True ‘控制文火的定时器有效,开始计时。
HScroll1.Enabled = False ‘设定小时的滚动条无效
HScroll2.Enabled = False ‘设定分钟的滚动条无效
MSComm1.RTSEnable = True ‘RTS信号线就会被设置为0为+9V,使固态继电器得电,让电饭锅烧起来。
3,双击控制“文火”的计时器Timer3,在它的Timer事件程序中输入以下代码:
Static n As Long
Static i As Single
n = n + 1 ‘开始计数
If n > 30 Then ‘当30分钟后,水被烧开时
i = i + 1 ‘开始计数
If i > 5 Then ‘以下3行程序实现每隔5分钟使RTS设置为0为+9V,使固态继电器得电,从而实现文火的控制。
MSComm1.RTSEnable = Not MSComm1.RTSEnable
i = 0 ‘重新计数
End If
End If
If n > 120 Then ‘两个小时后,让电源断电
MSComm1.RTSEnable = False ‘RTS信号线就会被设置为1为-9V,使固态继电器断电
End If
步骤2,和3 实现了文火控制。
3, 双击显示系统时间的计时器Timer1,在它的Timer事件程序中输入以下代码:
Label3.Caption = Time() ‘显示当前的系统时间
4, 双击滚动条1,在它的Click事件程序中输入以下代码:
Text1.Text = HScroll1.Value ’文本框1显示设定的小时
5, 双击滚动条2,在它的Click事件程序中输入以下代码:
Text2.Text = Hscroll2.Value ’文本框1显示设定的分钟
6, 双击“定时煮饭”按钮,在它的Click事件程序中输入以下代码:
Label1.BackColor = vbGreen ‘Label1控件背景颜色为绿色,表示“文火”按钮没按下。
Label2.BackColor = vbRed ‘Label2控件背景颜色为红色,表示“定时煮饭”按钮被按下。
Timer3.Enabled = False ‘控制文火的定时器无效
Timer2.Enabled = True ‘控制定时煮饭的定时器有效,开始计时。
HScroll1.Enabled = True ‘设定小时的滚动条有效
HScroll2.Enabled = True ‘设定分钟的滚动条有效
7, 双击控制定时煮饭的计时器Timer2,在它的Timer事件程序中输入以下代码:
systime = Time() ‘得到系统时间
syshour = Hour(systime) ‘得到系统的小时
sysminute = Minute(systime) ‘得到系统的分钟
j=j+1
If Text1.Text = syshour And Text2.Text = sysminute Then ‘如果设定的时间到了,那么使RTS设置为0为+9V,使固态继电器得电,从而实现定时煮饭的控制。
MSComm1.RTSEnable = True
End If
结论
本实例是作者在实验室做过多次实验,达到了预定的应用效果。当然还有许多需要改进的地方,希望有兴趣的读者提出宝贵意见。
参考文献
1, 李肇庆、韩涛。串行端口技术,国防