はじめに

こんにちは、どふぃです。
最近は、技術研修の一環として制作実習を行っていました。

制作したのは、家庭用の警報機です。
人を検知すると、音と光でアラームを発生させる装置となっております。

制作実習の中では、たくさんのことを学ばせて頂きました。今回から少しずつご紹介していきたいと思います。

制作実習の始まり ~10月~

”入社後より学んできた「知識、技術」を用いて、研修の集大成となる品を制作する”という目的で、制作実習を開始しました。

私が入社後に勉強した製品は、以下です。
・電源 IC
・A/D コンバータ
・D/A コンバータ
・オペアンプ etc・・・・・

上記アナログ製品、知識を用いて、家庭用の警報機を作ります。

通信って??

初めに躓いたのは、表題にある通り”通信”という概念です。
上記の製品の中で、 A/D コンバータや D/A コンバータはデジタル信号も扱うため、データ送受信のための”通信”が必要になります。

電源をはじめとするアナログ製品は、基本的に導線で配線を行い、これによって機器が電気的に接続された状態になります。

一般に、回路図で表される線の部分は導線で配線されます。
私は初め、導線で回路図通りに配線を行う = 通信ができると思っていました。

この時の私の脳内イメージが図 1 です。

図 1 配線(脳内イメージ)

簡単に装置の処理を説明します(図 1 参照)。

1. センサーがデジタル信号( High / Low )を送信
2. マイコンが受信し、信号が High の時のみデジタル信号を送信
3. D/A コンバータでデジタル信号をアナログ信号に変換し、出力

これで装置のブロック図が決まったので、部品選定をしようと考えていると、先輩から指摘が入ります。

先輩「ところで、何を使って通信するの?」

私「・・・・・・・!?(いや、何を使うって導線で接続してますが。。。)」

私は初め、先輩の指摘の意味を全く理解できませんでした。

その後調べてみると、デジタル信号(データ)の送受信をするためには、「通信」をしなければならないことがわかりました。(もちろん導線で接続しただけでは通信はできません。。。)

先輩の指摘の意味は分かりましたが、この時の私は「通信」については全くの初心者でした。
ここから調査の日々が始まり、結果的には「シリアル伝送の I2C 通信」という通信方式を採用することにしました。

ここで、「シリアル伝送」と「 I2C 通信」について、少し説明したいと思います。

シリアル伝送??

シリアルとは、「直列」の意味です。
その意味の通り、シリアル伝送は直列に並んだデータを 1 本の線で 1bit ずつ順番に送ります(図 2 )。

図 2 シリアル伝送

シリアル伝送(図 2 )は、データ伝送の線の数は 1本で済みますが、伝送の際に送信側でパラレル→シリアル、受信側でシリアル→パラレルへのデータ変換が必要です。

図 3 コマンドとデータ入力のフォーマット (引用元:LTC2631 データシート)

I2C 通信??

シリアル伝送方式の 1 つである I2C ( Inter - Integrated - Circuit )には、以下 3 つの特徴があります。

1. 2 本のバスライン( SCL (クロックライン)と SDA (データライン))のみでデータの通信が可能
2. 1 台のマスター(制御する側)で、複数のスレーブ(制御される側)を設定できる
3. 個々のスレーブがアドレスを持っており、 1バイト( 8bit )転送毎に受信側が「アクノリッジ」をマスターに送る
※アクノリッジについては後程説明

図 3 I2C 通信

私の装置では、、回路設計の際に線の数を減らしたい、 A/D コンバータ、 D/A コンバータの 2 つをスレーブとして設定しなければならなかったという理由から、 I2C 通信を採用しました。

これで理論は完璧。いよいよ実機での動作確認です!

トラブル発生!? ~アクノリッジが返ってこない~

理論を理解したので、早速実機で I2C 通信を行ってみました。
しかし、ここでトラブル発生です。

なんと「アクノリッジ(図 3 参照)」が返ってこないではありませんか!!?
アクノリッジとは、マスタ側が指定したアドレスが接続したいスレーブのアドレスと一致した際にスレーブ側から返送される「接続ができています」といったような合図です。

これが返ってこないということは、私の装置でいうとマイコン(マスター)がD/Aコンバータ(スレーブ)を認識していないということになります。

まず、マスターで指定したアドレスを確認しました。

I2C 通信では「スレーブのアドレス( 7bit ) + 送信・受信指定ビット( 1bit )」の計 8bit でアドレスを指定します。
使用した D/A コンバータ( LTC2631A-12 )のスレーブアドレスは「 0010000 」で、今回は送信( Write )なので、 8bit目は " 0 "です。

よって、マスターが指定したアドレスは「 00100000 」となります。
そのため、マイコンのプログラムでは 16進数に変換した 0x20 と定義しました。

実際の測定波形が図 4 です。

図 4 SDAとSCL

図 4 を見ると、明らかにおかしいことがわかります。
「 00100000 」のデータを送信したはずなのに、「 01000000 」になっています。

また、正常であれば 9bit 目は Low ( 0 )でアクノリッジが返送されるはずですが、 9bit 目は High ( 1 )でした。

何故なんだ。。。。。

⇒後編へ続く

終わりに

制作実習の中では”通信”にかなり苦しめられました。

まだまだ勉強が必要です。。。

さて、次回記事ではどのようにして「アクノリッジ」の問題を解決したのかをご紹介いたします。
次回記事もよろしくお願い致します。

最後に弊社で取り扱っているアナログ IC メーカーの紹介をさせて頂きます。

Analog Devices ~アナログ・デバイセズ~

高性能標準アナログ IC のリーディングメーカー。
アンプ、バッテリーマネージメント、データコンバータ、高周波、インタフェース、電圧レギュレータ、電圧リファレンスなどお客様の最終製品の性能、品質を定め、安定供給を実現。
基本的に製品の製造中止は行わず、産業機器など長期利用のお客様にも安心してお使いいただけます。

アナログ・デバイセズ 詳細ページ