新聞中心

EEPW首頁(yè) > 牛人業(yè)話 > 電容添加三思而行,加錯(cuò)便會(huì)后患無(wú)窮

電容添加三思而行,加錯(cuò)便會(huì)后患無(wú)窮

作者:山竹君 時(shí)間:2019-10-11 來(lái)源:電子產(chǎn)品世界 收藏

據(jù)說(shuō)在中國(guó),評(píng)上了副高職稱就算是高級(jí)知識(shí)分子了。老衲不才,忝列高知一載有余,才慢慢體會(huì)到,真正的研發(fā)工作需要有一種“理論指導(dǎo)實(shí)踐,舉一便能反三”的范兒。

本文引用地址:http://butianyuan.cn/article/201910/405653.htm

比如加這個(gè)貌似簡(jiǎn)單的問(wèn)題,老衲的同事就栽了好幾個(gè)跟頭。在的加或不加、當(dāng)加多少的問(wèn)題上,他并沒(méi)有遵從理論指導(dǎo)實(shí)踐的方針路線,而是想當(dāng)然地瞎干蠻干,事后也只長(zhǎng)教訓(xùn)不長(zhǎng)經(jīng)驗(yàn),碰到其它的場(chǎng)合不能舉一反三。

1570772350308480.jpg

現(xiàn)在把它們分享出來(lái),供各位瓜友拍磚。

1

餓了要吃饃,渴了找水喝,有干擾的地方就要加濾波,這種樸素的經(jīng)驗(yàn)簡(jiǎn)明有力,深入人心。但是這里面的道道兒還很多,所以有的時(shí)候還是會(huì)翻車。

幾年前,老衲做了個(gè)簡(jiǎn)單的器,控制算法需要用到電機(jī)轉(zhuǎn)速信息。

由于使用場(chǎng)景比較簡(jiǎn)單,電機(jī)轉(zhuǎn)速傳感器選用的是成本低廉的霍爾傳感器,電機(jī)每轉(zhuǎn)一周,該傳感器輸出4個(gè)周期的脈沖信號(hào)。雖然分辨率比每周都要輸出上千個(gè)脈沖的QEP單元要低很多,但足以滿足應(yīng)用要求。

電機(jī)轉(zhuǎn)速最高每分鐘3000轉(zhuǎn),相當(dāng)于每秒鐘轉(zhuǎn)50圈,對(duì)應(yīng)200個(gè)脈沖信號(hào)。老衲采用了脈沖計(jì)數(shù)法計(jì)算電機(jī)轉(zhuǎn)速,統(tǒng)計(jì)一秒內(nèi)的脈沖個(gè)數(shù),根據(jù)脈沖個(gè)數(shù)計(jì)算每秒鐘轉(zhuǎn)多少圈,然后再換算到每分鐘多少轉(zhuǎn)即可。

在這里,我采取了“滑動(dòng)時(shí)間窗”法,將一秒鐘分成五個(gè)時(shí)間窗,兩個(gè)統(tǒng)計(jì)周期之間的時(shí)間錯(cuò)位為200毫秒,而不是1秒,這種方式可以增加轉(zhuǎn)速的實(shí)時(shí)性和準(zhǔn)確性。如果瓜友們對(duì)這種方法比較感興趣,可以自行上網(wǎng)查閱,本文篇幅有限,不再贅述。

在這里,脈沖個(gè)數(shù)的統(tǒng)計(jì)很關(guān)鍵。數(shù)字脈沖都有上升沿和下降沿,根據(jù)這種特性,老衲采用了中斷觸發(fā)方式統(tǒng)計(jì)脈沖個(gè)數(shù)。

顯然,如果脈沖輸出線上有毛刺,便可能誤觸發(fā)中斷,造成統(tǒng)計(jì)轉(zhuǎn)速大于實(shí)際轉(zhuǎn)速。基于這種樸素的認(rèn)識(shí),老衲的硬件搭檔小A在脈沖輸出線上加了個(gè)RC濾波。

RC濾波電路如此常見(jiàn),以至于老衲根本意識(shí)不到它還能出問(wèn)題。

2

老衲一邊操作著信號(hào)發(fā)生器輸出方波信號(hào),一邊通過(guò)仿真器觀察一秒內(nèi)的脈沖統(tǒng)計(jì)個(gè)數(shù)。

但是我很快發(fā)現(xiàn),隨著信號(hào)頻率的增加,脈沖采集功能居然慢慢失效了。架上示波器,發(fā)現(xiàn)脈沖數(shù)據(jù)線上原本陡峭的信號(hào)沿變成了緩緩的山坡,從波形上來(lái)看,信號(hào)還沒(méi)有爬到山頂就落了下來(lái)。

雖然這種情況并不多見(jiàn),但是天資平平的老衲還是馬上意識(shí)到這種爬不上去的波形顯然是RC網(wǎng)絡(luò)造成的。在這里,有必要先給大家普及一下RC網(wǎng)絡(luò)對(duì)信號(hào)的“延遲作用”。

RC濾波是個(gè)延遲環(huán)節(jié),延遲時(shí)間取決于時(shí)間常數(shù)(即R*C),以RC濾波網(wǎng)絡(luò)的輸入輸出來(lái)看,RC時(shí)間常數(shù)表示的是輸出信號(hào)電平達(dá)到輸入信號(hào)電平的0.632倍所需的時(shí)間。根據(jù)計(jì)算,經(jīng)過(guò)2個(gè)時(shí)間常數(shù),輸出達(dá)到輸入的0.86倍,經(jīng)過(guò)3個(gè)時(shí)間常數(shù),輸出達(dá)到輸入的0.95倍。。一般經(jīng)過(guò)3-5個(gè)時(shí)間常數(shù)后,輸出就基本達(dá)到了輸入電平。

但是現(xiàn)在的波形,脈沖信號(hào)經(jīng)過(guò)RC濾波后還沒(méi)有充到最高電平就開始放電了,顯然是因?yàn)镽C時(shí)間常數(shù)設(shè)置得太長(zhǎng)了!

待我把小A叫過(guò)來(lái)后,他跟我講述了電容的奇葩計(jì)算方法,當(dāng)時(shí)老衲就震驚了。小A說(shuō):“最大脈沖頻率為200Hz,按照香農(nóng)采樣定理,只要將濾波頻率設(shè)定在400Hz以上,便可以收到濾波、采樣的雙重功效。他將濾波頻率設(shè)定為500Hz,采用普通的RC濾波形式,于是他將R設(shè)定為2k、C設(shè)定為1uF?!?/span>

1570772374854231.jpg

3

嚯,把采樣定理都搬出來(lái)了,似乎無(wú)法從理論上反駁,一開始也把老衲唬的一愣一愣的。但是仔細(xì)想想,小A顯然混淆了方波脈沖頻率和信號(hào)最大頻率的概念!

234.jpg

采樣定理針對(duì)的是信號(hào)最大頻率,但是這里的信號(hào)是方波脈沖信號(hào),脈沖頻率為200Hz不等于信號(hào)中的最大頻率成分為200Hz,從理論上講,數(shù)字脈沖包含無(wú)窮的信號(hào)頻率,200Hz只是基波頻率,還有二次諧波、三次諧波......

實(shí)際上,根據(jù)傅里葉變換的知識(shí),等周期、占空比為50%的脈沖信號(hào)為“半波信號(hào)”,沒(méi)有偶次諧波分量,只有奇次諧波分量。即該信號(hào)有200Hz、600Hz、1000Hz......等正弦分量,其中,三次諧波分量和5次諧波分量還占有比較大的比重。而且,就像在《信號(hào)與系統(tǒng)》這門課程的教科書里講的那樣,如果要在實(shí)際工程中應(yīng)用香農(nóng)定理的話,最好把采樣頻率設(shè)為最大頻率的3-5倍,沒(méi)有按照2倍信號(hào)最大頻率應(yīng)用香農(nóng)定理的。

不過(guò),這里顯然不是采樣定理的用武之地。要想在理論上解釋小A的錯(cuò)誤,還得回到RC網(wǎng)絡(luò)的延遲作用上來(lái)。

1570772422454079.gif

按照RC網(wǎng)絡(luò)時(shí)間常數(shù)的延遲作用,根據(jù)小A的RC取值,時(shí)間常數(shù)τ=0.002秒,200Hz的方波信號(hào)高電平持續(xù)0.0025秒,低電平持續(xù)0.0025秒,都大大小于2個(gè)時(shí)間常數(shù),也就是說(shuō),當(dāng)輸入高電平持續(xù)時(shí)間結(jié)束時(shí),輸出電平還遠(yuǎn)沒(méi)有有達(dá)到輸入電平的0.86倍,經(jīng)過(guò)估算大概還不到0.7倍。

但是按照CMOS電平理論,對(duì)于5V信號(hào),4.5-5V之間的信號(hào)才會(huì)準(zhǔn)確地被認(rèn)定為高電平,0-0.5V之間的確定為低電平。故而,輸入高電平持續(xù)時(shí)間結(jié)束時(shí),MCU還沒(méi)有被觸發(fā)上升沿中斷,所以脈沖采集功能才失效的。

所以,這里真要濾波的話,要把RC時(shí)間常數(shù)至少設(shè)置為高電平持續(xù)時(shí)間的三分之一到五分之一,按照五分之一計(jì)算,時(shí)間常數(shù)τ=0.0005秒,可以將R設(shè)定為5k、C設(shè)定為0.1uF。

老衲把小A講暈后,讓他調(diào)換了電阻和電容,再次測(cè)試果然就沒(méi)有問(wèn)題了。

4

但是電容并不是萬(wàn)能的,也并非非用不可。有時(shí)候,反而需要在“應(yīng)該濾波”的地方去掉電容,才能滿足具體功能的要求。

比如前兩年做了一個(gè)遙控器,在接收遙控信號(hào)時(shí),便遇到了電容的取舍問(wèn)題。

還是類似的脈沖信號(hào)采集,只是這一次不是統(tǒng)計(jì)脈沖個(gè)數(shù)了,反而需要統(tǒng)計(jì)高電平的持續(xù)時(shí)間、低電平的持續(xù)時(shí)間,而且信號(hào)也不是方波信號(hào)了,而是曼徹斯特信號(hào),即以“兩高一低”或“兩低一高”來(lái)表示數(shù)字位0和1,這里的“兩高一低”指的是兩個(gè)時(shí)間單位的高電平和一個(gè)時(shí)間單位的低電平。時(shí)間單位因遙控器和遙控協(xié)議而異,這里測(cè)試時(shí)為125us。

既然是數(shù)字信號(hào)采集,既然信號(hào)線上可能會(huì)受到電磁輻射干擾的影響而出現(xiàn)毛刺,加個(gè)電容濾下波似乎也是應(yīng)有之義。

而且這里的遙控信號(hào)的高低電平持續(xù)時(shí)間都很短,所以老衲采用的RC時(shí)間常數(shù)很小,R=1k,C=1nF,顯然,時(shí)間常數(shù)τ=1us,已經(jīng)是一個(gè)比較小的數(shù)字了,按理說(shuō)既能起到適當(dāng)?shù)臑V波作用,也基本不會(huì)破壞信號(hào)的波形。

但是這次,事情卻沒(méi)有那么簡(jiǎn)單了。因?yàn)槲野l(fā)現(xiàn),加了個(gè)RC濾波網(wǎng)絡(luò)之后,遙控信號(hào)有時(shí)就接收不準(zhǔn)了。

1570772444612591.jpg

正如上面所說(shuō),這次要采集的是高電平持續(xù)時(shí)間和低電平持續(xù)時(shí)間,既然接收不準(zhǔn)了,老衲隱隱約約地覺(jué)得,盡管從理論計(jì)算上沒(méi)什么問(wèn)題,但是這里加的電容顯然會(huì)破壞電平持續(xù)時(shí)間的判斷。

于是,我把電容取了下來(lái)。再一次測(cè)試,好使了!

理論計(jì)算沒(méi)問(wèn)題,加了電容,三個(gè)時(shí)間常數(shù)(3us)后就能觸發(fā)上升沿中斷,對(duì)于125us來(lái)說(shuō),也是一個(gè)很小的誤差,老衲在程序里已經(jīng)給出了足夠的余量(100us-150us均視為1個(gè)時(shí)間單位),完全可以“忽視”掉這種誤差。

但是無(wú)情的事實(shí)就擺在面前,用仿真器存儲(chǔ)多個(gè)高低電平持續(xù)時(shí)間,確實(shí)發(fā)現(xiàn)了一些“不標(biāo)準(zhǔn)”的時(shí)間長(zhǎng)度。顯然,老衲忽略掉了什么!

5

小A在一旁沉浸在“蒼天啊,大地啊”的哀怨中,老衲卻忽然意識(shí)到了一個(gè)問(wèn)題:信號(hào)線和地平面之間的電容是不是不只有自己所添加的這個(gè)1nF!

看著在各個(gè)電源(VCC-12V/VCC-5V/VCC-3.3V)入口處的電容,老衲醒悟了過(guò)來(lái),電容無(wú)處不在,當(dāng)你接了一個(gè)1nF到地平面上時(shí),你也就將信號(hào)線納入了無(wú)比蒼茫的大地,這里地平面的電容也許是動(dòng)態(tài)的,才造成只會(huì)個(gè)別得影響、而不是影響所有的高低電平。

這就了然了!不是這個(gè)1nF的電容自己有問(wèn)題,而是把它接進(jìn)來(lái),就開啟了潘多拉的盒子。它后面還跟著一個(gè)不斷起伏變化的地平面上的電容簇,它就像隱藏在黑幕中的獵人,隨時(shí)對(duì)著遙控信號(hào)線射出一記冷槍!

后記

理論指導(dǎo)實(shí)踐不是一句空話,當(dāng)理論和實(shí)踐不相符時(shí),我們要反躬自省,是不是有哪些因素沒(méi)有考慮到?比如對(duì)于電容,我們就應(yīng)該深深牢記:電容添加三思而行,加錯(cuò)便會(huì)后患無(wú)窮!



關(guān)鍵詞: 電容 電機(jī)控制

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉