中国福彩网中心

新聞中心

EEPW首頁 > 牛人業話 > 電容添加三思而行,加錯便會后患無窮

電容添加三思而行,加錯便會后患無窮

作者:山竹君時間:2019-10-11來源:電子產品世界收藏

據說在中國,評上了副高職稱就算是高級知識分子了。老衲不才,忝列高知一載有余,才慢慢體會到,真正的研發工作需要有一種“理論指導實踐,舉一便能反三”的范兒。

本文引用地址:http://www.tsejo.com.cn/article/201910/405653.htm

比如加這個貌似簡單的問題,老衲的同事就栽了好幾個跟頭。在的加或不加、當加多少的問題上,他并沒有遵從理論指導實踐的方針路線,而是想當然地瞎干蠻干,事后也只長教訓不長經驗,碰到其它的場合不能舉一反三。

1570772350308480.jpg

現在把它們分享出來,供各位瓜友拍磚。

1

餓了要吃饃,渴了找水喝,有干擾的地方就要加濾波,這種樸素的經驗簡明有力,深入人心。但是這里面的道道兒還很多,所以有的時候還是會翻車。

幾年前,老衲做了個簡單的器,控制算法需要用到電機轉速信息。

由于使用場景比較簡單,電機轉速傳感器選用的是成本低廉的霍爾傳感器,電機每轉一周,該傳感器輸出4個周期的脈沖信號。雖然分辨率比每周都要輸出上千個脈沖的QEP單元要低很多,但足以滿足應用要求。

電機轉速最高每分鐘3000轉,相當于每秒鐘轉50圈,對應200個脈沖信號。老衲采用了脈沖計數法計算電機轉速,統計一秒內的脈沖個數,根據脈沖個數計算每秒鐘轉多少圈,然后再換算到每分鐘多少轉即可。

在這里,我采取了“滑動時間窗”法,將一秒鐘分成五個時間窗,兩個統計周期之間的時間錯位為200毫秒,而不是1秒,這種方式可以增加轉速的實時性和準確性。如果瓜友們對這種方法比較感興趣,可以自行上網查閱,本文篇幅有限,不再贅述。

在這里,脈沖個數的統計很關鍵。數字脈沖都有上升沿和下降沿,根據這種特性,老衲采用了中斷觸發方式統計脈沖個數。

顯然,如果脈沖輸出線上有毛刺,便可能誤觸發中斷,造成統計轉速大于實際轉速。基于這種樸素的認識,老衲的硬件搭檔小A在脈沖輸出線上加了個RC濾波。

RC濾波電路如此常見,以至于老衲根本意識不到它還能出問題。

2

老衲一邊操作著信號發生器輸出方波信號,一邊通過仿真器觀察一秒內的脈沖統計個數。

但是我很快發現,隨著信號頻率的增加,脈沖采集功能居然慢慢失效了。架上示波器,發現脈沖數據線上原本陡峭的信號沿變成了緩緩的山坡,從波形上來看,信號還沒有爬到山頂就落了下來。

雖然這種情況并不多見,但是天資平平的老衲還是馬上意識到這種爬不上去的波形顯然是RC網絡造成的。在這里,有必要先給大家普及一下RC網絡對信號的“延遲作用”。

RC濾波是個延遲環節,延遲時間取決于時間常數(即R*C),以RC濾波網絡的輸入輸出來看,RC時間常數表示的是輸出信號電平達到輸入信號電平的0.632倍所需的時間。根據計算,經過2個時間常數,輸出達到輸入的0.86倍,經過3個時間常數,輸出達到輸入的0.95倍。。一般經過3-5個時間常數后,輸出就基本達到了輸入電平。

但是現在的波形,脈沖信號經過RC濾波后還沒有充到最高電平就開始放電了,顯然是因為RC時間常數設置得太長了!

待我把小A叫過來后,他跟我講述了電容的奇葩計算方法,當時老衲就震驚了。小A說:“最大脈沖頻率為200Hz,按照香農采樣定理,只要將濾波頻率設定在400Hz以上,便可以收到濾波、采樣的雙重功效。他將濾波頻率設定為500Hz,采用普通的RC濾波形式,于是他將R設定為2k、C設定為1uF。”

1570772374854231.jpg

3

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

234.jpg

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

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

不過,這里顯然不是采樣定理的用武之地。要想在理論上解釋小A的錯誤,還得回到RC網絡的延遲作用上來。

1570772422454079.gif

按照RC網絡時間常數的延遲作用,根據小A的RC取值,時間常數τ=0.002秒,200Hz的方波信號高電平持續0.0025秒,低電平持續0.0025秒,都大大小于2個時間常數,也就是說,當輸入高電平持續時間結束時,輸出電平還遠沒有有達到輸入電平的0.86倍,經過估算大概還不到0.7倍。

但是按照CMOS電平理論,對于5V信號,4.5-5V之間的信號才會準確地被認定為高電平,0-0.5V之間的確定為低電平。故而,輸入高電平持續時間結束時,MCU還沒有被觸發上升沿中斷,所以脈沖采集功能才失效的。

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

老衲把小A講暈后,讓他調換了電阻和電容,再次測試果然就沒有問題了。

4

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

比如前兩年做了一個遙控器,在接收遙控信號時,便遇到了電容的取舍問題。

還是類似的脈沖信號采集,只是這一次不是統計脈沖個數了,反而需要統計高電平的持續時間、低電平的持續時間,而且信號也不是方波信號了,而是曼徹斯特信號,即以“兩高一低”或“兩低一高”來表示數字位0和1,這里的“兩高一低”指的是兩個時間單位的高電平和一個時間單位的低電平。時間單位因遙控器和遙控協議而異,這里測試時為125us。

既然是數字信號采集,既然信號線上可能會受到電磁輻射干擾的影響而出現毛刺,加個電容濾下波似乎也是應有之義。

而且這里的遙控信號的高低電平持續時間都很短,所以老衲采用的RC時間常數很小,R=1k,C=1nF,顯然,時間常數τ=1us,已經是一個比較小的數字了,按理說既能起到適當的濾波作用,也基本不會破壞信號的波形。

但是這次,事情卻沒有那么簡單了。因為我發現,加了個RC濾波網絡之后,遙控信號有時就接收不準了。

1570772444612591.jpg

正如上面所說,這次要采集的是高電平持續時間和低電平持續時間,既然接收不準了,老衲隱隱約約地覺得,盡管從理論計算上沒什么問題,但是這里加的電容顯然會破壞電平持續時間的判斷。

于是,我把電容取了下來。再一次測試,好使了!

理論計算沒問題,加了電容,三個時間常數(3us)后就能觸發上升沿中斷,對于125us來說,也是一個很小的誤差,老衲在程序里已經給出了足夠的余量(100us-150us均視為1個時間單位),完全可以“忽視”掉這種誤差。

但是無情的事實就擺在面前,用仿真器存儲多個高低電平持續時間,確實發現了一些“不標準”的時間長度。顯然,老衲忽略掉了什么!

5

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

看著在各個電源(VCC-12V/VCC-5V/VCC-3.3V)入口處的電容,老衲醒悟了過來,電容無處不在,當你接了一個1nF到地平面上時,你也就將信號線納入了無比蒼茫的大地,這里地平面的電容也許是動態的,才造成只會個別得影響、而不是影響所有的高低電平。

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

后記

理論指導實踐不是一句空話,當理論和實踐不相符時,我們要反躬自省,是不是有哪些因素沒有考慮到?比如對于電容,我們就應該深深牢記:電容添加三思而行,加錯便會后患無窮!



關鍵詞: 電容 電機控制

評論


相關推薦

技術專區

關閉
中国福彩网中心 山东群英会预测推荐 海洋王国里面卖什么东西赚钱 大乐透2019春节停售时间 鱼丸深海狂鲨官网 赛车稳赚不赔的方法 1000期双色球走势图助手彩吧 足彩奖金时间 秒速时时欢迎手机版 做共享雨伞赚钱吗 双色球必胜投注技巧 大乐透近100走势图 电赛板球 重庆时时彩开奖统计图 大乐透近200期开奖号码 天天捕鱼游戏大厅下载 浙江体彩大乐透开奖直播频道