ショップページへ

E179_3D.png

概要 anchor.png

DXHATはRaspberry Pi用のHATで、装備した主な機能は以下の通りです。

  • DC6.5~24Vの入力電源電圧範囲
  • USB機器への電力供給も想定した大電流5V DCDCコンバータ(最大6A)
  • 発熱を抑える冷却ファン
  • PCライクな電源スイッチ
  • 簡易バックアップ電源付RTC
  • Dynamixelシリーズ向けRS-485/TTL I/F
  • 慣性測定ユニット(カスタム)

※本製品は半田付け作業を要求します。
※Raspberry Pi 3/4/5や電源装置が別途必要です。
※慣性測定ユニット付の場合は12セット単位での見積及び受注とします。

Page Top

仕様 anchor.png

Page Top

同梱内容 anchor.png

品名数量型番・その他
DXHAT1個E179
スペーサ・ネジ類1式スペーサー六角両メネジ M2.6 L8 x4
スペーサー 丸型中空 M2.6 L9 x4
スペーサー 丸型中空 M2.6 L8 x4
なべ小ねじ M2.6 L15 x4
低頭小ねじ M2.6 L5 x4
ターミナルブロック1個TB111-2-2-U-1-1
電源ボタンモジュール1個E191 (300mmハーネス付)
Page Top

基本仕様 anchor.png

商品番号BTE100
PCBリビジョンE179
動作温度範囲0~70℃ 結露なき事
寸法60x56.5x15mm
取り付け穴:58x49mm 4-φ3.0mm
重量25g
外部電源DC6.5~24V (絶対最大定格 DC-0.3V/+30V)
内部電源DC5V外部電源からDCDCコンバータを介して生成
最大6A供給可
DC3.3VRaspberry Piより供給
RTCDS3231M
電気二重層コンデンサによる簡易電源バックアップ
冷却ファン電源電圧DC5V
最大送風量2.2CFM
各I/F仕様RS-485複信 半二重
最大通信速度 20Mbps
最大端末数 256台
ESD保護 ±15kV
絶対最大定格 -60~60V
TTL複信 半二重
最大通信速度 12Mbps
最大端末数 32台
ESD保護 ±2kV
絶対最大定格 -0.5~6V
コネクタ等2x20ピン パススルーソケット x1
2ピン5.08mmピッチランド x1
JST S4B-EH x4
JST S3B-EH x4
JST B3B-ZR x1
JST B2B-ZR-SM4 x1
4ピン2.5mmピッチランド x4
環境配慮RoHS準拠, 鉛フリー半田

Page Top

内部簡略ブロック anchor.png

E179_block.png
Page Top

外観・レイアウト anchor.png

topbottom
front
3D
E179_top.png
E179_btm.png
E179_front.png
3D pdf
※ダウンロードした上でAcrobat Readerで閲覧の事
Page Top

回路図 anchor.png

  • 未実装
    CN1,R1,U3,X1,C17,C18,R11,R12,D3
  • 代替品リスト(半導体逼迫による初回ロット限定を含む)
    R6:1kΩ
    C13:EEE-FT1V331GV‎
    C27:DCK-3R3E224U-E
    Q1:STL42P4LLF6‎
    Q2:NUD3124LT1G‎
    U8:LTC6994IS6-1
Page Top

各部詳細 anchor.png

E179_Layout.png
Page Top
CN1 anchor.png
E179_CN1.png
  • φ1.4mm 5.08mmピッチランド
  • DC6.5~24Vの外部電源を接続
    端子番号信号名
    1(N)GND
    2(P)VDD
  • ターミナルブロック装着可
    E179_CN1_TB.png
  • 外部電源はFETを介した後に内部電源として5V DCDCコンバータ及びCN5~8/CN9~12(電流制限等の保護措置なし)へ供給
  • CN2に接続されるプッシュスイッチの操作によりFETを制御し内部電源の供給をON/OFFする事が可能
  • 外部電源OFF時の待機電流は1.2uA
Page Top
CN2 anchor.png
E179_CN2.png
  • プッシュボタン信号接続用
    Pats NameJST Parts Number
    基板用ヘッダーB3B-ZR
    ハウジングZHR-3
    ターミナルSZH-002x-P0.5
    圧接コネクタ03ZR-8M-P

    端子番号信号名
    1GND
    2PB
    3-
  • CN1に外部電源が供給された状態でCN2-1とCN2-2間が短絡されるとHAT内の電源スイッチ回路がプッシュボタンが押下されたと認識
    • CN1に外部電源が供給された直後の内部電源はOFF
    • CN1に外部電源が供給されており、かつ内部電源がOFFの時にプッシュボタンが数十ms程度の間押下されると内部電源がON
    • CN1に外部電源が供給されており、かつ内部電源がONの時にプッシュボタンが押下されるとその間INT信号(LOW)をRaspberry PiのGPIO17へ出力
    • CN1に外部電源が供給されており、かつ内部電源がONの時にRaspberry PiのGPIO4からKILL信号(LOW)を受け取ると内部電源がOFF
    • CN1に電源が供給されており、かつ内部電源がONの時にプッシュボタンを約4秒以上押下し続けると内部電源が強制的にOFF
Page Top
CN3 anchor.png
png, E179_CN3.png
  • 2x20ピン パススルーソケット
  • Raspberry Piのヘッダと接続
  • 以下の表のうち端子名が明記されている端子はHAT内で使用
    No.端子名称I/ONo.端子名称I/O
    13V3I25VO
    3GPIO2(SDA1)I/O45VO
    5GPIO3(SCL1)I/O6GNDO
    7GPIO4(KILL)O8GPIO14(TXD0/1)I
    9GNDO10GPIO15(RXD0/1)O
    11GPIO17(INT)I12-
    13-14GNDO
    15-16-
    173V3I18-
    19-20GNDO
    21GPIO9(RXD4)O22-
    23-24GPIO8(TXD4)I
    25GNDO26-
    27GPIO0(TXD2)I28GPIO1(RXD2)O
    29I/O30GNDO
    31-32GPIO12I/O
    33GPIO13I/O34GNDO
    35GPIO19(FAN)I/O36GPIO16I/O
    37GPIO26I/O38GPIO20I/O
    39GNDO40-
Page Top
CN4 anchor.png
E179_CN4.png
  • 冷却ファン駆動用電源(配線済)
    Pats NameJST Parts Number
    基板用ヘッダーB2B-ZR-SM4
    ハウジングZHR-2
    ターミナルSZH-002x-P0.5
    圧接コネクタ02ZR-8M-P

    端子番号信号名
    15V
    2オープンドレイン出力
  • CN4-2端子はFETを介してGNDに接続されており、Raspberry PiのGPIO19によってFETを制御し冷却ファンをON/OFFする事が可能。
Page Top
CN5~8 anchor.png
png, E179_CN5-12.png
  • TTL I/F
    TTL_IF.png
  • SIGNAL端子は220kΩの抵抗を介して内部の5V電源へウィークプルアップ
  • シグナルGNDと通信用信号ラインが接続
    Pats NameJST Parts Number
    基板用ヘッダーB3B-EH
    ハウジングEHR-3
    ターミナルSEH-00x
    B3B-EH.png
    端子番号信号名
    1GND
    2VDD
    3TTL Signal
  • JP1​/JP2にてUARTの選択が必須
Page Top
CN9~12 anchor.png
  • RS-485 I/F
    RS485_IF.png
  • D+端子とD-端子間には150Ωのターミネータ(R26)を装備
  • D+端子は5V、D-端子はGNDへ680Ωのバイアス抵抗(R23,R29)を介して接続
  • シグナルGNDと通信用信号ラインが接続
    Pats NameJST Parts Number
    基板用ヘッダーB4B-EH
    ハウジングEHR-4
    ターミナルSEH-00x
    B4B-EH.png
    端子番号信号名
    1GND
    2VDD
    3RS-485 D+
    4RS-485 D-
  • JP1​/JP2にてUARTの選択が必須
Page Top
J1 anchor.png
png, E179_J1-J4.png
  • φ0.9mm 2.54mmピッチ4ピンランド
  • J2-1(COM)およびI2Cバスの電源電圧を5Vないし3.3Vから選択
  • 5Vの場合はJ1-1とJ1-2、3.3Vの場合はJ1-2とJ1-3を短絡
  • いずれの端子において電流制限等の保護措置は講じられていない
    端子番号信号名
    15V
    2COM
    33V3
    4GND
Page Top
J2 anchor.png
  • φ0.9mm 2.54mmピッチ4ピンランド
  • I2Cバスリピータを介してGPIO3(SCL1)がR_SCL、GPIO2(SDA1)がR_SCLとして接続
  • I2CバスリピータとCOMの電源はJ1により5Vないし3.3Vから選択
  • R_SDAとR_SCLは4.7kΩの抵抗(R14/R15)でCOMに接続
  • いずれの端子において電流制限等の保護措置は講じられていない
    端子番号信号名
    1COM
    2GND
    3R_SDA
    4R_SCL
Page Top
J3 anchor.png
  • φ0.9mm 2.54mmピッチ4ピンランド
  • 3.3V電源と各GPIOが接続
  • いずれの端子において電流制限等の保護措置は講じられていない
    端子番号信号名
    13V3
    2GND
    3GPIO12(PWM0/SD4/DPI_D8/SPI5_CE0_N/TXD5/S​DA5)
    4GPIO13(PWM1/SD5/DPI_D9/SPI5_MISO/RXD5/SC​L5)
Page Top
J4 anchor.png
  • φ0.9mm 2.54mmピッチ4ピンランド
  • 各GPIOが接続
  • GPIO19は冷却ファンの制御用に使用済み
  • いずれの端子において電流制限等の保護措置は講じられていない
    端子番号信号名
    1GPIO19(PCM_FS/SD11/DPI_D15/SPI6_MISO/SPI​1_MISO/PWM1)
    2GPIO16(FL0/SD8/DPI_D12/CTS0/SPI1_CE2_N/C​TS1)
    3GPIO26(SD0_DAT2/TE0/DPI_D22/SD1_DAT2/ARM​_TDI/SPIO5_CE1_N)
    4GPIO20(PCM_DIN/SD12/DPI_D16/SPI6_MOSI/SP​I1_MOSI/GPCLK0)
Page Top
JP1, JP2 anchor.png
png, E179_JP1_J2.png
  • 4つのパッドで構成され、半田ジャンパ(半田を盛ってパッド間を短絡)もしくはジャンパー(0Ω抵抗)によって信号を選択
  • 出荷時はいずれも開放状態
  • Dynamixel用I/Fに使用するRaspberry PiのUARTを半田ジャンパで選択
    • UART0/UART1使用時のジャンパ(Raspberry Pi 3/Zeroは本設定のみに対応)
      png, E179_SEL_UART0,png.png
    • UART2使用時のジャンパ
      png, E179_SEL_UART2,png.png
    • UART4使用時のジャンパ
      png, E179_SEL_UART4,png.png
  • 半田ジャンパになっているのは苦肉の策
    4つあるパッド全てを短絡させない事
    半田作業の際には近傍にある冷却ファンに半田ごてを接触させない事
Page Top

使用方法 anchor.png

Raspberry Piに適用するOSや環境の構築状況によって設定方法や挙動が変わります。ここではそれらの詳説を省略しますので、公式サイト等などから情報を補完して下さい。

HATの各機能は主にconfig.txtに必要な情報を追記する事で活性化されます。なおconfig.txtから別のファイルをincludeしている場合もありますので、それらも含めて全ての設定ファイルを精査する必要があります。

Page Top

Raspberry Piへの装着 anchor.png

CN3と四隅の取り付け穴の位置をRaspberry Piのピンヘッダと取り付け穴に一致させ装着します。

E179_RPi4_asm.png

HATとRaspberry Piの電子部品と基板が接触しないよう四隅の取り付け穴に同じ高さのスペーサを設置し、相互の基板を平行に保持します。

E179_RPi4_asm_gap.png

なお実測でRapspberry Pi 4の場合は8mm、Raspberry Pi 3の場合は9mm以上のスペーサが必要ですが、10mm以下でないとピンヘッダが嵌合しません。

Page Top

電源 anchor.png

CN1にコネクタやケーブルを装備し外部電源を供給しますが、CN1から外部電源を供給してもRaspberry Piへの給電は開始されず、CN2に装着するプッシュモーメンタリなスイッチで電源供給の操作を行う必要があります。

E179_CN2_PB.png

Raspberry Pi上でOSが動作している間に電源の供給が突然断たれる事は大抵の場合において想定されておらず、一般的にはpoweroffコマンドを実行し、シャットダウン処理が完全に完了した頃合いを見計らって電源の供給を断つといった操作が強いられます。もしOSが動作している時に突如電源の供給が断たれてしまうと、タイミングによってはファイルシステムが破損し、次回以降OSが正常に起動しなくなります。
HATには電源の操作の煩雑さを簡素化する機能が備わっており、CN2に装備したプッシュスイッチの操作によって、電源ON・OSへのシャットダウン励起/OSの終了と同時に電源OFF・強制電源OFFといった処理が安全に行えます。

config.txtに追記する情報

[all]
dtoverlay=gpio-shutdown,gpio_pin=17
dtoverlay=gpio-poweroff,gpiopin=4,active_low=1

なおubuntuをGUIで起動している場合は、プッシュスイッチを押下するとログアウトのプロンプトが表示され、タイムアウトするかダイアログのpower offを選択するまでシャットダウンが行われません。プッシュスイッチ操作によってシンプルにシャットダウン処理を行わせるには、GNOMEの設定を変更する必要があります。なおログインしていない状態ではこの設定は効果がありません。

gsettings set org.gnome.SessionManager logout-prompt false

ちなみに付属の電源ボタンモジュールは3線で構成されていますが、電源のON/OFFだけであればPBとGND信号の2本あれば事足ります。残りの1本は1kΩの抵抗を介してプッシュスイッチに内蔵されているLEDのアノードに接続されていますので、CN2-3に5Vや3.3V程度の電圧やGPIOの信号を接続するとLEDを点灯させる事ができます。

:idea:外部電源の逆極性への耐性はないため、絶対に極性を間違えてはならない。
HATを装着した後は、Raspberry Pi本体に備わっているMicro USBないしUSB Type Cコネクタから電源を供給してはならない。
Page Top

冷却ファン anchor.png

HATに装備された冷却ファンはRaspberry Piへ外気を送り込む事で冷却を促し、発熱によってSoCのクロックが下がりパフォーマンスが低下する事を低減させるのが目的です。

E179_Fan.png

合わせてRaspberry Pi上の主要チップにヒートシンクを装着すれば、冷却効果を更に高める事が期待できます。
エアフローはHAT上面からファンで吸気し、HATとRaspberry Piの間隙から排気を想定しています。もしケースなどに封入する際は、吸気口と排気口を適宜設けたり、HAT上の冷却ファンを取り外してケース側でエアフローを設計して下さい。

E179_Airflow.png

冷却ファンのON/OFFはRaspberry PiのGPIO19を用いて行われ、内部温度と設定温度に応じてON/OFFを自動的に制御する事ができます。

config.txtに追記する情報

[all]
dtoverlay=gpio-fan,gpiopin=19,temp=50000

temp=50000は50℃で冷却ファンをONする意味で、摂氏度の1000倍の値を指定
設定温度を10℃下回るとファンはOFFする

なおRaspberry Piの発熱はOSや実行しているアプリケーションの負荷等に依存します。またRaspberry Piの性能限界までオーバークロックすると冷却しきれない場合があります。

:idea:冷却ファンへの接触防止措置を行っていないため、巻き込まれ等に注意。
Page Top

RTC anchor.png

Raspberry Piの時刻はNTPサーバなどを利用してOSの起動時に更新するのが一般的なようです。しかし時刻を取得できなければ、OSは不正確な時刻を元に動作する事になります。
HATはI2C接続のRTC(I2Cスレーブアドレス0x68)を装備しており、外部電源が断たれた場合でも1日程度は電気二重層コンデンサがRTCの電源を供給します。電気二重層コンデンサを満充電させるには、少なくとも半日程度は電源ON状態を維持して下さい。

config.txtに追記する情報

[all]
dtparam=i2c_arm=on
dtoverlay=i2c-rtc,ds3231

hwclockコマンドを使う事でRTCが機能しているかの確認ができます。

#print hardware clock
hwclock -r
#set the hardware clock from the current system time
hwclock -w
#set the system time from the hardware clock
hwclock -s

なおubuntuであればNTCとRTCそしてシステムクロックがうまく連動しますが、他のOSの場合は初期状態においてRTCの扱いが異なる場合があります。思ったような挙動をしない場合は、こちらの情報を参考にして下さい。

更にRaspberry Pi 5の場合ですが、Raspberry Piに搭載されたRTCが優先するようです。DXHATのRTCを使用する場合は以下を追記して下さい。

RasPi5のconfig.txtに追記する情報

[cm5]
dtparam=rtc=off
Page Top

Dynamixel I/F anchor.png

Raspberry PiのUSBポートにDXHUB等を接続してDynamixel用のI/Fを増設する事も可能ですが、HATにはDynamixelと通信するためのRS-485とTTLの2種類のI/F(CN5~8/CN9~12)が装備されており、CN1に供給される電源はDynamiel用の電源として供給されます。
Raspberry Piが持っているUARTを使用する事で、USB接続したシリアルI/Fの一般的な1msのレイテンシを超越した運用ができます。基本的にはTTL2DXIFと同等の回路が装備されていますので、注意事項はそれと同様となります。

E179_DXASM.png

使用するUARTはJP1, JP2を半田ジャンパする事で選択しますが、Raspberry PiのGPIOは複数の機能を兼用しているため、使用環境に応じて適宜設定します。またUARTのベースクロックを64MHzに設定する事で、最大4Mbpsの通信速度に対応できます。

config.txtに追記する情報

[pi3]
init_uart_clock=64000000
dtoverlay=uart0=on
dtoverlay=pi3-miniuart-bt

[pi4]
init_uart_clock=64000000
#UART1を活性化
dtoverlay=uart1,txd1_pin=14,rxd1_pin=15
#UART2を活性化
dtoverlay=uart2,txd2_pin=0,rxd2_pin=1
#UART4を活性化
dtoverlay=uart4,txd4_pin=8,rxd4_pin=9

使用するポートのみを活性化する事を推奨。Linux上でのデバイス名は概ねttyAMAのプレフィクスで始まる。
またRaspberry Pi 3/Zeroの場合はcmdline.txtに記述されている「console=serial0,115200」を削除する事。

対応するデバイスは以下の通りです。

Device Name
RS-485ないしTTL I/Fを装備したDynamixel DX・AX・RX・EX・MX・X・PRO・P・USS3・DXMIO

なおMolex社のコネクタが装備されたデバイスを接続する場合は、Robot Cable-X3P 180mm (Convertible)ないしRobot Cable-X4P 180mm (Convertible)を使用して下さい。

:idea:外部電源の電流容量が小さいとDynamixelに過度な負荷が生じた際にRaspberry Piに供給される電源に影響が及ぶ。
Dynamixelから発生した逆起電力によって電源電圧が上昇た場合、HAT上の電子部品の絶対最大定格電圧を超えて破損する可能性がある。
接続するDynamixelの総容量は、外部電源のラインに挿入されたFETとFR-4のガラスエポキシ基板の許容電流容量を超えない事。
様々な事象の想定範囲を広げ、不慮の故障に至らないようシステムを設計する事。
Page Top

Dynamixel Library anchor.png

Linux上で動作するDynamixelを制御するプログラムを作る際は、別途用意したライブラリを用いる事でシリアル通信やプロトコルを意識せずにコーディングができます。
APIに対して対象デバイスのID・番地・値といった引数を与えるだけでコントロールテーブルの読み書きが実現でき、マルチスレッド等で複数のデバイスに対して個別にアクセスする様なアプリケーションも容易に構成できます。

Dynaimxelには2種類のプロトコルが存在しますが相互非互換であるため、プロトコルに応じて2種類のライブラリを用意しています。

Dynamixel Protocol V2用ライブラリを使用する際の手順を少しだけ紹介しておきます。全てターミナル上での操作となります。

  1. 必要に応じてビルドツールやアーカイバを予めインストールしておく
    sudo apt install build-essential unzip
  2. DX2LIBライブラリのダウンロードと展開
    ここでは便宜上ホームディレクトリをカレントとした
    cd ~
    wget https://www.besttechnology.co.jp/download/DX2LIB_V2.9.zip
    unzip DX2LIB_V2.9.zip
  3. ライブラリの再構築
    cd ~/DX2LIB_v2.9/DX2LIB/
    bash ./build_dx2lib.sh

以上でライブラリファイルが自身の環境用に再構築され、同時に各サンプルソースディレクトに実行に必要なファイルがコピーされます。

Pythonで記述されたサンプルソースであれば多少の改変で動かせますので試してみます。

cd ~/DX2LIB_v2.9/SampleCode/Python/
nano smpl1.py

通信ポートとボーレートは自身の環境に依存するため、適宜修正して保存します。例としてuartが「/dev/ttyAMA1」、ボーレートが「2Mbps」、IDが「1」とした場合は、ソースコード中の以下の変数に代入している部分を修正して保存します。

COMPort = b'/dev/ttyAMA1'
Baudrate = 2000000
TargetID = 1

最後にsmpl1.pyをPythonで読み込ませて実行させます。

python3 smpl1.py

もしpermission deniedと言われた場合は、adduserを使ってdialoutグループに自身のユーザーを登録してから実行し直しましょう。

sudo adduser $USER dialout

Dynamixelとの通信に成功すると、DynamixelのLEDが1秒間点灯します。他のサンプルソースもほぼ同様の変更を加えることで利用できます。

なお「~/DX2LIB_v?.?/SampleCode/C/config.c」はID・ボーレート・動作モードの変更、テスト運転用のサンプルソースになりますので、Dynamixelの諸設定変更の際は利用してみてはいかがでしょうか。
またRaspberry Piの動作条件によってはAPIがタイムアウトエラーを返す場合があります。その際はDX2_SetTimeOutOffset APIを使ってタイムアウトエラーが発生しない程度の時間を設定すると良いでしょう。

Page Top

I2C anchor.png

I2CバスにはRTCが既に接続されていますが、I2C接続のデバイスをさらに追加できるようにバスリピータを介してJ2にI2Cバスが接続されています。

I2Cバスに接続する外部機器の電圧に応じて、J1のCOMに供給する電源を5Vか3.3Vから選択します。同時にI2Cバスの信号ラインは4.7kΩの抵抗を介して選択したCOMの電圧にプルアップされます。

  • 5Vを選択
    5V0とCOM間を短絡
    E179_J1_5V.png
  • 3.3Vを選択
    3V3とCOM間を短絡
    E179_J1_3V3.png

なおJ2を使用しない場合は、COMを3V3に接続しておく事を推奨します。

Page Top

GPIO anchor.png

J3/J4に接続された一部のGPIO端子だけがHATに配線されています。スペーサの長さ調整が必要ですが、エレベーテッド ソケットストリップ等を挿入する事でHATの表面からRaspberry PiのGPIOを全て引き出す事が可能です。

E179_SocketStrip.png
Page Top

注意事項 anchor.png

:idea:記載された事項以外にも、経験を踏まえた危険回避方策を講じる事。
安全に配慮しない場合は人命や財産を失う恐れがある。
また従わない場合は保証対象外となる。
  • 初回ロットにおいて回路図に記載されている部品とは一部異なる。
  • 保存や移動の際は外部電源を全て取り外す事。
  • 移動する装置を構成した際にはケーブル類を引き摺るような運用をしない事。
  • Raspberry Pi ZeroのUARTの最大通信速度は実測で1Mpbs程度である。
  • Raspberry Pi本体やLinuxに関しては無償サポート対象外である。
  • 本製品にかかるいかなる損害が生じても、本製品の単価を超える保障は行わない。
  • Raspberry Pi 5のPoE用ヘッダの位置がRaspberry Pi 4のそれと異なるため、DXHATをスタックさせた際の干渉を回避するにはスペーサを高くする必要がある。

Front page   Diff ReloadPrint View   Page list Search Recent changes   RSS of recent changes (RSS 1.0) RSS of recent changes (RSS 2.0) RSS of recent changes (RSS Atom)
Last-modified: 2024-01-16 (Tue) 15:33:19 (JST) (320d)