打印

单片机IO口的内部结构

[复制链接]
3902|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 yltx21ic 于 2010-4-1 18:05 编辑


我用这个电路检测电话机的摘挂机状态。
想法是这样的:
S10接51单片机的IO口检测电话机状态。
挂机时,电话线上的电压大概30V左右,这时12V的稳压管会导通,光耦导通,S10处电压为5V,为高电平。
摘机后,电话线上的电压大概7V左右,光耦截止,S10处的电压为0V,为低电平。
我现在做出了实际电路,在没有安装上单片机时,测量S10处的电压,由此检测电话机的摘挂机状态,一切正常。
但是,当我装上了单片机之后,就出问题了,挂机时S10处还是5V,这没问题。
可摘机时,S10处的电压却有3.5V左右,正确的应该是0V的低电平才对!
肯定是单片机IO口的内部结构影响了前面的电路状态了。
具体是怎么回事?要怎么处理?
谢。

相关帖子

沙发
黄金之恋| | 2010-4-1 18:22 | 只看该作者
个人感觉电路设计有问题,控制光耦的三极管接法貌似不对

使用特权

评论回复
板凳
ShakaLeo| | 2010-4-1 19:12 | 只看该作者

这是51单片机的GPIO内部结构(非P0口),由于内部有弱上拉,按楼主的接法在光耦不导通时单片机端口的电压实际是内部上拉电阻和外部的电阻分压得到的。
楼主的光耦的接法有问题,应该把光耦4脚接地,R3接在光耦5脚和+5V之间,单片机的IO口接在光耦5脚。挂机状态光耦导通,单片机IO口被拉低,摘机状态光耦不导通,单片机IO口为5V。

使用特权

评论回复
地板
wangerping| | 2010-4-1 19:32 | 只看该作者
鄙人是打酱油滴,貌似,楼主这个标题取得太低调了,没很多高手进来呀!
个人觉得ls的大虾说得很有道理,设计是否可行,lz可以从新连下电路看。

使用特权

评论回复
5
yltx21ic|  楼主 | 2010-4-2 13:09 | 只看该作者
3# ShakaLeo
我按照Shakaleo所说的,接了元件, 可以正常工作。

下面的是我昨天改的,在原来的470R电阻后面加了一个非门,实验也可以正常工作。

哪一种方法好一些?

使用特权

评论回复
6
teddeng| | 2010-4-2 13:51 | 只看该作者
本帖最后由 teddeng 于 2010-4-2 13:52 编辑

都不好。。统统属于牛刀杀**式,哈哈。而且如果是正式产品送检,看都不看就打回来,严重违规设计。

使用特权

评论回复
7
tj_zhaozq| | 2010-4-2 15:35 | 只看该作者
LZ主的设计如果加大50K的电阻也可以解决问题, 但是这个电路不可取。
3楼说的原理和方法挺好。

但个人认为这样的电路应用在电话产品中,很不妥。
原因:主要是电源的损耗问题, 虽说是电流不大, 没有多大功率, 但想想如果电话里都用这样的电路,全国上下那么多部电放,天天挂在那, 不打电话比打电话时耗电还多。

需要改进。

你应该做到, 挂机时, 耗电少, 摘机时大。强烈建议你改电路。

使用特权

评论回复
8
ShakaLeo| | 2010-4-2 21:38 | 只看该作者
楼上说的不错,如果是做实验玩玩,就无所谓,否则就得考虑一下功耗问题。
建议:把整流桥输出的那个回路里的电阻R1增大,把稳压管去掉,当R1和R3的选值比较合适的时候,在摘机之后光耦的发光管流过的电流很小,不足以使光耦导通,在挂机状态光耦导通。
而且检测摘挂机状态,应该是每隔一段时间检测就行(比如每隔100ms一次),所以可以用单片机控制另一个光耦,来控制R1回路是否导通,当需要检测的时候,打开光耦,R1回路有电流流过,检测到摘挂机状态,不需要检测的时候,关闭光耦,R1回路没有电流流过,这样可以很大程度上降低功耗。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

25

帖子

1

粉丝