RS232Cの電圧レベルをオシロスコープで測定してみた

インターフェース

RS232Cの電圧をオシロスコープで測定してみました。また通信プロトコルも確認しています。

市販のUSB-RS232C変換ケーブルの電圧波形を実際に確認しています。

RS232C通信の基礎を初心者の方にも分かりやすく紹介します。

 

スポンサーリンク

RS232Cの電圧レベルをオシロスコープで測定してみた

日本メーカーのUSB-RS232C変換ケーブルをオシロで出力電圧レベルを確認しました。

 

オシロでRS232Cの出力電圧を測定するとHigh(1)が「+10.8V」、Low(0)が「-10.8V」でした。

RS232Cの出力電圧の規定として「H_+5V~+15V」「L_-5V~-15V」ですので範囲内でOKです。

 

また通販で購入した格安のUSB-RS232C変換ケーブルの出力電圧も確認してみました。

 

なんと海外製の格安品は出力電圧が規格外でした!Lowが全く満たせていません。

(HIghは+5Vをギリギリ満たせていましたが…)

 

今回実施したオシロの測定方法やRS232C通信の解析方法含めて紹介していきます。

 

RS232CのUSB変換ケーブルの電圧測定する準備

RS232C通信の基礎に関しては以前に下記記事でアナライザを使って解析しました。

リンク先はこちらから

RS232CとUARTの違いをアナライザで確認してみた
今回は筆者が持っているラズベリーパイとRS232Cを接続して「RS232CとUARTの違いをアナライザで確認してみた」を紹介します RS232CとUART通信の差を比較するまでの手順を紹介しています。「自分でRS232Cを色々...

 

まだその際はオシロスコープを使った電圧測定は出来ていませんでした。

 

しかし下記記事で紹介したように最近オシロを購入しました!(リンク先はこちら)

オシロスコープはおすすめ!電子工作のために購入してみた
オシロスコープを個人で購入してみました。 オシロがあれば電子工作の測定、電子回路の勉強などに使えて非常に役立ちます。 現役のエンジニアが自宅でオシロを使うメリット・デメリットを説明します。 また実際に通販で購入して、使い始めるまでの一連の流れも紹介します。

 

オシロスコープを使ってRS232Cの電圧測定を実施してみます

 

RS232Cのピンアサインを確認する

今回使うRS232CのD-Sub9ピン(メス)のピンアサインを確認します。

TXD(送信)とGND間で電圧測定できるように準備します。

 

ジャンパー線で信号を引き出してプローブと接続します。

これでオシロでRS232Cの出力電圧を測定できるようになりました。

 

RS232C変換ケーブル(バッファロー製)

今回一番メインに測定で使うのはバッファロー製 RS232C変換ケーブルです。

型式は「BSUSRC06SV」です。

 

昔からよくある変換ケーブル、かつ日本メーカーのため信頼できます。

 

RS232C変換ケーブル(Amazonの海外製_格安品)

比較対象のケーブルとして海外製 格安品_RS232C変換ケーブルを用意しています。

 

どれぐらい安いのかというと、先述した日本メーカー品と比べて1/3程度の価格で買えてしまいます。

 

UART変換ケーブル

また今回折角ですのでUARTの電圧レベルも一緒に確認してみます

こちらもAmazonで購入したUART-USB変換ケーブルにジャンパーで線でプローブと接続します

 

UART通信の波形も以前にアナライザで解析しました。

下記記事です。よろしければご覧ください。(リンク先はこちら)

UART通信のシリアル波形をアナライザで解析してみた
今回は簡単にアナライザでラズベリーパイ(raspberry pi)のUART通信のシリアル波形を確認するまでの手順を紹介していきます。 I2CやSPIも同様にアナライザで波形確認していますのでよろしければ下記記事もご覧ください。 ...

 

ラズベリーパイでRS232Cの出力する

電圧測定をする上で、RS232Cの信号出力をする必要があります。

今回はラズベリーパイとPythonでRS232Cの出力を行います。

 

以前に下記記事でラズベリーパイとUARTでシリアル出力しました。

UARTでもRS232Cでも同じ対応が可能です。リンク先はこちらです。

Pythonでserial(シリアル)通信!Read/Writeの波形を見てみた
uartのシリアル通信でRead/Write・ボーレート変更時の波形をアナライザで確認しました。Pythonとraspberry piでテストして測定動画を撮っており、シリアル通信の使い方・基礎を確認したい方におすすめです。 以前...

 

pyserialをインストール

PythonでRS232C(シリアル)通信するために「pyserial」のパッケージをインストールします。

下記コマンドで簡単にインストールできました

pip3 install pyserial

 

プログラムを実行する前に変換ケーブルを挿しておく

これからプログラムを作成しますがRS232C-USB変換ケーブルはラズパイに挿しておきます。

予め変換ケーブルを挿しておかないと、プログラム実行時にエラーになります。

 

ラズパイでPythonのプログラムを用意する

PythonでRS232C通信するプログラミングを行っていきます。

ラズベリーパイはPythonがデフォルトでインストールされています。

 

一度もプログラミング・Pythonを使ったことが無い方でも大丈夫です。

下記記事でラズパイで簡単なプログラムの作成・実行方法を紹介しています

(リンク先はこちらから)

ラズベリーパイでプログラミング入門!Pythonの簡単な始め方
プログラミングを始めたい方にラズベリーパイを使った簡単な入門方法を紹介します。 プログラミング言語の中でも初心者にもやさしく、人気なPythonがラズパイならば簡単にスタートできます。 ラズベリーパイでプログラミング入門!Pytho...

 

「~~.py」というファイルを作って、Pythonの環境開いて3行書いて実行すれば完了です。

 

下記プログラムをコピペしてもらっても構いません。

 

Pythonのプログラムの内容

実際作成したプログラム内容も非常に簡単です。下記の2手順となっています

  1. 「pyserial」をインポートしてusb-シリアル変換(/dev/ttyUSB0)を使うように定義します
  2. RS232C(シリアル)通信で「Hello World」とWrite(出力)します。

 

今回の通信速度は115200bpsですが、9600bps,403200bps,3Mbpsの波形も確認しました。

下記記事で紹介してます。よろしければご覧ください。(リンク先はこちら)

USBシリアル通信のボーレートの最大は?通信速度(bps)をオシロで確認
シリアル通信の速度をオシロスコープで確認してみました。 USBシリアル変換ケーブルのICを調べて、最大のボーレートまで試しています。 シリアル通信のボーレートの設定で通信速度(bps)がどのように変化するか紹介します。

 

オシロスコープでRS232Cの電圧を測定する

準備は整いましたのでオシロスコープで電圧測定を行っていきます。

 

ただし、今回の筆者が購入したオシロのRIGOL DS1054ZはRS232Cのデコード機能があります。

折角なのでデコード機能を使ってRS232C通信のプロトコルも確認していきます。

 

今回の測定の場合、デコード機能でPythonから出力した「Hello World」を解析できています

 

オシロスコープのデコード機能の使い方

今回は筆者のオシロのRIGOL DS1054Zでのデコード機能の使い方を紹介します。

 

MATH(演算)の機能を使う

オシロスコープのMATH(演算)を押します

 

Decode(デコード)1を選択する

「Decode1」を選択します。

RS232C以外のI2C・SPIも同様にデコード可能ということです。

またI2C・SPIも別に記事を書きたいと思います。

 

デコードの詳細設定を行う

どのようにシリアル波形をデコード(復号)したいかの設定を行います。

今回筆者の場合は下記設定になりました。

  • Decoder(デコーダの種類) → RS232C
  • Decode(復元した機能を使うか) → ON
  • TX(送信信号を受けるオシロのプローブCH) → CH1
  • Baud・Preset(RS232Cの通信速度) → 115200bps

 

立ち上がり・立ち下がりの極性を設定

シリアル波形の立ち上がり・立ち下がりの極性を設定します。

RS232Cの場合は「未送信時_Low(0)」「送信時_Hi(1)」となります。

そのため立ち上がりでデコードする必要があります

 

UARTの場合は「未送信時_Hi(1)」「送信時_Low(0)」となります。

そのため立ち下がりでデコードする必要があります

 

その他の設定

LSB,データ幅,ストップbit,パリティビットはデフォルト設定で今回は測定しています。

もし設定必要な方は適宜修正をお願いします。

 

また今回はTXのみを測定していますが、RXも測定可能です。

 

RS232Cの電圧測定の結果

デコード機能もONにして、RS232Cの電圧を測定した結果を記載していきます。

※ジャンパー線も使っており、またデバッグレベルの測定である旨をご了承ください。

 

RS232Cの電圧レベル(バッファロー製)

バッファロー製のRS232C変換の電圧レベルを確認しました。

 

電圧レベルを測定するとHigh(1)が「+10.8V」、Low(0)が「-10.8V」でした。

RS232Cの出力電圧の規定として「H_+5V~+15V」「L_-5V~-15V」ですので範囲内でOKです。

 

RS232Cの電圧レベル(Amazonの海外製_格安品)

Amazonで購入した格安品のRS232C変換電圧レベルも確認しました

 

海外製の格安品は出力電圧が規格外でした!特にLow(0)がマイナスの電圧を満たせていません。

(HIghは+5Vをギリギリ満たせていましたが…)

 

UARTの電圧レベル

参考までにUARTの電圧レベルも確認しました。

 

UARTの電圧レベルの3.3Vを確認できました。

論理もRS232Cと逆のアクティブLowを確認できています。

 

かなり今回は適当に測定していますので、波形がかなりギザギザになっています。

OS(オーバーシュート),US(アンダーシュート)がひどいです。

 

RS232CのD-Sub9ピンの電圧の仕組み

なぜ格安品のRS232C変換ケーブルが電圧レベルを満たせていないか追加調査します

RS232CのD-Sub9ピンの変換ケーブルの仕組みを確認していきます。

 

USBシリアル変換ICを調べる

今回測定した格安品のケーブル内のUSBシリアル変換のIC含めて考察していきます。

ラズパイで下記コマンドを打ち込めば可能です。USB関連の情報を取得できます。

dmesg | grep -i usb

 

wch製のCH341というUSBシリアル変換ICを使っていることが分かりました。

 

実際の調査結果のログは下記になります。

 

CH341のデータシートを確認してみる

CH341のデータシートを確認してみました。(データシートのリンク先はこちらから)

本来のRS232C変換ケーブルをCH341のICを使って構成すると下記形になります。

※上記回路図はあくまでデモ用です。多くの信号を省略しています

 

概略ですがRS232C変換ケーブル内のICのイメージを紹介します。

①IC(CH341)でUSB信号からシリアル信号に変換します。
※この時点でプロトコルとしてはRS232Cになっています。(電圧レベルは5V)
②IC(MAX232)でシリアル信号からRS232Cに変換します。
※電圧レベルを5VからRS232Cの±5V~15Vに変換します。

 

CH341でRS485通信もできる

ちなみ今回ののCH341のICを使ってRS485通信の回路構成も可能です。

下記記事でRS485通信の測定と一緒にICの調査もしています。

よろしければ一緒にご覧ください。(リンク先はこちらから)

RS485通信の電圧と波形をオシロスコープで確認してみた
RS485の差動の波形を実際に測定・解析してみました。 電圧レベル・差動信号をオシロスコープで確認しています。 RS485通信の基礎を実際の波形交えて、初心者の方にも分かりやすく紹介します。

 

RS232Cのトランシーバ・レシーバがない

今回の格安品にはRS232Cトランシーバ・レシーバが載っていないと思われます。

(あくまで筆者の見解です。ご了承ください)

 

回路図イメージで言うと下記イメージです。

恐らくコストダウンのためにMAX232のICを省略していると思われます。

CH341からの信号を直接D-Sub9ピンに接続している様子です

 

今回の格安品の波形は「Highが5V」「Lowが0V」でしたので辻褄が合います。

(プロトコルとしては一応RS232C通信にはなっていますが…)

 

RS232C通信は可能なのか?

この波形で「RS232C通信ができるのか?」の疑問に関しては「不明」という回答になります。

RS232Cレシーバとしては±3Vの範囲はHighかLowか定まらない「不定」箇所になるためです。

 

※RS232Cの規格詳細についてはTI社のデザインノートを参考お願いします。

(英語ですがリンク先はこちらから)

 

結局のところ格安品の変換ケーブルでRS232C通信が正常に可能かは運次第となります。

(実力でRS232C通信が動いてしまうケースも多いとは思います)

 

※あくまで今回の検討は筆者の個人的な考えという旨をご了承お願いします

 

まとめ

今回の記事をまとめますと下記になります。

RS232Cの出力電圧レベルは「H_+5V~+15V」「L_-5V~-15V」
格安品のUSB-RS232C変換ケーブルは電圧レベルが規格外のケースがある
オシロスコープのデコード機能がRS232C通信の解析に便利だった

 

今回オシロで電圧測定だけでなく、デコード機能を使うことで効率よく通信解析できました。

筆者のRIGOL DS1054Zは標準でRS232C含めてデコード機能が付いており非常に便利です。

よろしければ皆さまもオシロスコープを触ってみてください

コメント