打印

只要io之前输出电压为高,三极管端的电压就变成了高电位

[复制链接]
838|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
spark周|  楼主 | 2016-10-23 20:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用op07做个比较器,但比较器输出负电压,于是我就加了点电路,具体如下,三极管主要是用来隔离的。我将图示“单片机io口设置成输入状态,设置语句:P1DIR &=~BIT6;用 if(P1IN&BIT6)读io口状态,但是读入的状态总是跟设置成输入状态前的该io输出电压有关,读到的电压不正确。比如三极管导通,单片机io应该读入0v左右,但是只要io之前输出电压为高,三极管端的电压就变成了高电位。很是不懂为什么?我用的单片机是msp430f169单片机。

相关帖子

沙发
spark周|  楼主 | 2016-10-23 20:31 | 只看该作者

使用特权

评论回复
板凳
午夜粪车| | 2016-10-23 20:36 | 只看该作者
内部上拉了吗?

使用特权

评论回复
地板
spark周|  楼主 | 2016-10-23 20:38 | 只看该作者
msp430单片机内部上拉怎么设置?好像没有相关的寄存器设置。。

使用特权

评论回复
5
zhanghqi| | 2016-10-23 20:42 | 只看该作者
不好意思,1系列没用过,好像这个系列不带内部上拉。

使用特权

评论回复
6
wyjie| | 2016-10-23 20:47 | 只看该作者
你可以试试外部给三极管Q1的集电极接一个上拉电阻,上拉到单片机的电源,比如10k欧。

使用特权

评论回复
7
spark周|  楼主 | 2016-10-23 20:47 | 只看该作者
三极管上接上拉电阻我也接了,还是没用,真是想不通了。。

使用特权

评论回复
8
dengdc| | 2016-10-23 21:47 | 只看该作者
先断开D1,手动给三极管基极高低信号,看看单片机读出的数据是否正确;用万用表测试口上电压是否正确。

使用特权

评论回复
9
heweibig| | 2016-10-23 21:49 | 只看该作者
为何要先输出再设为输入?

使用特权

评论回复
10
wuhany| | 2016-10-23 21:51 | 只看该作者
检查程序是否有问题。
单片机不会有问题的,除非他坏了。

使用特权

评论回复
11
lizye| | 2016-10-23 21:56 | 只看该作者
外部上拉电阻
阻值要1000欧姆左右

使用特权

评论回复
12
jiaxw| | 2016-10-23 21:57 | 只看该作者
读寄存器用的PIN。这个没问题。直接这样三极管集电极输入单片机?这样恐怕不好。单片机没问题的。问题出在比较器输出那里!既然你说这样接比较器的输出是低的?明显这里有问题啊。同像端比反相端高当然应该是输出为5V了(430供电电压不能超过3.6,那输入呢?)。另外你的比较器供电应该用单电源供电(最好用3.3V单电源供电,如果用5V的话比较器输出串联电阻接430IO输入以此来限制IO输入电流)!这样输出才会只是0和5V.这里用的+-5V供电。万一输出低电平-5V。你让430如何检测你这个-5v的电平呢?建议由2点。第一。换单电源供电再测量比较器的输出是不是高。第二如过换了还是输出高换个真正的比较器吧。说明这个比较器有问题了。至于后面的三极管电路什么的都是多余的

使用特权

评论回复
13
spark周|  楼主 | 2016-10-23 22:05 | 只看该作者
嗯,我再好好缕一缕吧,有了好消息及时通知大家,结贴喽

使用特权

评论回复
14
aspoke| | 2016-10-23 22:33 | 只看该作者

最好能有一个上拉电阻。

使用特权

评论回复
15
aspoke| | 2016-10-23 22:35 | 只看该作者

就是Q1的上面上拉一个电阻。

使用特权

评论回复
16
l科科1987| | 2016-10-23 22:42 | 只看该作者
不要用负电压供电的,单片机无法接收负电压的。

使用特权

评论回复
17
selongli| | 2016-10-24 16:57 | 只看该作者

使用特权

评论回复
18
selongli| | 2016-10-24 16:57 | 只看该作者

你的IO设置在哪里了?

使用特权

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

本版积分规则

821

主题

10121

帖子

4

粉丝