反彈跳時間 - Debounce time

B0  2015年 10月27日 22:16


在數位信號處理裡面,針對某個I/O的信號有時候會因為該信號本身的不穩定導致傳遞信號的時候時而有信號時而沒有信號,最常見的就是某個機械開關在機械切換動作的過程可能因為機構的彈跳而引起前述的信號不穩定,這個不穩定的過程通常發生在切換完成的時間點,切換完成之後經過一段很短的時間就會穩定下來。

負責接收該信號的接收部有可能因為該忽有忽無的信號而引發誤動作,因此在接收的時候就必須把原始信號進行處理,在處理的過程有個概念叫反彈跳時間,就是送進來接收部的信號必須維持高電位至少一段時間以後接收部才開始認定有信號進來。如果未達該反彈跳時間門檻,接收者就不認定為有信號進來。如此就可以避免不穩定的信號。

講了半天,這樣的數位信號處理的概念跟運動控制有什麼關係呢?舉個例子來講,伺服控制裡,有所謂到位框,就是運動中位置誤差如果進入正負多少微米,就判斷為到位,在快速移動的任務中伴隨者高減速度,所以在到位的時候,就會發生誤差一下子超出需求的到位框,一下子又晃進到位框,這樣的行為會隨著伺服控制收斂越來越穩定,而它就跟文章開頭說明的信號彈跳的行為完全相似。反彈跳時間的處理方式就可以套用在這個運動控制到位信號的應用上面。

如何找到一個恰當的反彈跳時間門檻值呢?首先必須多做幾次資料收集觀察運動到達時候的進框與出框的時間行為,找出信號穩定前最長的一次進框區段的時間,門檻值就設定為該最長出框時間再加一小段時間就可以。
  • 8
  • 9616
  • 2
  • 3

B1  2015年 11月06日 17:54


版主您好,請問一下您提到"門檻值就設定為該最長出框時間再加一小段時間就可以",那個"一小段時間"是否有經驗值或標準時間,大約是多久呢? ;)

原 PO - B2  2015年 11月09日 12:45


感謝chipin先進的提問,繁榮了本版面.

那個多加的預留時間要留多少有2件事情可以探討:

如果多預留比較充裕的時間, 當然就可以cover整個系統的未知行為, 例如資料收集比較少,也就是實驗做的比較少次, 那麼就要多留一些預留時間. 也許多加個15%.

如果資料收集得多, 也就是實驗次數比較多, 比方說33次以上, 那麼多留個2~3%應該足夠涵蓋所有的需求了吧.

具體而言, 假設信號穩定前最長的一次進框區段的時間為10ms來說好了, 那麼加入預留量的debounce time保守一些也許可以是11.5ms, 如果想要優化,而多做一些實驗確定最長的一次進框區段的時間真的就是10ms,那麼取10.2ms應該就可以了吧.
馬上回應....

共 2 則回應