RS-232Cを理解する


もはや骨董品になりつつあるRS-232C。ここの目的は、マイコンのTX,RXからテキストのコマンドを送りつけて、機器とRS-232Cと通信することをめざす。テストとして、NEW portの光パワーメーターのRS-232Cで制御する。

https://www.equipland.com/objects/catalog/product/extras/1030_1830-c.pdf

その前に、RS-232Cのピンについてのお勉強。装置のマニュアルに掲載されているピン配置

装置側PC側

各ピンの役割
DTEDCE
1 DCDData Carrier Detectモデムでデータ通信する時。1にしておく←1 CDCarrier Detect(キャリア検出)
2 RxDRecieve Data受信データライン←2 SDSend Data(送信データ)
3 TxDTransmit Data送信データライン→3 RDRecieve Data(受信データ)
4 DTRData Terminal Readyこちらの電源が入っている事を相手に教えてあげる。1の時電源ON→4 DRData Set Ready(データセットレディ)
5 GNDGroundGND。信号のグランド-5 SGSignal Ground(シグナルグランド)
6 DSRData Set Ready相手側の電源が入っているか確認。1の時電源ON。←6 EREquipment Ready(データ端末レディ)
7 RTSRequest to Send送信要求、ゼロの時相手は送信を止める→7 CSClear to Send(送信可)
8 CTSClear to Send7RTSの逆。1との時こちら側からデータを出力する←8 RSRequest to Send(送信要求)
9 RIRing Indicatorモデムからの受信している間1になる
オープン
-
9 


↑から自作で回路を作製する際、7&8番ピンの直結しておき、
マイコンからの送信要求(7番ピン)に対し、無条件に送信可(8番ピン)を返すようしておけばとりあえずはよさげ。
他に必要なのは、5番ピンはグランドと、2番ピンと3番ピンがマイコンからの制御信号のやり取りに使う。

一通り理解が進んだところで、実装!
今回は、DIPでICが大きいが、とにかく動かすを目的に、RS232CレベルのIC:ADM3202(一つ200円@秋月)を使う。表面実装用なども売ってはいる。データシート
VCC=3.3 V(5Vでも動く)で使っても±9VのRS-232Cの出力に変換してくれる。
ピン数が多いが、コンデンサを回りにくっつけるだけなので実質の配線は少ない。

ピン配列から、2チャンネル分あるが、T2,R2を使った方がすっきり配線できる。


String incomingStrings;


void setup() {
  Serial.begin(9600); // opens serial port, sets data rate to 9600 bps
  Serial.print("K1\n");
}

void loop() {
 Serial.print("W?\n");
  delay(10);
  if (Serial.available() > 0) {
    // read the incoming byte:
    incomingStrings = Serial.readString();
    Serial.println(incomingStrings);
  }
  delay(50);

}




W?とコマンドを送ると、0800と返してくる(波長設定を聞いている)

はまった事:
RS-232Cの2ピンは、データを受け取る側なので、マイコンのTXと接続すると思い込んでいた。実際は、RS-232Cの3ピンとT2OUT-TX2IN-マイコンのRx、2ピンとR2OUTーR2INーTXを接続すると動いた・・・解明できていないが、俗にいうクロスケーブル?
ここは、ボード側でストレート、クロスをジャンパー設定できるようにするとかしておいたほうがよさそう




コメント

このブログの人気の投稿

Attiny85とAQM0802A(LCD)のI2C接続

ILI9341 240X320 Arduino

Attiny85 FuseRest