巧用RS-232串口RTS信号线在“虚拟灶台”的应用技术 点击:1788 | 回复:0



opcfan

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:62帖 | 58回
  • 年度积分:0
  • 历史总积分:667
  • 注册:2004年9月29日
发表于: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, 李肇庆、韩涛。串行端口技术,国防


热门招聘
相关主题

官方公众号

智造工程师