====== AI(A/D 変換) の利用(Use of AI (A/D conversion) ======
\\
Analog 入力がついた [[https://www.centurysys.co.jp/products/linuxserver/max300s.html|MA-X3xx/LAD]] では、8ch の AI(A/D 変換) を利用可能です。\\
(For MA-X3xx/LAD with analog input, 8ch AI (A/D conversion) is available.)
{{:use_ai:max3xx_ai_00.png|MA-X3xx/LAD AI コネクタ}}
{{:use_ai:16ピン着脱式スクリューレス端子台.png?200|}}
※ 16ピン着脱式スクリューレス端子台が同梱されています。(Phoenix contact製 DMC 0,5/8-G1-2,54 P20 THR R72 接続ケーブルAWG26~AWG20対応)
\\
===== 仕様 =====
==== ピン配置 ====
コネクタピン配置は下記のとおりです。
(The connector pin assignments are as follows)
|<50em 3em 5em 5em 3em 5em 10em>|
^ No. ^ Name ^ Function ^ No. ^ Name ^ Function |
| 1| AIN0 | AI_00 | 9| AIN_COM | AIコモン(全チャネル共通) |
| 2| AIN1 | AI_01 | 10| AIN_COM |:::|
| 3| AIN2 | AI_02 | 11| AIN_COM |:::|
| 4| AIN3 | AI_03 | 12| AIN_COM |:::|
| 5| AIN4 | AI_04 | 13| AIN_COM |:::|
| 6| AIN5 | AI_05 | 14| AIN_COM |:::|
| 7| AIN6 | AI_06 | 15| AIN_COM |:::|
| 8| AIN7 | AI_07 | 16| AIN_COM |:::|
\\
==== 等価回路 ====
{{:use_ai:max3xx_ai_02.png|MA-X3xx AI 等価回路}}
\\
==== アクセス方法(How to access) ====
=== AD Converter 電源制御 ===
使用しない場合の消費電力を抑えるため、電源はデフォルトでオフになっています。\\
使用前に、まず AD Converter の電源をオンにします。
root@metis:~# cd /sys/class/leds/ADC_Power
root@metis:/sys/class/leds/ADC_Power# cat brightness
0
root@metis:/sys/class/leds/ADC_Power# echo 1 > brightness
root@metis:/sys/class/leds/ADC_Power# cat brightness
1
root@metis:/sys/class/leds/ADC_Power#
\\
=== 制御 ===
sysfs IIO 経由でアクセスします。
root@metis:/sys/bus/iio/devices/iio:device0# ls -l
total 0
drwxr-xr-x 2 root root 0 Apr 28 11:26 buffer
drwxr-xr-x 2 root root 0 Apr 28 11:26 buffer0
-r--r--r-- 1 root root 4096 Apr 28 11:26 dev
-rw-r--r-- 1 root root 4096 Apr 28 11:26 in_voltage0_offset
-rw-r--r-- 1 root root 4096 Apr 28 11:26 in_voltage0_raw
-rw-r--r-- 1 root root 4096 Apr 28 11:26 in_voltage0_scale
-rw-r--r-- 1 root root 4096 Apr 28 11:26 in_voltage1_offset
-rw-r--r-- 1 root root 4096 Apr 28 11:26 in_voltage1_raw
-rw-r--r-- 1 root root 4096 Apr 28 11:26 in_voltage1_scale
-rw-r--r-- 1 root root 4096 Apr 28 11:26 in_voltage2_offset
-rw-r--r-- 1 root root 4096 Apr 28 11:26 in_voltage2_raw
-rw-r--r-- 1 root root 4096 Apr 28 11:26 in_voltage2_scale
-rw-r--r-- 1 root root 4096 Apr 28 11:26 in_voltage3_offset
-rw-r--r-- 1 root root 4096 Apr 28 11:26 in_voltage3_raw
-rw-r--r-- 1 root root 4096 Apr 28 11:26 in_voltage3_scale
-rw-r--r-- 1 root root 4096 Apr 28 11:26 in_voltage4_offset
-rw-r--r-- 1 root root 4096 Apr 28 11:26 in_voltage4_raw
-rw-r--r-- 1 root root 4096 Apr 28 11:26 in_voltage4_scale
-rw-r--r-- 1 root root 4096 Apr 28 11:26 in_voltage5_offset
-rw-r--r-- 1 root root 4096 Apr 28 11:26 in_voltage5_raw
-rw-r--r-- 1 root root 4096 Apr 28 11:26 in_voltage5_scale
-rw-r--r-- 1 root root 4096 Apr 28 11:26 in_voltage6_offset
-rw-r--r-- 1 root root 4096 Apr 28 11:26 in_voltage6_raw
-rw-r--r-- 1 root root 4096 Apr 28 11:26 in_voltage6_scale
-rw-r--r-- 1 root root 4096 Apr 28 11:26 in_voltage7_offset
-rw-r--r-- 1 root root 4096 Apr 28 11:26 in_voltage7_raw
-rw-r--r-- 1 root root 4096 Apr 28 11:26 in_voltage7_scale
-r--r--r-- 1 root root 4096 Apr 28 11:26 in_voltage_offset_available
-r--r--r-- 1 root root 4096 Apr 28 11:26 in_voltage_scale_available
-r--r--r-- 1 root root 4096 Apr 28 11:26 name
lrwxrwxrwx 1 root root 0 Apr 28 11:26 of_node -> ../../../../../../../../firmware/devicetree/base/bus@f4000/spi@20100000/ads8688@0
drwxr-xr-x 2 root root 0 Apr 28 11:26 power
drwxr-xr-x 2 root root 0 Apr 28 11:26 scan_elements
lrwxrwxrwx 1 root root 0 Apr 28 11:26 subsystem -> ../../../../../../../../bus/iio
drwxr-xr-x 2 root root 0 Apr 28 11:26 trigger
-rw-r--r-- 1 root root 4096 Apr 28 09:56 uevent
-r--r--r-- 1 root root 4096 Apr 28 11:26 waiting_for_supplier
root@metis:/sys/bus/iio/devices/iio:device0#
\\
== 極性の選択 ==
**in_voltage_offset_available** から読み出せる値から選択し、それぞれのチャネルの **in_voltageN_offset** に書き込むことで入力信号の極性を選択することができます。
root@metis:/sys/bus/iio/devices/iio:device0# cat in_voltage_offset_available
-32768 0
|<28em 10em 16em>|
^ Offset Value ^ 極性 |
| -32768 | バイポーラ (-XX [V] 〜 +XX [V])|
| 0 | ユニポーラ (0 [V] 〜 +XX [V])|
\\
== 電圧レンジの選択 ==
**in_voltage_scale_available** から読み出せる値から選択し、それぞれのチャネルの **in_voltageN_scale** に書き込むことで電圧レンジを選択することができます。
root@metis:/sys/bus/iio/devices/iio:device0# cat in_voltage_scale_available
0.312500 0.156250 0.078125
|<30em 7em 7em 15em>|
^ Offset Value ^ Scale Value ^ 電圧レンジ |
| -32768 | 0.312500| -10.24〜10.24 [V] |
|:::| 0.156250| -5.12〜5.12 [V] |
| 0 | 0.156250| 0〜10.24 [V] |
|:::| 0.078125| 0〜5.12 [V] |
\\
== 値の読出と換算 ==
レンジと極性を選択し、**in_voltageN_raw** を読み出した後で下記演算をすることで電圧値を求めることができます。
$$ (in\_volatageN\_raw + in\_voltageN\_offset) \times in\_voltageN\_scale $$
\\
root@metis:/sys/bus/iio/devices/iio:device0# cat in_voltage7_offset
-32768
root@metis:/sys/bus/iio/devices/iio:device0# cat in_voltage7_scale
0.156250
root@metis:/sys/bus/iio/devices/iio:device0# cat in_voltage7_raw
40918
root@metis:/sys/bus/iio/devices/iio:device0# echo "(40918-32768)*0.156250" | busybox bc
1273.437500 <---- 1273.4375 [mV]
\\
==== 電圧/電流 モード切り替え(Voltage/Current Mode Switching) ====
コネクタ横の DIPSW により、入力毎に 下側(電圧モード) / 上側(電流モード) でモードを切り替えます。\\
(The mode is switched between lower (voltage mode) and upper (current mode) for each input with the DIPSW next to the connector.)
※ 上記等価回路の **AIN MODE スイッチ** になります。
**電流モード** を選択すると 250Ω の抵抗の両端の電圧を計測することになるので、求めた電圧値を 250 で割ることで電流値を求めることができます。
{{:use_ai:max3xx_ai_01.png|電圧 / 電流モード切り替え DIPSW}}
\\