覚書-PAJ7620U2(ジェスチャーセンサー)

初めに

水中で非接触で機械の操作を、ジェスチャーセンサーが利用できないか調べるため購入して、いろいろいじってみた。その時の調査した結果をとりあえず書いてみる。

ただ結果としては、水中では、というか、センサーの配置に制限があったので、ハウジングケースのような厚めの筐体の内側に配置しても、ジェスチャーを認識しないということが分かった。残念。

ハードウェアの概要

30×30のイメージセンサーを持っており、IR940nmを照射し画像を受け取り。受け取った結果をDSPに通して、ジェスチャー・近接接近に関する情報処理をする。

ジェスチャー・近接接近とチップ制御は、I2Cで行う。

イメージセンサーの情報取り出しは、SPIで行う。SPIはこのチップがマスターになるみたいな感じ。

ベースクロックはGPIO1(MCLK)で与える。周波数は22~48MHz(Frame subtraction モード)、または44~48MHz(RAWモード)となる。

サスペンド時の消費電力は15μA、動作時は、1.5mA~2.82mA。

マニュアルを読むうえで必要な語彙

GPIO イメージデータ転送用のSPI用ピン
0:マスタークロック, 1:CS, 2:SCK, 3:DATA
INT_N ジェスチャー・PSの割り込みピン
PS 近接感知、Proximity Sensor
OP Operation State:消費電力2.82mA
S1 Standby 1 State:消費電力2.3mA
S2 Standby 2 State:消費電力1.5mA
OPtoS1 Step OPからS1に移行する時間で、レジスタはObj_TIME_1(0x6B,0x6C)になる。
S1toS2 Step S1からS2に移行する時間で、レジスタはObj_TIME_2(0x6D,0x6E)になる。

ジェスチャーのモード

Operation State, Standby 1 State, Standby 2 Stateの3種類ある。
モードの手動変更は、Bank0, 0x45で行う。

オブジェクトが認識できない場合、OPtoS1 time(Bank1,0x6B,0x6C)経過するとS1に移行する。S1からさらにS1toS2 time(Bank1,0x6D,0x6E)で何もオブジェクトが検出できないと、S2に移行する。

オブジェクトが検出された場合、すぐにOPに移行する。

ジェスチャーと近接接近でのパラメータの違い

B パラメータ名 ジェスチャー 近接接近
0 Interrupt Enable(0x41,0x42) 0x01FF 0x0200
0 AE_Exposure_UB(0x48, 0x49) 0x003C 0x0020
0 Manual_GG(0x51:[0]) FALSE TRUE
0 Manual_Exposure(0x51:[1]) FALSE TRUE
0 LightThd(0x83) 0x20 0x00
0 UseBGModel(0x9F:[0]) TRUE FALSE
1 dac(0x41:[5:3]) 0x0 0x2
1 dacref_sel(0x43:[2]) FALSE TRUE
1 IDLE_TIME(0x65, 0x66) 0x0096 0x0BCE
1 IDLE_TIME_SLEEP_1(0x67,0x68) 0x0197 0x0BCE
1 IDLE_TIME_SLEEP_2(0x69,0x6A) 0x01CD 0x05E9
1 Obj_TIME_1(0x6B,0x6C) 0x04B0 0xC350
1 Obj_TIME_2(0x6D,0x6E) 0x012C 0xC350
1 Control_Mode(0x74:[2:0]) 0x0 0x5

Interrupt Enable(割り込みマスク)

Reg Bit 内容
0x43 0
  1
  2
  3
  4 前進
  5 後退
  6 時計回り
  7 反時計回り
0x44 0 ウェーブ
  1 近接接近
  2 物体あり
  3 Wake Up
  4 確認
  5 中断
  7 物体なし

近接接近のパラメータ

Pox_UBとPox_LBはアプリケーションノートでは、ジェスチャーから近接接近に変更した際に、その内容を変更していた。

時間についての基本的考え方

0.0323msを1Tとして計算されているらしい。

参照先掲示板

上記掲示板のノーマルモード・ゲーミングモードの切り替えに関する質問から考えるに、次のようなことが言える。

近接接近モードでのIDLE_TIMEが3022となっている。この時間はT*3022= 97.6106となる。

アプリケーションノートでは、近接接近モードの検知周波は10Hz(100ms単位)なので、近接接近モードの検知時間は25ms相当だと思われる。

ジェスチャーモードでは、アプリケーションノートのGesture Detection Operating State and State Machineの計算式から、3.55msがジェスチャーの解析時間だと思われる。それをもとに、120Hz、240HzになるようにIDLE_TIMEを調整する。

結果として、120Hzは148となり、240Hzは19となる。
デフォルト値の150では、119Hzと約120Hzになっていた。

S1とS2での計測周波数を調べたところ、次のような形になった。

状態 設定値 計算式 周波数
S1 407 1000/(407*0.0323+3.55) 59.89Hz
S2 461 1000/(461*0.0646+3.55) 30Hz

初期パラメータの調査

アプリケーションノート、Grove、CHIRIMEN、mbedの情報を調査。

mbedは15, 20, 30の各距離のパラメータ変更についても記載があった。GroveとCHIRIMENは同じ、mbedはアプリケーションノートと同じ。

チップに書き込まれている初期値は、データシートと異なっていた。

これらはエクセルにまとめた。

最後に

ドキュメントのRecommended Mechanical Designをきちんと見ておけば。

カバーガラスが0.7mm以下とは。1cmあるアクリル越しではジェスチャーの検知はできないってあたりまえだよな。

コメント

タイトルとURLをコピーしました