小石川の鉄道班のへや

小石川中等教育学校物理研究会鉄道班の公式ブログです。

模型の自動制御はじめました。(基本編)

 

 自動制御の開発(その1)

どうも、E231-1000番台が大好きな中の人です。

わが鉄道班では、創作展のとき、とても忙しいので自動制御を開発しよう!

となりました。

しか~し!誰も電子工作の知識を持っていない、ましてや+、-極があることぐらいしか

分からないような人達だったので、私が制作することになりました。

今日の目標:

とりあえず発車・停止ができるようにする

それでは作っていきましょう。

1)列車の検知

 まずは列車検知です。

調べてみると、Cdsっていう光センサーや、フォトリフレクタを使ったり、

フォトカプラを使って閉塞ごとに車両を検知する方法がありました。

Cdsってなに?

  Cdsは、カドミウム用いて、照度を測る部品です。照度により、

  Cdsの抵抗値が変わります。

  加工が楽ですが、カドミウムを用いているらしいのでEUだとRoHS規制が

  あるため、EUでは使用できません。

・フォトリフレクタってなに?

  フォトリフレクタは、赤外線LEDとフォトトランジスタが合わさっている

  部品です。フォトリフレクタの上部に物体があると、赤外線が反射し

  フォトトランジスタが動作する仕組みです。

  加工が大変ですが、ATSのような見た目をしています。

・フォトカプラってなに?

  フォトカプラは、赤外線LEDとフォトトランジスタが向かい合って

  パッケージになっている部品です。

  外部からの影響がないため、確実な反応ができ、また

  電気的に独立しているため、繋げられない回路を連動させることができます。

ところで、マイコンに入力したり出力したりする信号のカギを握るのは

電圧らしいです。ということは、センサーの上に列車が来たら

電圧が上昇するようにする、ということでいいのかな?

センサーは、規制めんどくさい人間なのでCdsは除外、

後々のことを考えるとフォトカプラは列車が止まっていると検知できないので、

ATS風のフォトリフレクタにしました。

2)センサーの反応

<1>回路部

センサーが電圧で動けばいいことは分かった。

まず、赤外線LEDを光らせよう、ということでLEDの勉強だ!ひえ~

LEDは電流で光るらしいです。しかし、流しすぎるとマイコン、LEDどっちも

壊れるので、抵抗で制限します。大体220Ωでいいかな?

まず、手元にあった普通のLEDで実験。

f:id:koishikawa_railway:20181220134415j:plain

よし、光った!つぎはフォトリフレクタの赤外線LEDです。

と、その前に線路に埋め込みましょう!

f:id:koishikawa_railway:20181220192152j:plain

こんな感じです。(見にくくてすいません)

では、さっきと同じようにして赤外線LEDを光らせましょう。

f:id:koishikawa_railway:20181220192231j:plain

わ~い、光った!

線路に埋めてある部品から謎の光が出ているのが分かりますか?これが赤外線です。

いや~、赤外線ってデジカメに写るんですね。知ってました。

次にフォトトランジスタですね。

まずトランジスタについて。トランジスタは増幅する、といいますが

無限ではないです。コレクタに入ってくる分までしか増幅できません。

で、トランジスタは3つ端子があり、コレクタ、ベース、エミッタがあります。

コレクタは入力、エミッタは出力、ベースはスイッチング電流を入力します。

つまり、スイッチで例えると、コレクタ、エミッタがそれぞれ+、-側につながれ、

ベースが手で押すスイッチですね。トランジスタはこれを電気バージョンに

置き換えたものですね。

で、フォトトランジスタの場合光(光電流というらしい)がベースの電流の役割ですね。

つまり、光が多いと電気も大きくなる、ということです。

よし、トランジスタのコレクタを+極に繋いで、-極をGNDにつないで、テスターで

電圧を測って・・・あれれ?反応しないぞ?

調べてみると、このままだと電圧が浮いた状態(=電圧が不定)になり、正確に測れない

とのこと。

解決策として、GNDに繋いだプルダウン抵抗を用いるらしい。

そこで、1MΩの抵抗をプルダウン抵抗として繋いだ。

すると・・・

おっしゃあ、成功だああ!

次に、マイコンで読み取れるようにします。

<2>マイコン

マイコンArduino Unoという有名なものを使用します(正確にはマイコンボード)。

Arduino Unoにはアナログ入出力ピンがあり、そこに電圧を入力してA/D変換をし、

アナログ値からデジタル値に変換します。

Arduino は、analogRead(pin)でA/D変換できるそうです。分かりやすい!

試しに実行してみました。

f:id:koishikawa_railway:20181220210810j:plain

途中で値が変わっているのが分かりますか?読み取れています。よかった。

3)モーターの制御 

<1>回路部

モーターは、動く際にとても大きな電流が必要です。

しかし、マイコンから流せる電流はわずか、流しすぎるとマイコン

壊れてしまいます。

そこで、トランジスタで別電源から取り出した電気を制御します。

ここで使うトランジスタは、モータードライバというトランジスタの塊を使います。

使ったモータードライバはTA7291Pです。

この中にはブリッジ回路が内蔵されています。

・ブリッジ回路とは・・・

  4つのトランジスタを制御することで、モーターに流れる電気の向きを

  反転させられる回路。

これで折り返し運転などができますね!

<2>マイコン

今回は簡単に運転するため、HIGH、LOWのみ出力するようにします。

プログラムの流れは次の通りです。

  ・まず、出力ピンの設定を行う。

  ・次にループに入る。

    ・センサーの電圧が閾値より高くなるまで待つ(A/D変換値が閾値を超えるまで)

    ・出力ピンをLOWレベルにする。

    ・3秒待つ。

    ・出力ピンをHIGHレベルにする。

ではやってみよう!

・・・あれ、動かない・・・。

調べてみると、なんと電源用のACアダプターが逝っている・・・

どうやらお亡くなりになられているようです。

今度秋月でACアダプター買ってきます・・・。

それでは、今日はこんなところで!