![]() |
發(fā)布時間: 2019-9-13 11:27
正文摘要:本帖最后由 LQNB 于 2019-9-13 11:36 編輯 如圖,51單片機讀取HX711 ad轉(zhuǎn)換值時,程序在while(HX711_DOUT);語句中跳不出來,導(dǎo)致讀取數(shù)值為0。懇請大佬幫助,感謝 |
大佬 我也遇到了 一直卡在while(HX711_DOUT);語句中跳不出來,最后您是咋解決的呀?同樣的程序在stc89c51學(xué)習(xí)板上面就可以 在STC8H單片機上面就不行了。還請指教 |
你檢查一下你的模數(shù)轉(zhuǎn)換讀取那一塊,和標(biāo)準(zhǔn)函數(shù)對比一下 |
simon11 發(fā)表于 2020-3-6 15:29 IO口的上拉電阻不能太大,1K就好了,我開始用了10K,波形有問題! |
大佬,解決了嗎,我也是讀數(shù)一直為零,搞了好久 |
kmsj 發(fā)表于 2019-9-15 17:53 感謝大佬分享,我再試試吧 |
最近買了HX711套件調(diào)試,一看資料,程序很簡單,然而就是這個簡簡單單的程序,硬是調(diào)了兩天都調(diào)不出來,搞得我簡直就是懷疑人生。經(jīng)過百度,發(fā)現(xiàn)很多人遇到這些情況,要么讀數(shù)永遠(yuǎn)為0,要么永遠(yuǎn)是7FFFFF,要么就是while(HX711_DOUT)跳不過,這些問題我全部遇到。一開始以為是上拉電阻問題,官方資料有句話:“與DOUT相連的MCU接口應(yīng)設(shè)置為輸入口,并且不接任何拉高或拉低電阻,以減少MCU與ADC之間的電流交換(干擾)”,這句話估計坑了很多人,我也被坑,去掉上拉電阻還是不行,把上拉電阻換成100K,解決了while(HX711_DOUT)跳不過的問題,但是,讀數(shù)永遠(yuǎn)為0,之前讀數(shù)永遠(yuǎn)為7FFFFF。萬般無奈的情況下,用示波器看看波形,不看不知道,一看嚇一跳,PD_SCK高電平脈沖寬度高達80us,立即驚出一身冷汗!突然想起官方資料介紹PD_SCK高電平保持最小時間0.2us,最大時間50us,還有更重要的一句話:“如果PD_SCK從低電平變高電平并保持在高電平60us,HX711即進入斷電狀態(tài)”,這個才是重點,估計很多人忽略了。 我是先用51單片機調(diào)試程序,然后再移植到AVR單片機,51單片機用的是外部6兆晶體,換成仿真器內(nèi)部晶體,具體多少兆不太清楚,反正PD_SCK高電平保持時間縮短到20多us,讀數(shù)立馬就正常了,又用外部6兆晶體,把優(yōu)化等級調(diào)到7級,讀數(shù)正常,此時的PD_SCK高電平保持時間是45us,把優(yōu)化等級調(diào)到6級,讀數(shù)不正常,PD_SCK高電平保持時間是80us,基本上可以斷定,PD_SCK高電平保持時間在50us以內(nèi)沒有問題,while(HX711_DOUT)等待時間高達92.5ms,編程序的時候就要注意了,肯定不能傻等,DOUT和SCK的上拉電阻恢復(fù)到10K對程序沒有影響,至于“MCU與ADC之間的電流交換(干擾)”,那是后面考慮的事情了,手頭上有兩套模塊,一套的讀數(shù)是0x008237××,另一套是0x007F3F××,誤差怎么那么大?先不管了,慢慢折騰………………。 |
tyrl800 發(fā)表于 2019-9-13 18:43 好的,我再仔細(xì)檢查一下,感謝 |
f556 發(fā)表于 2019-9-13 17:33 好的,謝謝師傅,我試試看 |
while(HX711_DOUT);語句中跳不出來,接線沒有錯誤的話,估計是芯片有問題 |
跳不過while,硬件電路有問題。DOUT和SCK可以直接接單片機IO口 |
來51學(xué)習(xí)的 發(fā)表于 2019-9-13 12:19 前輩,直接DOUT和SCK接單片機IO口,可行嗎? |
有可能是 HX711_DOUT 端口接法錯誤 |
Powered by 單片機教程網(wǎng)