基本情報技術者 2015年 秋期 午前(科目A) 問22
問題文
機械式接点の押しボタンスイッチを1回押したときに、押してから数ミリ秒の間、複数回のONOFFが発生する現象はどれか。
選択肢
ア:サンプリング
イ:シェアリング
ウ:チャタリング(正解)
エ:バッファリング
機械式接点の押しボタンスイッチを1回押したときに、押してから数ミリ秒の間、複数回のONOFFが発生する現象はどれか。【午前2 解説】
要点まとめ
- 結論: 押しボタンスイッチを一回押した際の瞬間的なON/OFF連続は「チャタリング」で、接点の機械的な反動により接触が繰り返される現象です。
- 根拠: 機械接点は接触面の弾性や微小振動で数μs〜数msの間に接触と離脱を繰り返し、信号が短時間でバウンスするため誤検出が起きます。
- 差がつくポイント: 問題文の「数ミリ秒」「複数回のONOFF」がキーワード。デバウンス(ハード/ソフト)対策の手法を知っていると確実に選べます。
正解の理由
正解: ウ チャタリング
チャタリングは機械式接点が物理的に振動して短時間に複数回接触・非接触を繰り返す現象であり、問題文の「押してから数ミリ秒の間に複数回のON/OFF」と完全に一致します。電子的な処理(サンプリングやバッファ)や資源共有(シェアリング)とは発生原因が根本的に異なります。
チャタリングは機械式接点が物理的に振動して短時間に複数回接触・非接触を繰り返す現象であり、問題文の「押してから数ミリ秒の間に複数回のON/OFF」と完全に一致します。電子的な処理(サンプリングやバッファ)や資源共有(シェアリング)とは発生原因が根本的に異なります。
よくある誤解
- 「サンプリングが原因」と誤解しやすいが、サンプリングは離散化による誤認であり、機械的な複数接触そのものを説明しません。
- 「バッファリングやシェアリングと混同」しがちだが、それらはデータ処理や資源利用の概念で、物理接点の挙動とは別問題です。
- デバウンス時間を短すぎると残るチャタリングを見逃し、長すぎると操作感や応答性を損なう点を見落としやすいです。
解法ステップ
- 問題文中のキーワードを抽出:数ミリ秒、複数回、ON/OFF、押しボタン、機械式接点。
- 各選択肢の定義を頭の中で照合:機械的接点の物理現象を説明する語を探す。
- 「複数回の短時間の接触・非接触」を明確に表す語が「チャタリング」なので選択する。
- 他選択肢が電子処理や方式を指すことを確認して誤答を排除する。
選択肢別の誤答解説
- ア: サンプリング
サンプリングは連続信号を離散的に計測すること。エイリアシングやサンプリング誤差の問題はあるが、物理接点の瞬間的なON/OFFの繰り返し(チャタリング)そのものを指しません。 - イ: シェアリング
シェアリングは資源や時間を複数に分配・共有する概念で、スイッチ接点の機械的挙動とは無関係です。 - ウ: チャタリング(正解)
機械接点のバウンス現象そのもの。 - エ: バッファリング
バッファリングはデータを一時的に蓄える処理で、信号の短時間のオンオフを説明する語ではありません。
補足コラム
チャタリング対策(デバウンス)はハード/ソフト両面で行われます。ハード面ではRC低域フィルタ+シュミットトリガ、ワンショット回路、専用デバウンスICなどが使われます。ソフト面ではタイムスタンプ+遅延フィルタ、状態遷移(FSM)で安定した一定時間の連続状態を確認してから確定させます。一般的な目安としては5〜50ms程度を確保することが多く、キーボードや小型スイッチでは5〜20ms、古いリレーなどでは数十ms必要な場合があります。
簡単なソフトウェアデバウンス(ポーリング)例(Python):
import time
last_state = False
last_change = 0
DEBOUNCE_MS = 20 # 20ミリ秒
def read_switch():
# 実際はGPIO読み出し
return False
while True:
cur = read_switch()
t = int(time.time() * 1000)
if cur != last_state:
last_change = t
if t - last_change > DEBOUNCE_MS and cur != last_state:
last_state = cur
print("確定状態:", last_state)
time.sleep(0.005)
割り込み環境ではISR内で短時間の遅延を入れるべきではなく、タイマーで遅延確認を行うか、ISRはイベントキューへ記録してメインループでデバウンス処理を行う設計が推奨されます。
FAQ
Q1: チャタリングと単なる電気ノイズの違いは?
A1: チャタリングは機械接点の物理的振動による接触の反復で、電気ノイズは外来電磁的干渉や回路ノイズ等の原因で発生します。対処法も異なり、前者はデバウンス、後者はシールドやフィルタ・Twisted pairなどが有効です。
A1: チャタリングは機械接点の物理的振動による接触の反復で、電気ノイズは外来電磁的干渉や回路ノイズ等の原因で発生します。対処法も異なり、前者はデバウンス、後者はシールドやフィルタ・Twisted pairなどが有効です。
Q2: デバウンスに最適な時間は?
A2: スイッチの種類や使用環境で変わりますが、目安は5〜50ms。ボタン素材や接点の摩耗で変動するため実機での確認が必要です。
A2: スイッチの種類や使用環境で変わりますが、目安は5〜50ms。ボタン素材や接点の摩耗で変動するため実機での確認が必要です。
Q3: 割り込み方式でデバウンスするには?
A3: ISRでは最低限の処理(タイムスタンプ取得やフラグ設定)にとどめ、タイマーベースで一定時間後に状態を確定するか、メインループでデバウンスを行うのが安全です。
A3: ISRでは最低限の処理(タイムスタンプ取得やフラグ設定)にとどめ、タイマーベースで一定時間後に状態を確定するか、メインループでデバウンスを行うのが安全です。
Q4: ハードデバウンスとソフトデバウンスの使い分けは?
A4: レスポンスが厳しい場合やノイズが大きい場合はハード+シュミット等を併用し、柔軟性や調整を重視する場合はソフトでの実装が適します。両方併用が一般的です。
A4: レスポンスが厳しい場合やノイズが大きい場合はハード+シュミット等を併用し、柔軟性や調整を重視する場合はソフトでの実装が適します。両方併用が一般的です。
関連キーワード: チャタリング、デバウンス、接点バウンス、押しボタンスイッチ、ハードウェアデバウンス、ソフトウェアデバウンス、シュミットトリガ、RCフィルタ、割り込み設計、信号安定化、スイッチノイズ、ワンショット回路

\ せっかくなら /
基本情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

