無線電子工学および電気工学の百科事典 PIC コントローラー上のセットトップ ボックスの開発。 無線エレクトロニクスと電気工学の百科事典 無線電子工学と電気工学の百科事典 / マイクロコントローラー マイクロコントローラー上に作られたデバイスにより、堅固なロジックでは実装が困難または不可能でさえある機能を、開発された構造に提供することが可能になります。 この記事では、PIC コントローラーに基づくさまざまなセットトップ ボックスの設計について説明します。 最近、電話回線用の小型セットトップ ボックスに関する記述が無線工学の文献に数多く掲載されています。 220 V の主電源からの電力を必要とせず、製造が簡単で調整の必要がないため、さまざまな訓練を受けたアマチュア無線家にとって魅力的です。 このようなデバイスが別個の要素で作成されている場合、アマチュア無線家はその動作を詳細に理解し、必要に応じて要件に合わせて変更することができます。 ただし、マイクロコントローラーを使用すると、アマチュア無線家は製品を操作するための主要なアルゴリズムにアクセスできなくなります。 さらに、プログラムのソース コードは言うに及ばず、公開されている回路のファームウェアを常に見つけることができるわけではありません。 PIC コントローラを使用してデバイスを独自に設計したいと考えている人にとって、遅かれ早かれ、独自のプログラムを開発するという問題が生じます。 この記事では、セットトップ ボックス用のプログラムを電話回線に書き込む方法について説明します。 「プレフィックス」とは、ブロッカーやコンビネーション ロックなどの比較的単純なデバイスを意味します。 電話回線のみから電力を供給され、パルス ダイヤラーと連携するマイクロ PBX など。 著者は、読者が少なくとも一般的に P/C コントローラのアーキテクチャと命令セットに精通していることを前提としています。 公衆電話ネットワークに接続されているすべてのデバイスについて、証明書を取得する必要があることをもう一度思い出してください。 最も一般的な形式では、セットトップ ボックスは電話回線の状態を監視するデバイスです。 パラメータの変化に応じて、特定のアクションを実行します。 通常、回線内の電圧を監視し、その変化によって受信機がオフフック、ダイヤル中、または着信信号の受信中であるかを判断します。 これがどのようにして起こるのかを詳しく見てみましょう。 空き回線の場合、つまり電話機の受話器が置かれているとき、回線の電圧は 48 ~ 60 V 以内である必要があります。受話器が取り外されると、約 30 mA の電流が装置と電話機に流れます。この電圧を図に示す分圧器を介して印加すると、電圧は 5 ~ 10 V に低下します。 1、PICコントローラーの入力に、受話器を取った瞬間を登録したり、ダイヤルした番号の桁を読み取ることができます。 1 V で電力供給されている場合の P4C コントローラの動作しきい値は 1,3 ~ 1,4 V の範囲内です (シュミット トリガなしの入力を意味します)。 したがって、チューブを敷設するとコントローラのレベルが高く、取り外すとコントローラのレベルが低くなります。 複数の電話機が同時に電話回線に接続されている場合、その電圧によってどのデバイスがアクティブであるかを判断することはできません。 特定の電話機のステータスを監視する必要がある場合は、図 2 に示す図を使用できます。 1a. 真空管が下降すると、トランジスタ VT1 が閉じ、コレクタに高レベルが生じます。 真空管が取り外されると、抵抗 R1 に電流が流れ始めます。 トランジスタ VT1 が開き、そのコレクタに Low レベルが発生します。 ダイオード VDXNUMX は、通話中に電話機のコンデンサを放電するために必要です。 図上。 図2bは、電話機内の電流の流れを制御するための別のユニットを示す。 同様に動作しますが、トランジスタの代わりにフォトカプラが使用されます。 このノードは異なります。 極性を気にせずにラインに接続できること。 現在の監視ノードを設計する場合、いくつかの点を考慮する必要があります。 まず、受話器が置かれているときにも電話機内の電流が流れる可能性があります。 場合によっては、0.5 mA を超える非常に大きな値になることもあります。 GOST 7153-85 に従って決定されます ([11] を参照)。 デバイスはこの電流で動作すべきではありません。 次に、呼び出し信号の場合、これらのデバイスの出力には 25 Hz の周波数と無限のデューティ サイクルのパルスが含まれます。 したがって、処理プログラムは、呼び出し信号を電話を取ることと誤認しないように、これを考慮する必要があります。 そして 1 番目の不快な瞬間は、古い PBX の一部の電話回線では、回線全体の電流が短期間に減少することがあり、これが受話器を電話機に置いたとき、または番号をダイヤルしたときとしてプロセッサによって認識されることがあります。」 XNUMX」。 これは通常、接続が確立または切断されたときに発生します。 この場合のエラーを回避するには、電話機の電流の減少を検出した後、回線全体の電圧をチェックすることをお勧めします。 電話機の電流が消え、回線の電圧が上昇しなかった場合は、電話機に対して何もアクションが取られなかったと考えることができます。 捕捉またはダイヤルプロセスを監視することに加えて、多くの場合、着信信号を記録する必要があります。 通常、これは周波数 25 Hz、ピークからピークまでの振幅 100 ~ 150 V の正弦波であり、一定成分または 60 V 程度の蛇行を維持します。最も単純なケースでは、次のようになります。この信号は、線間電圧を監視するのと同じ方法、つまり従来の抵抗分圧器を使用して決定できます (図 1 を参照)。 抵抗 R2 の抵抗値は 27 kΩ である必要があります。 通話中だけでなく、ダイヤル時や電話を切るときにも回線に100Vを超える電圧が現れることがあります。 これは、一部のタイプの古い PBX の動作中に発生し、局リレーのインダクタンスが原因です。 したがって、プログラムは呼び出し信号から誤ったインパルスを区別できる必要があります。 図上。 図3は、変動成分を抽出するリンギング信号センサーの図を示す。 このセンサーは、回線電圧とリンギング信号が事前に不明な場合に使用するのが好ましいです。 ほとんどの場合、ここで説明した制御方法は、電話回線用の完全に最新のセットトップ ボックスを作成するのに十分です。 通常、このような装置では、コントローラが電流スイッチ KR10T4KT1V などを制御し、それを通じて電話機またはその他の要素が切り替えられます。 コントローラの電源ユニットには特に注意してください (図 4)。 ラインに接続すると、コントローラの電源電圧は比較的ゆっくりと (約 1 ~ 2 秒) 上昇するため、標準的な方法ではプロセッサをリセットできません。 これは、プログラムの実行が (少なくとも理論的には) 任意の ROM アドレスから開始できることを意味します。 プログラムのビルドが失敗すると、ウォッチドッグ タイマーが有効になっている場合でも、デバイスの電源投入時に「フリーズ」が発生します。 したがって、プログラム アルゴリズムは、プロセッサ入力に対する特定の初期影響 (たとえば、ハンドセットが落とされて呼び出し信号がないとき) が発生した場合に、プログラムが特定の開始点に戻って実行できるように開発する必要があります。 RAM レジスタ内の値に関係なく、自己初期化が行われます。 小さなプログラムの場合、この条件は非常に簡単に満たされます。 ただし、プログラムのサイズが大きくなるにつれて視認性が低下するため、プログラムがハングする可能性があるかどうかを確認するために特別な措置を講じる必要がある場合があります。 これは非常に重要な点です。電話セットトップ ボックスは常に動作しているデバイスであり、少なくとも数か月に XNUMX 回は、何らかの外部干渉によりプロセッサが故障することがあります。 したがって、未完成のプログラムを備えたデバイスは単に動作を停止するか、たとえば回線をキャプチャするなどの損傷を与える可能性があります。 電源が低いと、コントローラーのクロック速度が制限されます。 KZh101V 電流スタビライザーは最大 160 μA を供給できます。 これは、コントローラのクロック周波数が、この電流が通常の動作に十分であるようなものである必要があることを意味します。 通常、周波数 32768 Hz の「クロック」水晶共振器が使用されます。 または周波数約 50 kHz の RC 発振器。 大きなクロック周波数が必要な場合、たとえば 4 MHz。 プロセッサーをスリープ モードで使用し、特定のアクションのみを行うことができます。 それではプログラミングに移りましょう。 デバイス用の小さなプログラムを書いてみましょう。そのスキームを図に示します。 5. このデバイスは実用上それほど重要ではありませんが、その例を使用すると、電話セットトップ ボックスをプログラミングする基本的な方法を追跡できます。 このデバイスは、最も一般的な PIC16F84 コントローラーを使用します。 EEPROM を使用しているため、単純なプログラムのデバッグに最適です。 割り込み、タイマー、ウォッチドッグ タイマー、スリープ モードなどのほとんどの機能は使用されません。 このデバイスは、回線の電圧 (この信号を Uline と表記します) と電話 (Itel) を流れる電流を制御します。 DD2 コントローラの RB1 出力は電流スイッチ K1 を制御し、抵抗 R3 へのラインを閉じることができます。 このデバイスは、電話機でダイヤルされた番号を読み取り、長距離通信への暗号化されたアクセスを提供し、回線に直接接続されているデバイスからのダイヤルをブロックします (「著作権侵害対策」モード)。 簡単にするために、長距離アクセス コードは XNUMX 桁で構成され、長距離アクセス番号の後にダイヤルする必要があります。 プログラム本文中で使用されている一部の表記は認められます。 RAM レジスタの名前とサブルーチンの名前は、単語の先頭に大文字を付けた小文字で表され、定数は大文字で、ラベルは小文字で接頭辞としてアンダースコアが付けられます。指定が複数の単語で構成されている場合は、また、それらはアンダースコアで区切られます。 ヘッダーとして、コントローラー レジスター p16f84.inc の説明を含む標準ファイルを使用します。 このファイルは、MPLAB PIC コントローラの開発環境に付属しています。 equ ディレクティブを使用してポート (TRVS レジスタ) と OPTION および INTCON レジスタを初期化するための定数を定義し、長距離アクセス用のパスワード番号を設定しましょう (数値「3」とします) (表 1)。 次に、プログラムで使用される RAM レジスタを定義します。 これは、各シンボリック レジスタ名に独自のアドレス (たとえば、REG1 equ OxOC) を与えることで実行できますが、cblock ディレクティブと endc ディレクティブを使用する方が便利です。 彼らの助けを借りて、使用するレジスタのブロックに単一の開始アドレスを設定することができ、アセンブラはアセンブリ中にすべてのレジスタを昇順に配置します。 注意すべき唯一のこと。 - 指定された名前の総数が、物理的に存在するコントローラー レジスタの数を超えないようにします。 レジスタの名前が設定されているプログラムの一部を表に示します。 2. #define ディレクティブを使用して、使用する入出力行のシンボル名とフラグの名前を設定しましょう (表 3)。 表で。 図 4 に初期化ルーチンを示します。 ここで、いわゆる待機ループ、つまりそのコードを作成しましょう。 これは、管が敷設され、呼び出し信号がないときにプログラムによって実行されます。 通常、このループのタスクは、初期化を実行し、入力を監視することです。 私たちのタスクに関連して、プログラムはラインの電圧を監視し、真空管が取り外されたときに電圧が低下するのを待つ必要があります。 すべてのフラグをリセットし、Figure および Number_of_Figure レジスタをリセットし、K1 キーの入力 C に Low レベルを適用することも必要です。 抵抗器 R3 を介してラインが閉じないようにします (表 5)。 プログラムの実行がランダムなアドレスから開始された場合でも、プログラムが開始時に終了するのはこのサイクルです。 Uline で低レベルが検出された場合、ハンドセットが実際にオフフックであるか、または呼び出し信号が回線上で送信されているかを判断する必要があります。 通話信号中、Uline 入力は 25 Hz の周波数のパルスを受信します。 それらを区別するには、しばらくの間、数回以上の呼び出し期間にわたって Uline が低いことを確認する必要があります。 [1] によると、電話機の「受話器を上げる」ことは、250 ミリ秒を超える回線閉鎖とみなされます。 ライン上の低電圧を 300 ms 監視するプログラムの一部を作成してみましょう (表 6)。 このスニペットは、前のスニペットの直後に続く必要があります。 回線に低電圧が 300 ミリ秒続く場合は、受信機が電話機からオフフックになっていることを意味します。 次に、Itel 入力の低レベルをチェックする必要があります。つまり、受話器がデバイスを介して接続されている電話機から離れているか、それとも回線に直接接続されているデバイスから離れているかを認識する必要があります。 「自分の」電話が関係する場合、プログラムはその電話でダイヤルされた番号を読み取るモードに切り替える必要があります。そうでない場合、ダイヤルはブロックされる必要があります。 それでは、プログラムに XNUMX 行を追加しましょう。 btfsc アイテル 呼び出しブロック Block サブルーチンは、ダイヤルをブロックする機能を実行します。 最も単純な形式では、その動作アルゴリズムは次のようになります。ハイ レベルが Key 出力に設定され、ラインが抵抗 R3 に閉じられます。 しばらくしてから、たとえば 1 秒後。 キーに低レベルが設定され、短い遅延 (約 20 ミリ秒) の後にチェックされます。 チューブが所定の位置にない。 チューブが置かれていない場合は、再び高いレベルがキーに適用され、このサイクルが繰り返されます。 それ以外の場合は、goto_begin ステートメントが実行され、プログラムが最初からやり直します。 このサブルーチンのアセンブラ テキストは非常に単純で特別なコメントを必要としないため、ここでは考慮しません。 次に、電話機でダイヤルされた番号が読み取られます。 上で述べたように、ダイヤルは再計算が必要な一連のパルスです。 Itel 入力を使用してダイヤル番号を読み取りますが、Uline を使用して行うこともできます。 プログラムのこの部分のアセンブラ コードを表に示します。 7。 _dial_01 というラベルのループで、プログラムは数字のダイヤルが開始されるのを待ちます。 同時に、常に lnit 初期化ルーチンを呼び出し、K1 キーのゲートを Low レベルに設定します。 これは、デバイスの起動時や外部干渉による障害の場合のフリーズを回避するために必要です。 Key 出力をリセットしないとこのようになる可能性があります。 高レベルになると、ラインが R3 で閉じ、その中の電圧が低下します。 その結果、プログラムはこのループを抜け出すことができなくなります。 TRISB レジスタが初期化されていない場合 (これは lnit サブルーチンで行われます)、障害の結果として Key ラインが入力としてプログラムされ、ゲートに蓄積された電荷によって K1 キーが開きます。これにより、再びプログラムがハングアップします。 これを避けるために、K200 ゲートとコモン線の間に 1 kΩ 程度の抵抗を接続します。 Itel にハイレベルが表示された後、受信パルスのカウンタがリセットされます。 さらに、Supress フラグがクリアされると (その目的については後述します)、Delay10 サブルーチンが呼び出され、10 ミリ秒の遅延が実行されます。 このサブルーチンのテキストは非常に単純であるため、ここでは説明しません。 同じことが同様の 80ms 遅延サブルーチンにも当てはまります。 次に、ラインの電圧が上昇したかどうかを確認します。 そうでない場合、電話機の電流低下はダイヤラの動作によるものではなく、回線の電流低下によって引き起こされたと考えられ、プログラムは _dial_0l ラベルに戻ります。 それ以外の場合、Counter400 レジスタと CounterHi レジスタで構成されるカウンタが XNUMX ミリ秒間初期化されます。 この間に Itel の高レベルが消えない場合は、電話が置かれたと想定でき、制御は先頭、つまり _begin ラベルに転送されます。 ローレベルが発生すると、ダイヤラ接点のバウンスを防ぐために 10 ミリ秒の遅延が発生し、その後、受信パルスのカウンタが増分され、時間カウンタが 100 ミリ秒に初期化されます。 新しいパルスが現れると、プログラムは同様の動作を実行し、新しいパルスが 100 ミリ秒以内に検出されない場合は、その桁のダイヤルが完了したとみなされ、受信桁のカウンターが増分されます。 次に、受信した数字を処理する必要があります。 この例では、パスワードを使用して長距離通信へのアクセスを無効にする必要があります。 受話器を取ってすぐに「8」をダイヤルすることで遠距離通信ができることを想定しています。 この場合のプログラムの一部を表に示します。 8. Supress フラグと Parol フラグがリセットされ、受話器を持ち上げて最初の桁をダイヤルした後、これは実際に当てはまります。 次に、プログラムはダイヤルされた数字が 80 と等しいかどうかをチェックします。 この等価性が真の場合、Supress フラグと Parol フラグが設定されます。 Supress フラグを設定すると、ダイヤラによって回線が開かれた瞬間に、抵抗 R3 が 3 ミリ秒間ダイヤラに接続され、その結果、回線内の数字のダイヤルがスキップされなくなります。 ただし、プログラムには、抵抗器 RXNUMX を回線から切断した後でもダイヤル パルスを再計算する機能がまだあります。 入力されたパスワードの数字が指定された数字と一致する場合、これらのフラグは両方ともリセットされ、コントローラーは数字のセットのブロックを停止します。 パスワードが間違って入力された場合、パロール フラグのみがリセットされ、それまでセットはブロックされ続けます。 電話が切れるまで。 番号「2」のダイヤルがブロックされているときの電話回線の電圧図を図に示します。 6. 時刻 t に、ダイヤラによって回線が開かれます。 その後、t0 ~ t1 の時間間隔で、コントローラが検出するまで電圧が上昇します。 さらに、時刻t1において。 抵抗R1が接続されています。 時刻 t3 でダイヤルパルスが終了し、時刻 U で抵抗 R2 がオフになります。 したがって、ラインが開いた瞬間から抵抗器 R3 がオンになるまで、短いパルスのみがラインに渡されます。 ほとんどの PBX はこれらのパルスの影響を受けませんが、一部の電子電話交換機ではダイヤルしているように認識される場合があります。 これらのパルスを取り除くには、抵抗ではなくツェナーダイオードを使用してセットをブロックできます。 この場合、80msの間ツェナーダイオードが接続されないようにプログラム動作アルゴリズムを変更する必要があります。 抵抗R3のように。 しかし常に。 この場合、ダイヤル中に回線が切断されると電流がツェナー ダイオードを流れ、回線が切断されると電話機に電流が流れます。 ダイヤルをブロックするこの方法は、[2] で説明されているスイッチで使用されています。 ここで、図にそのスキームが示されているデバイスの動作を考えてみましょう。 7. これは、特定の追加サービス機能を備えた並列電話ブロッカーです。 ブロッカーは、XNUMX 台の電話機 (SLT) を XNUMX つの回線に接続するように設計されており、最初の電話機の受話器を取ったときに優先される可能性があります。 SLT 1 の優先順位により、他の電話機が使用中の場合でも、空き回線をこの電話機に転送できます。 この場合、切断前に、TA2 加入者には警告信号が送信され、会話を終了するまでに約 6 ~ 7 秒の時間が与えられます。 この機能を使用すると、1 台目の電話機の所有者に対して 2 台目の電話機の存在をできるだけ目立たなくすることができます。 SA2 トグルスイッチで有効または無効にできます。 SAXNUMX トグル スイッチを使用すると、XNUMX 回目の通話後に呼び出し音が鳴り始めたときに、着信通話に対してこの TAXNUMX 動作モードを設定できます。 ブロッカーは、安価で最小サイズの PIC12C508-04/P コントローラーで作成されています。 両方の電話機は、現在のキー VT1 および VT2 を介して接続されています。 各電話機は、フォトカプラ U1.1 および U1.2 を使用して電流によって制御されます。 着信信号は分配器 R4R5 を通じて監視されます。 トグルスイッチSA1およびSA2は、トランジスタVT1およびVT2のゲートにローレベルを印加することによってその位置を決定できるようにオンにされる。 この場合、電話電流制御システムの出力は、トグル スイッチが閉じているときは Low、開いているときは High になります。 この機能を組み込むと、個別のプロセッサー出力が必要なくなり、ブロッカー全体で使用可能なコントローラー ラインを 1 つだけ使用できるようになります。 ただし、抵抗 R9 と R10 を使用する理由が 2 つあります。 これらが存在しない場合 (つまり、信号がフォトカプラ トランジスタのコレクタからコントローラの入力に直接印加される場合)、デバイスが接続された瞬間に、たとえば GP3 および GP1 出力が次の出力としてプログラムされるような状況が発生する可能性があります。それぞれ 3 と XNUMX の信号。 同時に SAXNUMX トグル スイッチが閉じると、VDXNUMX ダイオードに電流が流れますが、電源の電力が低いため、供給電圧が必要なレベルに達することができません。 クロックジェネレータは起動できず、デバイスは動作しません。 この電流は制限される必要があり、これがこれらの抵抗の目的です。 ブロッカー プログラムは、上で説明したものと同様に構築されます。 最初のサイクルでは、初期化とトランジスタ VT1 および VT2 のゲートへのハイ レベルの設定が行われます。 このサイクルでは、電話機の状態も監視し、着信信号をチェックします。 ハンドセットを取り上げた後、両方の電話機の電源が短時間オフになり、トグル スイッチ SA1 と SA2 の位置が決定されます。 それらの状態は、対応するプログラム フラグに保存されます。 その後、プログラムはダイヤル待機モードに入ります。 この場合、ハンドセットが TA2 から取り外され、SA1 トグル スイッチが閉じられた場合。 短い間隔の後、最初の電話機が回線に接続されます。 これにより、優先機能を提供することができる。 TA2 でダイヤルを開始すると、ダイヤル時の呼び出し音を避けるために、最初の電話機の電源が再びオフになります。 最後の桁のダイヤルが終了すると、再度接続されます。 SA1 トグル スイッチが開いている場合、TA1 は回線に接続されず、デバイスは通常のパラレル フォン ブロッカーとして機能します。 1 台目の電話で通話中に TA2 の受話器を取り上げた場合、デバイスは VT1 ゲートに可聴周波電圧を印加して短い警告信号を生成します。 TA6 が切断され、TA7 加入者に会話を終了する機会を与えるために 2...2 秒の遅延が生じます。 その後、再び信号が与えられ、TA1 がオフになり、XNUMX 秒後に回線が最初の電話機に転送されます。 これにより、第1電話機に対する優先機能が実現される。 着信通話はプログラムによって次のように処理されます。 抵抗 R5 にハイレベルが現れると、プログラムは SA1 トグルスイッチの状態を読み取ります。 SA2 が閉じられ、SA2 が閉じられると、TA2 が回線から切断されます。 次に、コントローラーは通話内の期間の数を再計算します。 この数値がプログラム定数の 8 つで指定された数値より小さい場合は、コールではなく回線に沿って干渉が通過したと見なされます。 その後、プログラムの実行が再び開始されます。 それ以外の場合、メッセージ カウンタの内容が増加し、プログラムはいずれかの電話機から受話器が取り上げられるか、または新しい通話が発生するまで待機します。 これは約 XNUMX 秒以内に起こります。 この間にハンドセットが取り上げられず、次のメッセージも受信されなかった場合は、呼び出し信号が終了し、プログラムの実行が再開されると想定できます。 次のメッセージが検出され、その中のピリオドの数がプログラム定数で指定されたもの以上である場合、メッセージ カウンタはインクリメントされます。 このカウンタが状態 3 に達すると (この数値はプログラム定数セクションで設定され、変更可能です)、TA2 が回線に接続されます。 その結果、彼も次の荷物ごとに呼び出し信号を発することになります。 R13C2 回路は、コントローラの内部発振器の周波数を設定します。 図に示されている定格では、50 kHz ± 10% です。 LED HL1 および HL2 は電話機が話中であることを示し、HL3 を使用すると接続時の回線の極性を判断できます。 ブロッカーは、片面フォイルグラスファイバー製のプリント基板上に組み立てられます (図 8)。 コントローラをはんだ付けするときは、ウォッチドッグ タイマーを無効にする必要があります。 文学
著者: V.クラコフ、ロストフ・ナ・ドヌ 他の記事も見る セクション マイクロコントローラー. 読み書き 有用な この記事へのコメント. 科学技術の最新ニュース、新しい電子機器: 庭の花の間引き機
02.05.2024 最先端の赤外線顕微鏡
02.05.2024 昆虫用エアトラップ
01.05.2024
その他の興味深いニュース: ▪ 公衆電話をなくす ▪ ウェットメモリー
無料の技術ライブラリの興味深い資料: ▪ 記事 電気回路と無線要素のプローブ。 無線エレクトロニクスと電気工学の百科事典 ▪ 記事 リフレクソロジー用のデバイス。 無線エレクトロニクスと電気工学の百科事典 このページのすべての言語 ホームページ | 図書館 | 物品 | サイトマップ | サイトレビュー www.diagram.com.ua |