基于AT98C52单片机的智能光控窗帘系统设计*
2015-05-11毕俊喜薛志安王志军
毕俊喜,薛志安,王志军
(1.内蒙古工业大学机械学院,内蒙古呼和浩特 010051;2.中国重汽集团济南桥箱有限公司,山东济南 250104)
0 引言
目前的智能家居实际上只是将家用电器进行联网,其技术水平还停留在自动化的阶段。在不少场合实现了从机械化到自动化的过程,这已大大的方便了人们的日常生活。为了免去人们在早晚时拉窗帘,设计了智能光控窗帘系统。当光照达到一定强度程度时,窗帘自动打开;当光照低于一定强度程度时,窗帘自动闭合;也可采用手动按钮或者是上位机控制窗帘的开关。
1 智能光控窗帘系统结构
1.1 机械结构
白天时,窗帘处于收缩状态,而到了夜晚窗帘处于伸展状态。根据其功能,窗帘自动开关装置主要由支撑架、步进电机、滚珠丝杠和滑杆组成。可把滚珠丝杠和滑杆安装在支撑架中,并通过机械方式把滑杆上的窗帘和滚珠丝杠的螺帽连接在一起。当步进电机正转时,窗帘闭合;当步进电机反转时,窗帘打开。
1.2 上位机
上位机一般采用功能强大的PC机,下位机多选用单片机。上位机应用软件一般由VB等面向对象的可视化编程软件实现。鉴于PC机具有强大的监控和管理功能,单片机则具有快速以及容易控制的特点,通过PC机的RS-232串行接口与外部设备进行通信,是许多测控系统中常用的一种通信解决方案[1]。采用VB6.0标准控件MSComm来实现上位机和单片机之间的串口通信是一种简单可靠的方法。
智能光控窗帘系统可采用两种方式对窗帘的开闭进行控制,一种是自动方式,即上位机给一个开或关的信号来实现窗帘的开闭;另一种是传感器控制,即上位机发信号后,单片机根据传感器反馈的信号来判定窗帘的开闭。系统默认为传感器控制。笔者所设计的智能光控窗帘系统上位机软件界面如图1。
图1 自动窗帘上位机软件图
部分VB代码如下:
Dim x As Integer
Dim y As Integer
y=2
Private Sub Command1_Click()
Me.MSComm1.CommPort=3
MSComm1.Settings="9600,n,8,1"
MSComm1.InputMode=0
MSComm1.PortOpen=True
Timer1.Enabled=True
Command1.Enabled=False
End Sub
Private Sub Command2_Click()
MSComm1.Output=x
MsgBox"已经发送控制信号!"
End Sub
Private Sub Command3_Click()
MSComm1.Output=y
MsgBox"已经发送控制信号!"
End Sub
Private Sub Option1_Click(Index As
Integer)
x=1
End Sub
Private Sub Option2_Click(Index As
Integer)
x=0
End Sub
……
2 单片机控制系统开发
2.1 光敏传感器电路设计
光敏传感器的核心是光敏电阻,光敏电阻是根据光电效应制成的光电探测器件[2]。光敏电阻的阻值会随着光照强度的不同而变化。当光照较强时其阻值较小,光照较弱时其阻值较大。光敏传感器电路主要由光敏电阻、集成运放LM139、普通电阻和电源构成。根据光敏传感器的特点,可在电源和光敏传感器之间串联一个普通电阻起保护作用,光敏传感器的另一端接地,把电阻和光敏传感器之间的电压引出到LM139中的同相输入端做比较电压,LM139的反相输入端采用标准电压+3 V,进而组成一个比较电路。其在Proteus中的电路如图2所示。
2.2 步进电机电路设计
步进电机是将电脉冲信号转变为角位移或线位移的开环控制元步进电机件。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度,称为“步距角”,它的旋转是以固定的角度一步一步运行的。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的,如图3所示。
单片机工作在5 V,而步进电机是工作在几十V,甚至更高。故单片机电路和步进电机之间需要一个驱动电路,可采用ULN2003A。ULN2003A是一个7路反向器电路,即当输入端为高电平时ULN2003A输出端为低电平,当输入端为低电平时ULN2003A输出端为高电平。它可以作为步进电机的驱动电路。
图2 光敏传感器电路图
图3 步进电机驱动电路图
3 系统在Proteus和Keil uVision4中的仿真
3.1 仿真软件介绍
Proteus软件是英国Lab Center Electronics公司出版的EDA工具软件。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台。软件调试方面,其自身只带汇编编译器,不支持C语言。但可以将它与Keil uVision4集成开发环境连接,将用汇编和C语言编写的程序编译好之后,可以立即进行软、硬件结合的系统仿真,像使用仿真器一样来调试程序[3]。
单片机开发中除必要的硬件电路外,还必须要有软件程序才可以实现电路的控制。Keil uVision4软件则是目前最流行开发MCS-5l系列单片机的软件,通过在Keil uVision4软件中新建工程项目、编写编译调试程序,并在Protues设计出来的仿真电路中载入程序进行联机调试[4]。系统仿真调试时,不仅能观察到程序执行时单片机寄存器和存储器等内容变化,而且从工程的角度直观地看到了外围电路工作情况,非常接近工程应用。
3.2 在Proteus中绘制单片机控制系统
在Proteus中新建项目,在接下来的菜单界面中设置项目的名称、存放位置、是否创建原理图、是否创建PCB板以及是否创建工程固件。进入Proteus新建项目的ISIS环境中(如图4),单击左侧上方的Library后,单击P进入添加元器件对话框,当输入所需元器件的名称就会在右侧出现对应元件,单击OK完成一个元件添加。添加完所需元件后,在电路图概览区合理放置元件后,连线即可完成所需电路图。
图4 Proteus新建项目ISIS图
在图5所示的单片机控制电路图中,由于Protues元件库中没有接近开关对应的元件,故选用LOGICTOGGLE来替代智能光控窗帘系统中的窗帘开闭两处的接近开关。当窗帘完全打开时(或者是完全闭合时)对应处的接近开关为0。在仿真时手动点击LOGICTOGGLE即可实现其对应的功能。由于窗帘一般处于打开和闭合两个状态,所以用一个按钮来实现手动控制窗帘的闭合。
图5 单片机控制电路图
3.3 在Keil uVision4中编制单片机控制系统C语言程序
打开Keil uVision4,新建一个项目,在命名后弹出的窗口中选择目标单片机芯片。在进入项目编辑窗口后,单击新建,单击保存,在弹出的窗口中为新建的C语言程序文件命名例如example1.c,命名时必须加后缀.c,命名后在右击Source Group 1选择 Add Files to Source Group 1,在弹出的对话框中选择刚才新建的.c文件。在编完程序后,右击Target 1,选择Options for Target‘Target 1’,在弹出的窗口中选择Output菜单,进入Output菜单后,单击Create Hex File复选框,单击OK完成设置。
写完程序后,编译程序,并生成.hex文件。
3.4 系统调试
把在Keil uVision4中生成的.hex文件加载入Proteus中绘制好的单片机控制电路图中的AT89C52单片机上,并构建虚拟串口,随后打开上位机即可仿真系统。仿真结果如图6所示。
图6 上位机和Proteus仿真结果图
4 结语
采用上位机控制单片机系统来实现窗帘的智能控制。在单片机系统中采用了较为实用可靠的光敏传感器,通过运算放大器LM139进行电压比较,判断光照强弱。并通过单片机送出控制信号驱动电机进行工作,完成窗帘的自动打开和闭合的过程。笔者在系统开发过程中引入Proteus与Keil软件联合调试的开发方式,其主要特点是可首先搭建虚拟环境对硬件电路以及软件进行综合调试,若发现错误则立即修改硬件电路图或软件程序[5]。这将花费较少的时间,然后根据所述模拟结果制造硬件电路,并验证电路的精度和稳定性。使用这种方法在很大的程度上可以减短开发周期,并且也提高了实验效率。整个电路设计中,所用到的电子元器件均为市场上常见元器件,电路简单实用。
[1] 杨佩璐.基于VB6.0实现PC机与单片机的串行通讯[J].中国集体经济,2009(10):154-157.
[2] 吴振磊,刘孝赵.光敏电阻在自动窗帘中的应用[J].价值工程,2014(25):65-66.
[3] 宁成军,张江霞.基于Proteus和Keil接口的单片机外围硬件电路仿真[J].现代电子技术,2006(18):142-143+146.
[4] 刘 丹.Protues与Keil联合仿真在单片机教学中的应用[J].科教导刊(中旬刊),2013(8):120-121.
[5] 曾 宇,宋永端,王弼堃.基于Proteus和Keil软件的温室环境监测系统开发[J].农业工程学报,2012(14):177-183.