• 回复
  • 收藏
  • 点赞
  • 分享
  • 发新帖

多路发光二极管的驱动问题

500) {this.resized=true; this.width=500; this.alt='这是一张缩略图,点击可放大。\n按住CTRL,滚动鼠标滚轮可自由缩放';this.style.cursor='hand'}" onclick="if(!this.resized) {return true;} else {window.open('http://u.dianyuan.com/bbs/u/38/1140077251.gif');}" onmousewheel="return imgzoom(this);">500) {this.resized=true; this.width=500; this.alt='这是一张缩略图,点击可放大。\n按住CTRL,滚动鼠标滚轮可自由缩放';this.style.cursor='hand'}" onclick="if(!this.resized) {return true;} else {window.open('http://u.dianyuan.com/bbs/u/38/1140077818.gif');}" onmousewheel="return imgzoom(this);">500) {this.resized=true; this.width=500; this.alt='这是一张缩略图,点击可放大。\n按住CTRL,滚动鼠标滚轮可自由缩放';this.style.cursor='hand'}" onclick="if(!this.resized) {return true;} else {window.open('http://u.dianyuan.com/bbs/u/38/1140077982.gif');}" onmousewheel="return imgzoom(this);">
请大家帮我看看,这个电路总共要驱动96个发光二极管,每个发光二极管的的驱动电流达到20mA的时候,可以达到比较理想的发光效果.由于驱动的发光二极管的数量较多,所以我采取行列扫描方式,即使用P0口做扫描行线,P1,P2口做扫描列线.由此产生的问题是:如果采取我目前的电路,假设96个发光管全部点亮,那么上P0口将承受18mA的灌电流(P0口理论上最大可以承受20mA的灌电流);而每片74HC04(每一片带48个负载)的拉电流也将达到16mA,显然是74HC04所不能提供的.据74HC04的资料指出其最大的拉电流只有4mA,如果按照资料上的说明,那么每一个负载最多只能分配0.083mA,如果我调整9013的基极电阻,使其基极电流为0.083mA,能够使9013达到饱和状态吗?
请各位高手赐教,使9012,9013达到饱和状态的最小基极电流是多少?
还有没有更好的方案解决我所面临的状况,附上电路图,小弟在这里跪求了
全部回复(8)
正序查看
倒序查看
njyd
LV.8
2
2006-02-16 21:40
  用7406或7407缓冲(或者叫放大电流)
  问题是你用扫描的方式,不考虑转换的时间每只LED也只有1/96的时间点亮,亮度可能达不到要求.
  我看这么多LED只有用全锁存或分组锁存的方式,延长每只LED点亮的时间.
0
回复
ghsdwf
LV.6
3
2006-02-18 10:44
500) {this.resized=true; this.width=500; this.alt='这是一张缩略图,点击可放大。\n按住CTRL,滚动鼠标滚轮可自由缩放';this.style.cursor='hand'}" onclick="if(!this.resized) {return true;} else {window.open('http://u.dianyuan.com/bbs/u/38/1140228777.jpg');}" onmousewheel="return imgzoom(this);">
看了半天,还是没搞清楚你的意思.你看这个电路可以吗?只画了8X5作为示意.每次先选定一行,比如P10为高电平,然后把显示数据由P0口输出,0时LED亮,1时灭.20ms内要把所有行扫描一遍,这样人眼才不会感觉到闪烁.以你的要求要12行,那么每行选通的时间最多为1.6ms.即每个LED在20ms内有1.6ms时间发光.假设每个LED电流为20mA,则P0口驱动的每个三极管也只有20mA,而行选通的三极管最大有8x20=160mA.
使三极管达到饱和的基极电流Ibs=Ics/β,在这里要尽量选用β高的管子.单片机的I/O口有能力把三极管驱动到饱和,但要注意基极电阻的选择.
0
回复
2006-02-20 10:14
@ghsdwf
[图片]500){this.resized=true;this.width=500;this.alt='这是一张缩略图,点击可放大。\n按住CTRL,滚动鼠标滚轮可自由缩放';this.style.cursor='hand'}"onclick="if(!this.resized){returntrue;}else{window.open('http://u.dianyuan.com/bbs/u/38/1140228777.jpg');}"onmousewheel="returnimgzoom(this);">看了半天,还是没搞清楚你的意思.你看这个电路可以吗?只画了8X5作为示意.每次先选定一行,比如P10为高电平,然后把显示数据由P0口输出,0时LED亮,1时灭.20ms内要把所有行扫描一遍,这样人眼才不会感觉到闪烁.以你的要求要12行,那么每行选通的时间最多为1.6ms.即每个LED在20ms内有1.6ms时间发光.假设每个LED电流为20mA,则P0口驱动的每个三极管也只有20mA,而行选通的三极管最大有8x20=160mA.使三极管达到饱和的基极电流Ibs=Ics/β,在这里要尽量选用β高的管子.单片机的I/O口有能力把三极管驱动到饱和,但要注意基极电阻的选择.
感谢楼上两位兄弟的回复,其实我要驱动的发光二极管的实际个数有144个,如何保证亮度是个很饶头的问题
0
回复
njyd
LV.8
5
2006-02-20 21:27
@ultimauser
感谢楼上两位兄弟的回复,其实我要驱动的发光二极管的实际个数有144个,如何保证亮度是个很饶头的问题
  如果是矩阵可能有现成的产品.
0
回复
LV.1
6
2006-02-21 22:31
@ultimauser
感谢楼上两位兄弟的回复,其实我要驱动的发光二极管的实际个数有144个,如何保证亮度是个很饶头的问题
这位兄弟,144个发光二极管,敢问你们做得是不是交通指示灯呀?
0
回复
sdjufeng
LV.6
7
2006-02-23 00:31
你想用单片机直接驱动吗,那显然不现实,单片机的接口是有一个最大电流,可还有一个参数就是各口线电流和呢.
这么多的发光管,9012/13也是不行的,我建议你用TIP122/127,这是一种达林顿管子,小信号就能驱动的.
0
回复
2006-02-23 10:59
@sdjufeng
你想用单片机直接驱动吗,那显然不现实,单片机的接口是有一个最大电流,可还有一个参数就是各口线电流和呢.这么多的发光管,9012/13也是不行的,我建议你用TIP122/127,这是一种达林顿管子,小信号就能驱动的.
我是采用动态扫描的方式,相当于一次只需点亮一个发光管,所以用9012/9013应该没有什么大问题.而最大的问题是,因为扫描的发光管的个数过多,在25ms之内我要扫描完所有的发光管,因此如何保证发光管的亮度还没有找到很好的办法.
0
回复
sdjufeng
LV.6
9
2006-02-23 14:55
@ultimauser
我是采用动态扫描的方式,相当于一次只需点亮一个发光管,所以用9012/9013应该没有什么大问题.而最大的问题是,因为扫描的发光管的个数过多,在25ms之内我要扫描完所有的发光管,因此如何保证发光管的亮度还没有找到很好的办法.
我知道是动态扫描,这种情况下,要想增大亮度没有别的办法,只能:1、采用高亮度的管子;2、增大电流,事实上,动态时的瞬间电流,要比静态电流大很多.
0
回复