名刺サイズの超小型PC「ラズパイ」で遊ぶ(第54回)
Nゲージの模型をラズパイで動かす “らずてつ”その3――ポイント切り替えを操作する
前回に引き続き、ラズパイで鉄道模型をコントロールする連載の第3回目はポイントの制御です。鉄道模型のポイントを切り替える方法はさまざまあるようですが、筆者が持っているトミックス製の電動ポイントの場合は、電磁石に電流を流し、ポイントを動作させる部品に付いている磁石を瞬間的に移動させて切り替えています。特にアナログ的な動作は必要ないので、GPIOのHighとLowで信号を出せば切り替えられそうです。
では実際にどのようにして切り替えの指示を出せばいいのでしょうか。電圧や電流量が高い場合はリレーなどを使う必要がありますが、今回はそれほど大電流を必要としていないので、モーターを動かすのにも使った、秋月電子通商で販売されている「TB6612使用 Dual DCモータードライブキット」(以下、TB6612)を使用します。TB6612には制御する端子が2つ付いていますので、それぞれをGPIOにつないで短時間だけ電流を流し、ポイントを切り替えるようにします。
ポイントに電流を流すのは同じくPWMを使います。模型を走らせるときはハードウェアPWMを使いましたが、ポイントの制御はそれほど精度が必要ないので、RPi.GPIOに用意されているソフトウェアPWMを使います。ソフトウェアPWMを使うと、GPIOのどのピンでもPWMが使えます。
具体的な操作方法ですが、デューティー比を100にして電流を流したあと、0.05秒の間隔を置いてデューティー比を0にして電流を止めます。瞬時に切り替わるためこの程度の秒数で問題ありません。あまり長くすると電磁石が熱せられてしまいますので気をつけましょう。
テストとして2本のポイントを接続します。これを踏まえて作ったプログラムが以下のようになります。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import time
import RPi.GPIO as GPIO
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
# ポイント1
straight_1 = 27 # pin11
curve_1 = 22 # pin13
pwm_1 = 17
# ポイント2
straight_2 = 24 # pin11
curve_2 = 25 # pin13
pwm_2 = 23
# ポイント1
GPIO.setup(straight_1, GPIO.OUT)
GPIO.setup(curve_1, GPIO.OUT)
GPIO.setup(pwm_1, GPIO.OUT)
pwm1 = GPIO.PWM(pwm_1, 100)
pwm1.start(0)
# ポイント2
GPIO.setup(straight_2, GPIO.OUT)
GPIO.setup(curve_2, GPIO.OUT)
GPIO.setup(pwm_2, GPIO.OUT)
pwm2 = GPIO.PWM(pwm_2, 100)
pwm2.start(0)
# 初期設定
GPIO.output(straight_1,0)
GPIO.output(curve_1,0)
GPIO.output(straight_2,0)
GPIO.output(curve_2,0)
time.sleep(1)
# ポイント1の切換え
GPIO.output(straight_1,1)
GPIO.output(curve_1,0)
print("Point1 Straight")
pwm1.ChangeDutyCycle(100)
time.sleep(0.05)
pwm1.ChangeDutyCycle(0)
time.sleep(2)
# ポイント1の切換え逆方向
GPIO.output(straight_1,0)
GPIO.output(curve_1,1)
print("Point1 Curve")
pwm1.ChangeDutyCycle(100)
time.sleep(0.05)
pwm1.ChangeDutyCycle(0)
time.sleep(2)
# ポイント2の切換え
GPIO.output(straight_2,1)
GPIO.output(curve_2,0)
print("Point2 Straight")
pwm2.ChangeDutyCycle(100)
time.sleep(0.05)
pwm2.ChangeDutyCycle(0)
time.sleep(2)
# ポイント1の切換え逆方向
GPIO.output(straight_2,0)
GPIO.output(curve_2,1)
print("Point2 Curve")
pwm2.ChangeDutyCycle(100)
time.sleep(0.05)
pwm2.ChangeDutyCycle(0)
time.sleep(2)
pwm1.stop()
pwm2.stop()
print("End")
time.sleep(1)
GPIO.output(straight_1,0)
GPIO.output(curve_1,0)
GPIO.output(straight_2,0)
GPIO.output(curve_2,0)
GPIO.cleanup()
point.py
プログラムを走らせると、1つのポイントが切り替わったあと、もう1つのポイントが切り替わります。これでポイントの操作ができるようになりました。次回はこれまでのやり方を応用して、ポイントを切り替えながら線路を回って走るようにしてみます。
Copyright © ITmedia, Inc. All Rights Reserved.
名刺サイズの超小型PC「ラズパイ」で遊ぶ
今やスマートフォンアプリで何でも完結できてしまう時代。しかし、一から自分の手でデバイスを作り上げ、試行錯誤しながらアイデアを具現化する楽しさは格別です。この連載では、テーマや用途にあわせてマイクロコンピュータ(マイコン)と呼ばれる名刺サイズの超小型PC「Raspberry Pi」(通称ラズパイ)の活用方法から具体的な工作手順までを紹介します。
この記事の著者
関連記事
こんなメディアも見られています
ITmedia NEWSに関連する情報をお探しであれば、こちらのメディアもお役に立てるかもしれません。
SpecialPR
本日の新着記事
アクセスランキング
-
1
なぜ酒蔵の許諾なしに? 「VTuberコラボ日本酒」騒動、主催者が経緯説明 仲介者による調整で「準備進んでいると認識」
-
2
かっぱ寿司「配布前のコラボグッズ、フリマで買わないで」 プリキュアコラボ発表日に注意喚起
-
3
「食事量は1日1200kcal以下、でも肥満」な人を14日間追跡調査 痩せない理由は……米コロンビア大などの研究
-
4
本物そっくり“AI生成レシート“が経費精算の脅威に マネフォ「自力で見破るのは難しい」 企業はどう備える?
-
5
「菜の花がおかしい」――イラストレーター制作うたうマラソン大会ポスターに指摘相次ぐ 事務局がAI使用明かす【訂正あり】
-
6
「ペンギンを返して」→「3匹全部採用して」 批判殺到のSuica新キャラ、ファンアートが空気を変えた? SNSの声
-
7
幻の「ちいかわ」コラボ第3弾皿、捨てちゃうの? くら寿司に聞いてみた
-
8
「ペンギンを返して」 Suica新キャラ候補3案公開でSNSに戸惑いの声 一般投票は8日から
-
9
「iPhone Duo」純正ケース話題、「面白いけど高い」……1万4800円と2万4800円
-
10
早すぎる 「めっちゃカメレオン」Switch 2版、即日10万本突破
ITmedia NEWS SNS
インフォメーション
注目情報をチェック
ITmediaNEWSをフォロー
あなたにおすすめの記事PR