找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7042|回復: 25
打印 上一主題 下一主題
收起左側

求助關于單片機IO口輸入輸出的奇怪問題

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:887186 發(fā)表于 2022-1-3 08:57 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
200黑幣
單片機是電池供電然后通過LDO降壓到3.3V給到

緊接著是一個低電壓檢測的電路

單獨上面兩個電路時,電池電壓高于3.3V時,VOUT=VIN=BAT+
當電池電壓低于3.3V時,VOUT=0V
接入的IO口是P34
問題出現(xiàn)在,當我把P35這個IO口接上霍爾開關時,

我發(fā)現(xiàn)VOUT在電池電壓大于3.3V時,VOUT=4.2V左右了,就非常神奇。
當然還有更神奇的,我發(fā)現(xiàn)我不接上霍爾開關的時候
低電壓檢測電路沒有任何問題
當我接上霍爾開關后
低電壓芯片有時候會出現(xiàn)很短暫大概8us,突然從高電平突躍到低電平的情況
這種情況發(fā)生在我撥動P32,P33的旋鈕的時候

我不明白,為什么我轉(zhuǎn)動3.3,3.2的旋鈕引腳,同時接上P3.5的霍爾開關就會讓3.4這個引腳出現(xiàn)8us的突然拉低
這非常奇怪,主要我把P35的霍爾開關去掉就沒有關系了。
同時,如果我把P34 P35上的元器件都去掉
轉(zhuǎn)動P33 P32也會出現(xiàn)8us的突然拉低。
這也非常奇怪。
唯一沒有問題的時候其他都保證不變,但是把霍爾開關去掉就是正常的
不知道各位有什么好的想法可以幫我解決這個問題
非常感謝!
我現(xiàn)在只能用一個電容接在低電壓檢測芯片的VOUT消除這個8US的抖動
但是不能找到原因讓我覺得非常難受!
希望各位大佬可以幫我看看!十分感謝QAQ

最佳答案

查看完整內(nèi)容

你之前描述的奇怪現(xiàn)象和這沒關系。 R17和C8、R18和C1,構成了2個阻容延時,用于對旋鈕信號消抖。時間常數(shù)越大,消抖效果越好,但高速旋轉(zhuǎn)時會丟步。時間常數(shù)越小,高速旋轉(zhuǎn)檢測更好,但消抖效果差。需要根據(jù)實際需求精心選擇。 如你電阻10K電容0.1u是最佳效果,那么電阻20K電容0.047u、電阻30K電容0.033u的時間常數(shù)是一樣的,也是最佳效果。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:887371 發(fā)表于 2022-1-3 08:57 | 只看該作者
一夜暴富 發(fā)表于 2022-1-4 14:36
感謝,經(jīng)過一天的調(diào)試我發(fā)現(xiàn)了問題所在。
旋鈕的電阻20K太大了,因為我看別人都是兩個10K串聯(lián)
我直接用 ...

你之前描述的奇怪現(xiàn)象和這沒關系。
R17和C8、R18和C1,構成了2個阻容延時,用于對旋鈕信號消抖。時間常數(shù)越大,消抖效果越好,但高速旋轉(zhuǎn)時會丟步。時間常數(shù)越小,高速旋轉(zhuǎn)檢測更好,但消抖效果差。需要根據(jù)實際需求精心選擇。
如你電阻10K電容0.1u是最佳效果,那么電阻20K電容0.047u、電阻30K電容0.033u的時間常數(shù)是一樣的,也是最佳效果。
回復

使用道具 舉報

板凳
ID:887371 發(fā)表于 2022-1-3 10:20 | 只看該作者
記住這個原則:單片機IO口電壓不能大于VCC+0.3V。

當霍爾開關輸出5V時,違反了上述原則。低電壓檢測的輸出端是開樓輸出,輸出4.2V不奇怪。
其它異常估計也是違反上述原則造成的。
回復

使用道具 舉報

地板
ID:824490 發(fā)表于 2022-1-3 10:42 | 只看該作者
IO口的電壓5V反灌到CPU的電源端了,所以你的電路出現(xiàn)高于3.3V是合乎邏輯的。。
電壓檢測就是輸入高于標稱電壓時,輸出為高,反之則為低,也是正常的。
回復

使用道具 舉報

5#
ID:28752 發(fā)表于 2022-1-3 10:44 | 只看該作者
應該就是單片機,低壓偵測.hall電平不一致導致,低壓偵測建議用OC輸出的,上拉用單片機VCC霍爾做下分壓了再接入單片機,這樣應該是沒問題了...
回復

使用道具 舉報

6#
ID:213173 發(fā)表于 2022-1-3 11:28 | 只看該作者
樓主表述的不清晰。圖也不完整,很難理解是什么狀態(tài)。ME2808的VOUT端是開漏型,其高電平電壓是由外接電路確定的。至于VOUT出現(xiàn)短暫低電平無外乎是VOUT外接電路出現(xiàn)短暫低電平或VIN端短暫失壓所致。
回復

使用道具 舉報

7#
ID:57657 發(fā)表于 2022-1-3 11:38 | 只看該作者
你這個低電壓檢測電路是檢測什么的 ?
STC自帶低壓檢測寄存器、中斷。
回復

使用道具 舉報

8#
ID:887186 發(fā)表于 2022-1-3 13:44 | 只看該作者
datouyuan 發(fā)表于 2022-1-3 10:20
記住這個原則:單片機IO口電壓不能大于VCC+0.3V。

當霍爾開關輸出5V時,違反了上述原則。低電壓檢測的輸 ...

感謝回復,那如果傳感器有5V的話,該怎么控制輸入的電壓呢。
這個該怎么取舍呢
回復

使用道具 舉報

9#
ID:887186 發(fā)表于 2022-1-3 13:44 | 只看該作者
名字不是重點 發(fā)表于 2022-1-3 10:42
IO口的電壓5V反灌到CPU的電源端了,所以你的電路出現(xiàn)高于3.3V是合乎邏輯的。。
電壓檢測就是輸入高于標稱 ...

會有什么不好的影響嗎,如果只是單純的電壓變化倒是可以接受
回復

使用道具 舉報

10#
ID:887186 發(fā)表于 2022-1-3 13:46 | 只看該作者
npn 發(fā)表于 2022-1-3 11:38
你這個低電壓檢測電路是檢測什么的 ?
STC自帶低壓檢測寄存器、中斷。

因為我的低壓檢測是3.3V,stc里的似乎不是這個電壓值……?
謝謝大佬,我再研究看看
回復

使用道具 舉報

11#
ID:887186 發(fā)表于 2022-1-3 13:48 | 只看該作者
grb7906 發(fā)表于 2022-1-3 10:44
應該就是單片機,低壓偵測.hall電平不一致導致,低壓偵測建議用OC輸出的,上拉用單片機VCC霍爾做下分壓了再接 ...

感謝回復,但是并沒有很理解。能再詳細說一下嘛
低壓檢測好像本身VOUT端就是開漏輸出了。
霍爾做下分壓再接入單片機是指在霍爾的輸出接LDO嗎還是
回復

使用道具 舉報

12#
ID:887186 發(fā)表于 2022-1-3 13:49 | 只看該作者
wulin 發(fā)表于 2022-1-3 11:28
樓主表述的不清晰。圖也不完整,很難理解是什么狀態(tài)。ME2808的VOUT端是開漏型,其高電平電壓是由外接電路確 ...

謝謝回復
但我有些不明白的是如果我沒接ME2808,等于是只有單片機IO口單獨存在,沒有接任何外設,此時我轉(zhuǎn)動旋鈕,也是會出現(xiàn)P34這個單片機IO短暫的低電平出現(xiàn)
這是為什么呢。
似乎和外設已經(jīng)沒有關系了
回復

使用道具 舉報

13#
ID:401564 發(fā)表于 2022-1-3 13:50 | 只看該作者
鋰電池供電,可以直接使用電池給單片機供電,低電壓檢測可以通過內(nèi)部參考電壓來進行計算
STC8H1K28內(nèi)置一個已經(jīng)校正過內(nèi)部參考電壓,完全可以使它來進行ADC參考和電池低電壓顯示,不需要LDO的
其它的,雖然你寫了那么多,都不知道你描述的是什么.........................
回復

使用道具 舉報

14#
ID:887186 發(fā)表于 2022-1-3 14:13 | 只看該作者
Y_G_G 發(fā)表于 2022-1-3 13:50
鋰電池供電,可以直接使用電池給單片機供電,低電壓檢測可以通過內(nèi)部參考電壓來進行計算
STC8H1K28內(nèi)置一個 ...

簡單來說就是
沒有霍爾開關(輸入至P35)時,無論怎么轉(zhuǎn)動旋鈕(P32,P33),檢測低電壓的芯片的輸出(P34)都不會出現(xiàn)誤輸出低電壓的情況
但是接上霍爾開關后,轉(zhuǎn)動旋鈕低電壓芯片輸出就會出現(xiàn)異常
回復

使用道具 舉報

15#
ID:28752 發(fā)表于 2022-1-3 15:12 | 只看該作者
一夜暴富 發(fā)表于 2022-1-3 13:48
感謝回復,但是并沒有很理解。能再詳細說一下嘛
低壓檢測好像本身VOUT端就是開漏輸出了。
霍爾做下分壓 ...

很好理解啊,首先,低壓檢測你說已經(jīng)是開漏,單圖上沒見你有上拉,當然如果是單片機內(nèi)部上拉也行,其次,HALL,你接的是5v電源,MCU供電是5v么?不是,你就要把hall輸出的信號,電阻分壓到MCU規(guī)格限制內(nèi)...
回復

使用道具 舉報

16#
ID:887186 發(fā)表于 2022-1-3 15:21 | 只看該作者
grb7906 發(fā)表于 2022-1-3 15:12
很好理解啊,首先,低壓檢測你說已經(jīng)是開漏,單圖上沒見你有上拉,當然如果是單片機內(nèi)部上拉也行,其次,HALL, ...

感謝,我剛才看了下單片機手冊,在霍爾的輸出口加一個二極管就可以讓他輸出單片機的工作電壓了
低壓檢測的話,我直接用單片機的準雙向口似乎也能檢測到。
還有一個小問題是哪怕我不接低壓檢測芯片,只是單純監(jiān)控單片機這個引腳的高地電平,在我未對該引腳在代碼上進行高低電平的定義時,他的輸出有時會從1變成0這樣子(大概8us左右)
回復

使用道具 舉報

17#
ID:824490 發(fā)表于 2022-1-3 16:34 | 只看該作者
一夜暴富 發(fā)表于 2022-1-3 13:44
會有什么不好的影響嗎,如果只是單純的電壓變化倒是可以接受

不安全,極端條件下會燒IO/毀MCU
回復

使用道具 舉報

18#
ID:28752 發(fā)表于 2022-1-3 16:57 | 只看該作者
一夜暴富 發(fā)表于 2022-1-3 15:21
感謝,我剛才看了下單片機手冊,在霍爾的輸出口加一個二極管就可以讓他輸出單片機的工作電壓了
低壓檢測 ...

不明白,既然是低壓檢測口,為什么又有輸出,輸入口改為高阻輸入試試,外部上拉...
回復

使用道具 舉報

19#
ID:401564 發(fā)表于 2022-1-3 18:26 | 只看該作者
一夜暴富 發(fā)表于 2022-1-3 14:13
簡單來說就是
沒有霍爾開關(輸入至P35)時,無論怎么轉(zhuǎn)動旋鈕(P32,P33),檢測低電壓的芯片的輸 ...

樓上已經(jīng)有人說明了,IO輸入電壓不能超過這個單片機的最大輸入,不管是不是這個原因,都得先把這個問題解決了再說其它的
至于低電壓檢測,我已經(jīng)說了,沒有必要用LDO,沒有必要外加低電壓檢測,也沒有必要用一個IO來進行ADC
數(shù)據(jù)手冊中有說明的,怎樣利用15通道的ADC來計算VCC,鋰電池供電最常用的低電壓就是用這個方法的
回復

使用道具 舉報

20#
ID:57657 發(fā)表于 2022-1-3 19:34 | 只看該作者
名字不是重點 發(fā)表于 2022-1-3 16:34
不安全,極端條件下會燒IO/毀MCU

如果IO口還配置了特殊功能(比如外部中斷、硬件SPI等)。
還有可能燒壞內(nèi)部寄存器導致失靈,出現(xiàn)問題都找不到北。
回復

使用道具 舉報

21#
ID:887371 發(fā)表于 2022-1-4 09:31 | 只看該作者
一夜暴富 發(fā)表于 2022-1-3 15:21
感謝,我剛才看了下單片機手冊,在霍爾的輸出口加一個二極管就可以讓他輸出單片機的工作電壓了
低壓檢測 ...

記住這個原則:單片機IO口電壓不能大于VCC+0.3V。
你應該優(yōu)先解決這個。供電不能保證正常,啥奇怪問題都可能出現(xiàn)。
你的低壓檢測是開漏輸出,又沒有上拉電阻,所以只有配置成準雙向口才能檢測到,配置成其它方式不行。
stc8復位后所有io自動配置為純輸入,你又沒有上拉電阻,所以此時為低電平。我估計是由于某種原因(例如看門狗、供電低)造成mcu復位造成的。又繞回優(yōu)先解決上面提到的原則了。
你5V是不是由bat升壓提供的,如是,由于IO口電壓大于VCC+0.3V,使霍爾器件消耗了巨大電流,造成bat波動。又繞回優(yōu)先解決上面提到的原則了。
回復

使用道具 舉報

22#
ID:887186 發(fā)表于 2022-1-4 09:38 | 只看該作者
grb7906 發(fā)表于 2022-1-3 16:57
不明白,既然是低壓檢測口,為什么又有輸出,輸入口改為高阻輸入試試,外部上拉...

就是我懷疑和外圍電路沒關系~
直接就裸著一個單片機,監(jiān)控單片機引腳P34的高低電平
然后我發(fā)現(xiàn)我不停轉(zhuǎn)動旋鈕(P33,P32)時
單片機引腳P34也會出現(xiàn)高低電平突然變化一下的情況
回復

使用道具 舉報

23#
ID:887186 發(fā)表于 2022-1-4 09:38 | 只看該作者
名字不是重點 發(fā)表于 2022-1-3 16:34
不安全,極端條件下會燒IO/毀MCU

好的,謝謝。我先把這個問題解決掉
回復

使用道具 舉報

24#
ID:887186 發(fā)表于 2022-1-4 09:39 | 只看該作者
npn 發(fā)表于 2022-1-3 19:34
如果IO口還配置了特殊功能(比如外部中斷、硬件SPI等)。
還有可能燒壞內(nèi)部寄存器導致失靈,出現(xiàn)問題都找 ...

謝謝,我先把這個問題解決掉再看看其它問題
回復

使用道具 舉報

25#
ID:491577 發(fā)表于 2022-1-4 12:16 | 只看該作者
一夜暴富 發(fā)表于 2022-1-4 09:38
就是我懷疑和外圍電路沒關系~
直接就裸著一個單片機,監(jiān)控單片機引腳P34的高低電平
然后我發(fā)現(xiàn)我不停轉(zhuǎn) ...

因為靜電的原因,IO口設置為高阻并懸空時檢測到任何電壓都是正常的,懸空的IO口是不可以設置成高阻點。
回復

使用道具 舉報

26#
ID:887186 發(fā)表于 2022-1-4 14:36 | 只看該作者
hhh402 發(fā)表于 2022-1-4 12:16
因為靜電的原因,IO口設置為高阻并懸空時檢測到任何電壓都是正常的,懸空的IO口是不可以設置成高阻點。

感謝,經(jīng)過一天的調(diào)試我發(fā)現(xiàn)了問題所在。
旋鈕的電阻20K太大了,因為我看別人都是兩個10K串聯(lián)
我直接用了一個20k
導致出現(xiàn)各種各樣的問題,我現(xiàn)在改成10K就好了
但是令我不解的是為什么改成20K會出現(xiàn)這樣的問題
大佬能否替我解答一下,因為我想做低功耗,如果電阻調(diào)成10K,旋鈕這的功耗就大了一倍
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表