2: 2016-11-04 (金) 11:55:35 takaboo ソース 3: 2016-11-08 (火) 20:57:16 takaboo ソース
Line 6: Line 6:
**特徴 [#ue64ad68] **特徴 [#ue64ad68]
#ref("BTX080 Dynamixel XM430-W210-R/XM430-W210.png","center") #ref("BTX080 Dynamixel XM430-W210-R/XM430-W210.png","center")
--ストールトルク 3.0Nm(at 12V 2.3A)+-ストールトルク 4.1Nm(at 12V 2.3A)
-不感帯なし(0~360°)、非接触位置センサによる12ビット分解能の位置フィードバック -不感帯なし(0~360°)、非接触位置センサによる12ビット分解能の位置フィードバック
--RS485 I/Fによる高速かつ安定した通信+-RS-485による高速かつ安定した通信
-一般的なPID制御による位置決め制御 -一般的なPID制御による位置決め制御
Line 19: Line 19:
|Robot Cable-X4P 180mm (JST-JST) | 1|-| |Robot Cable-X4P 180mm (JST-JST) | 1|-|
|Robot Cable-X4P 180mm (MOLEX-JST) | 1|-| |Robot Cable-X4P 180mm (MOLEX-JST) | 1|-|
-|ボルトナット類 | 1|-|+|ボルトナットセット | 1式|-|
|スペーサー | 8|-| |スペーサー | 8|-|
 +
***基本仕様 [#r462ecae] ***基本仕様 [#r462ecae]
-|商品番号 |BTX080 +|商品番号 |BTX081
-|ストールトルク |2.7Nm (at 11.1V 2.1A)&br;4.1Nm (at 12.0V 2.3A)&br;3.7Nm (at 14.8V 2.7A) | +|ストールトルク |3.8Nm (at 11.1V 2.1A)&br;4.1Nm (at 12.0V 2.3A)&br;4.8Nm (at 14.8V 2.7A) | 
-|無負荷回転数 |70rpm (at 11.1V)&br;77rpm (at 12V)&br;95rpm (at 14.8V) |+|無負荷回転数 |43rpm (at 11.1V)&br;46rpm (at 12V)&br;57rpm (at 14.8V) |
|減速比 |1/212.6 | |減速比 |1/212.6 |
|最大動作角度 |位置決め制御時:0~360°(12ビット分解能),Endless Turn | |最大動作角度 |位置決め制御時:0~360°(12ビット分解能),Endless Turn |
Line 32: Line 33:
|コマンドシグナル |デジタルパケット | |コマンドシグナル |デジタルパケット |
|プロトコル |半二重非同期通信 8-1-N | |プロトコル |半二重非同期通信 8-1-N |
-|リンク方式 |RS 485 Multi Drop(daisy chain type Connector) | +|リンク方式 |RS-485 Multi Drop(daisy chain type Connector) | 
-|ID数 |254 (0~253) | +|最大スレーブノード数 |253 (ID=0~252) | 
-|通信速度 |9.6k~4.5M bps |+|通信速度 |9.6k,57.6k,115.2k,1M,2M,3M,4M,4.5Mbps |
|フィードバック |位置, 速度, 温度, 負荷, 電源電圧, 電流 | |フィードバック |位置, 速度, 温度, 負荷, 電源電圧, 電流 |
-|動作モード |トルク, 速度, 位置, 拡張位置, 電流/位置カスケード, 電圧 |+|動作モード |電流, 速度, 位置, 拡張位置, 電流/位置カスケード, 電圧 |
|ギア材質 |フルメタル | |ギア材質 |フルメタル |
#ref(xm430-w350_property curves.png) #ref(xm430-w350_property curves.png)
 +
 +***各部名称 [#q2c02522]
 +#ref("BTX080 Dynamixel XM430-W210-R/X430_NameOfEachDepartment.p​ng",80%)
 +-Horn~
 +内蔵モータの出力を減速機を介して出力軸に伝達しており、その出力軸に取り付ける金属製の円盤。
 +-Case~
 +ケースは出力軸側からフロント・ミドル・バックから構成され、フロントケースとミドルケースはアルミ製。フロントケースとバックケースは四隅に設けられたネジでミドルケースに固定される。
 +-Cable Cover~
 +バックケース中央にある溝にはめられたカバーで、コネクタ部を保護する他にケーブルの引き出し方向をガイドする役目を持つ。
 +-Back Case Cap~
 +キャップを取り外すと、オプションフレームに付属するフリーホーンを装着するための穴が現れる。この穴はケーブル通しとして用いることもできる。
***寸法・3Dデータ [#n5b69e89] ***寸法・3Dデータ [#n5b69e89]
-寸法 -寸法
-#ref(BTX080 Dynamixel XM430-W210-R/X430_dimension.pdf)+#ref("BTX080 Dynamixel XM430-W210-R/X430_dimension.pdf")
-3Dデータ(STEP) -3Dデータ(STEP)
-#ref(BTX080 Dynamixel XM430-W210-R/x-430_idle(stp).zip)+#ref("BTX080 Dynamixel XM430-W210-R/x-430_idle(stp).zip") 
 +-3Dデータ(PDF)~ 
 +#ref(http://www.besttechnology.co.jp/dow​nload/3D/X430_3D.pdf)
***コネクタ [#t368852b] ***コネクタ [#t368852b]
--本体背面のカバー内の側面2カ所に配置 +-本体背面のケーブルカバー内の側面2カ所に配置~ 
-#ref(BTX080 Dynamixel XM430-W210-R/X430_BottomCover.png) +-電源と通信用信号ラインが接続~ 
-#ref(BTX080 Dynamixel XM430-W210-R/X430_Connector.png)+&ref("BTX080 Dynamixel XM430-W210-R/X430_CableCover.png",50%); 
 +&ref("BTX080 Dynamixel XM430-W210-R/X430_Connector.png",50%);
|Pats Name |JST Parts Number | |Pats Name |JST Parts Number |
|基板用ヘッダー |[[B4B-EH>http://www.jst-mfg.com/product​/detail.php?series=58]] | |基板用ヘッダー |[[B4B-EH>http://www.jst-mfg.com/product​/detail.php?series=58]] |
|ハウジング |[[EHR-4>http://www.jst-mfg.com/product/​detail.php?series=58]] | |ハウジング |[[EHR-4>http://www.jst-mfg.com/product/​detail.php?series=58]] |
|ターミナル |[[SEH-00x>http://www.jst-mfg.com/produc​t/detail.php?series=58]] | |ターミナル |[[SEH-00x>http://www.jst-mfg.com/produc​t/detail.php?series=58]] |
-#ref(B4B-EH.png,100%)+#ref("BTX080 Dynamixel XM430-W210-R/B4B-EH.png",100%)
|端子番号 |信号名 | |端子番号 |信号名 |
|1 |GND | |1 |GND |
|2 |VDD | |2 |VDD |
-|3 |D+ (RS485) +|3 |RS-485 D+ | 
-|4 |D- (RS485) |+|4 |RS-485 D- |
***基本的な固定方法 [#fef2911b] ***基本的な固定方法 [#fef2911b]
-本体に装備されたネジ穴はいずれも深さ3mmです。これよりも長いネジは絶対に使用してはなりません。 +本体に予め用意された16カ所の固定用タップは、いずれも深さ3mmです。フレームなどの厚みを考慮した適切な長さのネジを使用しない場合、内蔵機器とネジが干渉し損傷します。 
--正面からの固定+-正面・背面からの固定
-※本体正面の固定ネジを外す必要があるのと、取り外した座繰り空間にスペーサを挿入する必要がある +※ケース四隅の固定ネジを外す必要があるのと、取り外した際に表れる座繰り空間にスペーサを挿入する必要がある 
-#ref(BTX080 Dynamixel XM430-W210-R/X430_front_mount.png) +#ref("BTX080 Dynamixel XM430-W210-R/X430_front_mount.png"
--側面からの固定 +-両側面からの固定 
-#ref(BTX080 Dynamixel XM430-W210-R/X430_side_mount.png)+#ref("BTX080 Dynamixel XM430-W210-R/X430_side_mount.png")
-底面からの固定 -底面からの固定
-#ref(BTX080 Dynamixel XM430-W210-R/X430_bottom_mount.png)+#ref("BTX080 Dynamixel XM430-W210-R/X430_bottom_mount.png")
***出力軸背面からのケーブル引き出し [#g4d931a7] ***出力軸背面からのケーブル引き出し [#g4d931a7]
-ケーブルの配線ルートを最適化する必要に迫られるケースがありますが、出力軸と同じ軸からケーブルが引き出せるとケーブルへのストレスが軽減できる場合があります。多少煩雑ですが、出力軸の真裏からケーブルを引き出す事ができます。 +ケーブルの配線ルートを最適化する際に、出力軸と同じ軸からケーブルが引き出せるとケーブルへのストレスが軽減できる場合があります。多少煩雑ですが、背面ケースキャップを外した空間からケーブルを引き出す事ができます。 
--本体背面の固定ネジを外しボトムケースのケーブル通しを割り取る必要がある。~+-本体背面の固定ネジを外し、ボトムケースのケーブル通しにある板を割り取る必要がある。~
※下記参考図では一部のオプションフレームに含まれるフリーホーンを装着している ※下記参考図では一部のオプションフレームに含まれるフリーホーンを装着している
-#ref(BTX080 Dynamixel XM430-W210-R/X430_combination_1.png) +#ref("BTX080 Dynamixel XM430-W210-R/X430_combination_1.png"
-#ref(BTX080 Dynamixel XM430-W210-R/X430_combination_2.png)+#ref("BTX080 Dynamixel XM430-W210-R/X430_combination_2.png") 
 + 
 +**使用するにあたり[#f65783d3] 
 +***ケーブルの種類 [#w303b1be] 
 +旧来のDynamixelシリーズとは形状が異なりますので、旧来のI/Fボード等を使用する際は付属のMOLEX-JSTタイプのケーブルを使用します。 
 +#ref("BTX080 Dynamixel XM430-W210-R/DX_CableDiff.png") 
 +この写真の左が本製品に適用できるJSTのハウジング、右が旧来のMOLEXのハウジングです。~ 
 +勘合しないヘッダーとハウジング同士を強引に接続させることは絶対にしてはなりません。 
 + 
 +***配線 [#p43a0a2e] 
 +様々な配線方法が考慮されていますので、用途に応じた方法を選択します。 
 +#ref("BTX080 Dynamixel XM430-W210-R/DX_MultiDropConnection.png") 
 +[[DXHUB]]とDynamixelを接続する場合はMOLEX-JSTタイプのケーブル、Dynamixel同士をまたいで接続する場合はJST-JSTタイプのケーブルを使用します。 
 + 
 +なお、Dynamixelのコネクタは本体のケースで覆われており、ケーブルの装着状態の確認がしづらくなっています。横から見てケーブルのハウジングがほぼ見えなくなるまで挿入しないと、接触不良の原因となります。 
 +#ref("BTX080 Dynamixel XM430-W210-R/X430_ConnectorInstalling.pn​g",60%) 
 + 
 +また、電源が供給された状態での配線作業は絶対に避けて下さい。 
 + 
 +***電源の投入 [#zbbda981] 
 +配線を終え電源を投入すると、正常であればDynamixelの背面上部に装備された赤色のLEDが0.5秒点滅した後消灯します(ホストからLEDの点灯指示等が無いものとする)。~ 
 +通信を行っていないにもかかわらず電源投入時にLEDが常時消灯ないし常時点灯した場合は、何らかの重大な問題が生じている可能性があります。まず電源を切り、配線方法やケーブル、電源装置を確認して下さい。~ 
 +LEDが一定周期で点滅し続ける場合は、Dynamixel自信が何かしらの異常を検出した時です。 
 + 
 +***通信プロトコルについて [#d6345746] 
 +Dynamixel(スレーブ)自らが勝手にデータを送信することは無く、別途用意されるPC等(マスターないしホスト)から送信されるデータをDynamixelが受信した際にのみデータを返信するといったマスタースレーブ方式を採用しています。また、予め決められた電文に従った(プロトコル)電文にのみ応答します。さらに、その1回分の電文をパケットと言います。~ 
 +#ref("BTX080 Dynamixel XM430-W210-R/DX_PacketProcess.png") 
 +Dynamixelシリーズには2種類の通信プロトコル(1.0と2.0)が存在し、本品はその2種類に対応しています。 
 + 
 +***RS-485について [#k2706fcd] 
 +RS-485はシリアル通信を行う際の電気的な仕様の1つです。1つの信号を2本の差動信号に変換して伝達する事で、耐ノイズ性を向上させています。 
 +#ref("BTX080 Dynamixel XM430-W210-R/RS485.png") 
 +Dynamixelシリーズでは安定したデジタル通信を用いて制御する事としたためRS-485を採用しましたが、ケーブルの本数を増やすと配線作業に支障を来すため、1対(1つの信号)で送信と受信を行う半二重を選択しています。 
 +#ref("BTX080 Dynamixel XM430-W210-R/RS485_half.png") 
 + 
 +***IDについて [#x9a3ebf1] 
 +Dynamixelは出荷時において個体識別用のID(数字)が全て1に設定されいます。その状態のまま1つのネットワークに複数台接続してしまうと、ホストから個々のDynamixelを識別することができないまでか、全てのDynamixelが自分自身への指令と認識してしまいます。そのため、複数台を接続して使用する際は、必ず予め1台ずつ異なるIDを設定しておきます。~ 
 +#ref("BTX080 Dynamixel XM430-W210-R/DX_DifferentID.png") 
 +IDを設定する際は先の識別の問題を回避するためホストが提供するネットワークに1台のみのDynamixelを接続し、複数台のDynamixelが接続されていない状態で作業を行う必要があります。 
 + 
 +***ボーレートについて [#e9cede8c] 
 +Dynamixelのボーレートは高いほど大量のデータを短時間に送受信できます。しかしながら高いボーレートはケーブルの長さや等の外的要因が相まって、データそのものの信頼性が損なわれる確率が高くなります。~ 
 +また、複数台のDynamixelを使用する際は、全て同じボーレートに設定しておく必要があります。 
 +***コントロールテーブルとは [#dc1d3159] 
 +Dynamixel内に用意されたメモリ領域をここではコントロールテーブルと称します。コントロールテーブル中の任意のデータにアクセスする手段として通信プロトコロルが用意されています。~ 
 +ホストから指定されたIDを持ったDynamixelのコントロールテーブルに対して読み書きを行う事で全てを統括するため、先のIDやボーレートもコントロールテーブル上に配置されています。~ 
 +コントロールテーブルの詳細は[[後述の表>#y4bb6b9b]]に示します。 
 +***動作モードについて [#p401e402] 
 +Dynamixelは用途に応じて複数の動作モードを選択できます。大きく分けて3つの基本動作を持ちます。 
 ++ホーンの角度を制御~ 
 +関節を構成する部位等に使用し、指定された角度を維持する。~ 
 +本Dynamixelでは「角度」とは言わず「位置」と称し、通常は0~360°の範囲でホーンの位置決めを行う。 
 +#ref("BTX080 Dynamixel XM430-W210-R/Ctrl_Pos.png") 
 ++ホーンの回転速度を制御~ 
 +車輪を構成する部位等に使用し、指定された回転速度を維持する。~ 
 +#ref("BTX080 Dynamixel XM430-W210-R/Ctrl_Velo.png") 
 ++モータの電流を制御~ 
 +負荷に対してトルクを加える部位等に使用し、指定された電流を制御する。~ 
 +DCモータは発生するトルクと電流が比例関係にあるため、Dynamixelでは電流をトルクと見なしている。 
 +#ref("BTX080 Dynamixel XM430-W210-R/Ctrl_Torque.png") 
 + 
 +これらの制御の切り替えや制御を行う際の条件の設定は、コントロールテーブル上に配置された様々なパラメータの値を変更することで行います。 
 + 
 +**Dynamixel通信プロトコル 2.0 [#l4e1fb80] 
 + 
 +詳細は[[こちら>DYNAMIXEL Communiation Protocol 2.0]]。 
 + 
 +**コントロールテーブル [#y4bb6b9b] 
 +***アイテム一覧 [#q28d55a1] 
 +|=''Address''|=''Item''|=''Access''|=''D​efault Value''|=''Type/Range''|h 
 +|CENTER:|LEFT:|CENTER:|CENTER:|CENTER:|c​ 
 +|0|BGCOLOR(beige):[[Model Number>#f8895243]]|R|1020(0x3FC)|uint16|​ 
 +|1|~|~|~|~| 
 +|2|BGCOLOR(beige):[[Model Information>#f8895243]]|R|0|uint32| 
 +|3|~|~|~|~| 
 +|4|~|~|~|~| 
 +|5|~|~|~|~| 
 +|6|BGCOLOR(beige):[[Version of Firmware>#jc5551fd]]|R|?|uint8| 
 +|7|BGCOLOR(seashell):[[ID>#u1feceb7]]|R/​W (NVM)|1|uint8&br;0~252| 
 +|8|BGCOLOR(seashell):[[Baudrate>#gd2e9bf​c]]|R/W (NVM)|1|uint8&br;0~7| 
 +|9|BGCOLOR(seashell):[[Return Delay Time>#b77cfd17]]|R/W (NVM)|250|uint8&br;0~254| 
 +|10|BGCOLOR(silver):(reserve)|R|-|uint8|​ 
 +|11|BGCOLOR(seashell):[[Operatinng Mode>#j5c7292f]]|R/W (NVM)|3|uint8&br;0~16| 
 +|12|BGCOLOR(silver):(reserve)|R|-|uint8|​ 
 +|13|BGCOLOR(seashell):[[Protocol Version>#g1a9fe0a]]|R/W (NVM)|2|uint8&br;1~2| 
 +|14&br;~&br;19|BGCOLOR(silver):(reserve)|R|-|u​int8| 
 +|20|BGCOLOR(seashell):[[Homing Offset>#kfeaa64e]]|R/W (NVM)|0|int32&br;-1044479~1044479| 
 +|21|~|~|~|~| 
 +|22|~|~|~|~| 
 +|23|~|~|~|~| 
 +|24|BGCOLOR(seashell):[[Moving Threshold>#z8cfaf32]]|R/W (NVM)|10|uint32&br;-0~1023| 
 +|25|~|~|~|~| 
 +|26|~|~|~|~| 
 +|27|~|~|~|~| 
 +|28&br;~&br;30|BGCOLOR(silver):(reserve)|R|-|u​int8| 
 +|31|BGCOLOR(seashell):[[Temperature Limit>#uad86a63]]|R/W (NVM)|80|uint8&br;0~100| 
 +|32|BGCOLOR(seashell):[[Max Voltage Limit>#d7f96189]]|R/W (NVM)|160|uint16&br;95~160| 
 +|33|~|~|~|~| 
 +|34|BGCOLOR(seashell):[[Min Voltage Limit>#d7f96189]]|R/W (NVM)|95|uint16&br;95~160| 
 +|35|~|~|~|~| 
 +|36|BGCOLOR(seashell):[[PWM Limit>#wef400f2]]|R/W (NVM)|885|uint16&br;0~885| 
 +|37|~|~|~|~| 
 +|36|BGCOLOR(seashell):[[Current Limit>#y2cc93fd]]|R/W (NVM)|1193|uint16&br;0~1193| 
 +|39|~|~|~|~| 
 +|40|BGCOLOR(seashell):[[Acceleration Limit>#n0dd90ae]]|R/W (NVM)|32767|uint32&br;0~32767| 
 +|41|~|~|~|~| 
 +|42|~|~|~|~| 
 +|43|~|~|~|~| 
 +|44|BGCOLOR(seashell):[[Velocity Limit>#n6a5f754]]|R/W (NVM)|350|uint32&br;0~1023| 
 +|45|~|~|~|~| 
 +|46|~|~|~|~| 
 +|47|~|~|~|~| 
 +|48|BGCOLOR(seashell):[[Max Position Limit>#l737bbef]]|R/W (NVM)|4095|uint32&br;0~4095| 
 +|49|~|~|~|~| 
 +|50|~|~|~|~| 
 +|51|~|~|~|~| 
 +|52|BGCOLOR(seashell):[[Min Position Limit>#l737bbef]]|R/W (NVM)|0|uint32&br;0~4095| 
 +|53|~|~|~|~| 
 +|54|~|~|~|~| 
 +|55|~|~|~|~| 
 +|56&br;~&br;62|BGCOLOR(silver):(reserve)|R|-|u​int8| 
 +|63|BGCOLOR(seashell):[[Shutdown>#vbc701​c4]]|R/W (NVM)|52(0x34)|uint8&br;0~63| 
 +|64|BGCOLOR(lightcyan):[[Torque Enable>#wfdacf65]]|R/W|0|uint8&br;0~1| 
 +|65|BGCOLOR(lightcyan):[[LED>#h4e1230d]]​|R/W|0|uint8&br;0~1| 
 +|68|BGCOLOR(lightcyan):[[Status Return Level>#r63d9af2]]|R/W|2|uint8&br;0~2| 
 +|69|BGCOLOR(beige):[[Registered Instruction>#t7805606]]|R|0|uint8&br;| 
 +|70|BGCOLOR(beige):[[Hardware Error Status>#u710d2bc]]|R|0|uint8&br;| 
 +|76|BGCOLOR(lightcyan):[[Velocity I Gain>#n3099aee]]|R/W|1920|uint16&br;0~32767​| 
 +|77|~|~|~|~| 
 +|78|BGCOLOR(lightcyan):[[Velocity P Gain>#n3099aee]]|R/W|50|uint16&br;0~32767| ​
 +|79|~|~|~|~| 
 +|80|BGCOLOR(lightcyan):[[Position D Gain>#d0c6ac0c]]|R/W|0|uint16&br;0~32767| 
 +|81|~|~|~|~| 
 +|82|BGCOLOR(lightcyan):[[Position I Gain>#d0c6ac0c]]|R/W|0|uint16&br;0~32767| 
 +|82|~|~|~|~| 
 +|84|BGCOLOR(lightcyan):[[Position P Gain>#d0c6ac0c]]|R/W|800|uint16&br;0~32767|​ 
 +|85|~|~|~|~| 
 +|88|BGCOLOR(lightcyan):[[Feedforward 2nd Gain>#d0c6ac0c]]|R/W|0|uint16&br;0~32767| 
 +|89|~|~|~|~| 
 +|90|BGCOLOR(lightcyan):[[Feedforward 1st Gain>#d0c6ac0c]]|R/W|0|uint16&br;0~32767| 
 +|91|~|~|~|~| 
 +|100|BGCOLOR(lightcyan):[[Goal PWM>#x7993b36]]|R/W|885|int16&br;-[[PWM Limit>#wef400f2]]~[[PWM Limit>#wef400f2]]| 
 +|101|~|~|~|~| 
 +|102|BGCOLOR(lightcyan):[[Goal Current>#h25c5adf]]|R/W|1193|int16&br;-[[Cu​rrent Limit>#y2cc93fd]]~[[Current Limit>#y2cc93fd]]| 
 +|103|~|~|~|~| 
 +|104|BGCOLOR(lightcyan):[[Goal Velocity>#x7810cd9]]|R/W|480|int32&br;-[[Ve​locity Limit>#n6a5f754]]~[[Velocity Limit>#n6a5f754]]| 
 +|105|~|~|~|~| 
 +|106|~|~|~|~| 
 +|107|~|~|~|~| 
 +|108|BGCOLOR(lightcyan):[[Profile Acceleration>#p37d042e]]|R/W|0|uint32&br;0~​[[Acceleration Limit>#n0dd90ae]]| 
 +|109|~|~|~|~| 
 +|110|~|~|~|~| 
 +|111|~|~|~|~| 
 +|112|BGCOLOR(lightcyan):[[Profile Velocity>#k31e5f2f]]|R/W|0|uint32&br;0~[[Ve​locity Limit>#n6a5f754]]| 
 +|113|~|~|~|~| 
 +|114|~|~|~|~| 
 +|115|~|~|~|~| 
 +|116|BGCOLOR(lightcyan):[[Goal Position>#a86abf50]]|R/W|-|int32&br;[[Min Position Limit>#l737bbef]]~[[Max Position Limit>#l737bbef]]&br;-1048575~1048575| 
 +|117|~|~|~|~| 
 +|118|~|~|~|~| 
 +|119|~|~|~|~| 
 +|120|BGCOLOR(beige):[[Realtime Tick>#q9936d2f]]|R|-|uint16| 
 +|121|~|~|~|~| 
 +|122|BGCOLOR(beige):[[Moving>#q27c1167]]​|R|0|uint8| 
 +|123|BGCOLOR(beige):[[Moving Status>#jf2ccbc3]]|R|0|uint8| 
 +|124|BGCOLOR(beige):[[Present PWM>#q60316d2]]|R|-|int16| 
 +|125|~|~|~|~| 
 +|126|BGCOLOR(beige):[[Present Current>#x7fc73c2]]|R|-|int16| 
 +|127|~|~|~|~| 
 +|128|BGCOLOR(beige):[[Present Velocity>#na7ab4d4]]|R|-|int32| 
 +|129|~|~|~|~| 
 +|130|~|~|~|~| 
 +|131|~|~|~|~| 
 +|132|BGCOLOR(beige):[[Present Position>#rc31835f]]|R|-|int32| 
 +|133|~|~|~|~| 
 +|134|~|~|~|~| 
 +|135|~|~|~|~| 
 +|136|BGCOLOR(beige):[[Velocity Trajectory>#de194cd2]]|R|-|int32| 
 +|137|~|~|~|~| 
 +|138|~|~|~|~| 
 +|139|~|~|~|~| 
 +|140|BGCOLOR(beige):[[Position Trajectory>#w9f5f284]]|R|-|int32| 
 +|141|~|~|~|~| 
 +|142|~|~|~|~| 
 +|143|~|~|~|~| 
 +|144|BGCOLOR(beige):[[Present Input Voltage>#y010f5f7]]|R|-|uint16| 
 +|145|~|~|~|~| 
 +|146|BGCOLOR(beige):[[Present Temperature>#h54b3728]]|R|-|uint8| 
 +|147&br;~&br;167|BGCOLOR(silver):(reserve)|R|-​|uint8| 
 +|168|BGCOLOR(lightcyan):[[Indirect Address 1>#jaa405dd]]|R/W|224|uint16&br;64~661| 
 +|169|~|~|~|~| 
 +|170|BGCOLOR(lightcyan):[[Indirect Address 2>#jaa405dd]]|~|225|~| 
 +|171|~|~|~|~| 
 +|172,173&br;~&br;218,219|BGCOLOR(lightcyan):[[​Indirect Address 3>#jaa405dd]]&br;~&br;[[Indirect Address 26>#jaa405dd]]|~|226&br;~&br;249|~| 
 +|220|BGCOLOR(lightcyan):[[Indirect Address 27>#jaa405dd]]|~|250|~| 
 +|221|~|~|~|~| 
 +|222|BGCOLOR(lightcyan):[[Indirect Address 28>#jaa405dd]]|~|251|~| 
 +|223|~|~|~|~| 
 +|224|BGCOLOR(lightcyan):[[Indirect Data 1>#jaa405dd]]|R/W|0|uint8| 
 +|225|BGCOLOR(lightcyan):[[Indirect Data 2>#jaa405dd]]|~|~|~| 
 +|226|BGCOLOR(lightcyan):[[Indirect Data 3>#jaa405dd]]|~|~|~| 
 +|227&br;~&br;248|BGCOLOR(lightcyan):[[Indirect​ Data 4>#jaa405dd]]&br;~&br;[[Indirect Data 25>#jaa405dd]]|~|~|~| 
 +|249|BGCOLOR(lightcyan):[[Indirect Data 26>#jaa405dd]]|~|~|~| 
 +|250|BGCOLOR(lightcyan):[[Indirect Data 27>#jaa405dd]]|~|~|~| 
 +|251|BGCOLOR(lightcyan):[[Indirect Data 28>#jaa405dd]]|~|~|~| 
 +|252&br;~&br;577|BGCOLOR(silver):(reserve)|R|-​|uint8| 
 +|578|BGCOLOR(lightcyan):[[Indirect Address 29>#jaa405dd]]|R/W|634|uint16&br;64~661| 
 +|579|~|~|~|~| 
 +|580|BGCOLOR(lightcyan):[[Indirect Address 30>#jaa405dd]]|~|635|~| 
 +|581|~|~|~|~| 
 +|582,583&br;~&br;628,629|BGCOLOR(lightcyan):[[​Indirect Address 31>#jaa405dd]]&br;~&br;[[Indirect Address 54>#jaa405dd]]|~|636&br;~&br;659|~| 
 +|630|BGCOLOR(lightcyan):[[Indirect Address 55>#jaa405dd]]|~|660|~| 
 +|631|~|~|~|~| 
 +|632|BGCOLOR(lightcyan):[[Indirect Address 56>#jaa405dd]]|~|661|~| 
 +|633|~|~|~|~| 
 +|634|BGCOLOR(lightcyan):[[Indirect Data 29>#jaa405dd]]|R/W|0|uint8| 
 +|635|BGCOLOR(lightcyan):[[Indirect Data 30>#jaa405dd]]|~|~|~| 
 +|636&br;~&br;659|BGCOLOR(lightcyan):[[Indirect​ Data 31>#jaa405dd]]&br;~&br;[[Indirect Data 54>#jaa405dd]]|~|~|~| 
 +|660|BGCOLOR(lightcyan):[[Indirect Data 55>#jaa405dd]]|~|~|~| 
 +|661|BGCOLOR(lightcyan):[[Indirect Data 56>#jaa405dd]]|~|~|~| 
 + 
 +-データ幅が16bitないし32bitのアイテムはリトルエンディアン(データの下位バイトから順に格納)。 
 +-Accessに(NVM)とあるアイテムは不揮発メモリとなっており、電源を切っても値が保持される。また頻繁な書き換えは想定されていないため、書き換えは必要最低限にとどめること。 
 +-Accessに(NVM)とあるアイテムとIndirect Addressを変更する場合は、Torque Enalbeが0でなくてはならない。 
 +-(reserve)はシステムで予約され、読み出した値に有効性はない。また、書き込みを行ってはならない。 
 +-Default Valueは出荷時ないしファクトリーリセットを行った際の値。又、ファームウェアのバージョンによって値が変更される場合がある。 
 + 
 +***各アイテム詳細 [#uabd4e49] 
 +****Model Number/Model Information [#f8895243] 
 +本品固有の値を保持します。異なる種類のDynamixelを混在して使用する際の個体識別などに使用できます。 
 + 
 +****Version of Firmware [#jc5551fd] 
 +内蔵されるCPUに書き込まれたプログラムのバージョンです。ファームウェアの更新を行った際に合わせて自動的に変更されます。 
 + 
 +****ID [#u1feceb7] 
 +各Dynamixelを特定するための固有の値で0~252の範囲の数値で設定します。同一ネットワーク内に存在するDynamixelには各々異なるIDが要求されます。 
 + 
 +****Baudrate [#gd2e9bfc] 
 +通信する際のボーレートです。ホストDynamixelのボーレートは一致させなくてはなりません。 
 +|CENTER:50|RIGHT:50|c 
 +|Value|CENTER:Baudrate [bps]|h 
 +|0|9600| 
 +|1|57600| 
 +|2|115200| 
 +|3|1000000| 
 +|4|2000000| 
 +|5|3000000| 
 +|6|4000000| 
 +|7|4500000| 
 + 
 +****Return Delay Time [#b77cfd17] 
 +インストラクションパケットが送られた後、ステータスパケットを返すまでの待ち時間を設定します。~ 
 +ホストにおいて半二重のバス制御のタイミングに合わせて調整しますが、[[DXHUB]]を使用する限りでは0を設定しても問題ありません。 
 + Delay Time [us] = Value * 2 
 + 
 +****Operatinng Mode [#j5c7292f] 
 +動作モードを選択します。Valueに記載が無い値は予約済みのため、指定してはなりません。 
 +|CENTER:|LEFT:|LEFT:|c 
 +|Value|CENTER:Mode|CENTER:Description|h ​
 +|0|Current Control Mode|電流制御。位置及び速度制御は行わない。| 
 +|1|Velocity Control Mode|速度制御。位置及びトルク制御は行わない。| 
 +|3|Position Control Mode|位置制御。GoalPositionは0~360°の1回転分の制御範囲に制限。| 
 +|4|Extended Position Control Mode|拡張位置制御。GoalPositionの範囲が拡大され、最大±256回転まで対応。| 
 +|5|Current-Base Position Control Mode|電流制限付き位置制御。GoalPositionの範囲が拡大され、最大±256回転まで対応。| 
 +|16|PWM Control Mode|PWMのデューティー比を制御。| 
 + 
 +****Protocol Version [#g1a9fe0a] 
 +Dynamixelプロトコルのバージョンを選択します。他のシリーズのDynamixelと混在させて使用する際はそのプロトコルのバージョンに合わせますが、異なるプロトコルを混在させて使用する事はできません。 
 +|CENTER:|CENTER:|LEFT:|c 
 +|Value|CENTER:Protocol Version|CENTER:Description|h 
 +|1|1.0|AX, DX, RX, MX, EXシリーズと互換| 
 +|2|2.0|X, PROシリーズと互換| 
 +****Homing Offset [#kfeaa64e] 
 +この値が真の現在位置に加算され[[Present Position>#rc31835f]]に反映されます。オフセット位置をホスト側では無くDynamixel側に持たせる際に使用します。 
 + Position [deg] = Value * 360 / 4095 
 + 
 +****Moving Threshold [#z8cfaf32] 
 +[[Present Velocity>#na7ab4d4]]の絶対値とこの値を比較した結果が[[Moving>#q27c1167]]に示されます。 
 + Velocity [rpm] = Value * 0.229 
 + 
 +****Temperature Limit [#uad86a63] 
 +[[Present Temperature>#h54b3728]]がこの値を超えると[[Hardware Error Status>#u710d2bc]]の該当ビットがONになり、[[Shutdown>#vbc701c4]]で指定された動作に遷移します。 
 + Temperature [degC] = Value * 1 
 + 
 +****Max/Min Voltage Limit [#d7f96189] 
 +[[Present Input Voltage>#y010f5f7]]がこの値の範囲を超えると[[Hardware Error Status>#u710d2bc]]の該当ビットはONになり、[[Shutdown>#vbc701c4]]で指定された動作に遷移します。 
 + Voltage [V] = Value * 0.1 
 + 
 +****PWM Limit [#wef400f2] 
 +[[Goal PWM>#x7993b36]]の絶対値はこの値以下に制限されます。 
 + Duty [%] = Value * 100 / 855 
 + 
 +****Current Limit [#y2cc93fd] 
 +[[Goal Current>#h25c5adf]]の絶対値はこの値以下に制限されます。 
 + Current [mA] = Value * 2.69 
 + 
 +****Acceleration Limit [#n0dd90ae] 
 +[[Profile Acceleration>#p37d042e]]はこの値以下に制限されます。 
 + Acceleration [Rev/min²] = Value * 0.0036 
 + 
 +****Velocity Limit [#n6a5f754] 
 +[[Goal Velocity>#x7810cd9]]の絶対値と[[Profile Velocity>#k31e5f2f]]はこの値以下に制限されます。 
 + Velocity [rpm] = Value * 0.229 
 + 
 +****Max/Min Position Limit [#l737bbef] 
 +[[Operatinng Mode>#j5c7292f]]にPosition Control Modeが設定されている時に[[Goal Position>#a86abf50]]はこの値の範囲内に制限されます。 
 + Position [deg] = Value * 360 / 4096 
 + 
 +****Shutdown [#vbc701c4] 
 +この設定と[[Hardware Error Status>#u710d2bc]]の論理積が0以外になると、[[Torque Enable>#wfdacf65]]は0になりモータの出力が遮断されシャットダウン状態に遷移します。以後通常のインストラクションパケットにて[[Torque Enable>#wfdacf65]]を1にする事ができません。 
 +|CENTER:|CENTER:|c 
 +|Bit|Name|h 
 +|7|常時0| 
 +|6|常時0| 
 +|5|Overload Error| 
 +|4|Electrical Shot Error| 
 +|3|Motor Encoder Error| 
 +|2|Overheating Error| 
 +|1|常時0| 
 +|0|Input Voltage Error| 
 +なお、シャットダウン状態から復帰するには発生している障害を排除した後、電源の再投入か、REBOOTインストラクションパケットを受信しなくてはなりません。 
 + 
 +****Torque Enable [#wfdacf65] 
 +出力軸をフリーにするか、設定されたOperating Modeに従った制御を開始します。 
 +|CENTER:|LEFT:|c 
 +|Value|CENTER:Description|h 
 +|0|出力軸フリー、制御停止、ロックされたアイテムを解除| 
 +|1|Operating Modeに従った制御開始、NVM及びIndirect Address領域のアイテムロック| 
 + 
 +****LED [#h4e1230d] 
 +本体に装備されたLEDを点灯ないし消灯します。 
 +|CENTER:|LEFT:|c 
 +|Value|CENTER:Description|h 
 +|0|消灯| 
 +|1|点灯| 
 + 
 +****Status Return Level [#r63d9af2] 
 +ステータスパケットを返信するインストラクションパケットを選択します。 
 +|CENTER:|LEFT:|c 
 +|Value|CENTER:Instruction to respond|h 
 +|0|Ping| 
 +|1|Ping, Read| 
 +|2|Ping, Read, Write, Reg Write, Factory Reset, Reboot, Sync Read, Bulk Read| 
 + 
 +****Registered Instruction [#t7805606] 
 +Reg Writeインストラクションパケットを受信すると1、その後Actionインストラクションパケットを受信すると0になります。 
 + 
 +****Hardware Error Status [#u710d2bc] 
 +様々なフィードバックと内部の制御状態を比較した結果を示します。さらに、この値と[[Shutdown>#vbc701c4]]の論理積の結果により動作を継続するか否かを決定します。 
 +|CENTER:|CENTER:|LEFT:|c 
 +|Bit|Name|CENTER:Description|h 
 +|7|-|常時0| 
 +|6|-|常時0| 
 +|5|Overload Error|最大出力で制御できない負荷が継続的に発生した| 
 +|4|Electrical Shot Error|電気的に回路が衝撃を受けたり入力電力が不足してモータが正常動作しない| 
 +|3|Motor Encoder Error|エンコーダが正常動作しない| 
 +|2|Overheating Error|[[Present Temperature>#h54b3728]]が[[Temperature Limit>#uad86a63]]を超えた| 
 +|1|-|常時0| 
 +|0|Input Voltage Error|[[Present Voltage>#y010f5f7]]が[[Max/Min Voltage Limit>#d7f96189]]の範囲を超えた| 
 + 
 +****Velocity I/P Gain [#n3099aee] 
 +速度制御演算における各種制御ゲインを指定します。~ 
 +[[Operating Mode>#j5c7292f]]にVelocity Control Modeが設定されている時に有効です。~ 
 +なお、制御ブロック中の各ゲインは、次の算式で示す減じられた値が用いられます。 
 + KvI = (Velocity I Gain) / 65536 
 + KvP = (Velocity P Gain) / 128 
 +#ref("BTX080 Dynamixel XM430-W210-R/DX_CtrlBlock(Velocity).png",70%) 
 + 
 +****Position D/I/P Gain, Feedforward 2nd/1st Gain [#d0c6ac0c] 
 +位置制御演算における各種制御ゲインを指定します。~ 
 +[[Operating Mode>#j5c7292f]]にPosition Control Mode・Extended Position Control Mode・Current-Base Position Control Modeが設定されている時に有効な値です。~ 
 +なお、制御ブロック中の各ゲインは、次の算式で示す減じられた値が用いられます。 
 + KpD = (Position I Gain) / 16 
 + KpI = (Position I Gain) / 65536 
 + KpP = (Position P Gain) / 128 
 + 
 +#ref("BTX080 Dynamixel XM430-W210-R/DX_CtrlBlock(Position).png",70%) 
 +#ref("BTX080 Dynamixel XM430-W210-R/DX_CtrlBlock(Cur&Pos).png",70%) 
 + 
 +****Goal PWM [#x7993b36] 
 +PWMのデューティー比を指定します。~ 
 +[[Operating Mode>#j5c7292f]]にPWM Modeが設定されている事はもとより、全てのModeにおける制御演算結果はPWMのデューティ比として算出されるため、必ず制御の最終段においてこの値以下にデューティー比が制限されモータへ印可されます。 
 + Duty [%] = Value * 100 / 855 
 + 
 +****Goal Current [#h25c5adf] 
 +電流制御の目標値を指定します。~ 
 +[[Operating Mode>#j5c7292f]]にCurrent ModeもしくはCurrent-Base Position Control Modeが設定されている時に有効な値で、Current-Base Position Control Mode時は[[Position D/I/P Gain, Feedforward 2nd/1st Gain>#d0c6ac0c]]に示すブロック図に従って制御されます。 
 + Current [mA] = Value * 2.69 
 + 
 +****Goal Velocity [#x7810cd9] 
 +速度制御の目標値を指定します。~ 
 +[[Operating Mode>#j5c7292f]]にVelocity Control Modeが設定されている時に有効な値で、[[Velocity I/P Gai>#n3099aee]]に示すブロック図に従って制御されます。 
 + Velocity [rpm] = Value * 0.229 
 + 
 +****Profile Acceleration [#p37d042e] 
 +Profileの加速度を指定します。~ 
 +[[Operating Mode>#j5c7292f]]がCurrent Control Modeである時を除くModeに有効です。 
 + Acceleration [Rev/min²] = Value * 0.0036 
 +詳細は[[Profile Velocity>#k31e5f2f]]を参照ください。 
 + 
 +****Profile Velocity [#k31e5f2f] 
 +Profileの最大速度を指定します。~ 
 +[[Operating Mode>#j5c7292f]]がCurrent Control ModeないしVelocity Control Modeである時を除くModeに有効です。なお、Velocity Control Mode時は[[Goal Velocity>#x7810cd9]]が最大速度として採用されます。 
 + Velocity [rpm] = Value * 0.229 
 +加速度・最大速度・目標位置の値によって最終的に4種類の軌跡が得られます。位置制御時における設定値による位置と速度のProfileを以下に示します。 
 +|CENTER:|CENTER:|c 
 +|Profile|Condition, Waveform|h 
 +|ステップ|Velocity = 0, Acceleration = don't care | 
 +|~|#ref("BTX080 Dynamixel XM430-W210-R/Profile_Step.png")| 
 +|矩形|Velocity ≠ 0, Acceleration = 0 | 
 +|~|#ref("BTX080 Dynamixel XM430-W210-R/Profile_Rectangle.png")| 
 +|三角|Velocity ≠ 0, Acceleration ≠ 0 | 
 +|~|#ref("BTX080 Dynamixel XM430-W210-R/Profile_Triangle.png")| 
 +|台形|Velocity ≠ 0, Acceleration ≠ 0 | 
 +|~|#ref("BTX080 Dynamixel XM430-W210-R/Profile_Trapezoidal.png")| 
 +適当な加速度と最大速度を設定した上で目標位置を指令する事で、急峻な加速度を伴う位置決め制御による機械的なショックを軽減できます。また、目標位置への到達時間が決まっている場合は、時間から加速度と最大速度を求めて設定する事で対応できます。~ 
 +なお、上記波形のt1及びt2は、概ね以下の数式で求められます。 
 + t1 [ms] = 64 * (Profile Velocity) / (Profile Acceleration) 
 + もしくは 
 + t1 [ms] = 64 * (Goal Velocity) / (Profile Acceleration) 
 + 
 + t2 [ms] = 64 * Δ(Present Position) / (Profile Velocity) 
 + 
 +また、これらの他に急峻な加速度変化を抑える制御を行っているため、最終的な目標到達時間はt3よりも長くなる場合があります。 
 + 
 +****Goal Position [#a86abf50] 
 +位置制御の目標値を指定します。~ 
 +[[Operating Mode>#j5c7292f]]にPosition Control Mode・Extended Position Control Mode・Current-Base Position Control Modeが設定されている時に有効で、各Mode毎に指摘できる数値範囲が異なります。 
 +|CENTER:|CENTER:|CENTER:|c 
 +|Operating Mode|Value Range|Max Turnover Number|h 
 +|3|[[Min Position Limit~Max Position Limit>#l737bbef]]|1| 
 +|4|-1048575~+1048575|-256~+256| 
 +|5|~|~| 
 +#ref("BTX080 Dynamixel XM430-W210-R/DX_PosDir.png") 
 + Position [deg] = Value * 360 / 4096 
 + 
 +****Realtime Tick [#q9936d2f] 
 +15ビットのフリーランカウンタで、1ms周期毎にインクリメントされます。 
 + 
 +****Moving [#q27c1167] 
 +[[Present Velocity>#na7ab4d4]]の絶対値と[[Moving Threshold>#z8cfaf32]]の比較結果を示します。 
 +|CENTER:|LEFT:|c 
 +|Value|CENTER:Description|h 
 +|0|Moving Threshold ≥ |Present Velocity|| 
 +|1|Moving Threshold < |Present Velocity|&br;もしくはProfileが進行中| 
 + 
 +****Moving Status [#jf2ccbc3] 
 +動作中の状況を示します。 
 +|CENTER:|CENTER:|LEFT:|c 
 +|Bit|Name|CENTER:Description|h 
 +|7|-|常時0| 
 +|6|-|常時0| 
 +|5|Profile Type|11:台形速度Profile&br;10:三角速度Profile&br;01:矩形速度Profile&br;00:Step速度Profile | 
 +|4|~|~| 
 +|3|Following Error|位置制御時、位置がProfileに非追従 | 
 +|2|-|常時0| 
 +|1|Profile Ongoing|Goal Positionに基づくProfile進行中 | 
 +|0|In-Position|位置制御時、目標位置到達 | 
 + 
 +****Present PWM [#q60316d2] 
 +制御中のPWM出力値です。 
 + Duty [%] = Value * 100 / 855 
 + 
 +****Present Current [#x7fc73c2] 
 +現在モータへ流れている電流です。 
 + Current [mA] = Value * 2.69 
 + 
 +****Present Velocity [#na7ab4d4] 
 +現在の出力軸の回転数です。 
 + Velocity [rpm] = Value * 0.229 
 + 
 +****Present Position [#rc31835f] 
 +真の位置から[[Homing Offset>#kfeaa64e]]を除した出力軸の位置です。~ 
 +[[Torque Enable>#wfdacf65]]が0の状態ではレンジフローするまで回転に応じた増減をしますが、[[Torque Enable>#wfdacf65]]を1にした瞬間に[[Operating Mode>#j5c7292f]]に依存した値でクリップされます。 
 + Position [deg] = Value * 360 / 4096 
 + 
 +****Velocity Trajectory [#de194cd2] 
 +[[Profile>#p37d042e]]によって生成された目標速度を逐次示します。~ 
 +[[Operating Mode>#]]にVelocity Control Mode・Position Control Mode・Extended Position Control Mode・Current-Base Position Control Modeが設定されている時に有効です。 
 + 
 +****Position Trajectory [#w9f5f284] 
 +[[Profile>#p37d042e]]によって生成された目標位置を逐次示します。~ 
 +[[Operating Mode>#]]にPosition Control Mode・Extended Position Control Mode・Current-Base Position Control Modeが設定されている時に有効です。 
 + 
 +****Present Input Voltage [#y010f5f7] 
 +現在の印加電圧です。 
 + Voltage [V] = Value * 0.1 
 + 
 +****Present Temperature [#h54b3728] 
 +現在の内部温度です。 
 + Temperature [degC] = Value * 1 
 + 
 +****Indirect Address/Data [#jaa405dd] 
 +コントロールテーブル上のアドレスを再構成します。~ 
 +Indirect Address '''N'''('''N'''=1~56)とIndirect Data '''N'''('''N'''=1~56)は対になっており、Indirect Address '''N'''に任意のコントロールテーブル上のアドレス'''X'''を設定すると、その後Indirect Data '''N'''へアクセスする事はIndirect Address '''N'''に設定されたアドレス'''X'''へ間接的にアクセスする事になります。 
 + 
 +具体的な例として、ホストから頻繁にアクセスしたいアイテムが複数あり、それらが離れたアドレスに配置されていた場合を考えます。通常はそれらアイテム全てをまたぐアドレス範囲のデータをまとめてアクセスするか、個々のアイテムに個別にアクセスするとった手段を執ります。これには本来無用なデータやアクセス回数が強いられるため、通信のトラフィックが上がる要因になるのと、ホスト側のプログラムの負担になります。~ 
 +ホストから書き込み対象としてPosition P Gain・Goal Velocity・Goal Position、読み出し対象としてPresent Position・Present Temperatureがあった場合、これらをIndirect Data領域に再配置するには以下の手順を踏みます。 
 ++Position P Gainのアドレス84~85をIndirect Address 1~2に書き込み 
 ++Goal Velocityのアドレス104~107をIndirect Address 3~6に書き込み 
 ++Goal Positionのアドレス116~119をIndirect Address 7~10に書き込み 
 ++Present Positionのアドレス132~135をIndirect Address 11~14に書き込み 
 ++Present Temperatureのアドレス146~147をIndirect Address 15~16に書き込み 
 + 
 +以後Indirect Data 1からの連続した224番地にアクセスする事は、再配置したアイテムへ個々に間接的にアクセスした事になります。 
 +#ref("BTX080 Dynamixel XM430-W210-R/DX_Indirect.png")
-**使用する前に[#f65783d3]+なお、Indirect Addressがデフォルト値のままであれば、Indirect Data領域はユーザ任意のRAM領域として扱うことができます。


トップ   差分 リロード印刷に適した表示   全ページ一覧 単語検索 最新ページの一覧   最新ページのRSS 1.0 最新ページのRSS 2.0 最新ページのRSS Atom