名刺サイズの超小型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
「Xが情報収集に役立たない……」熊本地震で不満の声続出 「Twitterを返して」
-
2
メルカリ、梨の転売疑惑に「盗品の出品は確認されず」 誹謗中傷には利用制限も
-
3
「こんなのに追われたら……」急斜面もやすやす爆走、中国製の車輪付き四足ロボのデモ動画が話題 最高時速20km超
-
4
検索結果に「詐欺ではありません」と表示させる詐欺手口、警視庁が注意喚起 AI要約も餌食に
-
5
Z世代に聞く次の流行、「AIイラスト」が1位に 「Claude Code」も上位
-
6
東野圭吾さん死去、Xなどで追悼相次ぐ 「ガリレオ」など数々の人気作、エンジニアから転身
-
7
NVIDIAやMicrosoftなど30社超、オープンAIの防御ツール共同開発の「Open Secure AI Alliance」設立
-
8
「あ、その情報メモしたい!」を叶えるワイヤレスイヤフォン、Nothing「Ear (3a)」
-
9
はてな、11億円流出の調査報告書を公開 偽警察、口外禁止、残業・休出200時間超、孤立……ほころびが連鎖
-
10
有識者はGoogleやX、Meta、ドワンゴを名指しで批判……総務省、偽広告や誹謗中傷に発信・拡散前の対策求める
ITmedia NEWS SNS
インフォメーション
注目情報をチェック
ITmediaNEWSをフォロー
あなたにおすすめの記事PR