佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 26876|回复: 143

【DIY】(初/中级):电脑遥控~~走马灯(电子跑灯)更新:26/12/06

[复制链接]
发表于 30-12-2005 11:24 AM | 显示全部楼层 |阅读模式
这是一个很简单的电子跑灯, 和一般的电子跑灯比较,它是由电脑控制,通过VB6编程,你可以完全控制跑灯的点亮次序。 只要你会使用电烙铁 (soldering iron), 就可以制作成功。

《声明》
这个制作会接去你的电脑,制作时请要小心检查,不要短路, 以免损坏电脑的“并行端口”。

用处:
不过就是装饰用的“走马灯”吧了。新年要到了,如果你不怕麻烦,也可以作成你独一无二的红灯笼走马灯。(需要格外电路)
其实,我主要是介绍给大家如何使用电脑控制一些外接的器件,电器。先从最简单的并行端口开始,慢慢扩展,演变成DIY家居智能控制系统,用你的电脑控制电灯,冷气,防盗系统和电器等等的开关,定时,并通过电话遥控,互联网线上遥控。。。。


硬体:
接去PC的“并行端口”(Parallel Port),就是接printer 的那个25pin的port。
我们利用 它的8bit data port,可以控制8ch 或8个LED。(其实,最多可以去到13个ch)


PC Parallel Port- DB25 部分接脚功能:
pin 2 - bit 0
pin 3 - bit 1
pin 4 - bit 2
pin 5 - bit 3
pin 6 - bit 4
pin 7 - bit 5
pin 8 - bit 6
pin 9 - bit 7
Pin 18~25 -GND

DB25上面会印上接脚的号码。


原理:
当data bit ‘1’时,输出是5V, 通过1K的电阻, 把LED点亮。
当data bit ‘0’时,输出是0V, LED熄灭。

电路图如下:



制作:
我们先从最简单的做起,在这个制作,我们先控制8粒LED (8ch),以后有空,会教大家作8 ch 以上,也许100ch或更多。我是把LED ,1K resistor 直接焊在 DB25/M ,(DSUB 25pin connector, Male),但是建议大家用电线把LED接长。8 枚LED 和1K电阻可以焊在万用电路板上, 再用电线接去 DB25。电线的长短依大家的喜好。









软体:
VB编程, 运用 dlportio1.dll 的 function , DlPortWritePortUchar , 直接把数值(value)写入 parallel port.
dlportio1.dll 必需和VB 程序在同一个folder, 或放在 \windows\system32 。
  1. Private Declare Sub DlPortWritePortUchar Lib "dlportio.dll" (ByVal Port As Long, ByVal Value As Byte)

  2. DlPortWritePortUchar  (&h378, 255 ) ' 把8个LED L1~L8 点亮
  3. DlPortWritePortUchar  (&h378, 15 ) ' 把L1~L4 点亮
  4. DlPortWritePortUchar  (&h378, 0 ) ' 把8个LED  L1~L8  熄灭
复制代码
一般parallel port 的address 是 &H378 。
Value:
255 = &HFF(16 进值)= 1111 1111 (2进值)(L1~L8 点亮)
15 = &H0F(16 进值) = 0000 1111 (2进值)(L1~L4 点亮, L5~L8 熄灭)
0   = &H00(16 进值) = 0000 0000 (2进值)(L1~L8  熄灭)

<<VB6 测试程序和源码下载>>


<< VB6 电子跑灯 V1.00 Installation 下载 (1,158,144 bytes) >>
<< VB6 电子跑灯exe 程序 V1.00 下载 >>

<< VB6 电子跑灯 V1.00 Installation 下载 (1,158,144 bytes) >>
V1.00 完整版, 如果有臭虫,请告诉我。
如果程序不能在你的电脑上运行,也请告诉我。
(3 Jan 2006)

《声明》
以下“如何用parallel port 控制电器, 电灯” 的制作会接去AC240V, 制作时请要很小心检查,不要短路,接错, 以免触电危险。如果你不明白电路如何操作,请不要制作, 一切后果,你自行负责,与作者无关。


《如何用parallel port 控制电器, 电灯。》


以上的电路, 让你能够控制一般小功率(300watt)的电器, 电灯。
T1 是BTA12-600B , TRIAC, 交流开关元件。
MOC3041是Optoisolators TRIAC driver。
在一般的情况下(<300watt),TRAIC只是微温, 所以不用接散热片(heat sink)。
TRIAC BTA12 其实可以控制高达12A的电流,(2.8KW),就需要heatsink了。

测试
可以用上面的<<VB6 测试程序>>,但不要使用<<电子跑灯程序>>, (除非你接的负载是钨丝灯),以免开关过快而损坏电器和TRIAC。再一次, 要注意安全,以免触电或损坏电器。

应用
以上的电路, 我应用在卓球中心的电灯控制和计时收费系统。













(16 Mar 2006)

如果你不想用TRIAC来控制电器电灯的开关, 你也可以选用继电器(Relay)做开关。

(17 Mar 2006)



《(中级)如何用parallel port 输出更多的output 》
简单来说, 要利用serial to parallel converter IC 如 CD4094,74HC164。
图中的是40 channels, 当然还可以再加。。。(需要buffer driver 在Clk,Stb,OE)
初学者,建易你们去找CD4094的datasheet 来看。



关以控制程序,迟一些放。
(21 Mar 2006)

(26 Dec 2006)
4094是Shift Register。Data是从Dat 和Clk 输入(shift)进去,这种输入方式叫着"SPI BUS”。
SPI Bus的好处, 只用D,Clk 就可以输入很多data。

1。D (Data, Pin 2 )是Data输入。输入的data会顺序的推入到Q1,Q2。。。Q7,到了Q7, 没有Q8, 但是有QS, QS会接去(Cascade)下一个4094的D。

2。Clk (Clock, Pin 3 )是Clock 时脉输入,只要Low 去High, 那D 的logic就会输入进Shift Register (暂存器)。

3。STR (Strobe, Pin 1 ),当是logic '1’ 时, 输入的Data会瞬息显示在output Q1~Q8。
一般上,当我们在shift data进时, 会把STB =0,shift完后,在Set STB=1,这时Data会快速输出到Q1~Q8,而没有闪烁(flickering)的问题。

4。OE (Output Enable, Pin 15 ), Set  OE=0, Q1~Q8是全输出Logic 0。
你也可以利用这个OE输入PWM信号,那你可以调节输出LED的亮度!, 或一开一关的闪烁。


对不熟悉Shift Register 4094的网友,建议先进行以下的实验,验证上面所说的理论,明白了再制作电脑控制的版本。实验成功后, 也可以接STR 和OE,了解它们的用处。



这里写了一个简单的示范程序,配合使用“并行接口扩展电路(40输出)”。
制作时,可以先接一枚4094试验,成功了再加4094。

VB源码下载:expand-output.zip

那我们可以接(cascade)几多个4094呢?那要看你的clk的输出电平(level),接得多, 电压会降,这时只要加Buffer IC就可以了。
(中级教学, 26 Dec 2006)


待续~

[ 本帖最后由 pic 于 18-7-2008 03:48 PM 编辑 ]

评分

参与人数 1积分 +99 收起 理由
louiektc + 99

查看全部评分

回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 2-1-2006 08:40 AM | 显示全部楼层
dlportio1.dll 必需和VB 程序在同一个folder, 或放在 \windows\system32 。
如果还是不可以,请下载Driver. << Port95NT.exe (1,573,094bytes)>>
回复

使用道具 举报

发表于 4-1-2006 07:37 PM | 显示全部楼层
真是不错的东西...我有兴趣....
回复

使用道具 举报

发表于 4-1-2006 07:39 PM | 显示全部楼层
如果用5v的relay, 要控台机器都没问题呢..
回复

使用道具 举报

发表于 4-1-2006 10:51 PM | 显示全部楼层
没有人选用micro controller?
很flexible一下。
回复

使用道具 举报

 楼主| 发表于 5-1-2006 11:37 AM | 显示全部楼层
原帖由 fritlizt 于 4-1-2006 10:51 PM 发表
没有人选用micro controller?
很flexible一下。

是的, 但那是中,高级的电子制作,不适合初学者。
回复

使用道具 举报

Follow Us
发表于 8-1-2006 12:39 PM | 显示全部楼层
请问pic大哥,

我们可不可以从parallel port / serial port读取开/关(on/off)的signal,是要读取大约26个channel的开关讯号。
他想用键盘来试看看,可是怕不稳定。我是帮朋友问的。 谢谢你!
回复

使用道具 举报

 楼主| 发表于 8-1-2006 06:56 PM | 显示全部楼层
原帖由 watervase 于 8-1-2006 12:39 PM 发表
请问pic大哥,

我们可不可以从parallel port / serial port读取开/关(on/off)的signal,是要读取大约26个channel的开关讯号。
他想用键盘来试看看,可是怕不稳定。我是帮朋友问的。 谢谢你!

可以。
从parallel port 读取26ch (32ch) 开/关(on/off)的signal, 可用4粒74LS165, 配合customize的program, 把Data shift (bit-banging)进 parallel Port.

是什么开/关?DC/AC?Volt?
回复

使用道具 举报


ADVERTISEMENT

发表于 10-1-2006 09:31 PM | 显示全部楼层
哈哈,高二的功課~,不過我們是控制stepping motor的速度,力道,轉向.
個人建議,對老百姓來說,難度太高了.
p/s:我有個同學不會裝VB
回复

使用道具 举报

发表于 10-1-2006 10:45 PM | 显示全部楼层
原帖由 pic 于 8-1-2006 06:56 PM 发表

可以。
从parallel port 读取26ch (32ch) 开/关(on/off)的signal, 可用4粒74LS165, 配合customize的program, 把Data shift (bit-banging)进 parallel Port.

是什么开/关?DC/AC?Volt?


他说是用Opto switch来开关。AC的电来控制relay, relay -> opto switch -> channel.

他会写VB program来读parallel port的data。可是就是不会硬体的部分。我也不大会接

请问26ch 开/关是否可以一起读取?

谢谢你!
回复

使用道具 举报

发表于 12-1-2006 12:14 AM | 显示全部楼层
请问pic大哥,
   你好,我看了你的作品,感到高兴。可是我想请问你能teach我做led显示英文字体吗?
也是同样的用电脑控制或有什呢介扫?? 谢谢.
回复

使用道具 举报

 楼主| 发表于 12-1-2006 09:50 AM | 显示全部楼层
原帖由 watervase 于 10-1-2006 10:45 PM 发表
他会写VB program来读parallel port的data。可是就是不会硬体的部分。我也不大会接

参考74LS165的datasheet, 明白了它的Timing Diagram就自然懂得如何写program了。

请问26ch 开/关是否可以一起读取?

是的。
回复

使用道具 举报

 楼主| 发表于 12-1-2006 09:51 AM | 显示全部楼层
原帖由 chiamfong 于 12-1-2006 12:14 AM 发表
请问pic大哥,
   你好,我看了你的作品,感到高兴。可是我想请问你能teach我做led显示英文字体吗?
也是同样的用电脑控制或有什呢介扫?? 谢谢.

你指的是DotMatrix LED Display?
回复

使用道具 举报

发表于 12-1-2006 11:56 AM | 显示全部楼层
原帖由 pic 于 12-1-2006 09:51 AM 发表

你指的是DotMatrix LED Display?


看来是越来越高级了

那些DotMatrix LED Display是不是用PIC?
回复

使用道具 举报

发表于 12-1-2006 08:33 PM | 显示全部楼层
yaya pic大哥,用几个DotMatrix LED Display 可是在大马买得到吗?
回复

使用道具 举报

 楼主| 发表于 13-1-2006 08:57 AM | 显示全部楼层
作学习用途的话,1枚 5X7 dot matrix 勉强可以。Parallel port 不够快,会闪烁。
回复

使用道具 举报


ADVERTISEMENT

发表于 13-1-2006 02:53 PM | 显示全部楼层
可以用 usb port 来做类似跑灯吗?
可以教更多灯控吗?
如何读parallel port的data?有图吗?
那些 ic 容易找吗?
回复

使用道具 举报

 楼主| 发表于 13-1-2006 05:43 PM | 显示全部楼层
原帖由 Cwye 于 13-1-2006 02:53 PM 发表
可以用 usb port 来做类似跑灯吗?

不可以。(除非 用USB to Parallel converter。)

可以教更多灯控吗?

比如什么?

如何读parallel port的data?有图吗?

http://www.beyondlogic.org/spp/parallel.htm
回复

使用道具 举报

发表于 15-1-2006 02:34 AM | 显示全部楼层
原帖由 pic 于 13-1-2006 05:43 PM 发表
比如什么?


控制8个灯以上, 如30个
回复

使用道具 举报

 楼主| 发表于 17-1-2006 10:51 AM | 显示全部楼层
原帖由 Cwye 于 15-1-2006 02:34 AM 发表


控制8个灯以上, 如30个

可以,等中级的教学。初级的教学,没有得到什么网友的制作报告心得,没人作的话,中级的教学也许要等我很得空时才写了。

不过,更多ch的灯控,可以利用IC 74595 或 4094 (Serial to parallel)来实现。参考datasheet,明白它的timing diagram,写程序就可以了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 27-4-2024 09:23 PM , Processed in 0.069275 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表