第五节 PCB板设计注意事项 7654321212123212121231111227368272281231464511141551213114312123182712212431212120433B33A12211431B11A21651091232B22A21211122891011121314 图2.8 PCB顶层设计 7654321213211231812282773631464514155121311431091238712654311432123B3433A21B11A212B22A121122891011121314 图2.9 PCB底层设计 9 (1)由于有12V的电源,所以最好所有的电源线和地线都加粗,该作品电源线和地线均采用
30mil线宽。
(2)建议先焊实验板调试,再画板子,因为你原理图上的器件很可能在电子市场找不到(比如我GM1117的型号画成了SOT123,但电子市场几乎都是SOT223),在焊实验板时就可以顺便了解你要用的器件的常用封装,如果找不到该型号的器件可以找市面上有哪些可以实现同样功能的其他型号的器件,及时对方案进行调整。
(3)特别注意适配器DC座封装,作为一个脚使用的两个焊盘间距变为0mil,否则由于DC座脚太宽,插不进去。
第六节 硬件安装调试注意事项及方法
图2.9 作品实物图
10
图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),可能烧坏单片机。
11
第三章 软件系统设计
第一节 程序总体状态转移图
电机正转 KEY1按下/电机停转 处于打开状态 光照高电机正转光照低电机反转/处于关闭状态 KEY2按下/电机停转 / 电机反转
图3.1 状态转移图
基本思想:程序主要采用的是“状态机”的方法,分为四个状态:电机正转,电机反转,窗帘处于打开状态,窗帘处于关闭状态(程序的默认状态)。只有当光照度高于参考值同时窗帘处于关闭状态,电机才正转(正转打开窗帘),如果光照度高于参考值但窗帘已经处于打开状态,则电机不转;只有当光照度低于参考值同时窗帘处于打开状态,电机反转(反转关闭窗帘),如果光照度低于参考值但窗帘已经处于关闭状态,则电机不转。
第二节 子程序API介绍
初始化程序:
WDTCTL = WDTPW + WDTHOLD; // 关闭开门狗
P1DIR |= BIT0+BIT2 + BIT3; //P1.0,P1.2及P1.3设为输出
CACTL1 = CARSEL + CAREF0 + CAON; // 内部参考0.25 Vcc 为比较器负输入端,打
开比较器
CACTL2 = P2CA4; // P1.1为比较器正输入端 P1IES |= BIT6+BIT4; //P1.4,P1.6下降沿中断
12
P1IE |= BIT6+BIT4; //中断使能并打开总中断 _EINT();
P1OUT=0X00; //P1口输出清零
比较器模块:
if ((CAOUT & CACTL2)) //如果CAOUT置“1”且窗帘处于关闭状态,P1.0,
P1.2输出高电平,P1.3输出低电平
{
switch(status) {
case Close_Stop : P1OUT=0x05;status= Normal;break; case Open_Stop : break; case Normal : break; case Innormal : break; } }
else //如果CAOUT清零且窗帘处于打开状态,P1.3输出高电平
P1.0,P1.2输出低电平
{
switch(status) {
case Close_Stop : break;
case Open_Stop :P1OUT=0x08;status=Innormal ;break; case Normal : break; case Innormal : break; } } 按键检测: Void Key_Detect()
{
13