【勉強メモ】ロボットの反射(透過型)赤外線センサの回路について

# 0. はじめに
人間の五感情報のうち、視覚情報は80%程を占めるといわれますが(根拠不明)、ロボットでも光学センサは重要なセンサの一つでしょう。
ところが、(人間のような)画像によるセンシングは画像処理のためのコスト（マイコンの金額や消費電力、処理時間などなど）の増加を招くことから、必ずしも採用できるわけではないでしょう。
その代わりに用いられる単純なセンサとして、光を放ち、その反射光(構造によっては透過光）を捉えるフォトリフレクタ、フォトインタラプタがあります。
![RPR-220.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269597/cc9ace91-6b6f-59cc-2d47-bd29c2995e8e.jpeg)
![ptr_ptd.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269597/5345436e-4ad4-2702-f8e3-b8a88ae015fa.jpeg)

このようなデバイスは、(赤外線)LEDと、(赤外線)フォトトランジスタ or (赤外線)フォトダイオードの組み合わせで構成されています。
赤外線LEDは読んで字の如く、電流を流すと赤外線を放つ素子です。
赤外線フォトトランジスタや赤外線フォトダイオードは**赤外線を受け取ると電流が流れやすくなる素子**です。
[フォトトランジスタTPS601A(ディスコン)の光特性]
![スクリーンショット 2022-11-01 135255.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269597/7a1ddf13-8380-82e5-5e00-7211553d4664.png)
[フォトダイオードQSD2030Fの光特性(フォトトランジスタに対して2桁ほど電流が小さい)]
![スクリーンショット 2022-11-01 135726.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269597/3fb5e447-4ef3-73af-4ce8-4e9e44d3f62f.png)


# 1. 外乱光との戦い
人間もフラッシュの光や太陽光などに邪魔されて物が見えづらくなるように、フォトリフレクタ/フォトインタラプタも外乱光による影響をモロに受けます。なので、センサが受光した光は果たして自分の放った光なのか、区別するための技術が色々と存在します。

## 1.1. 特定の波長の光だけを使う
家庭の照明は当然可視光線ですので、発光する光を可視光線以外の特定の波長に絞り、受光する側もその波長だけをフィルタリングすれば**可視光線の影響は受けなくなります**。なお、可視光線以外の光としては赤外線と紫外線がありますが、大抵の場合は赤外線を用います。
(下図のフォトダイオードSFH309では波長880nmを最もよく受信します)
![2022-10-31 (5).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269597/3a408326-9798-f88b-2206-3a5b5501557c.png)

しかしながら、電灯や太陽光の光の成分には赤外線が多く含まれるので、この対策では不十分です。

## 1.2. 周りを囲う
そもそも外乱光を防ぐのであれば、シンプルに外乱光が入らなくすればよいはずです。
現実には完全に外乱光を防ぐのは難しい場合が多いですが、自分で発光した光を意図せず受光してしまう事も防げるのでなるべく採用しておきたい対策です。
![光センサ(図).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269597/77575bf6-e27c-9695-6131-42c326c22082.png)


## 1.3. 外乱光より強い光を使う & 受光感度を低くする
これも、シンプルで有効な手法です。直射日光ぐらいの強度だと勝てませんが、屋内であれば結構有効なはずです。
**S/N比を上げる**という言い方もできますね。

# 2. 外乱光対策@回路での工夫
## 2.1. 発光側：インパルス駆動 + 受光：微分サンプルホールダー
[ベーシックマウス](http://www8.big.or.jp/~morinaga/basicmouse/frame_basicmouse.htm)という、昔から実装が公開されているマイクロマウスで用いられている方式です。
回路図としては読みづらい部分もあるし、動作確認したいので回路シミュレータ"[LTSpice](https://www.analog.com/jp/design-center/design-tools-and-calculators/ltspice-simulator.html)"で書き起こしたのこちらです(部品の品番が異なりますが動作はほぼゝ同じはず）。
![circuit.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269597/82737287-0d05-9381-7382-f36976773243.jpeg)

### 2.1.1. 発光側：インパルス駆動
発光側はV1のON-OFF信号に応じて、**ONした瞬間だけ電流が流れる回路**になっています。赤外線LEDは大抵の場合瞬間的であれば多くの
電流を流すことを許容しています。この回路では、**コンデンサC1にチャージされた電荷を一気に流すことで、LED(D1)を強く光らせる**ことができます(下図：緑=ON-OFF波形、紫=LED電流)。
![ledgrp.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269597/a598f969-b8cb-bcb5-4c16-932a428a76b7.jpeg)

【赤外線LED TLP105Bの絶対最大定格 定常的には100mAだが瞬間的には1Aまで許容されている】
![TLN105B.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269597/64caa290-075d-530c-91bb-7eb9744c505b.png)

### 2.1.2. 受光側：微分&サンプルホールダー
LED(D1)が発光した赤外線は、**外乱光と異なり瞬間的に増減**するはずです。それを回路的に抜き出す回路になります。かなりアナログ的な動作をしているのでわかりにくいですが、雰囲気だけでも説明できてると嬉しいです。

#### (1) 微分回路
まず、フォトトランジスタQ1の波形(Vptr)は黄色のようになります。その後、**コンデンサC2はその変化分(微分)だけを通して**バイアスされた電圧がオペアンプU1に伝わります(水色のVopi)。このとき、オペアンプは単電源動作する交流増幅回路(ハイパスフィルタ付き)として動作しているようです(黒色 Vopo)。
![opgrp.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269597/bbba4860-e314-5a93-1042-11aa6e9ab067.jpeg)

#### (2) サンプルアンドホルダー
せっかくオペアンプで増幅した信号(Vopo)ですが、**一瞬しか変化しないのでマイコンのADコンバータがタイミングよく測るのは難しい**でしょう。そこで、この電圧をホールドする回路がD2とC4であり、それをリセットするため、D3とV4（マイコンのデジタルポートを模擬）が使われているようです。つまり、Vopoの電圧が上昇すればC4へチャージされる一方なので、**C4の電圧はVopoの最大電圧とほぼ同じ**になります。これで、**一瞬しか出ないVopoの電圧の最大値を好きなときに測ることができます。** ただし、ADコンバータで読み出し終わったら次回の計測のためにC4の電荷をD3とV4のポートを介して**放電**してしまいましょう。
![smphld.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269597/1c643582-95e4-4b62-f95b-70ebeb437774.jpeg)

### 2.1.3. まとめ
回路が全自動で外乱光を取り除く処理をしてくれる点やLEDの発光が強い点はメリットとして大きいと思われますが、なかなか複雑で理解が難しい回路だと思います。部品変更やトラブル発生時などは色々と苦労するでしょう。
（特に出力段のコンデンサ。Diを経由しているとはいえオペアンプの出力をコンデンサにつなぐと発振のリスクがあります。しかも微分回路のF/B経路に位相補正Cがないので発振のリスクがある周波数でのゲインが高いままですのでより一層その傾向が懸念されます。HPに記載された品番以外の部品の場合は発振安定の確認をしたほうが良いでしょう。）

## 2.2. 特定の周波数で点滅する光だけを取り出す回路
[こちらに載っているようです](https://qiita.com/tanutanup/items/8cad22d386e8295a3e84#%E7%99%BA%E5%85%89%E9%83%A8)。LEDを一定の周波数で点滅させて、高速な応答が得られるフォトダイオードとI-V変換回路(後述)で受信、その後特定の周波数だけ取り出すフィルタ回路を通し、交流を直流に変換する回路で構成されています。

# 3. 外乱光対策@ソフトでの工夫
回路的な対策はそれ相応に回路の知識が必要になります。マイコンのタイマー機能や計算処理能力に頼るも一つの対策でしょう。よく使われるのはON/OFFの差分を取る方法です。**もしセンサへの外乱が常時一定ならば、サンプリング1とサンプリング2の差分で外乱は取り除けます**。
![2022-10-31 (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269597/ddf99184-aea4-fac3-9ec4-399a68e1828f.png)

## 3.1. フォトトランジスタを用いた検出回路
フォトトランジスタが光を検出すると通過させる電流が増えます。この電流を抵抗に通すことで光の強弱を電圧として取り出せます。LEDの駆動については、大きな電流をON/OFFさせる必要から、マイコンで直接駆動するのではなくMOS-FETをON/OFFさせるのが良いでしょう。
![ptr.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269597/5dca8027-795c-cf5b-6416-791711bf9530.png)
（このとき、前述のようなLED電流をコンデンサから流す回路にしてしまうと、サンプリング2のタイミングが難しくなります。）


### 3.1.1. コレクタ抵抗値の大小による影響
下図においてQ1やQ2はフォトトランジスタを模擬したものです。Q1・Q2に同じ強度の光が入った場合、コレクタにつながっている抵抗R1、R2の値はどんな影響が見られるでしょうか？
(※フォトトランジスタの内部構造はベースにフォトダイオードが接続されたトランジスタです)
![2022-10-31 (3).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269597/428e4d77-ac1e-ccf8-ad05-d9b72e416ba4.png)

緑はR1が小さい場合(4.7k)、青い波形はR2が大きい場合(1MΩ)です。波形を見てもわかるとおり、**コレクタ抵抗が大きい場合は電圧のゲインが高いですが、遅延が大きい波形**になっています。(トランジスタ内部の少数キャリアが抜けるのに時間がかかることが原因だそうです。）
また、実際の回路では立ち上がりも遅れるのですが、ここはうまく模擬できていませんでした。
![2022-10-31 (4).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269597/a1655f39-ca36-9675-4b14-31c23aaa0f11.png)

もし波形が立ち上がりきる前の**斜めになっている箇所でサンプリングした場合、タイミングのズレが誤差に繋がりやすくなります**(クロックの変動やソフト処理時間、割込み禁止時間の影響などをもろに受けます)。外乱光に対する感度を下げるという意味でも **(検出が可能な限りで)コレクタ抵抗をなるべく小さく** したほうが良いでしょう。

## 3.2. フォトダイオードとI-V変換回路を用いた検出回路
フォトダイオードを逆バイアスして使うと少数キャリアの影響なく高速な応答が得られます。その代わりに微弱な電流しか流れないので増幅する必要があります。このような微弱な電流の増幅には、オペアンプの **I-V変換回路** がよく用いられます。
オペアンプは(正しくF/Bが働いている場合) ＋端子 と -端子 が0VになるようにVoを調整するICです。今回の回路では、フォトダイオードには受光した光の強度に応じた電流( $I_F$ )が流れます。オペアンプの入力端子電流( $I_b$ ) は殆ど流れないので、$I_F$ は $V_O$ から$R$ を経由した経路からのみ流れます。したがって、オームの法則から、$V_O$ は フォトダイオードの両端電圧(≒0V)と$I_FR$の合計になります。つまり、出力電圧$V_O$は、

```math
V_O=I_FR
```
と計算できるわけです。
なお、この回路は**発振しやすい**のでオシロスコープで確認しながら **Cの値を調整** して高周波息でのゲインを制限しましょう（数100pF以下で十分でしょう）。

![フォトIV.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269597/562a6265-00df-5f7a-8146-0402a315d606.png)


この回路はリモコンの受信回路(40kHz程度)でも使われるぐらいには応答性が良いので、高速なサンプリングが必要な場合は使えると思います。線形性も良いようです。少々回路が複雑な点はデメリットですが。

# 4. 終わりに
光学センサ完全に理解した。