|
| 用单片机控制9012的开关状态问题 |
| 新闻出处:21ic
发布时间: 2007-06-12 |
jastinxu 发布于 2007-6-10 11:59:00 单片机IO口窜入限流电阻然后去控制9012的开关,开始限流电阻为5.1k,其打开很快,但是关断很慢(IO低电平关断)。后将限流电阻换成360欧姆,打开时间差不多还是us级的,但是关断时间还是很慢,最快也得1ms。这个回路就是一个限流电阻,没有其他的上拉或者下拉电阻。不知道是什么原因,请大家帮忙分析一下。9012不能改,光耦就不用考虑了。
IO口设置的是内部上拉,不知道对工作有影响吗??
tyw 发布于 2007-6-10 12:22:00 9012接了什么负载?你的1ms是怎么测的 把图贴上来
* - 本贴最后修改时间:2007-6-10 12:24:27 修改者:tyw jastinxu 发布于 2007-6-10 13:37:00 我也觉得没道理啊,9012用来控制发光二极管的显示和扫描按键输入,发光二极管的限流电阻是300欧姆,每个9012带8个发光二极管,P01/P02/P41/P42是经过限流电阻的控制线,控制芯片是MEGA16。 延时1ms是仿真得到的结果。9012的限流电阻改成了350欧姆是按键的响应要2ms,原来5.1K的时候要2.9ms,时间太长了。
其他地方用到9013的时候时间就很短啊,不明白是怎么回事。 马上就要出货了,现在急死了。

小马 发布于 2007-6-10 13:38:00 导通时间小于1us,不过关断时间也会在100us左右,不会达到1ms的(用双踪示波器观察跳变边沿)。驱动电阻不宜太小,饱和太深反而增加关断时间的。 如果想得到比较短的延时,可以用P型MOS管,如XP152A之类的(http://www.torex.co.jp/chinese/products/pro07/index.php)
小马 发布于 2007-6-10 13:48:00 应该在100us左右,1ms的值是因为三极管关断后集电极节点各元件电容效应的电荷没有泄放回路(在LED导通点附近电压明显变得下降很慢) 不过这没有影响,看起来泄放很慢,其实三极管已经关断了,LED也不会导通(残留一点LED导通电压附近的电压,下降比较慢)。 如果想观察实际关闭情况,可以在集电极对地接入1K~10K电阻,再测量以下,就会发现真是关闭情况。
* - 本贴最后修改时间:2007-6-10 13:48:58 修改者:小马 jastinxu 发布于 2007-6-10 14:26:00 现在实际的情况是4组led是扫描点亮的,利用了人的视觉停滞来完成的,由于9012的关断时间较长,同时还要扫描按键的输入,需要单片机硬等2.9ms来扫描键盘。如果点亮led等的时间是△t,那么扫描4组灯应该是4△t,但是现在由于等待按键响应又需要2.9ms,那么一个周期的时间实际为4△t+2.9MS,造成的后果就是LED点亮的在一个周期的比例由1/4缩短了很多,所以灯的亮度很差了。 归结到最终的问题就是9012的关断时间长了,而2.9ms应该可以是更短。
maychang 发布于 2007-6-10 14:29:00 关断时间包括延迟和下降两段,指的是管子集电极电流减少到原来的10%所用的时间。对9012来说这两段时间之和连1us也不到。 楼主说的是9012集电极电位在1ms之后才降低到接近于零,这不是关断时间,而且完全正常。注意电流下降到零和电压下降到零是两回事。 要是关断需要2ms,LED的动态显示就没法做了。动态显示经常只亮1ms甚至不到1ms就要换到下一位。
maychang 发布于 2007-6-10 14:38:00 不管到哪里,这一点必须有个电阻到地,否则单片机在按键抬起时不可能读出低电平,需要延迟一段时间。 不是9012关断问题,是楼主的设计缺少这个电阻。 下面两个按键的公共端也是一样,必须有个电阻到地。
jastinxu 发布于 2007-6-10 15:30:00 此图转出来不是很清楚,按键经过限流电阻至I/O,并且加了拉电阻。
linjing 发布于 2007-6-10 21:56:00 我做过一个电路, 89C2051,74HC164, 9012x3, 三位数码管显示,完全没发现过显示有问题!
我做过一个电路, 89C52, 74HC244, ULN2803,七位数码管显示,显示上也类似你这样挂了七个按键,不过方向相反,按键输入时加了一个史密特,也没发现过问题,最多就是读按键时程序里习惯性的加两个NOP而已
你的图不太清楚,也没标出电阻值,给这样几个建议 硬件上, 1)9012的eb之间要接电阻偏置,要想关断快,就加个小点电阻,但注意要确保9012的正常开通,正常关断 2)要想提高显示亮度,164一定不要用LS的,我用的是HC的,另外,减小164的电阻(多问一句,为什么你要用二组电阻?),我的电路3~4个数码管的一般用220的电阻,再多就用100的电阻(注:5V电路),不要管164的手册上的参数,这玩意抗造着呢,244也一样,我这样用了多少年了也没出过事
软件上 1) 如果9012不能关断,就关断164,有你说的2个多ms的功夫,足够发N多数据到164,只要164全部输出高电平,9012必然是关断的! 2) 不明白你说的按键扫描需要2.9ms是什么意思?估计你的意思是关断Q1,延时2.9ms,打开Q2, 检测K2,建议改成: 关闭Q1~Q4, 164输出高电平,打开Q1,显示数据,延时,延时完成, 下次读K1,164输出高电平,关断Q1,显示数据,打开Q2,延时。。。 读K2,164输出高电平,关断Q2,显示数据,打开Q3,延时。。。
祝出货顺利,急死了就什么问题也解决不了了,嘿嘿
iampoor 发布于 2007-6-10 22:30:00 1 限流电阻大小:首先和LED要求的电流有关系。也就是要根据算Ic来算最小的Ib值,这样确定最大的电阻阻值。 但Ib越大,也就是限流电阻越小(这时候要考虑MCU IO口的驱动能力),三极管开通的速度应该越快(这个和你的测试有出入,估计是你测试手段不够)。所以要向开通速度快,就要减小限流电阻。
2 三极管的关断:Ib越小,关断越快。和开通正好相反,所以要找一个平衡。关断时间慢,可能因为你的四个LED并联,其上面的电容比较大,所以关断慢。或者,你后面的电路影响了。
如果可以,选一个开关频率比较高的三极管,不过我估计在你的电路里面改善不大;还有就是选择一个合适的电阻。 在保证最小Ib的前提下,可以在电阻上并联一个电容来提高开通时间。电容大小要看情况了,0.1到1uf应该足够了
杨真人 发布于 2007-6-11 0:34:00 1ms是什么概念? 印象中9012可以做2MHz以内的开关动作没问题.尽管9012是低频管,但不至于这么SUCK吧?
jastinxu 发布于 2007-6-12 11:58:00 我自己是做工业品的,这个是第一次做民品。做工业品的时候很少考虑成本,I/O不够的时候就扩CPLD,CPU也尽量用ARM、飞思卡尔32位68332、DSP,所以做起来也比较方便。 这个电路是我参考别人的,电路本身也没有问题,只是我控制方面还是有问题的。 这个电路做下来很有感慨,其实做民品的确实需要更高的基本功,而且经常有化腐朽为神奇的地方。做设计的最高境界是用最普通的设计来完成最实用的功能。
|
| 【关闭】 【打印】 |
|
|
|
|