作成:栁澤研究室 Robo-BE用

AD変換&センサ

この章では,センサの値をラズベリーパイに取り込む方法を学びます.
この章前の内容をマスターすれば,ライントレースロボットに必要な最低限の知識を習得したことになります.

0.アナログ信号とデジタル信号

スイッチのON,OFFなどのデジタルな情報であれば,そのままラズベリーパイに繋げば問題ありません.
例えば,スイッチが押されているかどうか調べるのであれば,以下を見てみてくださ
https://gpiozero.readthedocs.io/en/stable/recipes.html#button

しかし,距離,速度,加速度などの情報は連続した値,つまりアナログ信号のため,そのままラズベリーパイに取り込むことができません.
そこでアナログ信号をデジタル信号に変換するADコンバータについて学んでみましょう.

1.ADコンバータ

ADコンバータによって,精度や分解能が異なりますので,目的に合わせて選択することになります.
この授業ではMCP3008を使用します.MCP3008は8chなので8個のアナログ信号をデジタル信号に変換できます.
分解能が10bitなので,アナログ信号を0~1023の間の数字で表現できます.

配線は以下の通りです.左側の1~8chにセンサを接続します.
まずは,MCP3008の右側をラズベリーパイと図のように接続しましょう.

2.可変抵抗

最初は確認のために,可変抵抗を使って正しく動作しているか確認してみましょう.
可変抵抗がどんなものかわからなければ,調べてから作業に移りましょう.
配線は以下の通りです.

In [ ]:
from gpiozero import MCP3008
 
ch1 = MCP3008(channel=0) ##ch1に繋いだ信号をデジタル信号に変換(Pythonの表記上,0が上手のCH1に対応するので注意)
 
for n in range(0,10):
    print(ch1.value) ##ch1の値を表示する

プルグラムを実行したら,可変抵抗をドライバなどを使って回してみてください.表示される値が変化することが確認できます.
なお,プログラムがすぐに終了してしまうと思いますので,適宜for文の繰り返し回数を増やすなり,sleepを入れるなどして実験してみてください.

3.フォトセンサ

今度はいよいよセンサを接続してみましょう.ライントレースロボットで使用するフォトセンサを使って試してみましょう.
配線は以下の通りです.図中のADコンバータとなっている部分をCH1に接続しましょう.
プログラムは可変抵抗の時と同じです.実験しやすいように,適宜繰り返し回数やsleepを入れてください.

課題15:フォトセンサと可変抵抗の値の2つを表示する回路,プログラムを作成しましょう.

レポート課題4: フォトセンサを使って,白色の時にモータが正転,黒色の時に停止する回路とプログラムを作成してください.併せてフローチャートも作成してください.

In [ ]: