圧電発音体(ピエゾ・スピーカー)を衝撃(振動)センサーに
した時の検出回路、トランジシタ1つだと回路は簡単ですが
振動波形のうねりによりチャタリングでミスカウントする
ことがあります。
パルス検出プログラムが、V-sync(60Hz)のタイミングで
動いているので、ソフト的なチャタリング除去がもうひとつ
うまくいきません。
きちんと波形を捉えて、1発パルスにしておきたいという
ことで、LM393を使ってヒステリシスを持ったコンパレータ
回路を使うことにしました。
この時のヒステリシスの考え方を図示しておきます。
検出回路の全体図
比較電圧はコンパレータ部の(+)端子、非反転入力です。
この電圧を抵抗値から計算します。
このように抵抗がつながって、+端子の電圧が出力のHとLで
変化してヒステリシスが生まれるのです。
さて、トランジシタを使ったシュミット回路、あれこれ
ありますがどうしても入力インピーダンスが低くなって
しまいます。
比較電圧の基となるのがTrのベース・エミッタ間電圧です。
温度変化もあるし・・・
代表例を示しておきます。
そんな中、0~5Vや0~12Vを検出するのに役立つのが、
RS-232C用レシーバーIC。
代表品番が75189と75189A。
14ピンにこんな回路が4つ入っています。
189と189AでR1の値が違っていてヒステリシス電圧が
異なります。
(TIのデータシートより)
今は、シュミットICといえばC-MOSの4584やHC14で、
入力インピーダンスが高いので、時間遅延などの用途
では時定数の抵抗を大きくできます。
ただ、ヒステリシス幅や検出電圧が自由に設計できません。
※「シャカシャカ・ホイップ」 最終(ほぼ)回路
これで、衝撃センサーを使った10秒ゲームが同じ
ソフト・ハードで動きます。
「ボコスカ」「シャカシャカ」「炎のターゲット」の3種
はこれでOK。
※バックアップがわりに現在のスケッチ
・ダウンロード - piko_boko1b.zip
※Arduino UNOでとりあえず動かしてみるつなぎ方
スタートしてINT0にパルスを入れると得点が上がります。
「ピコピコ」の場合はINT0とINT1交互に入力。
A4、A5にテスト用のパルスを出力してますので、これを
INT0(ピコピコならINT1にも)につなげば得点パルスに
なります。
※計測中にSTART SWを押すと、このパルス周期が
変わりますので、得点が進む速さが変わります。
■画面の様子 横32dot × 24line
・ゲームのタイトル表示
---- ----
| シャカシャカ | |ピコピコ|
|ホイップ| |スイッチ|
---- ----
---- ---- ----
|ボコスカ| | 炎の | |ぱたぱた|
|ハンマー| | ターゲット | |プロペラ|
---- ---- ----
・合格点とゲーム時間表示(起動時)
----
|100合|
| 10秒|
----
・開始、秒読み、カウント
---- ---- ----
| よ~い | | それ~ | | 23 |
|321 | |■■■■| |■■ |
---- ---- ----
10秒の残時間バーが減少
最初のパルス入力が来るまで計時しない。
パルス無し2秒が続いたら計時開始。
・結果表示
---- ---- ----
| 89×| |123Hi| |102ok|
|ざんねん| | ハイスコア | | 合格 |
---- ---- ----
合格点=0の時は合格表示はしない。
・スタンバイ、スタート待ち
----
|123Hi| ←新ハイスコア Hi点滅
|119Hi| ←旧ハイスコア 次ゲーム開始で新に更新
----
・モードスイッチ操作
---- ---- ----
| Select | | Select | | Select |
| ゲーム | | 合格点 | | チャタリング| 設定項目を選ぶ
---- ---- ----
・ゲーム種別設定
----
| ゲーム |
|ピコピコ| ←5種から選択
----
・合格点設定
----
| 合格点 |
| 10点| ←0~150まで10点ピッチで設定
----
・チャタリング除去処理の有無を設定
---- ----
| チャタリング| | チャタリング|
| なし | |あり:1c |
---- ----
※ビデオ出力回路
なぜトランジシタでバッファしているのかと
出力にコンデンサをいれている理由の説明。
「大声」と「ボコスカ」でビデオ出力を2系統に
して作ったのがあります。
競技者が見るテレビと観客が見るテレビ(例えばプロジェクタ)
を別に置くとき回路の分岐が便利だから。
最近のコメント