0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

フォトリフレクタによる壁距離検知

Posted at

概要

最近、マイクロマウスを作ってみたくて色々調べているのですが、壁検知の方法がかなり肝のような気がします。

この記事では、

  • 森永式等のLED・フォトトランジスタの動作方法
  • フォトリフレクタと壁の距離・方向による変化
  • フォトリフレクタの配置について

を考えていきます。

LEDの回路と、フォトトランジスタの回路について

森永式については

が非常にわかりやすいです。

フォトトランジスタについては、

によると

1無題.png

ハイパスフィルタで定常成分をカットし(LEDの発信周波数はカットしない周波数、負電源がないので注意がいる)
ピークホールド回路で、信号の強度を取り出すようです。

実験回路

2.png

LEDの電流は可変抵抗で指定値に調整します(定電流用ICを後で買って使用するつもり)。
$V_{cc}$はesp32使用を想定して3.3Vにします。

センサーについて
3.png

実験1:LED電流とセンサー距離

IMG_20220211_194230523.jpg

壁の幅 80mm
壁の高さ 25mm
$V_{cc}$ 3.3V
$R_1$ 100kΩ

image.png

当然だが、電流が小さくなるほど、センサーの感度は低下する
ただし、3本の曲線の変化の仕方が近いことが見てわかる。
表示を変更し、LED電流-$V_{out}$のグラフを作ると

image.png

つまり、LED電流に対し比例的に変化していることがわかる。

以降の実験では50mAに調整して実験を行う。

image.png
再度、距離について考えると
20mm~60mmの間でなら使えそうだ。
どの程度の精度が得られるかは、電源などによる電圧変動によるので推定はできないが
60mm以上は結構ずれる気がする
とりあえず、適正距離は30mmといえる。

実験2:壁の角度の影響

IMG_20220211_194225698.jpg

壁の幅 80mm
壁の高さ 25mm
$V_{cc}$ 3.3V
$R_1$ 100kΩ
LED電流 50mA

4.png
として、測定を行った結果

image.png

  • 壁との距離による電圧の変化量は、角度の影響を受けていない(どの角度でも壁との距離10~40mmにおいて傾きがほぼ同じに見える)
  • 角度がつくほど、反射光が減るため、$V_{out}$は増加する

表示を変更し、角度-$V_{out}$とすると

image.png
理論的に考えた時、

  • 鏡では反射は帰ってこない
  • 乱反射した場合、反射角0度で一番たくさん帰ってくると考えられる
  • 表面がツルツルなら乱反射しない
  • ざらざらの面で正反射している
  • ざらざらな面の角度分布で定まる

参考

難しい・・・

実験3:

IMG_20220211_211704822.jpg
10.png

壁の幅 80mm
壁の高さ 25mm
$V_{cc}$ 3.3V
$R_1$ 100kΩ
LED電流 50mA

image.png

  • 当たり前だが、壁との距離が近いほど、横方向距離範囲が狭くなる
  • 横方向距離+3~-3mmで大きく変動しているが、壁との距離30mm以上になると+10~-10mmぐらいに広がっていく

実験4:

壁の角度を変化
IMG_20220211_222054866_5.jpg

11.png

image.png
右の軸は、壁との距離40mm,50mmの曲線用

壁との距離がなんでも、-10~10mmの範囲で大きく変化している。

R1とフォトトランジスタの過度応答の関係

LEDを高周波でON,OFFさせて、フォトトランジスタのセンサー出力にハイパスを掛けて使用する都合上フォトトランジスタの立ち上がり遅れが非常に問題となる可能性を秘めています。
単純に立ち上がり遅れがないのが理想ですが、それはあり得ないので・・・

回路

5.png
$V_G$に方形波を入れて動作を見てみる

FETにはNDS9936を使用した(NDSのチップの向きが思た方向と逆でとまどった・・・)
まず、$V_G$に5Vを入れて電流計を見ながら50mAになるよう可変抵抗を調整した。
Duty50%だからか、方形波を入れて電流計を見ると25.5mAになっていたので、正確に調整できたと思われる

結果

5.png

  • LEDにはコンデンサ成分が存在する($V_G = 0V$に下げているのに、$V_{LED}$が0Vにすぐ落ちていない)
  • LED-ONの立ち上がりに遅れはないように見える

7.png
LEDの周期を2msから20msに変更した

  • $V_{LED}=0$にちゃんと移行している

LED-offの時の挙動は今は考えないで、$V_{out}$の挙動を考える

8.png
周期を400usに変更

9.png
可変抵抗間電圧計測結果

これより、$V_{LED}$の立下り時の電流はほとんど0だと考えられる->LEDはほとんど発光していないと考えていい
コンデンサ成分で微量に電圧が残ったと思われる

問題なのは、LED-on時のフォトトランジスタの立ち下がりの遅さだ
光が入ってきてから、電圧が変化するのに時間がかかるのが、フォトトランジスタのフォトダイオードに対する欠点である。

立ち上がりを早くするのに、光バイアスを掛けたりする場合もあるみたいだ

ハイパス回路を組み込む

特性はわかった。では、高周波の方形波を$V_G$に与えた時の$V_{out}$はどうなるだろうか。

フォトトランジスタを一次遅れシステムと考える

方形波$w$[rad/s]では

にある通り、$sin(wt) + \frac{1}{3}sin(3wt) + \frac{1}{5}sin(5wt) + \frac{1}{7}sin(7wt) $
のようになっている。つまり、3倍、5倍、奇数倍の周波数を足し合わせることになる。
フォトトランジスタ一次遅れ系のカットオフ周波数より内側の周波数の方形波を使うことがまず、必須条件である。

63.2%点での時刻は25usであることから、カットオフ周波数は約40kHzである。
一次システムの影響を無視するためにLEDを4kHzに指定するとよいだろう。
方形波は奇数倍波が入ってくるので、12k,20k,28k,36kHzが入ってくるだろう。

ハイパス回路は次のDFT計算による周波数振幅取り出しを行うため、必要ないと思われる。

esp32で特定周波数の振幅を求める(ピークホールド)

でのDFTを再度記載する

F(k) = \sum^{N-1}_{n=0} f[n] e^{-j \frac{2 \pi}{N} kn}

$k$での、振幅$F(k)$は正規化周波数$\frac{2 \pi k}{N}$での振幅である。

正規化周波数 \frac{ k}{N}  × サンプリング周波数 = 非正規化周波数

となる。

サンプリング16kHz,N=16点,$F(4)$を求めることで4kHzでの振幅がわかる
3.1~4.9kHz?の4kHzから少しずれた信号はどうなるのだろうか・・・コメントください

FFTの計算アルゴリズムを少し勉強して、高速化を少し考える。

特定周波数($k = 4$)のみを計算するから、FFTを使う必要はない
本当に単純に16回複素数積(実質32回積)をして、さらに二乗ノルム(2回積)を行うので、34回積をすれば、振幅がわかる
16kHzでどのくらいCPUリソースが持ってかれるのか気になるところである。
計算を工夫してもいいが、読みやすさを重視することにする。

esp32に導入するプログラム


センサーの配置の考察

実際にどのようなアルゴリズムにするか

単純な直線道

右曲がり

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?