TOPに戻る

コンテックRAS/RTC Raspberry Pi ボードを使う④A-D変換ボード

 CPI-AI-1208LIボードは、ラズパイに接続して利用できる「アナログ入力 Raspberry Pi ボード 12ビット 8チャネル(差動4チャネル) 電圧入力/電流入力」のHATです。

 コンテックのHATシリーズに、2021年の暮れ、次のボード類が追加されました。

  • CPI-AI-1208LI アナログ入力 Raspberry Pi ボード;12ビット 8チャネル(差動4チャネル)電圧入力/電流入力
  • CPI-AO-1602LC アナログ出力 Raspberry Pi 拡張ボード;16ビット、2チャネル電圧出力/電流出力
  • CPI-CNT-3201I カウンタ入力 Raspberry Pi 拡張ボード;32ビット・アップダウン・カウンタ、1チャネル単相/2相(A/B/Z)
  • CPI-DIN01 Raspberry Pi 拡張ボード;DINレール・マウント・キット

CPI-AI-1208LIの主なスペック

  • ソフトウェアで±10V、±5V、±2.5V、0~+10Vの入力レンジ、シングルエンド入力または差動入力に切り替え可能(AD7327
  • I/Oモジュールのスイッチ設定で±20mAの電流入力への切り替えが可能
  • アナログ電圧入力はバス絶縁
  • -20~+60℃の周囲温度環境に対応

環境

uname -a
Linux raspberrypi 5.10.17

接続

 ラズパイ4の上にCPI-AI-1208LIボードを差し込みます。電源はラズパイ4から配給されます。

 ラズパイ4の上にCPI-RASボード、その上にCPI-AI-1208LIボードを積み重ねて使いますが、セットアップ時にうまく確認用サンプル・プログラムが動きませんでした。最初は、ラズパイ4の上にCPI-AI-1208LIボードだけを載せてセットアップし、動作確認後に、ラズパイ4の上にCPI-RASボード、その上にCPI-AI-1208LIボードを積み重ねるのが良いかもしれません。

ドライバのインストール

 ここから

 ここから

  • Readme
  • Linux版アナログ入出力ドライバ API-AIO(LNX) 開発環境(フルセット) Ver. 4.90 ファイル名: caio490F.tgz

をダウンロードします。

 Webにhelpがあります。https://help.contec.com/pc-helper/api-tool-lnx/aio/jp/caio.htm

 Readmeに書かれているインストールの手順です。管理者モードで行います。

# cd
# mount /dev/cdrom /mnt/cdrom
# cp /mnt/cdrom/linux/aio/caioXXXj.tgz ./
# tar xvfz caioXXXj.tgz
................
# cd contec/caio
# make
................
# make install
................
# cd config
# ./config
..... 以下設定 .........
# ./contec_aio_start.sh

 I2Cデバイスを有効にしておきます。実際に実行します。

cd Downloads

ls

でcaio490F.tgzがダウンロードされていることを確認します。

tar xvfz caio490F.tgz

cd caio490F/contec/caio

make

sudo make install

cd config

sudo ./config

>>>失敗時のログです<<<

$ sudo ./config
----------------------------------
CONTEC API-AIO(LNX) Configuration
----------------------------------
メッセージ:デバイスを検出中です。
...................................................................................

--------------------------------------------------------------------------------
デバイス一覧
--------------------------------------------------------------------------------
DeviceName Product Name ID IP/Master IP Status
設定されているボードはありません。
--------------------------------------------------------------------------------
[#]:デバイス選択 [o]:リスト並べ替え [r]:デバイスリスト再検出
[d]:デバイス削除 [a]:デバイス手動追加 [e]:診断レポート
[s]:設定の保存 [q]:終了
設定を行うデバイスを選択してください。
コマンド入力:a
********************************************************************************
[1]:NET (WQ/CPSN)
[2]:PCI (PCI/LPCI)
[3]:PCI Express (PE/LPE)
[4]:USB
[5]:CPI
[m]:メニューに戻る
追加するデバイスのタイプを入力してください。
コマンド入力:CPI
********************************************************************************
メッセージ:入力値の範囲は[1-5]です。追加するデバイスのタイプを再度入力してください。

コマンド入力:5
********************************************************************************
---------------------------------------------------------------------------
デバイスリスト
---------------------------------------------------------------------------
[1]:CPI-AI-1208LI
[2]:CPI-AO-1602LC
---------------------------------------------------------------------------
[#]:デバイス選択 [b]:戻る [m]:メニューに戻る
追加するデバイスを選択してください。
コマンド入力:1
***************************************************************************
--- ボードIDを入力してください。(10進数:0-7) ---
ボードID:1
--- デバイス名を入力してください。 ---
デバイス名:ADC
登録しますか?(y/n):y
メッセージ:デバイス手動追加成功。
--------------------------------------------------------------------------------
デバイス一覧
--------------------------------------------------------------------------------
DeviceName Product Name ID IP/Master IP Status
[1]:+ ADC CPI-AI-1208LI 1 Unconnected
--------------------------------------------------------------------------------
[#]:デバイス選択 [o]:リスト並べ替え [r]:デバイスリスト再検出
[d]:デバイス削除 [a]:デバイス手動追加 [e]:診断レポート
[s]:設定の保存 [q]:終了
設定を行うデバイスを選択してください。
コマンド入力:q
********************************************************************************
メッセージ:設定が保存されていません。
設定を保存しますか?(y/n):y
メッセージ:設定ファイルは'contec_aio.conf'です。
メッセージ:起動スクリプトファイルは'contec_aio_start.sh'です。
メッセージ:停止スクリプトファイルは'contec_aio_stop.sh'です。
確認(y):^C

$ sudo ./config
----------------------------------
CONTEC API-AIO(LNX) Configuration
----------------------------------
insmod: ERROR: could not insert module 5.10.17-v7l+/cgetres.ko: File exists
insmod: ERROR: could not insert module 5.10.17-v7l+/cgetres_usb.ko: File exists
mknod: /dev/cgetres: ファイルが存在します
mknod: /dev/cgetres_usb: ファイルが存在します
メッセージ:デバイスを検出中です。
...................................................................................
.
--------------------------------------------------------------------------------
デバイス一覧
--------------------------------------------------------------------------------
DeviceName Product Name ID IP/Master IP Status
[1]: ADC CPI-AI-1208LI 1 Unconnected
--------------------------------------------------------------------------------
[#]:デバイス選択 [o]:リスト並べ替え [r]:デバイスリスト再検出
[d]:デバイス削除 [a]:デバイス手動追加 [e]:診断レポート
[s]:設定の保存 [q]:終了
設定を行うデバイスを選択してください。
コマンド入力:q
********************************************************************************

sudo ./contec_aio_start.sh
pi@raspberrypi:~/Downloads/caio490F/contec/caio/config $ sudo ./config
----------------------------------
CONTEC API-AIO(LNX) Configuration
----------------------------------
メッセージ:デバイスを検出中です。
...................................................................................
.
--------------------------------------------------------------------------------
デバイス一覧
--------------------------------------------------------------------------------
DeviceName Product Name ID IP/Master IP Status
[1]: ADC CPI-AI-1208LI 1 Unconnected
--------------------------------------------------------------------------------
[#]:デバイス選択 [o]:リスト並べ替え [r]:デバイスリスト再検出
[d]:デバイス削除 [a]:デバイス手動追加 [e]:診断レポート
[s]:設定の保存 [q]:終了
設定を行うデバイスを選択してください。
コマンド入力:q
********************************************************************************

 登録はできていますが、Unconnectedは、つながっていないことを示しているようです。

 失敗した原因は、I2Cの設定です。GUIの設定ツールを使ってI2Cを有効にすると、/boot/config.txtには、

dtparam=i2c_arm=on

が書き込まれています。この状態で、i2cdetect -y 1を実行すると、CPI-AI-1208LI ボードの0x28を見つけてきます(ボード上のID設定はデフォルトの0)。0x2cと0x32のUUはCPI-RASボードです。

 しかし、正常には動きません。

 /boot/config.txtに、次の1行を追加します。

sudo nano /boot/config.txt

dtparam=i2c_vc=on

 CTRL-Oで上書き、CTRL-Xで終了し、rebootします。

>>>正常時のログです<<<

$ sudo ./config

 CPI-AI-1208LI ボードを検出し、DeviceNameはAIO000がふられています。

サンプル・プログラムの動作

 一度、shutdownし、電源を切り、再度電源を入れます。

 現在、~/Downloads/caio490F/contec/caio/configディレクトリで作業をしています。

sudo ./contec_aio_start.sh

を動かしておきます。

 ファイル・マネージャを使って、/home/pi/Downloads/caio490F/contec/caio/samples/en/python/console/SingleAiから、

  • caio.py
  • singleai.py

を、/home/pi/Downloads/caio490F/contec/caio/configへコピーします。

sudo python3 singleai.py

Please input device name :を聞かれるので、AIO000

Please select analog input range from the following listと聞かれているので、一番上の50を入力します。

Please input the channel through which analog input is performed 0~7 :入力チャネルを聞かれるので0を入力しました。

 以上で動作確認ができました。

連載 コンテックRAS/RTC Raspberry Pi ボードを使う

(1) ドライバのインストール

(2) サンプル・プログラムを動かす

(3) RTCを動かす

(4) A-D変換ボード

(5) A-D変換ボードのAPIを使う