TIPS 2026年7月11日

Raspberry Piで産業用12/24Vデジタル信号を出力する

この記事では、USB接続のデジタル出力基板「TDFA50507」と「TDFA50607」を使って、Raspberry Piから7接点の出力をON/OFFしてみます。

TDFA50507とTDFA50607は、どちらもUSB経由でデジタル出力を制御できる基板です。コマンドから set 1 のように数値を指定するだけで、接点1をONにできます。USB側と出力側は絶縁されているので、外部機器の信号線を扱う実験にも使いやすい構成です。

この記事では、まず外部機器は接続せず、基板上のLEDで接点のON/OFFを確認します。最後に参考情報として、外部機器を接続する場合の基本的な配線方法も紹介します。

TDFA50507とTDFA50607の違い

TDFA50507とTDFA50607は、コマンドでの操作方法はほぼ同じです。大きく違うのは出力方式です。

製品 出力方式 最大出力電流 TD-USBのモデル名
TDFA50507 電流シンク出力 80mA/接点 tdfa50507
TDFA50607 電流ソース出力 100mA/接点 tdfa50607

電流シンク出力のTDFA50507は、外部機器のマイナス側をON/OFFするイメージです。
電流ソース出力のTDFA50607は、外部機器のプラス側へ電圧を出すイメージです。

外部機器をつなぐ場合の配線は異なりますが、Raspberry Piからの操作は同じ考え方で進められます。

用意するもの

アイテム 説明
Raspberry Pi(OSインストール済み) Raspberry Pi OSが入っていて、ターミナル操作できるもの
TDFA50507 または TDFA50607 7接点のUSBデジタル出力基板です
USBケーブル TDAC-USB2B1M5 Raspberry Piと基板を接続します
インターネット ツールのインストールやソースの取得で使います
12~24Vの外部電源 出力側の確認や、外部機器へ実際に信号を出す場合に使います
配線材 外部電源や外部機器を接続する場合に使います

この記事の基本手順では、外部機器は接続せず、基板上のLEDで出力状態を確認します。外部機器を使った配線は、記事の後半で扱います。

ツールを準備しよう

Raspberry Pi のソフトをアップデートしてから、必要な開発ツールやライブラリをインストールします。

 sudo apt update && sudo apt upgrade -y
 sudo apt install -y git build-essential libusb-dev python3

USBの権限を設定する

TDFA50507/TDFA50607を一般ユーザーから使えるように、USBのアクセス権限を設定します。

以下のコマンドで「udev」ルールを作ります。32ee は東京デバイセズ製品のベンダーIDです。1771 はTDFA50507、1784 はTDFA50607のプロダクトIDです。

 sudo tee /etc/udev/rules.d/99-usb-tokyodevices.rules <<EOF
 SUBSYSTEM=="usb", ATTR{idVendor}=="32ee", ATTR{idProduct}=="1771", MODE="0666"
 SUBSYSTEM=="usb", ATTR{idVendor}=="32ee", ATTR{idProduct}=="1784", MODE="0666"
 EOF

変更を反映します。

 sudo udevadm control --reload-rules
 sudo udevadm trigger

ここまでできたら、USBケーブルでRaspberry PiとTDFA50507/TDFA50607を接続します。すでに接続していた場合は、一度抜き差ししてください。

TD-USBツールをインストールしよう

TDFA50507/TDFA50607を操作するには、「TD-USB」という公式のコマンドラインツールを使います。GitHubからソースコードを取得してビルドします。

 git clone https://github.com/tokyodevices/td-usb.git
 cd td-usb
 make

ちゃんと動くか試してみましょう。

 ./td-usb
 # → バージョン情報が表示されれば成功!

接続されている基板が見えているか確認します。使っている製品に合わせて、どちらか一方を実行してください。

TDFA50507の場合:

 ./td-usb tdfa50507 list
 XXXXXXXXXXXXXX

TDFA50607の場合:

 ./td-usb tdfa50607 list
 XXXXXXXXXXXXXX

シリアル番号が表示されれば、Raspberry Piから基板が見えています。

LED確認用に出力側の電源を準備する

基板上のLEDで出力状態を確認する場合も、出力側には12~24Vの外部電源を接続します。ここでは外部機器はまだ接続しません。

TDFA50507の場合は、外部電源を次のように接続します。

 外部電源の +  →  TDFA50507の Common Plus
 外部電源の -  →  TDFA50507の Common Minus

TDFA50607の場合は、外部電源のプラス側をCommon Plusに接続します。

 外部電源の +  →  TDFA50607の Common Plus

TDFA50607にはCommon Minus端子がありません。外部機器を接続しないLED確認では、外部電源のマイナス側は基板には接続しません。外部機器を接続する場合のマイナス側のつなぎ方は、記事の後半で説明します。

接点1をON/OFFしてみよう

まずはコマンドだけで、接点1をON/OFFしてみます。外部機器はまだ接続しません。基板上のLEDを見ながら確認します。

TDFA50507の場合:

 ./td-usb tdfa50507 set 0
 ./td-usb tdfa50507 set 1
 ./td-usb tdfa50507 get
 1
 ./td-usb tdfa50507 set 0

TDFA50607の場合:

 ./td-usb tdfa50607 set 0
 ./td-usb tdfa50607 set 1
 ./td-usb tdfa50607 get
 1
 ./td-usb tdfa50607 set 0

set 1 を実行すると接点1がONになります。基板上の接点1に対応するLEDが点灯すれば成功です。最後に set 0 を実行すると、すべての接点がOFFになります。

数値と接点の関係を見てみよう

TDFA50507/TDFA50607では、7個の接点状態を1つの数値で指定します。

出力状態 2進数でのイメージ 指定する値
すべてOFF 0000000 0
接点1だけON 0000001 1
接点2だけON 0000010 2
接点1と接点2をON 0000011 3
接点3だけON 0000100 4
接点7だけON 1000000 64
すべてON 1111111 127

たとえば、接点1と接点2を同時にONにしたい場合は 3 を指定します。

TDFA50507の場合:

 ./td-usb tdfa50507 set 3
 ./td-usb tdfa50507 get
 3
 ./td-usb tdfa50507 set 0

TDFA50607の場合:

 ./td-usb tdfa50607 set 3
 ./td-usb tdfa50607 get
 3
 ./td-usb tdfa50607 set 0

set 0 を実行すると、すべての接点がOFFに戻ります。

Pythonで点滅させてみよう

次に、Pythonから td-usb を呼び出して、接点1を1秒ごとにON/OFFしてみます。

td-usb フォルダの中で、blink_output.py というファイルを作成してください。使う製品に合わせて、MODEL の行を1つだけ有効にします。

 #!/usr/bin/env python3
 import subprocess
 import time

 # 使う製品に合わせて、どちらか1行だけ有効にしてください。
 MODEL = 'tdfa50507'   # TDFA50507
 # MODEL = 'tdfa50607' # TDFA50607

 def set_outputs(value):
     subprocess.run(['./td-usb', MODEL, 'set', str(value)], check=True)

 print('接点1のON/OFFを開始します。終了するにはCtrl+Cを押してください。')

 try:
     while True:
         set_outputs(1)
         print('接点1: ON')
         time.sleep(1)

         set_outputs(0)
         print('接点1: OFF')
         time.sleep(1)

 except KeyboardInterrupt:
     set_outputs(0)
     print('\nすべてOFFにして終了しました。')

実行してみよう

 python3 blink_output.py
 接点1のON/OFFを開始します。終了するにはCtrl+Cを押してください。
 接点1: ON
 接点1: OFF
 接点1: ON
 接点1: OFF

基板上の接点1のLEDが1秒ごとに点灯・消灯すれば成功です。終了するときは Ctrl+C を押してください。スクリプト終了時には set 0 を実行して、すべての接点をOFFに戻します。

外部機器を接続する場合

ここからは参考情報です。実際に外部機器へ信号を出す場合は、基板の出力側に12~24Vの外部電源が必要です。USBからの電源だけでは、外部機器へ信号を出力できません。

配線するときは、Raspberry Piや外部電源を切った状態で作業してください。また、TDFA50507/TDFA50607はリレー接点ではなくトランジスタ出力です。接点1個あたりの最大出力電流を超える負荷や、モーターなどの大きな負荷を直接接続しないでください。

TDFA50507の場合

TDFA50507は電流シンク出力です。外部機器のマイナス側をTDFA50507がON/OFFします。

接点1に外部機器をつなぐ場合は、次のように配線します。

 外部電源の +  →  TDFA50507の Common Plus
 外部電源の -  →  TDFA50507の Common Minus
 外部電源の +  →  外部機器の + 側
 外部機器の - 側  →  TDFA50507の接点1

この配線で ./td-usb tdfa50507 set 1 を実行すると、接点1がONになり、外部機器に電流が流れます。

TDFA50607の場合

TDFA50607は電流ソース出力です。TDFA50607の接点から外部機器のプラス側へ電圧を出します。信号電源は12~24Vです。

接点1に外部機器をつなぐ場合は、次のように配線します。

 外部電源の +  →  TDFA50607の Common Plus
 TDFA50607の接点1  →  外部機器の + 側
 外部機器の - 側  →  外部電源の - 側

この配線で ./td-usb tdfa50607 set 1 を実行すると、接点1から外部機器のプラス側へ信号が出力されます。

どちらの製品でも、使わない端子や No Connection とされている端子には何も接続しないでください。

おわりに

この記事では、TDFA50507/TDFA50607とRaspberry Piを使って、7接点のデジタル出力をコマンドとPythonからON/OFFするところまで試しました。

基板上のLEDで動きが確認できたら、次は外部機器を接続して、実際の信号出力に進めます。TDFA50507は電流シンク、TDFA50607は電流ソースなので、外部機器を接続するときは配線の向きに注意してください。

この記事に関連する商品

この記事をシェア

最近のTIPS