ありぎりす の徒然日記

アクセスカウンタ

zoom RSS RaspberryPiで鉄道模型を動かしてみる その2

<<   作成日時 : 2016/07/20 10:37   >>

ナイス ブログ気持玉 1 / トラックバック 0 / コメント 0

車両を動かす(ON/OFF制御):
前回の その1 で準備は整ったので、今回は
鉄道模型(Nゲージ)の車両を動かしましょう。

具体的にはモータ付きの車両に電流を流して
モータを回転させるわけです。

で、モータを動かすのには、モータドライバと呼ばれる
デバイスが重宝します。

今回 ありぎりす が用いるモータドライバはこちら。
画像


東芝セミコンダクター社製のTA7291P
秋月電子通商から購入、2個パックで300円。

上の写真、左から1番ピン、右端が10番ピンです。

各ピンの割り当ては以下の通り

1番  ー GND
2番  ー OUT1 出力端子1
3番  ー 使用しない
4番  ー Vref 制御電源端子
5番  ー IN1 入力端子1
6番  ー IN2 入力端子2
7番  ー Vcc ロジック側電源端子 動作電圧:4.5〜20V
8番  ー Vs  出力側電源端子  動作電圧:0〜20V
9番  ー 使用しない
10番  ー OUT2 出力端子2

GNDはグランドです。
ラズパイのGNDとつなぎます。

OUT1、OUT2はモータへの出力、鉄道模型では、
それぞれ2本ある線路のレールにつなぎます。

Vsがモータを回転させるための電源端子。
Nゲージの場合最大で12Vです。
ラズパイの電源出力は3.3Vと5Vの二種類なので
モータ用の電源は別に用意する必要があります。
5Vでは鉄道模型に十分な速度が出せませんし、
消費電力の大きなデバイスを接続するとラズパイの
電圧が下がってリセットがかかってしまうかもしれません。

Vccはこのデバイスを動作させるための電源です。
Vsと同じ電源に接続すればよいでしょう。

Vrefはモータへの出力電圧を制御するための端子です。
仮にVsに12Vを与えた場合、このVrefに0〜12Vの電圧を
指令することで、モータの回転速度を制御することができるのです。
しかし、ラズパイにはアナログ電圧の出力がありません。 (T^T)
しかたないので、Vsにつなぎます。
但し、説明書にはサージ保護のために3KΩ以上の抵抗を入れるように
書かれているので、10KΩを入れておきます。

IN1,IN2はラズパイの汎用入出力(GPIO)につなぎます。
この二つの信号をラズパイから出力(モータドライバにとっては入力)
することでモータの回転を制御します。

 IN1 IN2
  0  0 ー ストップ
  1  0 ー CW/CCW
  0  1 ー CCW/CW
  1  1 ー ブレーキ

前述の接続を以下に図示します。
画像

 注)上図の”モータ電源”の記号は、+/ーが逆(誤記)です

上記の回路を汎用基板に実装したものがこちら。
画像


最初TA7291Pを直に基板にハンダ付けしたのですが、
ハンダ付けにモタついてたら、TA7291Pを壊してしまいました。 (T^T)
案外と熱に弱いです。
なのでソケットを使ってデバイスを差し込むようにしました。

モーター用電源は単3乾電池を6個直列して9Vを接続。
ON/OFF制御なので全速力(12V)だと脱線するかもです。
画像


次に車両を動かすテストプログラムを作ります。
ファイル名は train01.c です。

#include <stdio.h>
#include <stdlib.h>

#include <wiringPi.h>

#define GPIO24 24
#define GPIO19 19


int main(void) {
 int i;

 if(wiringPiSetupGpio() == -1)
 {
  printf(" SetUp error \n");
  return 1;
 }

 pinMode(GPIO24, OUTPUT);
 pinMode(GPIO19, OUTPUT);

 digitalWrite(GPIO19, 0);
 digitalWrite(GPIO24, 1);
 sleep(30);

 digitalWrite(GPIO24, 0);
 digitalWrite(GPIO19, 0);
 sleep(3);

 digitalWrite(GPIO24, 0);
 digitalWrite(GPIO19, 1);
 sleep(30);

 digitalWrite(GPIO24, 0);
 digitalWrite(GPIO19, 0);

 return 0;
}


30秒間前進して3秒間停止、今度は30秒間逆進して
停止するプログラムです。
このプログラムをコンパイル・リンクして、
$ gcc -o train01 train01.c -I/usr/local/include -L/usr/local/lib -lwiringPi
実行すると・・・・
$ sudo ./train01

鉄道模型(Nゲージ)の車両が動きましたぁ。ヽ(´▽`)ノ
画像


まぁ動いたことは動いたんですが、
突然走りだして、突然止まるとゆうのは、
やはりちょっと不自然ですね。  (^-^;

次回はモータの速度をなんとか制御してみましょう。

テーマ

関連テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ
気持玉数 : 1
ナイス

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文
RaspberryPiで鉄道模型を動かしてみる その2 ありぎりす の徒然日記/BIGLOBEウェブリブログ
文字サイズ:       閉じる