実験 RS-485 (3) ArduinoでRS-485に対応する その2 熱電対ADAM-4011

 前回、電力量モニタKM-N1-FLKを使って、はんだゴテの消費電流の変化をロギングしました。今回は、電圧や温度を測れるモジュールADAM-4011を使います。

ADAM-4011のおもなスペック

 AdvantechのADAM4000シリーズは、熱電対、白金RTDなどの温度センサ、汎用A-Dコンバータ、D-Aコンバータ、リレーなどを搭載したデータ収集モジュールです。絶縁されたRS-485インターフェースをもちます。デフォルトの通信プロトコルは同社独自のアスキ・コードです。一部のモジュールはModbusが利用できますが、ADAM-4011は対応していません。

  • 電源電圧;10~30Vdc
  • データ転送速度;1200~38.4kbps
  • データ・フォーマット;1スタート・ビット、8ビット・データ、1ストップ・ビット、パリティなし
  • 対応熱電対; J、K、T、E、R、S、B
  • mV入力;±15、±50、±100、±500mV
  • Volt入力;±1、±2.5V
  • 電流入力;±20mA(125Ωが必要)
  • ディジタル入出力;入力1、出力2

ユーティリティで機能セット

 24V電源をつないだADAM-4011とUSB-RS-485ケーブル・コンバータを接続し、ダウンロードしたユーティリティADAM-4000-5000UtilityをWindows10で起動します。

 COM14に見えています。

 0番からスキャンすると02で見つかりました。

 利用する熱電対はK型なのでJ型から変更しました。Data Areaには読み出した温度が随時更新されています。

ADAM-4011のコマンド

 ADAM-4011で利用できるおもなコマンドです。AAはアドレスです。デリミタは0x0dです。

  • %AANNTTCCFF 構成の設定
  • $AA2 構成内容の問い合わせ
  • $AAF ファームウェアのバージョンの問い合わせ
  • $AAM モジュール名の問い合わせ
  • #AA アナログ・データ入力の読み出し
  • #** すべての入力に対してサンプリングの実行(デリミタ不要)
  • $AA4 サンプリング・データの読み込み

接続

 

スケッチ

 RS-485の通信は、SoftwareSerial(10、11番ピン)を利用しました。0、1番ピンのUARTはコンソールの表示で使われます。半二重の方向切り替えの3、4番ピンは前回と同じです。ただし、Modbusライブラリでは信号の切り替えの面倒を見てくれたのですが、ここでは手動で切り替えます。

#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); // RX, TX
#define MAX485_DE 3
#define MAX485_RE_NEG 2

void preTransmission() {
digitalWrite(MAX485_RE_NEG, 1);
digitalWrite(MAX485_DE, 1);
}

void postTransmission() {
digitalWrite(MAX485_RE_NEG, 0);
digitalWrite(MAX485_DE, 0);
}

void setup() {
pinMode(MAX485_RE_NEG, OUTPUT);
pinMode(MAX485_DE, OUTPUT);
digitalWrite(MAX485_RE_NEG, 0);
digitalWrite(MAX485_DE, 0);
Serial.begin(9600);
mySerial.begin(9600);
}

void loop() {
preTransmission() ;
mySerial.print("#**");
mySerial.print("#02\r");
postTransmission() ;
for (int i=0; i<9 ; i++) {
if (mySerial.available()>0){
Serial.print( char(mySerial.read() ) );
}
}
Serial.println();
delay(1000);
}

(※)オシロスコープのキャプチャは#02のデリミタとしてCR/LFを送ったときの状態です。

 実行結果です。データシート通りのフォーマットで読み取れています。

前へ

実験 RS-485 (2) ArduinoでRS-485に対応する その1 電力量モニタKM-N1-FLK

次へ

実験 RS-485 (4) ArduinoでRS-485に対応する その3 PTZ