家用窗帘自动开关控制器.docx
《家用窗帘自动开关控制器.docx》由会员分享,可在线阅读,更多相关《家用窗帘自动开关控制器.docx(15页珍藏版)》请在冰豆网上搜索。
家用窗帘自动开关控制器
基于MSP430G2211实现的家用窗帘自动开关控制器
第一章作品概述
第一节作品功能和单片机介绍
该作品的主要功能是:
当外界光照度高于某一参考值时窗帘自动打开,低于该参考值是窗帘自动关闭。
用线程的方法来控制电机的停转,即在窗帘的顶部和底部分别安装一个微动开关S1和S2,当窗帘正转到顶部时,碰触微动开关S1,在按键被按下时,在单片机P1.6口产生一个下降沿中断,在中断内单片机向P1.2和P1.3口输出低电平,则电机停止转动;当窗帘反转到底部时,碰触微动开关S2,在按键被按下时,在单片机P1.4口产生一个下降沿中断,在中断内单片机向P1.2和P1.3口输出低电平电机停止转动。
所选用的芯片型号是TI公司的MSP430G2211。
本作品选用MSP430G2211单片机,该单片机超低功耗,具有5种节电模式,1us内便可从待机模式唤醒,并具有一个强大的16位RISCCPU、16位寄存器和常数发生器,有助于最大限度的发挥代码效率。
此单片机还具有丰富的时钟源,包括LF、OSC和VLO。
它可通过串行口系统编程,无需外部编程电压,具有可编程的保密熔丝代码保护,它具有Spy-Bi-Wire仿真逻辑接口。
另外它还有10位IO口、8个比较器通道和16位的Timer_A定时器,带2路捕获和比较寄存器。
此单片机的IO口和Timer_A定时器都具有强大的中断能力。
第二节设计方案
图1.1系统组成结构框图
用光敏传感器(具体为硅光电池)将外界的光照度转换成电压信号,并将该电压信号经过一级跟随器电路输入到G2211模拟比较器的正输入端,在硬件上的具体连接就是将27L2的7脚连接至单片机的P1.1口。
并通过与负输入端的内部参考电压作比较,使得比较模块寄存器的CAOUT端置“1”或清零来控制单片机的P1.2和P1.3口输出高低电平,进而控制电机的正反转,实现窗帘的打开与关闭,在硬件上的具体连接就是将单片机的P1.2和P1.3口分别连接至电机驱动芯片L298n的12脚和10脚。
利用按键S1和S2触发I/O口中断来控制电机转到窗帘的顶部或是窗帘的底部停止转动。
直流电机连接至电机驱动芯片L298n的13脚和14脚。
第二章硬件系统设计
第一节MSP430G2系列Launchpad开发板介绍
基于LaunchPad的MSP-EXP430G2低成本实验板是一款适用于TI最新MSP430G2xx系列产品的完整开发解决方案。
其基于USB的集成型仿真器可提供为全系列MSP430G2xx器件开发应用所必需的所有软、硬件。
LaunchPad具有集成的DIP目标插座,可支持多达20个引脚,从而使MSP430ValueLine器件能够简便地插入LaunchPad电路板中。
此外,还可提供板上Flash仿真工具,以直接连接至PC轻松进行编程、调试和评估。
LaunchPad实验板还能够对eZ430-RF2500T目标板、eZ430-Chronos手表模块或eZ430-F2012T/F2013T目标板进行编程。
此外,它还提供了从MSP430G2xx器件到主机PC或相连目标板的9600波特UART串行连接。
其实物图如图2.1所示。
图2.1MSP430G2系列Launchpad开发板实物图
MSP-EXP430G2采用IAREmbeddedWorkbench集成开发环境(IDE)或CodeComposerStudio(CCS)编写、下载和调试应用。
调试器是非侵入式的,这使用户能够借助可用的硬件断点和单步操作全速运行应用,而不耗用任何其他硬件资源。
MSP-EXP430G2LaunchPad特性:
•USB调试与编程接口无需驱动即可安装使用,且具备高达9600波特的UART串行通信速度
•支持所有采用PDIP14或PDIP20封装的MSP430G2xx和MSP430F20xx器件
•分别连接至绿光和红光LED的两个通用数字I/O引脚可提供视觉反馈
•两个按钮可实现用户反馈和芯片复位
•器件引脚可通过插座引出,既可以方便的用于调试,也可用来添加定制的扩展板
•高质量的20引脚DIP插座,可轻松简便地插入目标器件或将其移除
图2.1MSP430G2211硬件资源框图
第二节传感器介绍
这里介绍一下型号2DU5的硅光电池,之所以选择它,原因有两个:
(1)在可见光范围内,该器件能使光照度与其输出电流有一个良好的线性关系,这样我们就可通过一个运放将其转换成电压信号;
(2)具有较好的灵敏度,当你用手去遮住光源或者光照度稍微有点变化时,运放的输出电压也随之改变。
图2.2硅光电池2DU5实物图
其实,只要是硅光电池就行,不同型号只是输出电流(一般为微安或毫安)的大小不同,当然必须保证所选型号能感应你要控制的窗帘所处环境的光(比如,可见光)。
由于该方案采用的是硬件校准,即通过调节运放反馈的电阻值的大小来调节输入单片机模拟器正端的电压值,所以当你所选的硅光电池输出电流比较小时,可将反馈电阻调大来提高输出电压值,反之亦然。
图2.3为硅光电池2DU5参数信息。
图2.3为硅光电池2DU5参数信息图
第三节各单元电路的介绍
第一部分:
光电转换电路
图2.4光电转换电路
这里需要注意的是,在实际的电路实现中RP2,R6和RP1,R5只需任选一路即可,之所以这样连是为了在画板子时多一路备用,6和7脚连接构成一个电压跟随器,作用是将光电转换电路与单片机隔离开来。
最终的输出电压为硅光电池电流与所选一路电阻之积。
第二部分:
电源电路
5V转3.3V
图2.5电源电路
由于电机和运放(27L2)的供电电压均选择为12V,所以将交流电通过适配器直接转换成了12V,而电机驱动芯片(L298n)的逻辑供电电压Vss(9脚)最大值为7V,典型值为5V,而且使能高电平Ven(11脚)的取值大于2.3V小于Vss,故选择5V给9脚和11脚供电,本方案用LM2940将12V转化为5V,用GM1117将5V转换为3.3V,给按键提供高电平接到单片机I/O口(其实也可以直接用单片的电源给按键供电)。
第三部分:
电机驱动电路
图2.6电机驱动电路
采用的是L298n芯片对电机进行驱动,其集成了两个H桥电路,10和12脚接单片机的I/O口,13和14脚接电机的两端,4脚接电源,该芯片的最大输入电压为46V,该方案采用的是12V,8脚接地,11脚为第二个H桥工作的使能端,高电平(2.3V到Vss,本方案选取Vss为5V)有效,具体的功能实现见下表:
表2-1电机状态表
输入
功能
Venb(即11脚)=1
10脚=“1”;12脚=“0”
正转
10脚=“0”;12脚=“1”
反转
10脚=12脚
电机停转
Venb(即11脚)=0
10脚=X;12脚=X
电机停转
说明:
(1)“1”表示电压范围在2.3V到Vss的值之间;
(2)“0”表示-0.3V到1.5V之间;
(3)X表示为“0”,“1”任何一状态。
第四节系统原理图及元器件清单
图2.7系统原理图
光电转换电路主要由27L2芯片组成,将光信号转换为电压信号经过跟随器接到单片机的P1.1口,电机控制电路主要由L298n芯片组成,将其连接到P1.2和P1.3口。
按键S1和S2接到单片机的P1.6和P1.4口。
3.3V和5V电源电路主要是给所用芯片供电使能以及逻辑电平的选择。
表2-2列出了该作品所用到的元器件和芯片的型号。
表2-2元器件清单
型号
数量/个
封装
TLC27L2
1
DIP(双列直插)
L298n
1
Multiwatt15
LM2940
1
TO-220
GM1117
1
SOT-123
电位器(500k)
1
R(680K)
1
1206
R(100K)
3
1206
R(1K)
2
1206
二极管(4007)
4
1206
C(100nF)
2
1206
电解电容(10uF)
2
电解电容(22uF)
1
电解电容(47uF)
1
微动开关
3
2DU5
1
电机
1
第五节PCB板设计注意事项
图2.8PCB顶层设计
图2.9PCB底层设计
(1)由于有12V的电源,所以最好所有的电源线和地线都加粗,该作品电源线和地线均采用30mil线宽。
(2)建议先焊实验板调试,再画板子,因为你原理图上的器件很可能在电子市场找不到(比如我GM1117的型号画成了SOT123,但电子市场几乎都是SOT223),在焊实验板时就可以顺便了解你要用的器件的常用封装,如果找不到该型号的器件可以找市面上有哪些可以实现同样功能的其他型号的器件,及时对方案进行调整。
(3)特别注意适配器DC座封装,作为一个脚使用的两个焊盘间距变为0mil,否则由于DC座脚太宽,插不进去。
第六节硬件安装调试注意事项及方法
图2.9作品实物图
图2.10直流电机实物图
(1)R6,RP2和R5,RP1只需焊一组即可,本方案焊的是R6,RP2。
(2)焊接时一定要注意硅光电池2DU5的正负,接反的话27L2的6脚是没有电压值的。
(3)在将单片机和硬件电路连接在一起之前,一定要进行硬件校准,即通过调电位器的大小来改变27L2的6脚的值,将电路置于你作为参考光照度的环境下,调节RP2让6脚的值为0.9V(这跟你的程序有关,因为我是将27L2的6脚的值作为单片机模拟比较器的正输入端,负输入端为单片机内部参考0.25Vcc),一定要注意单片机模拟比较器的输入端最大输入电压为2.6V。
(4)在将单片机和自己画的硬件电路连接之前,先给硬件加上电源,测一下和单片机I/O口相连的端子的电压,看其是否正常,因为硬件的错误连接(比如短路)可能导致跟单片机连接的端子的电压异常,超过单片机的最大电压范围(3.6V),可能烧坏单片机。
第三章软件系统设计
第一节程序总体状态转移图
图3.1状态转移图
基本思想:
程序主要采用的是“状态机”的方法,分为四个状态:
电机正转,电机反转,窗帘处于打开状态,窗帘处于关闭状态(程序的默认状态)。
只有当光照度高于参考值同时窗帘处于关闭状态,电机才正转(正转打开窗帘),如果光照度高于参考值但窗帘已经处于打开状态,则电机不转;只有当光照度低于参考值同时窗帘处于打开状态,电机反转(反转关闭窗帘),如果光照度低于参考值但窗帘已经处于关闭状态,则电机不转。
第二节子程序API介绍
初始化程序:
WDTCTL=WDTPW+WDTHOLD;//关闭开门狗
P1DIR|=BIT0+BIT2+BIT3;//P1.0,P1.2及P1.3设为输出
CACTL1=CARSEL+CAREF0+CAON;//内部参考0.25Vcc为比较器负输入端,打开比较器
CACTL2=P2CA4;//P1.1为比较器正输入端
P1IES|=BIT6+BIT4;//P1.4,P1.6下降沿中断
P1IE|=BIT6+BIT4;//中断使能并打开总中断
_EINT();
P1OUT=0X00;//P1口输出清零
比较器模块:
if((CAOUT&CACTL2))//如果CAOUT置“1”且窗帘处于关闭状态,P1.0,P1.2输出高电平,P1.3输出低电平
{
switch(status)
{
caseClose_Stop:
P1OUT=0x05;status=Normal;break;
caseOpen_Stop:
break;
caseNormal:
break;
caseInnormal:
break;
}
}
el