新浪首页免费邮件用户注册网站地图
上移动梦网
赢手机大奖

新浪首页 > 科技时代 > 硬件 > 使用和维护 > 正文
享受现代生活--自制家居控制系统

http://www.sina.com.cn 赛迪网-中国计算机报

  文/王乐刚

  每天下班之前,在办公室就能登录到家里的电脑中,向家用电器发出指令,让空调启动,调节好室内温度;让洗衣机开始洗涤衣物,回到家后即可晾晒;电饭锅、微波炉也通上了电,开始烹调菜肴。这一切,不只限于比尔·盖茨的描述中,不需要额外的插卡,仅需极普通的一台电脑,就可实现对家电的控制。

  系统的功用

  或许很多人都想知道这些是怎样实现的,甚至还表示一些怀疑,我要告诉你的是这很简单,几乎只需要简单的电子制作和简单的程序调试技巧就行。当然,你还可以在本文介绍的基础上做得更程式化和网络化。

  我所制作和改进的这个电脑家电控制电路,可以方便地利用电脑程序,设定室内电灯、空调等家用电器,可以在一定的时间上,执行自动开启的简单操作。比如我家的电视和VCD都被我做过修改,所以“播放/停止”、“前进/后退”、频道转换等都可以由电脑控制。总之,只要是涉及电路的开关操作,用这个电路都能有效地控制。

  实现这些功能得写个小小的程序,这个简短程序后文将有介绍。在程序方面值得做的改进是写一个CGI脚本,然后再做几个漂亮的网页,把它放到服务器上,这样就可以利用Web来控制家电了。

  系统的要求

  实践本文中介绍的方法,几乎随便找一台电脑都行,因为它的要求是能运行DOS、并有个正常工作的并行口就可以了。我目前正在用一台486DX/4MB RAM/40MB硬盘的电脑控制我的家电。软件方面,需要自己去调试和编译控制程序,这主要是一个并口控制程序,如果想用telnet控制,那么你还需要telnetd。

  电路基本原理

  总示意图如图1所示,其实质就是从电脑输出一个控制电压,然后通过继电器或者别的电路来驱动被隔离的电子回路。


图1总示意图

  关于并行口

  我们需要用到的只是并口的pin 2到pin 9这八个pin(针脚2~9是数据总线的信号,通过一个OUTB命令发信给并口的门闩线路。可以得到+5v电压)。pin 18到pin 25是联通的,是地线。并行口pin示意图如下:


图2并口pin的排列

  控制电路的基本原理

  利用电脑并行口资料线的2到9pin,可以提供0到5伏电压的特性,就能控制一个继电器而达到控制电器的目的。这个电路通过电脑的并行口得到一个+5V电压打开继电器,这样继电器端的家电就被接通了,当并行口的电压变成0的时候,继电器就会跳回关闭状态,家电也就关闭了。需要重点说一下,这里用的是并行口,即接打印机的接口,而不是串行口。

  控制电路如图3所示:


图3控制电路图

  并口数据脚——并行口资料线(pin2到pin9都可用,图3所示简单电路只用到了其中一条);

  并口地线——并行口18~25pin任意;

  Vcc——继电器额定电压,根据继电器类型而定,应同所选继电器型号的电压一致(通常是5V或者是12V),图中选用的是12V的继电器,所以就接了12V的直流电源接口;

  接地——12V直流电源接口的地线;

  4.7K——4.7K电阻;

  NPN——普通NPN三极管即可,图中用的是c2235,也可以用BC547A或者2N222A;

  1N4002——1N4002的二极管;

  LED——任何发光二极管都可,作为指示灯用,当家电的开关被打开后,此指示灯就会发亮;

  继电器——继电器功率根据家用电器的功率而定,最小得用300W,如果接空调之类的,需要3000W才安全。

  初学者通常倾向于在三极管之后再放置继电器,然后用发射极(E脚)代替集电极(C脚)来连接继电器,这是一个错误的做法,因为三极管被错误地偏置了。二极管1N4002对保护三极管避免被从继电器流出的电流烧毁很有帮助,如果不用它,三极管很可能会被烧坏。对220V电压的操作应该非常小心,而且还应该用上一根合适的保险丝。

  继电器工作原理

  一些读者可能对继电器不是很熟悉,这里简单介绍一下。

  图4所示是一个4个脚的继电器的内部工作原理。


图4继电器工作原理

  继电器“3~4”端平时是断开的,当“1~2”端之间加上电压以后(此例中为+12V),通过线圈coil,就会把开关switch打开,此时“3~4”就是导通的。因此,“1~2”端所起到的作用,只是一个控制开关而已。继电器本身就是一个开关。

  把家电连接到继电器上

  只要把家电的电源线与继电器串联起来就可以了,也就是说不用对家电做任何的改变,最多只要改个插座就行。

  控制程序示例

  此程序用Turbo2.0在DOS下编译成功,是一段用来存取I/O端口的简单的程序示例子,仅供参考。

  /

   I/O.c:一个用来存取I/O端口的非常简单的例子

   这个程序并没有什么用处,它只是做了端口的写入、暂停

   以及端口的读出几个动作

   /

  #include<stdio.h>

  #include<unistd.h>

  #include<asm/io.h>

  #define BASEPORT 0x378 /lp1/

  int main()

  {

   /取得端口位址的存取权限/

   if (ioperm(BASEPORT, 3, 1)) {perror("ioperm"); exit(1);}

   /设定端口的输出资料信号为零(0)/

   outb(0, BASEPORT);

   /休息一下(100 ms)/

   usleep(100000);

   /从状态端口(BASE+1)读出资料并显示结果/

   printf("status: %d ", inb(BASEPORT + 1));

   /我们不再需要这些端口位址/

   if (ioperm(BASEPORT, 3, 0)) {perror("ioperm"); exit(1);}

   exit(0);

  }

  /结束I/O.c/

  这个程序只控制了并行口的第二针的电压,如控制其它针脚则需进一步编写其它7个类似的程序,仅需改变BASEPORT(0x378到0x37f)的值即可。也可以使用其它程序语言(如VC、VB),利用类似C语言的ioperm和outb(value,port)函数,来控制并行口,通过value值的改变达到控制多组家电的目的。

  扩展使用

  此方案完整的电路可以控制八组继电器,也就是说可以控制八组不同的家电。另外还需要一个DB25接头(并行口接头)的接口,这样一条并行口数据线就能简单地把电脑和控制电路连接到一起。

  建议做个漂亮的盒子,电路都放在盒子里,盒子的正面是开关、指示灯和DB25的接口。



发表评论】【初学者园地】【科技聊天】【关闭窗口

新 闻 查 询

 相关链接
新型电脑自动控制擦鞋机亮相南宁 (2001/07/30 13:31)
日本开发出可自动控制转速分子齿轮 (2001/02/27 16:51)
9、利用系统配置程序控制Win98自动运行 (2000/10/24 11:30)


科技时代意见反馈留言板 电话:010-82612286 或 010-82628888-3361   欢迎批评指正

网站简介 | 用户注册 | 广告服务 | 招聘信息 | 中文阅读 | Richwin | 联系方式 | 帮助信息

Copyright © 1996 - 2001 SINA.com, Stone Rich Sight. All Rights Reserved

版权所有 四通利方 新浪网