3duilabのアイコン画像

非接触空間センサー「双方向ハンドセンサー」

3duilab 2021年01月14日に作成  (2021年01月15日に更新)

非接触空間センサー「双方向ハンドセンサー」

自己紹介

はじめまして、3duilab(スリーディーユーアイラボ)と申します。電子回路、ソフトウェア、品質保証のエンジニアです。54歳、バツイチ、発達障害、転職11回、昔冬山で凍傷になって指先を失いました。

若い頃は電子機器メーカーで電子回路の設計とか楽しかったですが今はほとんど外国製です。
エンジニアとして活躍できるのはあと10年くらい、それまでに魅力的な新しいデバイスを開発し次世代に残したいです。😄

双方向ハンドセンサー

ここに動画が表示されます

垂直非接触センサーによる紙飛行機コントロール
センサーの検出距離は20cm以上なので中央値も推測出来ます

概要

  • 20cm以上、高速、ピンポイントで検出
  • 手の動く方向や速度を検出
  • レーザーを使わないので安全
  • 開発は2019年から、2020/7発売
  • メーカーフェア東京2019、つくばミニメーカーフェア2020、GUGEN2020プレゼンテーション

リンク

imgur動画のまとめ https://imgur.com/user/3duilab/posts
Website技術と応用 https://interactive-hand-sensor.com/root/
発売中       https://www.switch-science.com/catalog/6495/
Instagram開発履歴 https://www.instagram.com/3duilab/?hl=ja

紹介する画像や動画の緑の基板は色以外は製品と同じ試作品です。製品は黒色で、不要な赤外線を吸収させています。
オープンソースとしてwebsiteのユーザーマニュアル(https://interactive-hand-sensor.com/root/user-manual)から回路図を公開しています。ユーザーマニュアルを読んでご自由にお使いください。

きっかけの電子工作

ここに動画が表示されます

光に見立てた生物が鉛筆に反応して逃げたり近寄ったりするおもちゃ、センサーにはフォトリフレクタで1cmの距離まで反応します。このセンサーをもっと遠くで反応させたいと思ったのがきっかけです。

スイッチングフォトリフレクタ

フォトリフレクタと能動型センサー

キャプションを入力できます
非接触センサーには光(音)を測定するだけの「受動型センサ」と光を放射して反射光を測定する「能動型センサ」があります。フォトリフレクタは図右の能動型センサで赤外線を放射して反射光を測定します。
普通フォトリフレクタの検出距離は1〜2cmです。20cm以上の距離を検出するにはどうすればよいでしょう❓

テクノロジーの核心

キャプションを入力できます
答はめっちゃ電流を流して強く発光させる😵です。最大1.5Aほど赤外線LEDに流します💥10uS(マイクロ秒)だけ発光させ反射光をADコンバータで数値化します。このタイミングがテクノロジーの核心です。
1年以上の連続動作で壊れたり劣化しないことを確認しています。普通は赤外線LEDに1A以上の電流を流すと煙が出て壊れます🔥😱が、ギリギリのタイミングで安全にセンシングしています。
これはブラシレスモーター短絡保護回路の経験から。上下短絡(ショート)でMOSFETが壊れる時間が約1mS、これより十分小さい時間でOFFすれば壊れません。昔と比べて半導体が強くなってるので他にも応用できると思います😏

ソフトウェアセンシング

ここに動画が表示されます

これはセンサーを8枚並列接続したキューブ型です。64個のセンサーは7mS(ミリ秒)毎に距離データを更新してマイクロコントローラには3次元グラフアニメーションのように変化する距離データ配列が出来ます。この時間変化をソフトウェアで分析すると上空の状態が分かり物体の動く速度や方向を推測することが出来ます。😄

本体基板

詳細はユーザーマニュアルをダウンロードして下さい。
本体基板

PIN番号 PIN名 説明
1 +5V Vcc 5V
2 GND GND
3 A channel 0bit※1
4 B channel 1bit※1
5 C channel 2bit※1
6 SS SPI Slave-Select 並列接続の基板選択※2
7 MOSI SPI Input
8 MISO SPI Output (3.3V/5V切り替えJP2)
9 SCLK SPI Clock
10 SEL_SEN SPIの出力先選択 High:Sensor / Low:CLED ※CLED:カラーLED
11 OE_ILED ILED Output Enable ILED:ON / OFF ※ILED:赤外線LED
12 FIX_CLED CLED Shift Register Latch シフトレジスタの値を出力に反映する
13 OE_CLED CLED Output Enable CLED ON / OFF CLEDは13pinと14pinのANDで制御
14 PWM_CLED CLEDのPWM(Pulse Wide Modulation)制御で明るさを調節するPWMを使わないときは13pin又は5Vにショート

※1: センサー0-7chを3ビットで選択
※2: SSはactive-Low、SS以外はactive High

本体基板回路図

センサー基板

センサー基板

センサー基板回路図

インターフェイス

センサー読み取り手順を図で示します。カラーLEDの書き込みや詳細はユーザーマニュアルをご覧下さい。

  • SPIインターフェイスでADコンバータMCP3208を読むとフォトトランジスタの値が分かります。
  • この時自動的に赤外線LEDが発光します。
  • 赤外線LEDを発光させずに光の状態を読むことも出来ます。両者の差から距離を推測します。
    ロジックアナライザ読み取り例

1.SPIインターフェイス設定

  • SPI-MODE:0
  • CLOCK:2MHz※1
  • SSとCLOCK開始の間隔は2uS〜4uS(多くのマイコンでデフォルト設定)※1
  • 1サイクル(同じILEDへのアクセス時間間隔)は1.2mS以上※2
     ※1この値から外れると感度が下がる。
     ※2 ILEDの品質を確保するため。

2.センサー読み取り手順
 1.A,B,C:ILEDチャンネル設定 *** a
 2.SEL_SEN:HIGH センサー選択 *** b
 3.OE_ILED:LOW  ILED OFF設定 *** c
 4.SPI-read ILED OFFでPhTr電圧読み取り
 5.OE_ILED:HIGH ILED ON設定 *** d
 6.SPI-read ILED ONでPhTr電圧読み取り
 7.SEL_SEN:LOW CLED選択 *** e
 8.OE_ILED:LOW  ILED OFF設定 *** f
 9.ソフトでADコンバータの電圧読み取り
 10.基準配列criをにより値を0-6に分割:Sensor値1-6※
 ※基準配列criはサンプルプログラムSensor class内で定義、0-12に分割の場合あり

3.SPI-read ADコンバータMCP3208の読み取り
 3bitチャンネル値 xyz x:2bit, y:1bit, z:0bit 送信値 3byte (unsigned char) a,b,c
 1. SS:LOW *** p
 2. a binary :0000 011x 式:6 | (xyz >> 2)
 write (a) read(8bit):r0 *** q
 3.b binary :yz00 0000 式:xyz << 6
 write (b) read(8bit):r1 *** r
 4.c binary :0000 0000 cは定数0
 write (c) read(8bit):r2 *** s
 5.SS:HIGH *** t
 6.AD変換値:((r1 & 0x0f) << 8) + r2 r1下位4bit+r2(8bit) 合計12bit

応用例

ここに動画が表示されます

実際のスイッチと置き換え可能な非接触スイッチのテスト
これは実現させたいです😖スイッチに触りたくない


ここに動画が表示されます

非接触空間センサーで2軸サーボモータ制御


ここに動画が表示されます

じゃんけん検出


終わりに

このセンサーを見て「それで何ができるの?」と言う人には「わかってないな😅」と思います。展示会で子供や若者はそんな事聞かずに遊んでくれます。アートのようにこのセンサーで未来感を楽しんで下さい😄

3duilabのアイコン画像
赤外線フォトリフレクタを利用した次世代の非接触空間センサー「双方向ハンドセンサー」を開発しています。電子回路と組込みソフトウェアのエンジニアです。事故で指先を失いました(冬山で凍傷になって)😁 動画まとめ https://imgur.com/user/3duilab/posts  website https://interactive-hand-sensor.com/root/
ログインしてコメントを投稿する