この文書の現在のバージョンと選択したバージョンの差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン 次のリビジョン 両方とも次のリビジョン | ||
mae3xx_ope:ai_with_iio_subsystem:start [2014/09/18 18:01] admin |
mae3xx_ope:ai_with_iio_subsystem:start [2019/09/18 09:12] admin [使用方法 (ソフトウェア)] |
||
---|---|---|---|
ライン 1: | ライン 1: | ||
+ | ====== AI(Analog IN) を利用する (IIO subsystem) ====== | ||
+ | |||
+ | A/D Converter を搭載した下記機種では、AI(Analog IN) 4チャネルを利用できます。 | ||
+ | |||
+ | * [[https://www.centurysys.co.jp/products/linuxserver/mae350klad.html|MA-E350/KLAD]] | ||
+ | * [[https://www.centurysys.co.jp/products/linuxserver/mae350nad.html|MA-E350/NAD]] | ||
+ | * [[https://www.centurysys.co.jp/products/linuxserver/mae350nlad.html|MA-E350/NLAD]] | ||
+ | |||
+ | {{:mae3xx_ope:ai_with_iio_subsystem:ai_connector_sw.jpg?600|AIN コネクタと AIN MODE スイッチ}} | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ===== ハードウェア仕様 ===== | ||
+ | |||
+ | ==== 電気的仕様 ==== | ||
+ | |||
+ | ^ 項目 ^ 内容 | | ||
+ | |A/D Converter IC 型式|[[http://www.linear-tech.co.jp/product/LTC1859|LTC1859 (Linear Technology)]]| | ||
+ | |変換方式|[[http://en.wikipedia.org/wiki/Successive_approximation_ADC|マルチプレクサ式逐次変換型(SAR)]]| | ||
+ | |ポート数|差動入力 4CH| | ||
+ | |絶対最大入力|DC ±25V| | ||
+ | |入力レンジ (電圧モード)|DC 0V 〜 +5V| | ||
+ | |:::|DC 0V 〜 +10V| | ||
+ | |:::|DC -5V 〜 +5V| | ||
+ | |:::|DC -10V 〜 +10V| | ||
+ | |入力レンジ (電流モード, スイッチ切替)|DC 0mA 〜 20mA| | ||
+ | |許容コモンモード電圧|DC 0V 〜 +5V (DC 0V 〜 +5V レンジ)| | ||
+ | |:::|DC 0V 〜 +1V (DC 0V 〜 +10V レンジ)| | ||
+ | |:::|DC -5V 〜 +5V (DC -5V 〜 +5V レンジ)| | ||
+ | |:::|DC -1V 〜 +1V (DC -10V 〜 +10V レンジ)| | ||
+ | |入力インピーダンス|電圧入力モード 2MΩ 以上| | ||
+ | |:::|電流入力モード 250Ω ± 0.1%| | ||
+ | |分解能|16bit| | ||
+ | |変換精度|±0.1% (-20℃ 〜 +60℃, フルスケール)| | ||
+ | |絶縁方式|ディジタルアイソレータ絶縁| | ||
+ | |絶縁耐圧|DC500V 1分間, 外部端子〜内部回路間| | ||
+ | |コネクタ|ハーフピッチ 20 ピンコネクタ [[http://www.mmm.co.jp/electrical/connector/square_connector/|3M 社製 MDR タイプ: 10220-52A2PL]], [[http://www.mmm.co.jp/electrical/connector/square_connector/pdf/g45.pdf|Datasheet]] (PDF)| | ||
+ | |||
+ | {{:mae3xx_ope:ai_with_iio_subsystem:ai_cable_mdr.jpg|MDR コネクタ}} | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ==== ピンアサイン ==== | ||
+ | |||
+ | {{:mae3xx_ope:ai_with_iio_subsystem:manual_ma-e300_ain_connector_pinnumber.jpg|}} | ||
+ | |||
+ | |< 64em 6em 6em 14em 0.2em 4em 10em 10em >| | ||
+ | ^ PIN No. ^ 名称 ^ 機能 ^ ^ PIN No. ^ 名称 ^ 機能 | | ||
+ | | 1| AIN COM | アナログコモン | | 11| NC | 未使用 | | ||
+ | | 2| AIN0 (+) | アナログ差動入力 CH0 | | 12| NC | 未使用 | | ||
+ | | 3| AIN0 (-) |:::| | 13| NC | 未使用 | | ||
+ | | 4| AIN1 (+) | アナログ差動入力 CH1 | | 14| NC | 未使用 | | ||
+ | | 5| AIN1 (-) |:::| | 15| NC | 未使用 | | ||
+ | | 6| AIN2 (+) | アナログ差動入力 CH2 | | 16| NC | 未使用 | | ||
+ | | 7| AIN2 (-) |:::| | 17| NC | 未使用 | | ||
+ | | 8| AIN3 (+) | アナログ差動入力 CH3 | | 18| NC | 未使用 | | ||
+ | | 9| AIN3 (-) |:::| | 19| NC | 未使用 | | ||
+ | | 10| NC | 未使用 | | 20| NC | 未使用 | | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ==== AIN MODE スイッチ設定 ==== | ||
+ | |||
+ | アナログ差動入力の電圧/電流モードの切り替えを行うためのスイッチです。\\ | ||
+ | アナログ入力を電流モード([[http://www.cqpub.co.jp/term/420macurrentloop.htm|4~20mAカレント・ループ(4-20mA current loop)]]) で使用する場合、 | ||
+ | AIN MODE スイッチを **"CURRENT"** に切り替えて使用します。\\ | ||
+ | 電流モードに切り替えると、AINx(+) 〜 AINx(-) 間に 250Ω の抵抗が接続されます。\\ | ||
+ | 電流モードを使用する場合は、分解能を最大にするため入力レンジを 0V 〜 +5V に設定して使用してください。 | ||
+ | |||
+ | |< 40em 4em 6em 6em 6em >| | ||
+ | ^ SW NO. ^ AIN Channel ^ Switch Position ^^ | ||
+ | ^:::^:::^ VOLTAGE ^ CURRENT ^ | ||
+ | | 0 | CH0 | 電圧モード | 電流モード | | ||
+ | | 1 | CH1 |:::|:::| | ||
+ | | 2 | CH2 |:::|:::| | ||
+ | | 3 | CH3 |:::|:::| | ||
+ | |||
+ | |||
+ | \\ | ||
+ | |||
+ | ==== 等価回路 ==== | ||
+ | |||
+ | {{:mae3xx_ope:ai_with_iio_subsystem:ai_等価回路.png?800|AI 等価回路}} | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ==== 便利なツール ==== | ||
+ | |||
+ | {{:mae3xx_ope:ai_with_iio_subsystem:p1000613.jpg?400|端子台変換器 PCV5-1H202(東洋技研製)}} | ||
+ | |||
+ | {{:mae3xx_ope:ai_with_iio_subsystem:pcv5-1h202_pinassign.png?800|端子台変換器 PCV5-1H202(東洋技研製)}} | ||
+ | |||
+ | 端子台変換器 [[http://www.togi.co.jp/products/details.php?main=interface&c=73|PCV5-1H202(東洋技研製)]] を接続することにより、DIO 及び AIN ポートをスプリング圧結線方式の端子へ\\ | ||
+ | 変換することができます。端子台変換器はオプションの DIO ケーブル、もしくは AI ケーブルにより一括接続が可能です。 | ||
+ | |||
+ | 購入先: [[http://jp.misumi-ec.com/vona2/detail/110500006010/|ミスミ]], [[http://www.amazon.co.jp/%E6%9D%B1%E6%B4%8B%E6%8A%80%E7%A0%94-TOGI-PCV5-1H202-%E3%82%B9%E3%83%97%E3%83%AA%E3%83%B3%E3%82%B0%E3%83%AD%E3%83%83%E3%82%AF%E5%BC%8F%E3%82%B3%E3%83%8D%E3%82%AF%E3%82%BF%E3%82%BF%E3%83%BC%E3%83%9F%E3%83%8A%E3%83%AB-HIF3BA-20PA-2-54DSA%E7%94%A8/dp/B00P60F89W|Amazon.co.jp]] | ||
+ | |||
+ | \\ | ||
+ | ==== 接続例 ==== | ||
+ | |||
+ | === 電流モード使用 4-20mA === | ||
+ | |||
+ | {{:mae3xx_ope:ai_with_iio_subsystem:plum_ain.png?800|}} | ||
+ | |||
+ | ※ マイナス(-)側を COM(GND) に接続するのを忘れると、入力値が不安定になり計測できません。 | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ==== よくある質問 ==== | ||
+ | |||
+ | * Q. 入力が差動入力となってるが、シングルエンドの電圧が出力されるセンサを接続したい | ||
+ | * A. AIN(-) とアナログコモンを接続し、センサ側共通 GND と接続する | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ===== 使用方法 (ソフトウェア) ===== | ||
+ | |||
+ | IIO subsystem 上に実装しています。\\ | ||
+ | |||
+ | 参考: | ||
+ | * [[https://archive.fosdem.org/2012/schedule/event/693/127_iio-a-new-subsystem.pdf|IIO, a new kernel subsystem]] (PDF) | ||
+ | * [[http://wiki.analog.com/software/linux/docs/iio/iio|LINUX INDUSTRIAL I/O SUBSYSTEM - Analog Devices Wiki]] | ||
+ | |||
+ | sysfs の、/sys/bus/iio/devices/iio:device1 ディレクトリ経由でアクセスします。 | ||
+ | |||
+ | <code> | ||
+ | root@plum:/sys/bus/iio/devices/iio:device1# ls -l | ||
+ | total 0 | ||
+ | drwxr-xr-x 2 root root 0 Sep 8 12:01 buffer | ||
+ | -r--r--r-- 1 root root 4096 Sep 8 12:01 dev | ||
+ | -rw-r--r-- 1 root root 4096 Sep 8 12:02 in_voltage0_range | ||
+ | -rw-r--r-- 1 root root 4096 Sep 8 12:01 in_voltage0_raw | ||
+ | -rw-r--r-- 1 root root 4096 Sep 8 12:01 in_voltage0_scale | ||
+ | -rw-r--r-- 1 root root 4096 Sep 8 12:01 in_voltage1_range | ||
+ | -rw-r--r-- 1 root root 4096 Sep 8 12:01 in_voltage1_raw | ||
+ | -rw-r--r-- 1 root root 4096 Sep 8 12:01 in_voltage1_scale | ||
+ | -rw-r--r-- 1 root root 4096 Sep 8 12:01 in_voltage2_range | ||
+ | -rw-r--r-- 1 root root 4096 Sep 8 12:01 in_voltage2_raw | ||
+ | -rw-r--r-- 1 root root 4096 Sep 8 12:01 in_voltage2_scale | ||
+ | -rw-r--r-- 1 root root 4096 Sep 8 12:01 in_voltage3_range | ||
+ | -rw-r--r-- 1 root root 4096 Sep 8 12:01 in_voltage3_raw | ||
+ | -rw-r--r-- 1 root root 4096 Sep 8 12:01 in_voltage3_scale | ||
+ | -r--r--r-- 1 root root 4096 Sep 8 12:01 in_voltage_ranges_available | ||
+ | -r--r--r-- 1 root root 4096 Sep 8 12:01 name | ||
+ | drwxr-xr-x 2 root root 0 Sep 8 12:01 power | ||
+ | drwxr-xr-x 2 root root 0 Sep 8 12:01 scan_elements | ||
+ | lrwxrwxrwx 1 root root 0 Sep 8 12:01 subsystem -> ../../../../../../../bus/iio | ||
+ | drwxr-xr-x 2 root root 0 Sep 8 12:01 trigger | ||
+ | -rw-r--r-- 1 root root 4096 Sep 8 12:01 uevent | ||
+ | root@plum:/sys/bus/iio/devices/iio:device1# | ||
+ | </code> | ||
+ | |||
+ | <note important> | ||
+ | Kernel のメジャーバージョン((IIO module の初期化順が異なります))により、ディレクトリが異なります。\\ | ||
+ | /sys/bus/iio/devices/iio:deviceN/name の内容で確認可能です。 | ||
+ | </note> | ||
+ | |||
+ | <code> | ||
+ | root@plum:~# uname -a | ||
+ | Linux plum 4.19.73+ #137 PREEMPT Wed Sep 18 08:55:58 JST 2019 armv7l armv7l armv7l GNU/Linux | ||
+ | |||
+ | root@plum:~# for dev in /sys/bus/iio/devices/iio*; do echo $dev; cat $dev/name; done | ||
+ | /sys/bus/iio/devices/iio:device0 | ||
+ | ltc185x <---- AI channel: 0〜3 | ||
+ | /sys/bus/iio/devices/iio:device1 | ||
+ | ltc185x <---- AI channel: 4〜7 | ||
+ | /sys/bus/iio/devices/iio:device2 | ||
+ | TI-am335x-adc.0.auto | ||
+ | </code> | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ==== 基本的な使用方法 ==== | ||
+ | |||
+ | 各 AIN のチャネル (0 〜 3) に対して、下記のノードがあります。 | ||
+ | |||
+ | ^ 名称 ^ 内容 ^ 例 ^ 備考 | | ||
+ | |in_voltagex_range|現在の入力レンジ設定| -10Vto+10V |初期設定は "0Vto5V" (DC 0V 〜 +5V)| | ||
+ | |in_voltagex_scale|スケール(1bit あたりの電圧)| 0.000305175 |入力レンジ "-10Vto+10V" 時| | ||
+ | |in_voltagex_raw|AD 変換値| 13607 |13607 x 0.000305175 ≒ 4.152 [V]| | ||
+ | |||
+ | \\ | ||
+ | |||
+ | 各チャネルで共通なものは下記となります。 | ||
+ | |||
+ | ^ 名称 ^ 内容 ^ 例 ^ 備考 | | ||
+ | |in_voltage_ranges_available|入力レンジとして設定可能な値一覧|-5Vto+5V -10Vto+10V 0Vto+5V 0Vto+10V| | | ||
+ | |||
+ | \\ | ||
+ | |||
+ | 入力レンジの切り替えには、"in_voltage_ranges_available" で表示されるテキストから選択し、"in_voltagex_range" へ書き込むことで行います。 | ||
+ | |||
+ | \\ | ||
+ | |||
+ | === 入力レンジ一覧表示 === | ||
+ | |||
+ | <code> | ||
+ | root@plum:/sys/bus/iio/devices/iio:device1# cat in_voltage_ranges_available | ||
+ | -5Vto+5V -10Vto+10V 0Vto+5V 0Vto+10V | ||
+ | </code> | ||
+ | |||
+ | \\ | ||
+ | |||
+ | === 入力レンジ切り替え (DC 0V 〜 +5V) === | ||
+ | |||
+ | <code> | ||
+ | root@plum:/sys/bus/iio/devices/iio:device1# echo 0Vto+5V > in_voltage0_range | ||
+ | root@plum:/sys/bus/iio/devices/iio:device1# cat in_voltage0_range | ||
+ | 0Vto+5V | ||
+ | root@plum:/sys/bus/iio/devices/iio:device1# | ||
+ | </code> | ||
+ | |||
+ | \\ | ||
+ | |||
+ | === スケール 読み出し === | ||
+ | |||
+ | <code> | ||
+ | root@plum:/sys/bus/iio/devices/iio:device1# cat in_voltage0_scale | ||
+ | 0.000076293 | ||
+ | root@plum:/sys/bus/iio/devices/iio:device1# | ||
+ | </code> | ||
+ | |||
+ | \\ | ||
+ | |||
+ | === AD 変換値 読み出し === | ||
+ | |||
+ | == 入力値が 正の値 の場合 == | ||
+ | |||
+ | <code> | ||
+ | root@plum:/sys/bus/iio/devices/iio:device1# cat in_voltage0_raw | ||
+ | 54392 | ||
+ | root@plum:/sys/bus/iio/devices/iio:device1# | ||
+ | </code> | ||
+ | |||
+ | この例では、スケールとして読み出した値 x AD 変換値 が、AIN に印加されている電圧値となります。 | ||
+ | |||
+ | 0.000076293 x 54392 = 4.1497 [V] | ||
+ | |||
+ | \\ | ||
+ | |||
+ | == 入力値が 負の値 の場合 == | ||
+ | |||
+ | AINx(+) よりも AINx(-) のほうが電圧が高い場合、プラス電圧のみ対応の入力レンジのままですと 0V にクリップしてしまいます。\\ | ||
+ | 0V を中心として正負に電圧が振れる入力の場合、もしくは入力の極性を間違えているケースです。 | ||
+ | |||
+ | <code> | ||
+ | root@plum:/sys/bus/iio/devices/iio:device1# cat in_voltage0_range | ||
+ | 0Vto5V | ||
+ | root@plum:/sys/bus/iio/devices/iio:device1# cat in_voltage0_raw | ||
+ | 0 | ||
+ | root@plum:/sys/bus/iio/devices/iio:device1# | ||
+ | </code> | ||
+ | |||
+ | \\ | ||
+ | |||
+ | その場合、- から + まで対応のレンジに切り替えを行う必要があります。 | ||
+ | |||
+ | <code> | ||
+ | root@plum:/sys/bus/iio/devices/iio:device1# echo -10Vto+10V > in_voltage0_range | ||
+ | root@plum:/sys/bus/iio/devices/iio:device1# cat in_voltage0_raw | ||
+ | -13597 | ||
+ | root@plum:/sys/bus/iio/devices/iio:device1# | ||
+ | </code> | ||
+ | |||
+ | スケールは in_voltage0_scale から読み出します。 | ||
+ | |||
+ | <code> | ||
+ | root@plum:/sys/bus/iio/devices/iio:device1# cat in_voltage0_scale | ||
+ | 0.000305175 | ||
+ | </code> | ||
+ | |||
+ | この例では、スケールとして読み出した値 x AD 変換値 の下記の値が AIN に印加されている電圧値となります。 | ||
+ | |||
+ | 0.000305175 x (-13597) = - 4.1495 [V] | ||
+ | |||
+ | \\ | ||