無線電子工学および電気工学の百科事典 AVR 上のデュアル トーン多重周波数 (DTMF) ジェネレーター。 無線エレクトロニクスと電気工学の百科事典 他者性
導入 このドキュメントでは、パルス幅変調 (PWM) ブロックと SRAM を含む AVR マイクロコントローラを使用して DTMF (デュアル トーン マルチ周波数) 信号を生成する方法について説明します。 これらの信号は電話で広く使用されており、電話機のダイヤル ボタンを押すと再生されます。 DTMF 信号を正しく生成するには、低周波数 (fb) と高周波数 (fa) の 1 つの周波数を重ね合わせる必要があります。 表 XNUMX は、異なるキーが押されたときに、異なる周波数がどのように混合されて DTMF トーンを生成するかを示しています。
表1.トーンシェーピングマトリックス
表 1 の行は低周波数の値を表し、列は高周波数の値を示します。 たとえば、このマトリックスは、ボタン「5」を押すと周波数 fb = 770 Hz と fa = 1336 Hz が混合されることを示しています。 異なる周波数の XNUMX つの正弦波信号を加算した結果、DTMF 信号が形成されます。 (1) ここで、振幅の比 K=Ab/Aa ソース信号は条件を満たす必要があります (2) 動作原理 パルス幅変調の使用に関する一般的な情報に加え、パルス幅変調を使用して正弦波信号を生成する方法を以下に示します。 次の段落では、基本 PWM 周波数を使用してさまざまな周波数を取得する方法について説明します。 理論的基礎を検討した後、DTMF 信号発生器自体について説明します。 正弦波信号の生成 高 VH 電圧レベルと低 VL 電圧レベルの持続時間の比率に応じて、PWM 出力の平均値が変化します。 両方のレベルの持続時間の比率が一定に保たれる場合、結果として一定の電圧レベル VAV が生成されます。 図 2 は、パルス幅変調信号を示しています。
電圧レベルは次の式で決まります。 (3) パルス幅変調によって生成される電圧の平均値が PWM サイクルごとに変化する場合、正弦波信号を生成できます。 高レベルと低レベルの比率は、対応する時間の正弦波信号の電圧レベルに従って設定する必要があります。 図 3 は、このプロセスを示しています。 PWM の初期データはその周期ごとに計算され、変換テーブル (TP) に記録されます。 図 3 は、基本正弦波の周波数とサンプル数の関係も示しています。 サンプル数 (Nc) が多いほど、結果として得られる信号のモデリング精度が高くなります。 (4)
PWM 周波数は PWM 分解能によって異なります。 8 ビット分解能では、タイマーの終了値 (カウントの先頭) は 0xFF (255) です。 なぜならタイマーはカウントアップとカウントダウンを行うため、この値を XNUMX 倍にする必要があります。 したがって、PWM 周波数はタイマークロック f を分周することで計算できます。CK したがって、タイマー クロック周波数が 510 MHz の場合、結果の PWM 周波数は 8 kHz になります。
正弦波信号の周波数の変更 正弦波サンプルがルックアップ テーブルから順番にではなく、一度に 4 つずつ読み取られると仮定します。 この場合、同じサンプルレートで XNUMX 倍の周波数の信号が生成されます (図 XNUMX を参照)。
類推して、値を 3 つおきではなく、4 つごと、5 つごと、1 つごとに読み取る場合 (それぞれ、ステップ幅は 0、XNUMX、XNUMX ...) となります。 [XNUMX/T Hz .. XNUMX Hz] の範囲で Nc 周波数を生成することが可能です。 高周波の場合、結果の波形は正弦波ではないことに注意してください。 換算表によるステップ幅をXと表記します。SWどこ (5) 次の PWM 周期(タイマがオーバーフローしたとき)の TP の現在位置の計算は、式 (6) を使用して実行されます。 X 位置の新しい値LUT 位置 X' での前の状態に依存しますLUT ステップ幅 X を追加するとSW (6)
異なる周波数を追加して DTMF 信号を取得する DTMF信号は式(1)、(2)により生成できます。 算術演算を簡単にするために、算術演算を論理シフトに置き換えるために、係数 K の値は 0.75 に等しく設定されます。 式(6)を考慮すると、PWM制御の電流値は次の式で計算できます。 (7) X を考慮すると、ルタ=X'ルタ + Xスワ,XLUTb=X'LUTb + XSWb、最後に書きます (8) DTMF ジェネレーターの実装 この付録では、8 ビット PWM 出力 (OC1A) と、それぞれ 128 ビット (n) で指定される 7 個の正弦関数サンプル (Nc) のテーブルを使用した DTMF トーン ジェネレーターの構築について説明します。 次の式は、この依存関係を示し、ルックアップ テーブルの要素を計算する方法も示しています。 (9) 7 ビットを使用する利点は、高周波信号値と低周波信号値の合計のサイズが 8 バイトであることです。 DTMF トーンの完全なセットをサポートするには、表 1 から DTMF 周波数ごとに XNUMX つの値を計算し、変換テーブルに入力する必要があります。 より高い精度を達成するために、次の解決策が作成されました。式 5 で計算される値は 5 バイトのみ必要です。 丸め誤差を減らすために 8 バイトすべてを使用するには、この値を 8 倍します。変換テーブルへのポインタも同じ方法で書き込まれます。 ただし、この場合、値の 8 倍を格納するには 3 バイトが必要です。 これは、これらのバイトを正弦波値へのポインタとして使用する前に、1 つの右シフトと Nc ベースのモジュロ演算 (Nc-XNUMX による論理乗算) を実行する必要があることを意味します。 (10)
PWM 信号は OC1A (PD5) ピンで生成されます。 追加の出力フィルターは、正弦波波形をより良く一致させるのに役立ちます。 PWM 周波数が低下するにつれて、良好な結果を得るには、より急峻な周波数応答を持つフィルターを使用する必要がある場合があります。 キーボードの接続を図 1 に示します。キーボードの操作は、押されたキーを判断できるように構成する必要があります。 これは、次のアルゴリズムを使用して実行できます。
注: STK200 には、PORTB コネクタ ピンとマイクロコントローラー ピン BP5、PB6、および PB7 の間に抵抗が直列に接続されています (STK200 の回路図を参照)。 キーボードが PORTB コネクタに接続されている場合、これにより問題が発生します。 図6は、押されたキーを判定するためのサブルーチンの動作を示す。 押されたキーに応じて、間隔の長さが決まります。 割り込みルーチンは、この値を使用して 6 つの DTM トーン正弦波の PWM 設定を計算します。 割り込み処理手順を図 7 および図 8 に示します。 このルーチンは、次の PWM 周期のタイマー出力と比較する値を計算します。 割り込みルーチンは、まずルックアップ テーブル内の次のサンプル値の位置を計算し、そこに格納されている値を読み取ります。 ルックアップ テーブル内のサンプルの位置はパルス持続時間によって決まり、実際のパルス持続時間は生成された周波数によって決まります。 タイマー比較レジスタに書き込まれる最終値は、両方の DTMF 周波数のサンプル値を考慮した式 (7) を使用して決定されます。
出版物: cxem.net 他の記事も見る セクション テレフォニー. 読み書き 有用な この記事へのコメント. 科学技術の最新ニュース、新しい電子機器: 光信号を制御および操作する新しい方法
05.05.2024 プレミアムセネカキーボード
05.05.2024 世界一高い天文台がオープン
04.05.2024
その他の興味深いニュース: ▪ 新しいコンピューターのメモリは古いものより 10 倍高速です
無料の技術ライブラリの興味深い資料: ▪ サイトのセクション大人と子供向けのなぞなぞ。 記事の選択 ▪ 記事 電気ケトルの改良。 無線エレクトロニクスと電気工学の百科事典 このページのすべての言語 ホームページ | 図書館 | 物品 | サイトマップ | サイトレビュー www.diagram.com.ua |