獣医さんの電子工作とパソコン研究室
 
 50−2.モデムダイアルイン・ナンバーディスプレイアダプタの製作
 

 

 ■ ダイアルイン(ナンバーディスプレイ)解析アダプタ
 NTTの技術資料を見ただけではなかなか理解できず、実験しながら信号波形なども参考にし考えました。実験の結果各信号の検出と、電話機の動作の検出、それらを規定の手順に従いコントロールすることで、ダイアルインデータをとりだせそうなことがわかりました。
 
■モデム受信部
 NTTの技術資料よりモデムデータ部の規格は 1200bps FSK 半二重 V.23準拠 というものでした。昔300ボーのモデムを作った時のことを思い出し、すぐに思いついたがモデム専用ICです。いろいろ調べてみましたが、現在では専用ICというものがほとんどなくて、簡単に使えそうな OKI の MSM7512BというIC(日本語データシート)があることがわかったのですが、廃盤品種で手に入りません。
 ネットで調べて (株)エスプロ で個人にも販売してくれるとのことで、1個1500円で購入しました。
とても簡単、シンプルなICで、16pin DIPというのもありがたいです。
応用回路例もこんなに簡単です。
 
データシートは入手できたのですが、アプリケーションノートも存在するらしいのですが、どこにも見つかりませんでした。
 現在はモデム信号の処理はCPUがソフトウェアで対応しているため、低速の専用モデムICというものは姿を消しているようです。
今回もソフトウェアモデムとしてH8 CPUでも対応できると思いますが、ソフト開発力のなさから、専用のモデムICを使うことにしました。
  ●その他、使えそうなモデムIC 
   TI TCM3105  http://www.tcm3105.com/tcm3105.pdf
   AMD AM7910 http://www.klm-tech.com/technicothica/7910.html
  ●ソフトウェアモデム資料
   TI   DSP Solutions for Telephony and Data/Facsimile Modems
       MSP430 Embedded Soft-Modem Demo
   MICROCHIP  dsPIC DSC Soft Modem Library 
   
電話回線とのインターフェースであるモデムトランスはPCの古いISAモデムより取り外したもので、MIDCOM社のもので、インピーダンスが600Ωとなっていました。古いモデムがあれは、たいていトランスは使っていると思います。
   MIDCOM社 http://www.midcom-inc.com
   同社テクニカルノートには参考になる電話インターフェースの記事がいろいろあります。
 
その他、トランスを使わずにライン上の音声を取り出す方法でも良いのかもしれません。
  28-2.ピンク電話課金信号発生器の製作 DTMF信号の取り出し
  http://www.electronic-circuits-diagrams.com/telephones_circuits.shtml
  http://www.circuitsarchive.org/index.php/Phone_Recorder
 
 
■コントロール部 H8-3664N 
 最初は秋月のPIC-BASICでコントロールしようかとも考えたのですが、最近いろいろ実験して使い慣れてきたH8-3664を使うことにしました。I/Oピン数も充分ですし簡単に書き込みができます。
 使用したモジュールは秋月電子より販売されている AKI−H8/3664N タイニーマイコンキット・消しゴム付(モジュール単品)を用い、Renesasの開発環境であるHEW(High-performance Embedded Workshop)を使用し C言語でプログラムを開発しました。

 H8-3664Nマイコンモジュール側の回路ですが、内臓EEPROMを使うためCN2-3,4を10Kの抵抗でプルアップしています。また、モデムICからの出力はTTLレベルですので2SC1815で反転(負論理)し、簡易232Cインターフェースを介してMAX232Cの入力に入れています。
 MAX232Cの送信側はPCに直接つなげるようにしておき、各種ステータスのモニタ出力をPCで観察できるようにし、受信側はモデムICと切り替えられるようにして、書き込み時にはPCからCPUに書き込みができるようにしておきました。
 

画像をクリックすると大きな回路図が表示されます。
 
■回線インターフェース部
 回線インターフェース部は以前製作したピンク電話課金アダプタを参考にして計画いたしました。
単純に考えていたのですが、いろいろ実験しているうちに問題も多く、最終的にこの回路になりました。
●PC1フォトカプラ:回線の反転を検出します。
以前はツェナーダイオードなども使用したのですが、単純に抵抗で電流制限するだけのものとしました。たろたろな資料を見ても単純なものはこのようになっており、一応働いています。
着信時L1-L2の極性が反転しますので、反転を着信とみなしています。
●PC2フォトカプラ:受話器を上げた状態の電流ループが形成されている状態を検出したり、通話中を検出します。
●PC3フォトカプラ:はTEL Bの受話器を上げた状態を検出するためのもので、通常はRY2で回線とは切離されて、TEL Bに単純に電圧を掛けているだけです。RY3がないとTEL Bにはまったく電圧がかかっていません。それではTEL Bから発信する際の受話器を上げた動作を検出できないため、RY3で単純に電源とLED(フォトカプラ)と電話機が直列に繋がった状態を作り、検出動作をさせました。電圧は5V以上必要で、製作したものは12Vを供給していますが、5Vでもほとんどの電話機を検出できるとおもいます。

以上3つのフォトカプラの出力は、それぞれ2SA1015で受け、回線が反転したときの目印にLEDを光らせるようにしています。

●RY1リレー、トランス:モデム信号を受信するための切替となります。RY1が動作すると回線はトランスに直接繋がるようになり、直流ループを形成します(電話機の受話器を上げた状態になる)。
この直流ループ維持の方法も、資料をみますと電子式に行うものが主流のようですが、直接トランスをつないでも大丈夫です。
●RY2リレー:TEL A と TEL B の切替です。指定した電話番号への着信があった時にTEL B側へ切り替えます。
●RY3リレー:TEL B の通話時と オフフック検出時の切替用です。

こう書いてみると、それほど難しい回路ではありませんが、ここまで辿り着くには結構時間がかかりました。回路図は最近良く目にするEagleで作成しました。Eagleはとても便利です、こちらのサイトにわかりやすく解説が出ています。
 

画像をクリックすると大きな回路図が表示されます。
 
ブレッドボードでの実験の様子
木の板にブレッドボードを固定して使っています。
配線はLANケーブルや電話配線用ケーブルをばらして使っています。
ビニール被覆の単線で、爪で被覆を剥けるので便利です。
実験時にはモデム信号のモニタとして、4558とLM386でスピーカを鳴らしています。
 ■ コントロールプログラムについて (HEW−C言語でのプログラミング)
■インクルードファイル
machine.h
iodefine.h
おまじないのファイル
DectoBin.h 自分でわかりやすいので、2進数表記できるようにしただけ
LCD.h LCDコントロール用ファイル。トラ技 2005年2月号 R8C/Tinyマイコン入門 第4回 参考にしH8用に改良。自分なりにに使いやすいようにしてあります。
IIC_EEPROM.h I2Cを使って内臓EEPROMにアクセスするためのファイル。ルネサスのアプリケーションノートに出ていたものに少し改良を施した。
SCI_232C.h  RS232Cシリアルデータ通信用。アプリケーションノートを参考に使いやすいように改良。
 
本体 メインプログラム です
 いつものごとくフローチャートを書かずにコーティングしていますので、きれいなプログラムではありません。実験しながら少しずつ組んでゆきました(特にウェイトの部分などは実験の結果です)。
 
いくつかの動作が基本となります。
●着信の場合 着信(反転検出)→モデム受信→解析→着信ポートのリレー制御
●TEL-Aからの発信 PC2で発信を検出、各検出を止めリレーを制御しないようにする。
●TEL-Bからの発信 PC3でオフフックを検出、リレーによりTEL-Bを局線側に接続
これだけなんですが、なかなか一筋縄ではゆきませんでした。
 
特記事項
・モデム受信の部分はエラー時の対応にタイマーにタイムアウトするようにしてあります。
・時計をタイマAで作ってありますが、バッテリーのバックアップしていませんので、電源を入れるたびに設定しなければなりません。
・内臓のEEP-ROMを活用し、設定データの保存とナンバーディスプレイデータの保存をするようにしたのですが、まだ、ナンバーディスプレイデータの保存がうまくいっていません
・各部分でRS-232C経由でPCにデータを送信するようになっています。デバッグ用です。
・データ解析部分は、受信データの最初にゴミが出てしまうので、最初のSTXを検出しそこから始めます。
完全な解析ではありませんが、実用上充分だと思います。
・デバッグ用のPC側ターミナルソフトはモデムと同じく 1200bps 7bit スタートビット:1bit ストップビット:1bit パリティ:あり 偶数 の設定となります。
 
MDI_adaptor03.LZH
  
HEWのプロジェクトファイルを含む、全てのファイルです。
HEW Standard Toolchain Ver.6.2.0.0 です
 ■ 実用機の製作
 ブレッドボードでの実験が完成し、実用機を作りました。
CPU部とモデムIC以外はほとんどジャンク箱の中の部品です。
ケースはAIWAの古いモデム(PV-A1200)を利用しました。一部の基板を切り取り、そのまま活用したり、コネクタなども流用しました。
この時代のケースはしっかりしていますし、基板も部品を取り外しやすいですね。
  
フロントパネル部の基板やコネクタは流用しました。バックパネル部も基板の一部を切り取り、流用です。右写真のコネクタなどは古いPCより取り外したものです。
LCDディスプレイは秋月で購入したSUNLIKE社 SD1602HULB(-XA-G-R) 超小型モジュールです。
モデムのDIPスイッチのふたの部分に若干の加工で組み込むことができました。
前面パネルはプラスチックですので、加工は楽でした。
  
電源部も最初はモデムのものを流用しようと思いましたが、壊れていたので、手元にあった5V,12V出力の規格のわからない電源を使用しました。こんなに大きなものは必要ないと思います。
 
基板のスペーサーも木の丸棒を切り出し、ケース側はエポキシ系接着剤で固定しています。
 
最近、リード線に単線のものを使うことが多くなりました。結構使いやすいです。
昔の真空管の時代のものはは単線での配線が多かったように思います。
 
 ■ 実際の問題点
1.追加番号(FAX)に着信があったときでも、TEL-Aポートにつないだ電話のベルが一瞬鳴る。
  →構造上仕方ないが、TEL-A側にもTEL-B側と同様電話機に近いところにリレーを設置し、
  通常は切離しておけばよい。
2.このアダプタの後につけた電話機、FAXがナンバーディスプレイ対応でも表示されない。
  →構造上このアダプタがデータを横取りしているから。
3.ナンバーディスプレイのデータ保存がうまく動作してない
  →今回はナンバーディスプレイについてはおまけだったので、深く追求していない
4.ナンバーディスプレイ保存時に着信時間のみで日にちが保存できない
  →時計部のプログラムを改良すれば対応できる。着信データには日時が欲しいと思う。
ほとんど、ジャンク部品でしたが、ケースにきれいに納まり、たいへん満足しています。
現在、実用テスト中です。
まだ、プログラム上の問題はありますが、最初の欲しい機能・動作はしているので公開しました。
何らかの参考になれば幸いです。
 
Last up date 2009/7/14

 

This page count Total:22398 / Today:3 / Yesterday:4  

 本業のページ