打印

MCU如何识别这两个不同的状态

[复制链接]
1955|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
情况如下:
1.触发前,被检测端的电压为 0.99V
2.触发后,被检测端的电压为 1.09V

其中,我使用的MCU,低于0.8V的被MCU认作低电平
                         高于1.3V的被MCU认作高电平

请问,我该如何尽量少的使用外围电路来正确识别到这两种不同的状态?

------------------
解答我的兄弟,我很感谢你.既然解答了,就请尽可能的详细吧

相关帖子

沙发
sz_n053| | 2010-1-27 14:13 | 只看该作者
你用的芯片有无 ADC ?

使用特权

评论回复
板凳
szshawn2010|  楼主 | 2010-1-27 14:15 | 只看该作者
2# sz_n053

用的MCU是一个纯I/O的芯片.没有ADC

拜托你继续给偶解答一下.谢谢

使用特权

评论回复
地板
程序匠人| | 2010-1-27 14:56 | 只看该作者
舍得用比较器吗?
舍得用三级管吗?

使用特权

评论回复
5
程序匠人| | 2010-1-27 15:11 | 只看该作者
步骤:
1、先切换到输出态,并且输出“1”,对电容充电
2、再切换到输入态,延时足够的时间后,读IO。

原理:
因为你先输出了1,那么IO上的电平总是为高;当切换为输入态后,电容上的电平一开始也是“1”,放电结束后则取决于两个电阻的分压。如果分压值小于0.8V,那么读到的就是“0”,否则为“1”。

关键:
1、合理计算两个分压电阻的阻值,确保当输入电压=0.99V时分压小于0.8V;输入电压=1.09V时分压大于0.8V
2、软件上要注意切换成输入态后 的“延时时间”。该时间受到外部电容的影响。

提醒:
IO口的门槛电压以及电阻都有离散性误差,而你的信号差异太小,因此这个方法可能不适合于批量生产。

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
szshawn2010 + 1
6
ejack| | 2010-1-27 17:49 | 只看该作者
LZ只说“尽量少”,但是没有说“尽量便宜”

所以……:lol

使用特权

评论回复
7
程序匠人| | 2010-1-27 17:52 | 只看该作者
LZ只说“尽量少”,但是没有说“尽量便宜”

所以……:lol
ejack 发表于 2010-1-27 17:49

如果不差钱,那就用比较器好了。呵呵

使用特权

评论回复
8
IRF9640| | 2010-1-27 22:27 | 只看该作者
记号

使用特权

评论回复
9
zxt37| | 2010-1-28 10:23 | 只看该作者
LM339,几毛钱一个,楼主舍得不?

使用特权

评论回复
10
hexiaoxiao| | 2010-1-28 13:39 | 只看该作者
16025步骤:
1、先切换到输出态,并且输出“1”,对电容充电
2、再切换到输入态,延时足够的时间后,读IO。
程序匠人 发表于 2010-1-27 15:11

匠人的方案应该是最佳方案。
另外楼主可不可以只判断一种状态,当确认0.99V有效时,就等于0,大于0.99V时就是1。

使用特权

评论回复
11
香水城| | 2010-1-28 14:13 | 只看该作者
如果不差钱,那就用比较器好了。呵呵
程序匠人 发表于 2010-1-27 17:52


如果不差钱,直接用一个外置ADC不是更好?:sleepy:

使用特权

评论回复
12
szshawn2010|  楼主 | 2010-1-28 14:34 | 只看该作者
12# hexiaoxiao

感谢您的解答.

我也很赞同您的观点.

但是,我不知道如何才能进行 这个电压值的设置.

使用特权

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

本版积分规则

92

主题

636

帖子

1

粉丝