目次

AI(Analog IN) を利用する (IIO subsystem)

A/D Converter を搭載した下記機種では、AI(Analog IN) 4チャネルを利用できます。

AIN コネクタと AIN MODE スイッチ


ハードウェア仕様

電気的仕様

項目 内容
A/D Converter IC 型式LTC1859 (Linear Technology)
変換方式マルチプレクサ式逐次変換型(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 ピンコネクタ 3M 社製 MDR タイプ: 10220-52A2PL, Datasheet (PDF)

MDR コネクタ


ピンアサイン

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 スイッチ設定

アナログ差動入力の電圧/電流モードの切り替えを行うためのスイッチです。
アナログ入力を電流モード(4~20mAカレント・ループ(4-20mA current loop)) で使用する場合、 AIN MODE スイッチを “CURRENT” に切り替えて使用します。
電流モードに切り替えると、AINx(+) 〜 AINx(-) 間に 250Ω の抵抗が接続されます。
電流モードを使用する場合は、分解能を最大にするため入力レンジを 0V 〜 +5V に設定して使用してください。

SW NO. AIN Channel Switch Position
VOLTAGE CURRENT
0 CH0 電圧モード 電流モード
1 CH1
2 CH2
3 CH3


等価回路

AI 等価回路


便利なツール

端子台変換器 PCV5-1H202(東洋技研製)

端子台変換器 PCV5-1H202(東洋技研製)

端子台変換器 PCV5-1H202(東洋技研製) を接続することにより、DIO 及び AIN ポートをスプリング圧結線方式の端子へ
変換することができます。端子台変換器はオプションの DIO ケーブル、もしくは AI ケーブルにより一括接続が可能です。

購入先: ミスミ, Amazon.co.jp


接続例

電流モード使用 4-20mA

※ マイナス(-)側を COM(GND) に接続するのを忘れると、入力値が不安定になり計測できません。


よくある質問


使用方法 (ソフトウェア)

IIO subsystem 上に実装しています。

参考:

sysfs の、/sys/bus/iio/devices/iio:deviceN ディレクトリ経由でアクセスします。

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#
Kernel のメジャーバージョン1)により、ディレクトリが異なります。
/sys/bus/iio/devices/iio:deviceN/name の内容で確認可能です。
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 (AI 8chのボードのみ使用可能、4chのボードでアクセスした場合値は無効)
/sys/bus/iio/devices/iio:device2
TI-am335x-adc.0.auto


基本的な使用方法

各 AIN のチャネル (0 〜 3) に対して、下記のノードがあります。

名称 内容 備考
in_voltagex_range現在の入力レンジ設定 -10Vto+10V 初期設定は “0Vto5V” (DC 0V 〜 +5V)
in_voltagex_scaleスケール(1bit あたりの電圧) 0.000305175 入力レンジ “-10Vto+10V” 時
in_voltagex_rawAD 変換値 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” へ書き込むことで行います。


入力レンジ一覧表示

root@plum:/sys/bus/iio/devices/iio:device1# cat in_voltage_ranges_available 
-5Vto+5V -10Vto+10V 0Vto+5V 0Vto+10V


入力レンジ切り替え (DC 0V 〜 +5V)

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#


スケール 読み出し

root@plum:/sys/bus/iio/devices/iio:device1# cat in_voltage0_scale 
0.000076293
root@plum:/sys/bus/iio/devices/iio:device1# 


AD 変換値 読み出し

入力値が 正の値 の場合
root@plum:/sys/bus/iio/devices/iio:device1# cat in_voltage0_raw 
54392
root@plum:/sys/bus/iio/devices/iio:device1#

この例では、スケールとして読み出した値 x AD 変換値 が、AIN に印加されている電圧値となります。

0.000076293 x 54392 = 4.1497 [V]


入力値が 負の値 の場合

AINx(+) よりも AINx(-) のほうが電圧が高い場合、プラス電圧のみ対応の入力レンジのままですと 0V にクリップしてしまいます。
0V を中心として正負に電圧が振れる入力の場合、もしくは入力の極性を間違えているケースです。

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# 


その場合、- から + まで対応のレンジに切り替えを行う必要があります。

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#

スケールは in_voltage0_scale から読み出します。

root@plum:/sys/bus/iio/devices/iio:device1# cat in_voltage0_scale 
0.000305175

この例では、スケールとして読み出した値 x AD 変換値 の下記の値が AIN に印加されている電圧値となります。

0.000305175 x (-13597) = - 4.1495 [V]


1)
IIO module の初期化順が異なります