在很长一段时期,人类很想知道怎样才能让电脑来煮咖啡..... 人们 要咖啡来保持清醒,这样才能长时间坐在电脑前面。因为每个人都知道在晚上编程会更好。
最主要的问题是怎样用电脑来控制咖啡机,然后才能用软件来控制。这通常意味著 一个 ON/OFF 开关被用来控制咖啡机电源。
由于不 要很多照料,这种咖啡在程序员中很流行,就象现在很多的商业软件一 样。它绝佳的口味使众多的程序员在编写令人难以置信的软件时激发了灵感。而这些 软件都是在一天中的头几个小时写的,举个例子,由于偏爱这种咖啡,Windows 就 是在凌晨5:00写的!效果绝对保证!
Nescaffe 是一种比较浓烈的咖啡,由咖啡、糖、少量水混合在热水里调制而成。 通常 1 汤匙咖啡和 1 汤匙糖,再加一点点水混合在一起。其间,还要保证水是沸腾 的,一旦水足够热,就把它们倒入,再加点牛奶味道可能更好一点。 尽管你能用一些比咖啡机更简单的东西来煮,我已经看到过这种方案好多次了......
这是上面提到过的咖啡的一种流行变种。 实№上,它不用咖啡机,反而 要一个冰箱来获得冷水和冰块。
这个比较难,看一下 Coffee-Faq (参考)
总的图解如下:
--------- 0-5V --------- ~220V ----------------
| PC |===>===|电子回路|========| 咖啡机 |
--------- --------- ----------------
我们的想法是从电脑输出一个控制电压,然后通过继电器或者双向晶闸管电路驱动被电隔离的电子回路。
你必须选择一个继电器电路,如果你有一个大的咖啡机(功率大于200 W ),你还可以用一个双向晶闸管电路。
所有列出的电路都至少被测试过一次,不过使用者自己承担所有的后果。 如果你对电子学一点没经验,你不应尝试这些,要不然,你会有一个糟糕的结局...
对 220V 电压的操作应该非常小心,而且还应用上一根合适的保险丝。
下面是一个从电脑并口提取0-5V电源的例子:
公 DB-25 ----- 针脚 10 - ACK(应答)
连 接 器 | | 针脚 9 - D7
后 视 图 | | 针脚 2 - D0
v v v 针脚 1 -滤波
____________________________________________________________
/ \
\ 13 12 11 10 9 8 7 6 5 4 3 2 1 /
\ /
\ 25 24 23 22 21 20 19 18 17 16 15 14 /
\______________________________________________________/
针脚 1 滤波 (反逻辑)
针脚 2-9 是数据总线的信号,通过一个 OUTB 命令发信给并口的门闩线路。
针脚 10 是应答信号( ACK ),由你控制,所以你可以产生一个中断信号给 CPU 。
针脚 18-25 被短路了,都是地线 ( GND ) 。
详细地说明如下:
<=发送 DB25 Cent 信号 寄存
=>接收 pin pin 定义 器位 功能注释
------ ---- ---- -------- --- -----------------------------
=> 1 1 -滤波 C0- 设置低位脉冲 > 0.5us 发送
=> 2 2 数据线0 D0 设置最小有效数据
=> 3 3 数据线1 D1 ...
=> 4 4 数据线2 D2 ...
=> 5 5 数据线3 D3 ...
=> 6 6 数据线4 D4 ...
=> 7 7 数据线5 D5 ...
=> 8 8 数据线6 D6 ...
=> 9 9 数据线7 D7 设置最大有效数据
<= 10 10 -应答 S6+ IRQ 接受应答后,低位脉冲 5us
<= 11 11 +忙 S7- 忙/出错/断线时高位
<= 12 12 +无纸 S5+ 无纸时高位
<= 13 13 +已选择 S4+ 已选择打印机时高位
=> 14 14 -自动注入 C1- 低位时自动注入一行
<= 15 32 -错误 S3+ 错误/断线/无纸时低位
=> 16 31 -初始化 C2+ 设置低位脉冲 > 50us 初始化
=> 17 36 -选择 C3- 设置低位选择打印机
== 18-25 19-30, 地线
最简单的电路如下:
Vcc 的选择应同所选继电器型号的电压一样( 通常是 5V 或者是 12V )。很明显,继电器的规格应该由咖啡机的功率决定。
Vcc
|
+------+
| __|__
继电器 /^\ 二极管 1N4002
线圈 /---\
| |
+------+
|
| /
4.7K B |/ C
并口数据脚>-\/\/\/\/---| NPN 三极管: BC547A or 2N2222A
|\ E
| V
|
并口地线 >--------------+
|
接地
酒保们通常倾向于在三极管之后再放置继电器,然后用发射极( E 脚 ) 代替集电极( C 脚 ) 连接继电器,这是一个错误的经历,因为三极管被错误的偏置了,结果是得到了一杯糟糕的咖啡 :-)。二极管 1N4002 对保护三极管避免被从继电器流 出的电流烧坏很有帮助,如果你不用它,三极管很可能会变黑,发臭,且被烧坏。
如果你只想要一个简单的电路,你可以选用摩托罗拉的 MOC301[012] 双向晶闸管驱动器,它跟通常用的 SC141D 双向晶闸管一起搭配使用。这种电路有个优点就是它不 要额外的电源供给。
以下是为非感应负荷设计的电路:
270 1 +-------+ 6 180
+5v -VAVAVA-----+ +----VAVAVA-----+-------------- Line Hot
2 | MOC | |
TTL in ---------+ 3012 +nc VA SC141D
| | 4 / |
nc+ +------------/ |
+-------+ +----\/\/\/---- Line Neutral
LOAD
如果你正在使用 220V 电压,MOC3021 可能更好。 感性负载应该和旁路电容相连,查阅 摩托罗拉应用手册 AN-780. 咖啡机一般是非感性负载(就象马达一样),但谁知道你的会是什么样的.....
+5VDC
| 180 180 2.2k
+---/\/\/\----+-----+ +----/\/\/-+--/\/\/\---+-------> 120V
| 1| |6 | | Hot
| +=====+ | | MT1
| | MC | 双向晶闸| +-+
| | 3032| 管驱动器| G | | 双向晶闸管
| +=====+ | /| |
\ 2| |4 | / +-+
2N3904 |----+ | | | | MT2
/ | +--------- | -------+ |
V \ | | |
| / | \ |
| \ 43 .01u --- 10k / |
| / 500V --- \ |
| | | / |
+------+ | | | Neutral
| +--------+--+---o o--> 120V
/ load
>-/\/\--| 2N3904
\
V
|
---
///
你应该以 220V 的标准调整电阻值。
电路详解:
MC3032 是光隔离双向晶闸管驱动器。 180 欧姆的电阻设定了光隔离器里面的发光二极管的电流。如果 要,你可以调整这个电阻从而得到一个合理的电流。(比如 15 mA)。
注意你不能在没有负载的情况下测试电路。除非连上了交流电源,双向晶闸管不会切换,所以你也不能在有交流电源和负载的情况下测试它的简单切换,注意这个 .01u 的电容要达到 500V 的耐压。
你必须得到一个有以下功能的可执行程序:
如果在这个程序中再使用 setuid 会更好,因为每个用户都可以用 Linux 煮咖啡了!
参考 kernel hacker's guide, 安装一个设备驱动程序 (it could even be user space i think). 请以模块(module)方式编译,这样以后每次更新的时候也用不著重新编译内核了。 然后打入:
echo cappuccino >/dev/coffee
1 分钟后你就会有一杯热咖啡,注意 /dev/coffee 要设置合适的权限,具体看你是否只想让超级用户煮咖啡了。
这种方法有个优点就是它能用并口的 ACK 针脚来实现从咖啡机的反 支持。所以一个智能的咖啡机有时还会中断一下。
把它当作课外作业
如果你已经有了这个 C 程序(如上),你只 写一个 CGI 脚本就可以开关咖啡机了。
你还 做几个漂亮的网页,解释一下怎么煮咖啡,然后再把它挂到 apache 服务器上.....
下面是我们的想法:
此文档最初是用希腊文写的,来自希腊 Linux 用户的一个关于 Linux 是否能 用来煮咖啡的讨论话题。在我们漂亮的 Linux 在线杂志 magaz 上归成文档: http://www.linux.gr/magaz. 注意,杂志是希腊文的。
我叫 Georgatos Photis, 估计在很长一段时期都是 Patras 大学计算机工程与信息学系的学生。通常我会因文档和网页的维护而变的很忙,不过关于这个 HOWTO 的任何意见我都会处理,也不会让你等得太焦急了。
The casual copyright with everything you get with linux... To find it, you'll have to read all of them and count the most common. Otherwise, no, you can't copy it.