找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3770|回复: 25
打印 上一主题 下一主题
收起左侧

求助关于单片机IO口输入输出的奇怪问题

[复制链接]
跳转到指定楼层
楼主
200黑币
单片机是电池供电然后通过LDO降压到3.3V给到

紧接着是一个低电压检测的电路

单独上面两个电路时,电池电压高于3.3V时,VOUT=VIN=BAT+
当电池电压低于3.3V时,VOUT=0V
接入的IO口是P34
问题出现在,当我把P35这个IO口接上霍尔开关时,

我发现VOUT在电池电压大于3.3V时,VOUT=4.2V左右了,就非常神奇。
当然还有更神奇的,我发现我不接上霍尔开关的时候
低电压检测电路没有任何问题
当我接上霍尔开关后
低电压芯片有时候会出现很短暂大概8us,突然从高电平突跃到低电平的情况
这种情况发生在我拨动P32,P33的旋钮的时候

我不明白,为什么我转动3.3,3.2的旋钮引脚,同时接上P3.5的霍尔开关就会让3.4这个引脚出现8us的突然拉低
这非常奇怪,主要我把P35的霍尔开关去掉就没有关系了。
同时,如果我把P34 P35上的元器件都去掉
转动P33 P32也会出现8us的突然拉低!!
这也非常奇怪。
唯一没有问题的时候其他都保证不变,但是把霍尔开关去掉就是正常的
不知道各位有什么好的想法可以帮我解决这个问题
非常感谢!
我现在只能用一个电容接在低电压检测芯片的VOUT消除这个8US的抖动
但是不能找到原因让我觉得非常难受!
希望各位大佬可以帮我看看!!十分感谢QAQ

最佳答案

查看完整内容

你之前描述的奇怪现象和这没关系。 R17和C8、R18和C1,构成了2个阻容延时,用于对旋钮信号消抖。时间常数越大,消抖效果越好,但高速旋转时会丢步。时间常数越小,高速旋转检测更好,但消抖效果差。需要根据实际需求精心选择。 如你电阻10K电容0.1u是最佳效果,那么电阻20K电容0.047u、电阻30K电容0.033u的时间常数是一样的,也是最佳效果。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:887371 发表于 2022-1-3 08:57 | 只看该作者
一夜暴富 发表于 2022-1-4 14:36
感谢,经过一天的调试我发现了问题所在。
旋钮的电阻20K太大了,因为我看别人都是两个10K串联
我直接用 ...

你之前描述的奇怪现象和这没关系。
R17和C8、R18和C1,构成了2个阻容延时,用于对旋钮信号消抖。时间常数越大,消抖效果越好,但高速旋转时会丢步。时间常数越小,高速旋转检测更好,但消抖效果差。需要根据实际需求精心选择。
如你电阻10K电容0.1u是最佳效果,那么电阻20K电容0.047u、电阻30K电容0.033u的时间常数是一样的,也是最佳效果。
回复

使用道具 举报

板凳
ID:887371 发表于 2022-1-3 10:20 | 只看该作者
记住这个原则:单片机IO口电压不能大于VCC+0.3V。

当霍尔开关输出5V时,违反了上述原则。低电压检测的输出端是开楼输出,输出4.2V不奇怪。
其它异常估计也是违反上述原则造成的。
回复

使用道具 举报

地板
ID:824490 发表于 2022-1-3 10:42 | 只看该作者
IO口的电压5V反灌到CPU的电源端了,所以你的电路出现高于3.3V是合乎逻辑的。。
电压检测就是输入高于标称电压时,输出为高,反之则为低,也是正常的。
回复

使用道具 举报

5#
ID:28752 发表于 2022-1-3 10:44 | 只看该作者
应该就是单片机,低压侦测.hall电平不一致导致,低压侦测建议用OC输出的,上拉用单片机VCC霍尔做下分压了再接入单片机,这样应该是没问题了...
回复

使用道具 举报

6#
ID:213173 发表于 2022-1-3 11:28 | 只看该作者
楼主表述的不清晰。图也不完整,很难理解是什么状态。ME2808的VOUT端是开漏型,其高电平电压是由外接电路确定的。至于VOUT出现短暂低电平无外乎是VOUT外接电路出现短暂低电平或VIN端短暂失压所致。
回复

使用道具 举报

7#
ID:57657 发表于 2022-1-3 11:38 | 只看该作者
你这个低电压检测电路是检测什么的 ?
STC自带低压检测寄存器、中断。
回复

使用道具 举报

8#
ID:887186 发表于 2022-1-3 13:44 | 只看该作者
datouyuan 发表于 2022-1-3 10:20
记住这个原则:单片机IO口电压不能大于VCC+0.3V。

当霍尔开关输出5V时,违反了上述原则。低电压检测的输 ...

感谢回复,那如果传感器有5V的话,该怎么控制输入的电压呢。
这个该怎么取舍呢
回复

使用道具 举报

9#
ID:887186 发表于 2022-1-3 13:44 | 只看该作者
名字不是重点 发表于 2022-1-3 10:42
IO口的电压5V反灌到CPU的电源端了,所以你的电路出现高于3.3V是合乎逻辑的。。
电压检测就是输入高于标称 ...

会有什么不好的影响吗,如果只是单纯的电压变化倒是可以接受
回复

使用道具 举报

10#
ID:887186 发表于 2022-1-3 13:46 | 只看该作者
npn 发表于 2022-1-3 11:38
你这个低电压检测电路是检测什么的 ?
STC自带低压检测寄存器、中断。

因为我的低压检测是3.3V,stc里的似乎不是这个电压值……?
谢谢大佬,我再研究看看
回复

使用道具 举报

11#
ID:887186 发表于 2022-1-3 13:48 | 只看该作者
grb7906 发表于 2022-1-3 10:44
应该就是单片机,低压侦测.hall电平不一致导致,低压侦测建议用OC输出的,上拉用单片机VCC霍尔做下分压了再接 ...

感谢回复,但是并没有很理解。能再详细说一下嘛
低压检测好像本身VOUT端就是开漏输出了。
霍尔做下分压再接入单片机是指在霍尔的输出接LDO吗还是
回复

使用道具 举报

12#
ID:887186 发表于 2022-1-3 13:49 | 只看该作者
wulin 发表于 2022-1-3 11:28
楼主表述的不清晰。图也不完整,很难理解是什么状态。ME2808的VOUT端是开漏型,其高电平电压是由外接电路确 ...

谢谢回复
但我有些不明白的是如果我没接ME2808,等于是只有单片机IO口单独存在,没有接任何外设,此时我转动旋钮,也是会出现P34这个单片机IO短暂的低电平出现
这是为什么呢。
似乎和外设已经没有关系了
回复

使用道具 举报

13#
ID:401564 发表于 2022-1-3 13:50 | 只看该作者
锂电池供电,可以直接使用电池给单片机供电,低电压检测可以通过内部参考电压来进行计算
STC8H1K28内置一个已经校正过内部参考电压,完全可以使它来进行ADC参考和电池低电压显示,不需要LDO的
其它的,虽然你写了那么多,都不知道你描述的是什么.........................
回复

使用道具 举报

14#
ID:887186 发表于 2022-1-3 14:13 | 只看该作者
Y_G_G 发表于 2022-1-3 13:50
锂电池供电,可以直接使用电池给单片机供电,低电压检测可以通过内部参考电压来进行计算
STC8H1K28内置一个 ...

简单来说就是
没有霍尔开关(输入至P35)时,无论怎么转动旋钮(P32,P33),检测低电压的芯片的输出(P34)都不会出现误输出低电压的情况
但是接上霍尔开关后,转动旋钮低电压芯片输出就会出现异常
回复

使用道具 举报

15#
ID:28752 发表于 2022-1-3 15:12 | 只看该作者
一夜暴富 发表于 2022-1-3 13:48
感谢回复,但是并没有很理解。能再详细说一下嘛
低压检测好像本身VOUT端就是开漏输出了。
霍尔做下分压 ...

很好理解啊,首先,低压检测你说已经是开漏,单图上没见你有上拉,当然如果是单片机内部上拉也行,其次,HALL,你接的是5v电源,MCU供电是5v么?不是,你就要把hall输出的信号,电阻分压到MCU规格限制内...
回复

使用道具 举报

16#
ID:887186 发表于 2022-1-3 15:21 | 只看该作者
grb7906 发表于 2022-1-3 15:12
很好理解啊,首先,低压检测你说已经是开漏,单图上没见你有上拉,当然如果是单片机内部上拉也行,其次,HALL, ...

感谢,我刚才看了下单片机手册,在霍尔的输出口加一个二极管就可以让他输出单片机的工作电压了
低压检测的话,我直接用单片机的准双向口似乎也能检测到。
还有一个小问题是哪怕我不接低压检测芯片,只是单纯监控单片机这个引脚的高地电平,在我未对该引脚在代码上进行高低电平的定义时,他的输出有时会从1变成0这样子(大概8us左右)
回复

使用道具 举报

17#
ID:824490 发表于 2022-1-3 16:34 | 只看该作者
一夜暴富 发表于 2022-1-3 13:44
会有什么不好的影响吗,如果只是单纯的电压变化倒是可以接受

不安全,极端条件下会烧IO/毁MCU
回复

使用道具 举报

18#
ID:28752 发表于 2022-1-3 16:57 | 只看该作者
一夜暴富 发表于 2022-1-3 15:21
感谢,我刚才看了下单片机手册,在霍尔的输出口加一个二极管就可以让他输出单片机的工作电压了
低压检测 ...

不明白,既然是低压检测口,为什么又有输出,输入口改为高阻输入试试,外部上拉...
回复

使用道具 举报

19#
ID:401564 发表于 2022-1-3 18:26 | 只看该作者
一夜暴富 发表于 2022-1-3 14:13
简单来说就是
没有霍尔开关(输入至P35)时,无论怎么转动旋钮(P32,P33),检测低电压的芯片的输 ...

楼上已经有人说明了,IO输入电压不能超过这个单片机的最大输入,不管是不是这个原因,都得先把这个问题解决了再说其它的
至于低电压检测,我已经说了,没有必要用LDO,没有必要外加低电压检测,也没有必要用一个IO来进行ADC
数据手册中有说明的,怎样利用15通道的ADC来计算VCC,锂电池供电最常用的低电压就是用这个方法的
回复

使用道具 举报

20#
ID:57657 发表于 2022-1-3 19:34 | 只看该作者
名字不是重点 发表于 2022-1-3 16:34
不安全,极端条件下会烧IO/毁MCU

如果IO口还配置了特殊功能(比如外部中断、硬件SPI等)。
还有可能烧坏内部寄存器导致失灵,出现问题都找不到北。
回复

使用道具 举报

21#
ID:887371 发表于 2022-1-4 09:31 | 只看该作者
一夜暴富 发表于 2022-1-3 15:21
感谢,我刚才看了下单片机手册,在霍尔的输出口加一个二极管就可以让他输出单片机的工作电压了
低压检测 ...

记住这个原则:单片机IO口电压不能大于VCC+0.3V。
你应该优先解决这个。供电不能保证正常,啥奇怪问题都可能出现。
你的低压检测是开漏输出,又没有上拉电阻,所以只有配置成准双向口才能检测到,配置成其它方式不行。
stc8复位后所有io自动配置为纯输入,你又没有上拉电阻,所以此时为低电平。我估计是由于某种原因(例如看门狗、供电低)造成mcu复位造成的。又绕回优先解决上面提到的原则了。
你5V是不是由bat升压提供的,如是,由于IO口电压大于VCC+0.3V,使霍尔器件消耗了巨大电流,造成bat波动。又绕回优先解决上面提到的原则了。
回复

使用道具 举报

22#
ID:887186 发表于 2022-1-4 09:38 | 只看该作者
grb7906 发表于 2022-1-3 16:57
不明白,既然是低压检测口,为什么又有输出,输入口改为高阻输入试试,外部上拉...

就是我怀疑和外围电路没关系~
直接就裸着一个单片机,监控单片机引脚P34的高低电平
然后我发现我不停转动旋钮(P33,P32)时
单片机引脚P34也会出现高低电平突然变化一下的情况
回复

使用道具 举报

23#
ID:887186 发表于 2022-1-4 09:38 | 只看该作者
名字不是重点 发表于 2022-1-3 16:34
不安全,极端条件下会烧IO/毁MCU

好的,谢谢。我先把这个问题解决掉
回复

使用道具 举报

24#
ID:887186 发表于 2022-1-4 09:39 | 只看该作者
npn 发表于 2022-1-3 19:34
如果IO口还配置了特殊功能(比如外部中断、硬件SPI等)。
还有可能烧坏内部寄存器导致失灵,出现问题都找 ...

谢谢,我先把这个问题解决掉再看看其它问题
回复

使用道具 举报

25#
ID:491577 发表于 2022-1-4 12:16 | 只看该作者
一夜暴富 发表于 2022-1-4 09:38
就是我怀疑和外围电路没关系~
直接就裸着一个单片机,监控单片机引脚P34的高低电平
然后我发现我不停转 ...

因为静电的原因,IO口设置为高阻并悬空时检测到任何电压都是正常的,悬空的IO口是不可以设置成高阻点。
回复

使用道具 举报

26#
ID:887186 发表于 2022-1-4 14:36 | 只看该作者
hhh402 发表于 2022-1-4 12:16
因为静电的原因,IO口设置为高阻并悬空时检测到任何电压都是正常的,悬空的IO口是不可以设置成高阻点。

感谢,经过一天的调试我发现了问题所在。
旋钮的电阻20K太大了,因为我看别人都是两个10K串联
我直接用了一个20k
导致出现各种各样的问题,我现在改成10K就好了
但是令我不解的是为什么改成20K会出现这样的问题
大佬能否替我解答一下,因为我想做低功耗,如果电阻调成10K,旋钮这的功耗就大了一倍
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表