基于单片机的光控自动窗帘控制系统设计说明书1 下载本文

(2)芯片(采用powerso20封装)引脚说明:

+5V:芯片电压5V。功率电源电压,此引脚与地必须连接100nF电容器 VCC:电机电压,最大可接50V。逻辑电源电压。 此引脚与地必须连接100nF电容器

GND:共地接法。

EnA,EnB:接控制使能端高电平有效,ENA、ENB分别为 IN1和IN2、IN3和IN4的使能端。

IN1~ IN4:输入控制电平,控制电机的正反转,输入端电平和输出端电平是对应的。

OUT1~ OUT4:输出端,接电机。

L293D需要从外部接两个电压,一个是给电机的,另一个给L293D芯片的。

图3.10 双四拍模式波形图

(3)位置开关(行程开关)

步进电机正转或反转的位置的末端分别安装行程开关,当窗帘运动到末端位置时会碰到行程开关,使开关的常开触头闭合,一旦常开触头闭合,电机就停止正转或反转。当天亮或天暗时,步进电机会反方向运动,开关的障碍物去除,常开触头恢复,由此实现步进电机的末端停止控制,没有碰到常开触头,电机会一直运转,这样也可使窗帘拉到极限位置,很好的保证了室内私密性的性能。

位置开关(又称限位开关)的一种,是一种常用的小电流主令电器。利用机械运动部件的碰撞使其出头动作来实现接通或断开控制电路,达到一定的控制目的,用以控制其行程、进行终端限位保护。通常,这类开关被用来限制机械运动的位置或行程,使运动部件暗特定的位置或行程自动停止、反向运动、变速运动或自动往返运动等。

第 18 页 共 26 页

在电气控制系统中,位置开关的作用是实现顺序控制、定位控制和位置状态的检测。用于控制机械设备的行程及限位保护。一般限位开关由操作头、触点系统和外壳组成。

在实际生产中,行程开关被安装在预先定好的位置,当安装在机械运动部件上的模块撞击行程开关时,行程开关的触点动作,实现电路的切换,所以说,行程开关是一种根据运动部件的行程位置而切开电路开关,其作用原理与按钮相似。

行程开关可以安装在相对静止的物体(如固定架、门框等,简称静物)上或者运动的物体(如行车、门等,简称动物)上。当动物接近静物时,开关的连杆驱动开关的接点引起闭合的接点分断或者断开的接点闭合。由开关接点开、合状态的改变去控制电路和机构的动作

本文选用的是直动式行程开关。

直动式行程开关动作原理同按钮类似,所不同的是:一个是手动,另一个则由运动部件的撞块碰撞。当外界运动部件上的撞块碰压按钮使其触头动作,当运动部件离开后,在弹簧作用下,其触头自动复位。 3.3.2 步进电机选用

步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。本文选用的是混合式步进电机,混合式步进电机是混合了永磁式和反应式的优点。它又分为两相和五相:两相步进角一般为1.8度,五相步进角一般为0.72度,这种步进电机的应用最为广泛。 3.3.3 执行单元模块电路连接

(1)电机驱动电路连接

本文主要采用L293D,通过单片机的I/O输入改变芯片控制端的电平,改变绕组脉冲信号的顺序即可对电机实现正反转。

L293D的输入引脚与单片机的P1.0~P1.3口分别相连,IN1~IN4引脚从单片机输入控制电平,控制步进电机的正反转,OUT1~OUT4分别接步进电机的四个相线,ENA、 ENB接控制使能端控制步进电机的转、停。当ENA、 ENB同时接高电平时L293D芯片是工作的,即使能端有效,控制IN1~IN4引脚电平的频率即可控

第 19 页 共 26 页

制步进电机的转速。芯片的输出引脚分别接2个续流二极管,起到保护电路作用。芯片的VCC和VSS引脚与地必须连接100nF电容器,图中0.1μF和100μF电容并联即为100nf。

对本自动系统的设计还必须满足用户想要窗帘停的某一位置停下来的需求,为此设计了步进电机停止开关,为简化程序,更加利用L293D芯片本身的功能,本文采用了一个单刀双掷开关SW1,开关一端接使能端ENA、 ENB,另两端一段接+5V的电源,为芯片使能端提供高电平,另外一端接地,限制使能端的使用,当开关接到地时,两个使能端接地,L293D芯片不再起作用,电机停止运动,由此达到停止的目的。

电机控制窗帘的两个极限位置------窗帘的两端,要能使电机停下来,这一问题的解决有两种方案,一种是计算步进电机在窗帘开合长度中所要转的圈数,根据步进电机本身的步长计算电机转数,写入程序里进行控制,还有一种是利用行程开关进行控制,当窗帘走到极限位置时会碰到行程开关,使行程开关闭合,这里的行程开关是接地和使能端的,开关闭合就是关闭使能端,电机停止转动,分析比较这两种方案,认为后一种较为简便且使居室的严密性得到保证,因为受限于步进电机本身的精确度和丢步失步现象,电机难免不会在某一时刻出现丢步,是窗帘在还没完全拉合的状态下停止。

行程开关控制步进电机极限位置停止:天亮时,光敏传感器接受到高电平,依程序所设步进电机正转,顺时针转动,窗帘以某一速度被慢慢拉开,走到极限位置时,窗帘碰到右端的行程开关SW3,开关闭合使能端关闭,电机停止转动。当天暗时,光敏传感器输出低电平,电机要逆时针转动了,窗帘打开,障碍物去除,开关断开,使能端打开,电机反转,同样电机反转碰到左边的行程开关SW4时,开关闭合,使能端关闭,电机停止转动。

鉴于上述考虑,我们小组的设计电路图如3.11所示:

第 20 页 共 26 页

图3.11 L293D控制电机电路

第4章 系统软件设计

4.1 程序流程

51单片机的开发除了需要硬件的支持外,同样离不开软件。CPU真正可执行的是机器码,用汇编语言或C语言等高级语言编写的源程序必须转为机器码才能被执行,转化方法有手动汇编和机器汇编两种,前者已很少使用,机器汇编是通过汇编软件将源程序转换为机器码的编译方法。这种汇编软件称为编译器,keil是目前最流行的51单片机开发软件,keil提供了一个集成开发环境uVision,它包括编译器、宏汇编、连接器、库管理、和一个功能强大的仿真调试器。这样,在开发应用软件的过程中,编辑、编译、汇编、连接、调试等各个阶段都集中在一个环境中。先用编译器编写程序、接着调用编译器进行编译,连接之后即可直接运行。这样免去了过去先用编译器进行编译,再退出编辑状态进行编译,调试后又要调用编译器的反复过程。因此可以缩短开发周期。

因此我所选用的软件开发平台为Keil软件,用C语言编写具体的程序代码。主控程序流程图如图4.1所示。

第 21 页 共 26 页

图4.1主控程序流程图

4.2 程序设计

#include

#define uchar unsigned char #define uint unsigned int

uchar code ffw[]={0xfc,0xf6,0xf3,0xf9 }; //2相励磁正转表 uchar code rev[]={0xf9,0xf3,0xf6,0xfc }; //2相励磁反转表 sbit k1=P3^0; //定义K1开关 void delay(uint x) //延时函数 {

uchar i;

while(x--) //i=x即延时约x毫秒 for(i=0;i<60;i++); }

/********以下是步进电机正转函数********/ void setp_motor_ffw() {

P1=ffw[3]; //取正转数据 delay(250); P1=ffw[2]; delay(500); }

第 22 页 共 26 页