10秒ゲーム

2022年2月18日 (金)

「シャカシャカ・ホイップ」衝撃検出回路

圧電発音体(ピエゾ・スピーカー)を衝撃(振動)センサーに
した時の検出回路、トランジシタ1つだと回路は簡単ですが
振動波形のうねりによりチャタリングでミスカウントする
ことがあります。

パルス検出プログラムが、V-sync(60Hz)のタイミングで
動いているので、ソフト的なチャタリング除去がもうひとつ
うまくいきません。
きちんと波形を捉えて、1発パルスにしておきたいという
ことで、LM393を使ってヒステリシスを持ったコンパレータ
回路を使うことにしました。

この時のヒステリシスの考え方を図示しておきます。
検出回路の全体図

Ss2

比較電圧はコンパレータ部の(+)端子、非反転入力です。
この電圧を抵抗値から計算します。
H11_20220218113501
このように抵抗がつながって、+端子の電圧が出力のHとLで
変化してヒステリシスが生まれるのです。

さて、トランジシタを使ったシュミット回路、あれこれ
ありますがどうしても入力インピーダンスが低くなって
しまいます。
比較電圧の基となるのがTrのベース・エミッタ間電圧です。
温度変化もあるし・・・

代表例を示しておきます。

H12

そんな中、0~5Vや0~12Vを検出するのに役立つのが、
RS-232C用レシーバーIC。
代表品番が75189と75189A。
14ピンにこんな回路が4つ入っています。

H13
189と189AでR1の値が違っていてヒステリシス電圧が
異なります。
H14
  (TIのデータシートより)

今は、シュミットICといえばC-MOSの4584やHC14で、
入力インピーダンスが高いので、時間遅延などの用途
では時定数の抵抗を大きくできます。
ただ、ヒステリシス幅や検出電圧が自由に設計できません。

※「シャカシャカ・ホイップ」 最終(ほぼ)回路
6

これで、衝撃センサーを使った10秒ゲームが同じ
ソフト・ハードで動きます。
「ボコスカ」「シャカシャカ」「炎のターゲット」の3種
はこれでOK。

※バックアップがわりに現在のスケッチ
   ・ダウンロード - piko_boko1b.zip

※Arduino UNOでとりあえず動かしてみるつなぎ方
C001_20220211151001

スタートして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 |
   ----    ---- 


※ビデオ出力回路
Bb1_20220218163101
なぜトランジシタでバッファしているのかと
出力にコンデンサをいれている理由の説明。
Bb2_20220218163101
「大声」と「ボコスカ」でビデオ出力を2系統に
して作ったのがあります。
競技者が見るテレビと観客が見るテレビ(例えばプロジェクタ)
を別に置くとき回路の分岐が便利だから。

| | コメント (0)

2022年2月11日 (金)

『炎のターゲット』は2003年夏のイベントで使いました

ピエゾスピーカー(圧電発音体)を衝撃(振動)センサーとして使った
10秒ゲーム」の一つ、『炎のターゲット』は2003年のイベントに
登場していました。
その写真を発掘しました。

ターゲットには「あててみな!!」のメッセージ。
Aa0
寝てる人は気にしないように。
テントや盆踊りやぐらの設置などで疲れて・・・
   ・・・故 愛宕先輩・・・合掌。

撃ったBB弾を回収して銃に装填しなくちゃなりません。
これに人手が必要。
この作業がネックになり、これ1回かぎりでおしまいに。

ゲーム中の様子。
Aa1_20220211214701
子供たちには大人気。
「10秒間」という時間制限でどれだけ命中させられるのか、
手に取った「銃」の性能(弾道はけっこうエエかげん)を
時間内でどれだけ補正できるのか、大人がやっても面白い。

今回の「シャカシャカ・ホイップ」のArduino UNO化で
復活もありかなぁ。
センサーをどうするかだけの問題ですんで、「シャカシャカ」も
「炎のターゲット」に変身できます。

| | コメント (0)

2022年2月10日 (木)

「シャカシャカ・ホイップ」回路はこれで決定か。

圧電発音体(ピエゾ・スピーカー)を振動(衝撃)センサーとして使った
「10秒ゲーム」、過去あれこれ作ってきました。

今回のタイトルは「シャカシャカ・ホイップ」。
その制御プログラムをArduino UNOのATmega328Pにまとめよう
ということで、あれこれ試行錯誤しております。

過去に作った10秒ゲームのタイトル。
   ※写真はそのうち発掘します。

・「ボコスカ・ハンマー
・「ピコピコ・スイッチ
  現役で大人気品。 学校でのイベントゲームの主役。

・「炎のターゲット
 銀玉鉄砲でBB弾を撃ち、マトに当てるというゲーム。
 マトの裏にセンサーを貼り付けてアタリを検知。
 子供達に大人気だったが、BB弾の回収がうまくいかず。
 (回りにビニールシート張り、傾斜させて丸いBB弾が
  勝手に集まるようにしてみたが・・・手間がかかる)
 1回限りの出動でおしまい。

・「ぱたぱた・プロペラ
 ウチワでプロペラをあおいで、10秒間で何回転できるかを競う。
 子供達、むちゃはまる。
 残念ながら屋内用。
 屋外だと、風が出てきたらプロペラが勝手に回ってゲームにならない。

・「やかまし・チューブ
 透明の筒の底にセンサーを貼り付けてある。
 筒を上下に振り、中に入れた小ゴムボールの衝突回数を競う。
 ムキになる。
 センサーからリード線が出ているのでブラブラしてじゃま。
 無線化できればと。

・「びんぼう・ゆすっち
 両端にスイッチを取り付けた筒を、膝ではさみこみスイッチを
 びんぼうゆすりでon/off。
 派手さが無いのであんまし。

今回のArduino スケッチ、これらのゲームに対応できるように
してみました。
  (ハードはそれぞれ合ったインターフェースが必要)

表示と音出しはテレビに。
  使わなくなった地デジ未対応のブラウン管テレビ、
  これらのゲームのために学校倉庫に置いてあります。

「シャカシャカ・ホイップ」の回路、こんな感じでまとめました。
4

ピエゾスピーカーからの信号をトランジスタで受けて
モノマルチで一定幅のパルスに。
それをINT0入力(↓エッジ検出)で数えます。
オペアンプやコンパレータは使わず、こうするほうが
シンプルに。

衝撃センサー1つだけの「ボコスカ」や「炎の」「やかまし」、
今回の「シャカシャカ」がこれで対応できるでしょう。

「ピコピコ」はスイッチ2つの入力になります。

「ぱたぱた」はプロペラの回転を検知するのに光電センサーを
使っています。
「ぱたぱた」の場合、速度が速いので(他のゲームは60Hzで入力を
サンプリング)、H-syncのタイミングで入力パルスをカウントする
処理にしています。

「mode SW」でゲームの種類(タイトル表示)と「合格点」を
設定できるようにしました。 (設定をEEPROMに保存)

バックアップがわりにスケッチを。
   ・ダウンロード - piko_boko1.zip


ユニバーサル基板の様子。
A11_20220210103501

ケースは百均屋さんで買った密閉容器。
フタを下にしてるんで、基板の固定はペッタンを貼り付けて
ラッピング線を基板端の穴に通して仮止め。
動き回らなかったらOKということで。
A12_20220210103701
A13_20220210103701

「いんじゃんマシン」 も裏を開放しているんで、制御回路が見えます。
そうすると興味を持ってくれる子供が出てくるんで、面白いです。

2019年7月18日 :いんじゃんマシンの電源がアウトに!

※電源電圧と消費電流
  3.0V 39.5mA
  2.8V 42.4mA
  2.6V 45.9mA
  2.4V 50.1mA
  2.2V 54.4mA
  2.0V 59.8mA
  1.8V 65.6mA
  1.6V 74.5mA


※またまた入力部の回路変更

衝撃センサー波形(圧電発音体)を、ダイオードでリミットせず、
そのままショットキダイオードで整流して直流にして、
それをTrのベースに入れるとどうなるかを試してみました。
  ※モノマルチICを省けないかと
うまいこと行きそうです。
B11_20220211092801
モノマルチも残したまま回路を変更。
5

※新しい入力回路で取り込んだ信号波形
B000_20220211100501

B002_20220211100501

B004_20220211100501

B005_20220211100501

力強く泡立て器をボウルの壁面に当ててもらえれば
ミスカウントはほとんどありません。

「シャカシャカ」(ン? カシャカシャか?)
して、摺るような操作が入った時の信号検出が
微妙です。
得点してしまうのもちょっとなぁだし。
チャタリング除去、↓パルスが来てから1V-sync間のは
「無視」という処理です。
2パルス連続したときはもう1sync伸ばすという処理です
かなぁ。

※テスト回路
簡単には、この接続でスケッチを動かしてもらえます。
C001_20220211151001
A4とA5にテストパルスを出してますんで、それを
INT0あるいはINT1につなげれば、外からの信号が
無くても動作を見ることができます。


※さらに追記 : 衝撃検出回路、コンパレータで

NPNトランジスタ1つで検知する回路、簡単で良いのですが
信号のオフ・スロープに不安が残ります。

整流後の電圧がTrのベース電圧を越えるとオン。
   (これは一瞬)
そして徐々に電圧が下がってオフ。
このオフする時にヒステリシスが無いので、場合に
よっては振動波形(チャタリングですな)が生じます。

それを避けたいな~っと、コンパレレータ LM393を使って
描いてみたのがこんな回路です。

A11_20220216171601  
まず、整流回路にダイオード1コの電圧リミッタを挿入。
最大が0.6Vくらい。
そして、前段のコンパレータがオンする電圧が0.5V。
Vfより低くしておきます。
オンしてからオフする電圧が0.25V。
この差がヒステリシス。
整流波に「脈」があっても、それが出力に出るのをこの
電圧差で回避するわけです。
8ピンの安価なICです。
抵抗が数が増えますが、安定動作を目指すなら、これかなぁ。

こんな波形が得られます。
Bb002_20220215175501
2つの山、後ろ側のレベルの小さなほうは出力に
現れません。

| | コメント (0)

2022年2月 5日 (土)

「シャカシャカ・ホイップ」完成が近づいてきた

こんなボウルを使っています。
S22_20220205173801

ボウルの外側にセンサー(圧電発音体)を1つくっつけています。
こんな様子。
S23
ホットボンド+M2のビスで固定。

女房の友人に試運転してもらいましたが、私ら(男連中)
より得点が上がりました。
「しなやかに泡立て器を振り回す」のが良いようです。

我々は、張り切ってしまって、力任せになっちゃいます。
それがスピードを阻害しているようです。
140点あたりがハイスコア。
ゲーム性、ねらいどうりの感じです。

| | コメント (1)

2022年2月 4日 (金)

「シャカシャカ・ホイップ」予備実験 #5

ざっと制御スケッチはできたんですが、
ボウルと泡立て器が接触したことを検知するセンサー
をどうしたものかと悩み中です。

センサーとして使うのは圧電発音体。
図の左側のように、1つだけ使い、ボウルの左右に衝突する
泡立て器による振動を捉えようと考えていたのです。

S1_20220204125701
しかし、角度で90度離れた所に置いたセンサーへ来る信号が
ちょいと弱いのです。

こんな回路を考えていました。

S2_20220204125801
「ボコスカ」のように衝撃が単純で強いとトランジスタ
1つで安定にピックアップできました。

S3

こんな回路にしてもちょい不安定。
S4
ボウルの左右、衝突点にセンサーを2つ設ければ
ボコスカと同じ簡易型の回路で大丈夫そうなんですが、
強く打ち付けたとき、反対側の衝突も拾ってしまうと
いうことになり、感度合わせがなかなかやっかい。
センサーが2つだとケーブルの引き回しも面倒だし。

そこで、センサーは1つにして、前段アンプを設ける
ことにしました。
S5
増幅とコンパレートに8ピンのオペアンプ1つという
ことで回路をまとめてみます。

調整カ所は2つ。
増幅ゲインとコンパレート・レベルを半固定ボリュームで。

| | コメント (0)

2022年1月28日 (金)

「シャカシャカ・ホイップ」予備実験 #4

ピコピコ・スイッチ
ボコスカ・ハンマー
シャカシャカ・ホイップ(まだ未完成)
この3ゲームをArduino-UNOで制御という試み、ざっと
できたのですが、「画面表示の割り込み元」を変えました。

『ピコピコ・スイッチ』、Arduino-UNOで動くように
で紹介しましたスケッチでは、
ATmega328Pの「タイマー1」で映像信号のタイミングを
作っていました。
それを「タイマー0」に変えたのです。
タイマー1は16bitなんでで発生させる周波数(周期)をこまかく
設定できます。
それを「音」の発生に使いたかったのです。

Arduino-UNOでは、タイマー0をシステムで使っています。
  (delayやmillisなど)
それを取り上げて、映像信号の発生に使います。
このためdelay、millisは使えなくなります。

もう一つの8bitタイマーであるタイマー2、このOC2B出力が、
INT1入力(エッジパルス入力)と重なっているのです。
タイマー0やタイマー2のPWMで周期を設定したいときは
OCR-Aレジスタで繰り返し周期を設定します。
   通常のPWM出力(analogwrite)はTOP値=0xFFの
   PWM動作モードが使われます。
   このモードでは周期の微調はできません。
すると、PWM出力の制御はOCR-Bレジスタですることになり、
OC-B出力を使うことになります。
INT1入力を使いたい(ピコピコの二つのスイッチ入力)ので、
タイマー2のOC2B出力は利用できません。

ということで、タイマー0のOC0Bを、映像の同期信号出力と
して使うことにしたのです。
ピンが変わるので、回路図も変更です。

※参考
2020年1月28日:Arduinoから「タイマー0」を取り上げる(ユーザーが使う)

| | コメント (0)

2022年1月26日 (水)

「シャカシャカ・ホイップ」予備実験 #3

圧電素子の出力を見るのに、シャカシャカしてたら
泡立て器のループ(5ループある)が1本、外れてしまいました。
41_20220126120201
折れた根元の様子。
42_20220126120201
抜けただけのように見えますが・・・
43_20220126120401
これを見ると、「抜けた」んじゃなく内部で溶接かなにか
で固定していた部分が破断したのかと。

「ボウル」ですが、金属製のよりプラ製のほうが素直な
波形が出てきます。
金属製のボウルだと、泡立て器を衝突させる場所で、
取り込む波形に振動が出たりと、安定しません。

センサーはこれが良い感じ。
44_20220126120601
むき出しの圧電振動板。 直径20mm。

その信号を、こんな回路でとらえてみました。
46_20220126120701
二つのシリコンダイオードで波形振幅を制限。
その後、ショットキーダイオードで倍圧整流して
みました。

出てきた波形。
45_20220126120801
「0.3V」あたりでコンパレートすれば、きれいに
信号を拾えそうです。


| | コメント (0)

2022年1月24日 (月)

「シャカシャカ・ホイップ」予備実験 #2

ボウルの側面に「振動センサーがわりの圧電発音体」を
くっつけてシャカシャカしてみました。

21_20220124090601
負荷抵抗を10kΩにしてシャカシャカした波形です。
泡立て器を当てる位置により信号レベルが変わります。

E000
E001

波形をFFTしてみると、6kHzあたりにピークが見えました。
  (横軸1divが10kHz)
E002

さて、信号検出どうしたものか。
ボコスカはTrのBE間電圧を使って簡単にしました。
波形の余韻を見ると、コンパレータでスパッとレベルを
判断したいところかと。

| | コメント (0)

2022年1月22日 (土)

「シャカシャカ・ホイップ」予備実験

2022年1月20日:『ピコピコ・スイッチ』、Arduino-UNOで動くように
子供達と遊ぶ新しいゲームを作ってみようということで、
シャカシャカ・ホイップ」なるものを企画しています。

「泡立て器」で「金属製ボウルをシャカシャカ」した時の
「接触回数」を検出して得点に使用という案です。
  イベントでの子供達、カラダを動かしてするゲームが
  良いようです。
  男の子も女の子も、高得点を目指してムキになってくれます。
  ボコスカは2台有るんで、競争してくれます。

泡立て器とボウル、電気的な接触でどんな具合になるか、
信号を見てみました。
ボウルはガレージから持ってきた25cm径のもの。
泡立て器は百均屋さんで購入。

11_20220122161101

電源5Vで1kΩの抵抗でプルアップ。
ボウルを電源のマイナスに。
泡立て器の金属部を抵抗の先につないでオシロに。
それぞれ、クリップでつなぎます。
泡立て器を左右に「シャカシャカ」するとこんな感じ。
B000_20220122161101
ボウルの縁、左右への接触、毎秒10回以上は簡単に
クリアできます。

波形を拡大すると。 盛大にチャタリング。
B001_20220122161101

0.1uFのコンデンサをGND間に入れてチャタリング吸収。

B002_20220122161101

B003_20220122161101

コンデンサを1uFにするとこんな波形。

B004_20220122161101
B007_20220122161101

電気的な接触で「シャカシャカ」回数を拾う方が良いのか、
・・・泡立て器に電線をくっつける必要が
   あるんで、電線ごとカシャカシャ
   するんがジャマになるか・・・
それとも、「ボコスカ・ハンマー」のように
振動センサー」をボウルに貼り付けて、シャカシャカの
振動を拾って計数するほうが良いか(泡立て器がフリーになる)
もうちょい実験してます。

接触だと、ず~っとオンという状態が考えられますんで、
オンのエッジ検出後、いったんオフの区間が続かないと
次のオンを検出しないという入力処理になるかと。

泡立て器につなぐ電線はなくしたいところです。

| | コメント (0)

2022年1月21日 (金)

「ボコスカ・ハンマー」のセンサー信号

ピコピコ・スイッチの入力はスイッチ操作ですが、
ボコスカ・ハンマーはピエゾ・スピーカーを衝撃センサー
にして信号を拾っています。

チャタリング除去のこともあり、どんな信号か見ておきました。
センサー部の回路は
2022年1月20日:『ピコピコ・スイッチ』、Arduino-UNOで動くように
で図示しています。

まず「片手でボコスカ」したときの様子。
Cc000
毎秒8回くらい。
両手でボコスカすると、倍は行くかも。
ということは、毎秒20回はちゃんとカウントしたいところ。

センサー波形を拡大すると、こんな様子に。
Cc001
トランジスタのBE間電圧で比較しているんで、けっこう微妙。
信号の↓エッジを捉えているんで、スレッショルドの具合で、
1回の打ち下ろしで2~3発の↓エッジ信号が入るかも。
すると、次サイクルの処理でパルスを2度取りするかもしれません。
ハードで処理するなら、リトリガブル・ワンショットマルチで
後発のエッジをマスクしておきたいところです。

処理のサイクルが垂直周波数の60Hz=16.7msなんで
ソフト的に厳密にチャタリング除去するにはきびしいところ
なんです。
簡単には、パルス検出した次のサイクルでのパルスは無視する
という処置でしょう。
すると応答は30Hzになって、10秒計時での最高得点は300点。
こんな所でしょうか。

ちなみに、「ボコスカ・ハンマー」の初号機(2台ある)は
こんな回路に。
コンパレータを使って、信号の大小を判別できるように
していました。(強打だと得点を増やす)
Cc21

| | コメント (0)