標題: 求助關(guān)于單片機IO口輸入輸出的奇怪問題 [打印本頁]

作者: 一夜暴富    時間: 2022-1-3 08:57
標題: 求助關(guān)于單片機IO口輸入輸出的奇怪問題
單片機是電池供電然后通過LDO降壓到3.3V給到

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

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

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

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

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

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

作者: datouyuan    時間: 2022-1-3 10:20
記住這個原則:單片機IO口電壓不能大于VCC+0.3V。

當(dāng)霍爾開關(guān)輸出5V時,違反了上述原則。低電壓檢測的輸出端是開樓輸出,輸出4.2V不奇怪。
其它異常估計也是違反上述原則造成的。
作者: 名字不是重點    時間: 2022-1-3 10:42
IO口的電壓5V反灌到CPU的電源端了,所以你的電路出現(xiàn)高于3.3V是合乎邏輯的。。
電壓檢測就是輸入高于標稱電壓時,輸出為高,反之則為低,也是正常的。
作者: grb7906    時間: 2022-1-3 10:44
應(yīng)該就是單片機,低壓偵測.hall電平不一致導(dǎo)致,低壓偵測建議用OC輸出的,上拉用單片機VCC霍爾做下分壓了再接入單片機,這樣應(yīng)該是沒問題了...
作者: wulin    時間: 2022-1-3 11:28
樓主表述的不清晰。圖也不完整,很難理解是什么狀態(tài)。ME2808的VOUT端是開漏型,其高電平電壓是由外接電路確定的。至于VOUT出現(xiàn)短暫低電平無外乎是VOUT外接電路出現(xiàn)短暫低電平或VIN端短暫失壓所致。
作者: npn    時間: 2022-1-3 11:38
你這個低電壓檢測電路是檢測什么的 ?
STC自帶低壓檢測寄存器、中斷。
作者: 一夜暴富    時間: 2022-1-3 13:44
datouyuan 發(fā)表于 2022-1-3 10:20
記住這個原則:單片機IO口電壓不能大于VCC+0.3V。

當(dāng)霍爾開關(guān)輸出5V時,違反了上述原則。低電壓檢測的輸 ...

感謝回復(fù),那如果傳感器有5V的話,該怎么控制輸入的電壓呢。
這個該怎么取舍呢
作者: 一夜暴富    時間: 2022-1-3 13:44
名字不是重點 發(fā)表于 2022-1-3 10:42
IO口的電壓5V反灌到CPU的電源端了,所以你的電路出現(xiàn)高于3.3V是合乎邏輯的。。
電壓檢測就是輸入高于標稱 ...

會有什么不好的影響嗎,如果只是單純的電壓變化倒是可以接受
作者: 一夜暴富    時間: 2022-1-3 13:46
npn 發(fā)表于 2022-1-3 11:38
你這個低電壓檢測電路是檢測什么的 ?
STC自帶低壓檢測寄存器、中斷。

因為我的低壓檢測是3.3V,stc里的似乎不是這個電壓值……?
謝謝大佬,我再研究看看
作者: 一夜暴富    時間: 2022-1-3 13:48
grb7906 發(fā)表于 2022-1-3 10:44
應(yīng)該就是單片機,低壓偵測.hall電平不一致導(dǎo)致,低壓偵測建議用OC輸出的,上拉用單片機VCC霍爾做下分壓了再接 ...

感謝回復(fù),但是并沒有很理解。能再詳細說一下嘛
低壓檢測好像本身VOUT端就是開漏輸出了。
霍爾做下分壓再接入單片機是指在霍爾的輸出接LDO嗎還是
作者: 一夜暴富    時間: 2022-1-3 13:49
wulin 發(fā)表于 2022-1-3 11:28
樓主表述的不清晰。圖也不完整,很難理解是什么狀態(tài)。ME2808的VOUT端是開漏型,其高電平電壓是由外接電路確 ...

謝謝回復(fù)
但我有些不明白的是如果我沒接ME2808,等于是只有單片機IO口單獨存在,沒有接任何外設(shè),此時我轉(zhuǎn)動旋鈕,也是會出現(xiàn)P34這個單片機IO短暫的低電平出現(xiàn)
這是為什么呢。
似乎和外設(shè)已經(jīng)沒有關(guān)系了
作者: Y_G_G    時間: 2022-1-3 13:50
鋰電池供電,可以直接使用電池給單片機供電,低電壓檢測可以通過內(nèi)部參考電壓來進行計算
STC8H1K28內(nèi)置一個已經(jīng)校正過內(nèi)部參考電壓,完全可以使它來進行ADC參考和電池低電壓顯示,不需要LDO的
其它的,雖然你寫了那么多,都不知道你描述的是什么.........................
作者: 一夜暴富    時間: 2022-1-3 14:13
Y_G_G 發(fā)表于 2022-1-3 13:50
鋰電池供電,可以直接使用電池給單片機供電,低電壓檢測可以通過內(nèi)部參考電壓來進行計算
STC8H1K28內(nèi)置一個 ...

簡單來說就是
沒有霍爾開關(guān)(輸入至P35)時,無論怎么轉(zhuǎn)動旋鈕(P32,P33),檢測低電壓的芯片的輸出(P34)都不會出現(xiàn)誤輸出低電壓的情況
但是接上霍爾開關(guān)后,轉(zhuǎn)動旋鈕低電壓芯片輸出就會出現(xiàn)異常
作者: grb7906    時間: 2022-1-3 15:12
一夜暴富 發(fā)表于 2022-1-3 13:48
感謝回復(fù),但是并沒有很理解。能再詳細說一下嘛
低壓檢測好像本身VOUT端就是開漏輸出了。
霍爾做下分壓 ...

很好理解啊,首先,低壓檢測你說已經(jīng)是開漏,單圖上沒見你有上拉,當(dāng)然如果是單片機內(nèi)部上拉也行,其次,HALL,你接的是5v電源,MCU供電是5v么?不是,你就要把hall輸出的信號,電阻分壓到MCU規(guī)格限制內(nèi)...
作者: 一夜暴富    時間: 2022-1-3 15:21
grb7906 發(fā)表于 2022-1-3 15:12
很好理解啊,首先,低壓檢測你說已經(jīng)是開漏,單圖上沒見你有上拉,當(dāng)然如果是單片機內(nèi)部上拉也行,其次,HALL, ...

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

作者: 名字不是重點    時間: 2022-1-3 16:34
一夜暴富 發(fā)表于 2022-1-3 13:44
會有什么不好的影響嗎,如果只是單純的電壓變化倒是可以接受

不安全,極端條件下會燒IO/毀MCU
作者: grb7906    時間: 2022-1-3 16:57
一夜暴富 發(fā)表于 2022-1-3 15:21
感謝,我剛才看了下單片機手冊,在霍爾的輸出口加一個二極管就可以讓他輸出單片機的工作電壓了
低壓檢測 ...

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

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

樓上已經(jīng)有人說明了,IO輸入電壓不能超過這個單片機的最大輸入,不管是不是這個原因,都得先把這個問題解決了再說其它的
至于低電壓檢測,我已經(jīng)說了,沒有必要用LDO,沒有必要外加低電壓檢測,也沒有必要用一個IO來進行ADC
數(shù)據(jù)手冊中有說明的,怎樣利用15通道的ADC來計算VCC,鋰電池供電最常用的低電壓就是用這個方法的
作者: npn    時間: 2022-1-3 19:34
名字不是重點 發(fā)表于 2022-1-3 16:34
不安全,極端條件下會燒IO/毀MCU

如果IO口還配置了特殊功能(比如外部中斷、硬件SPI等)。
還有可能燒壞內(nèi)部寄存器導(dǎo)致失靈,出現(xiàn)問題都找不到北。
作者: datouyuan    時間: 2022-1-4 09:31
一夜暴富 發(fā)表于 2022-1-3 15:21
感謝,我剛才看了下單片機手冊,在霍爾的輸出口加一個二極管就可以讓他輸出單片機的工作電壓了
低壓檢測 ...

記住這個原則:單片機IO口電壓不能大于VCC+0.3V。
你應(yīng)該優(yōu)先解決這個。供電不能保證正常,啥奇怪問題都可能出現(xiàn)。
你的低壓檢測是開漏輸出,又沒有上拉電阻,所以只有配置成準雙向口才能檢測到,配置成其它方式不行。
stc8復(fù)位后所有io自動配置為純輸入,你又沒有上拉電阻,所以此時為低電平。我估計是由于某種原因(例如看門狗、供電低)造成mcu復(fù)位造成的。又繞回優(yōu)先解決上面提到的原則了。
你5V是不是由bat升壓提供的,如是,由于IO口電壓大于VCC+0.3V,使霍爾器件消耗了巨大電流,造成bat波動。又繞回優(yōu)先解決上面提到的原則了。
作者: 一夜暴富    時間: 2022-1-4 09:38
grb7906 發(fā)表于 2022-1-3 16:57
不明白,既然是低壓檢測口,為什么又有輸出,輸入口改為高阻輸入試試,外部上拉...

就是我懷疑和外圍電路沒關(guān)系~
直接就裸著一個單片機,監(jiān)控單片機引腳P34的高低電平
然后我發(fā)現(xiàn)我不停轉(zhuǎn)動旋鈕(P33,P32)時
單片機引腳P34也會出現(xiàn)高低電平突然變化一下的情況
作者: 一夜暴富    時間: 2022-1-4 09:38
名字不是重點 發(fā)表于 2022-1-3 16:34
不安全,極端條件下會燒IO/毀MCU

好的,謝謝。我先把這個問題解決掉
作者: 一夜暴富    時間: 2022-1-4 09:39
npn 發(fā)表于 2022-1-3 19:34
如果IO口還配置了特殊功能(比如外部中斷、硬件SPI等)。
還有可能燒壞內(nèi)部寄存器導(dǎo)致失靈,出現(xiàn)問題都找 ...

謝謝,我先把這個問題解決掉再看看其它問題
作者: hhh402    時間: 2022-1-4 12:16
一夜暴富 發(fā)表于 2022-1-4 09:38
就是我懷疑和外圍電路沒關(guān)系~
直接就裸著一個單片機,監(jiān)控單片機引腳P34的高低電平
然后我發(fā)現(xiàn)我不停轉(zhuǎn) ...

因為靜電的原因,IO口設(shè)置為高阻并懸空時檢測到任何電壓都是正常的,懸空的IO口是不可以設(shè)置成高阻點。
作者: 一夜暴富    時間: 2022-1-4 14:36
hhh402 發(fā)表于 2022-1-4 12:16
因為靜電的原因,IO口設(shè)置為高阻并懸空時檢測到任何電壓都是正常的,懸空的IO口是不可以設(shè)置成高阻點。

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




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1