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

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

緊接著是一個(gè)低電壓檢測的電路

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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




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