自己紹介
はじめまして、3duilab(スリーディーユーアイラボ)と申します。電子回路、ソフトウェア、品質保証のエンジニアです。54歳、バツイチ、発達障害、転職11回、昔冬山で凍傷になって指先を失いました。
若い頃は電子機器メーカーで電子回路の設計とか楽しかったですが今はほとんど外国製です。
エンジニアとして活躍できるのはあと10年くらい、それまでに魅力的な新しいデバイスを開発し次世代に残したいです。
双方向ハンドセンサーまとめ3分
概要
- ユーザーインターフェイスに特化した製品
- 20cm以上、高速、ピンポイントで検出
- 手の位置、速度、方向を検出
- レーザーを使わないので安全
- 開発は2019年から、2020年7月発売
リンク
Website https://interactive-hand-sensor.com/root/
imgur動画のまとめ https://imgur.com/user/3duilab/posts
発売中 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
さんが
2021/01/14
に
編集
をしました。
(メッセージ: 初版)
-
3duilab
さんが
2021/01/15
に
編集
をしました。
(メッセージ: 修正210115b)
-
3duilab
さんが
2021/01/15
に
編集
をしました。
-
3duilab
さんが
2021/12/13
に
編集
をしました。
-
3duilab
さんが
2021/12/13
に
編集
をしました。
-
3duilab
さんが
2021/12/13
に
編集
をしました。
-
3duilab
さんが
2021/12/13
に
編集
をしました。
-
3duilab
さんが
2022/01/14
に
編集
をしました。
-
3duilab
さんが
2022/01/14
に
編集
をしました。
-
3duilab
さんが
2022/01/14
に
編集
をしました。
ログインしてコメントを投稿する