說一個(gè)我獲得的教訓(xùn),老板的一個(gè)朋友委托我們給他做一個(gè)小型的控制器,要求的工期比較急,沒時(shí)間做線路板了,所以我們根據(jù)他說的要求選了一個(gè)我們以前的成型產(chǎn)品做基礎(chǔ),在這個(gè)基礎(chǔ)上改。
這個(gè)東西的工作過程很簡單,只需要把傳感器傳上來的數(shù)據(jù)分別送兩塊數(shù)字表顯示,然后根據(jù)傳感器傳上來的數(shù)據(jù)確定兩個(gè)出口固態(tài)繼電器的動(dòng)作。這里面用到了3個(gè)按鍵,3個(gè)指示燈,2個(gè)出口固態(tài)繼電器和485通訊。我們用了ATMEG8做控制芯片,用內(nèi)部8MRC振蕩器做時(shí)鐘,內(nèi)部看門狗,程序用C語言寫的,我的C語言水平比較差上學(xué)的時(shí)候沒學(xué)過,剛用單片機(jī)的時(shí)候全是用的匯編,今年才邊學(xué)邊用C語言做產(chǎn)品。
剛做好程序的時(shí)候我都試過了,接上傳感器和數(shù)字表可以正常的顯示數(shù)據(jù),并能根據(jù)按鍵執(zhí)行規(guī)定的動(dòng)作,我認(rèn)為沒問題了就交了差。
同事拿著我做的控制器去操作箱上安裝配線,后來調(diào)試的時(shí)候同事告訴我說裝置死機(jī)了...
我說不能啊,我已經(jīng)配置了看門狗,正常程序出錯(cuò)是可以復(fù)位的。把同事拿回來的裝置通電測試果然沒有反應(yīng)了,重新燒寫片子還能正常工作。
是不是靜電搞的鬼?
因?yàn)槲覀兊难b置原來是沒有按鍵的,這次的按鍵是在操作箱上接3個(gè)按鈕到裝置的CPU管腳上,沒有保護(hù)措施,現(xiàn)在冬天空氣干燥,很容易產(chǎn)生靜電。
馬上改!
給3個(gè)按鈕都加上了光耦隔離,改好了再裝到控制箱上測試,沒一會(huì)的功夫同事又回來了,說又死機(jī)了。啊!?這是怎么回事呢?
我有點(diǎn)傻了,難道是我的程序有問題?査吧,把程序從頭到尾看了幾個(gè)來回也沒看出毛病。
把死機(jī)的片子擦了,重新燒程序還是能正常工作,這就怪了!難道是操作箱有問題?怎么在我這好好的東西上到操作箱上就死機(jī)呢?
同事干脆把操作箱從車間運(yùn)到我的辦公室來,讓我自己做實(shí)驗(yàn)。果然剛燒好的片子上到操作箱上一會(huì)功夫就死機(jī)了,經(jīng)過反復(fù)的實(shí)驗(yàn)發(fā)現(xiàn)是和數(shù)字表通訊之后死的,更進(jìn)一步的確認(rèn)是跟數(shù)字表通訊以后修改了控制器的EEPROM以后死的。去掉了控制器的寫EEPROM程序就不再死機(jī)了,難道是GCC的EEPROM庫有問題?先不管,看能正常運(yùn)行了再說,反正這個(gè)功能不重要。重新燒寫芯片,裝到控制箱上,手動(dòng)操作沒問題!裝置開始自動(dòng)運(yùn)行,呀!怎么復(fù)位了?是沒看清嗎?
再等一會(huì)....又復(fù)位了!一波未平一波又起,怎么回事?
這么個(gè)小東西程序不超過2K怎么這么多問題?我不至于這么爛吧?這么個(gè)小程序都寫不好?還得試找出問題!反復(fù)試了幾十次發(fā)現(xiàn)規(guī)律了,只要是自動(dòng)狀態(tài)的1號(hào)狀態(tài)再和數(shù)字表一通訊就復(fù)位,是不是485通訊沒加隔離的問題?動(dòng)手加隔離(這里要說一下我們的軟硬件是兩個(gè)人負(fù)責(zé)的,我做軟件,另一個(gè)同事專做硬件),我的同事剛才加了按鍵的隔離這回又加485的隔離,為了增加隔離電源又在原裝置的基礎(chǔ)上改了電源。改完了裝上測試,還復(fù)位!天啊!我同事都不用好眼色看我了!
媽呀,我可怎么辦啊?
從程序上怎么也看不出問題,可惡的M8不支持仿真又看不到C語言程序具體是怎么執(zhí)行的。沒辦法只好用匯編寫程序吧,這個(gè)我熟而且每一步都可控制,肯定不會(huì)再出錯(cuò)了,一個(gè)白天加一個(gè)晚上把程序就寫出來了,第二天調(diào)試通過,上到操作箱上,天啊!又復(fù)位了!
不對(duì)!一定是硬件有問題,同事說沒關(guān)系我給你換CPU板,同事又改了一塊CPU板給我送來,裝上一試,你們猜怎么樣?還是不行!別扔白菜,我真完了/_\,嗚嗚...我心里直哭。
突然我轉(zhuǎn)念一想,不對(duì)就不能還是硬件有問題?
這回我不吱聲了,我另找了一套沒改過的硬件,是原來測試用的肯定是好的,我用它試試。
嘿嘿!這回沒事了,先別著急,我把改過的主板換到這個(gè)上面再試,還是沒問題。把我那個(gè)做硬件的同事揪過來,你看看外面是不是下雪了!說明什么?我冤啊!快趕上竇娥了!她六月下雪,我11月下雪呀!同事二話沒說,拿過繼電器板對(duì)比,發(fā)現(xiàn)好的板兩個(gè)固態(tài)繼電器輸入電阻一樣,不好的輸入電阻差了幾十歐,總是復(fù)位的那個(gè)電阻小,是不是阻抗太低單片機(jī)輸出能力不夠引起的啊?給固態(tài)繼電器輸入端串上200歐電阻,這個(gè)行了。能正常工作了。運(yùn)行一會(huì)看看吧。
過了大約半個(gè)小時(shí),啊!又復(fù)位了!
這回我沒緊張,肯定是硬件問題,因?yàn)槲业某绦駽語言版和匯編版都試過。拿來示波器看看是不是復(fù)位腳有干擾啊?沒有。看看電源呢?啊?CPU的5V電源在復(fù)位的時(shí)候是個(gè)大低谷,持續(xù)大約50毫秒...
元兇終于找到了!
是這個(gè)電源質(zhì)量不好,當(dāng)有繼電器動(dòng)作,并且來通訊,電源就挺不住了。同事也沒話說了,改造電源吧,給電源變壓器增加容量后,再也不復(fù)位了。終于圓滿結(jié)束了。
圍著電源的一個(gè)小問題,我轉(zhuǎn)了一大圈,把這個(gè)教訓(xùn)分享出來提醒大家注意。
-
電源
+關(guān)注
關(guān)注
184文章
17705瀏覽量
249965 -
傳感器
+關(guān)注
關(guān)注
2550文章
51038瀏覽量
753086 -
控制器
+關(guān)注
關(guān)注
112文章
16332瀏覽量
177813
原文標(biāo)題:做單片機(jī)的朋友,忽視這個(gè)問題你就懵圈了
文章出處:【微信號(hào):mcu168,微信公眾號(hào):硬件攻城獅】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論