ADCは、アナログデータをデジタル形式に変換するアナログ-デジタルコンバーターです。通常、アナログ電圧をデジタル形式に変換するために使用されます。アナログ信号には、正弦波や音声のような値が無限にあります。ADCはそれらを特定のレベルまたは状態に変換し、物理量として数値で測定できます。ADCは、連続変換の代わりに、データを定期的に変換します。これは通常、サンプリングレートとして知られています。電話モデムはインターネットで使用されているADCの例の1つであり、コンピュータはデジタルデータしか理解できないため、アナログデータをデジタルデータに変換してコンピュータが理解できるようにします。 ADCを使用する主な利点は、元の信号からノイズを効率的に除去でき、デジタル信号をアナログ信号よりも効率的に伝達できることです。それが、聴きながらデジタルオーディオが非常にクリアである理由です。
現在、1つまたは複数のチャネルを備えたADCを内蔵したマイクロコントローラが数多く市場に出回っています。そして、それらのADCレジスタを使用することにより、インターフェースをとることができます。ADC変換が必要なプロジェクトを作成するために8051マイクロコントローラファミリを選択する場合は、外部ADCを使用します。一部の外部ADCチップは0803,0804,0808,0809であり、さらに多くのチップがあります。今日は、8チャンネルADCをAT89s52マイクロコントローラー、つまりADC0808 / 0809とインターフェースします。
コンポーネント:
- 8051マイクロコントローラー(AT89S52)
- ADC0808 / 0809
- 16x2 LCD
- 抵抗器(1k、10k)
- POT(10k x4)
- コンデンサ(10uf、1000uf)
- 赤のLED
- ブレッドボードまたはPCB
- 7805
- 11.0592MHzクリスタル
- 力
- 接続線
ADC0808 / 0809:
ADC0808 / 0809は、モノリシックCMOSデバイスおよびマイクロプロセッサ互換の制御ロジックであり、出力に8ビット値を提供する28ピンと8チャネルADC入力ピン(IN0〜IN7)を備えています。解像度は8なので、アナログデータを256レベル(2 8)のいずれかにエンコードできます。このデバイスには、チャネルを選択するためのADDA、ADDB、ADDCの3つのチャネルアドレスラインがあります。以下はADC0808のピン配列です。
ADC0808 / 0809に は、 変換にクロックパルスが必要です。発振器またはマイクロコントローラーを使用して提供できます。このプロジェクトでは、マイクロコントローラーを使用して周波数を適用しました。
3つのアドレスライン(ADDA、ADDB、ADDC)をすべてローに保つことで入力ラインIN0を選択できるように、アドレスラインを使用して任意の入力チャネルを選択できます。入力チャネルIN2を選択する場合は、ADDA、ADDBをロー、ADDCをハイに保つ必要があります。他のすべての入力チャンネルを選択するには、次の表を参照してください。
ADCチャネル名 |
ADDCPIN |
ADDBPIN |
ADDA PIN |
IN0 |
LOW |
LOW |
LOW |
1で |
LOW |
LOW |
高い |
IN2 |
LOW |
高い |
LOW |
IN3 |
LOW |
高い |
高い |
IN4 |
高い |
LOW |
LOW |
IN5 |
高い |
LOW |
高い |
IN6 |
高い |
高い |
LOW |
IN7 |
高い |
高い |
高い |
回路の説明:
「ADC0808と8051のインターフェース」の回路は少し複雑で、デバイスを相互に接続するための接続ワイヤが多く含まれています。この回路では、主にAT89s52を8051マイクロコントローラー、ADC0808、ポテンショメーター、LCDとして使用しています。
16x2 LCDは、4ビットモードで89s52マイクロコントローラーに接続されています。制御ピンRS、RW、およびEnは、ピンP2.0、GND、およびP2.2に直接接続されています。また、データピンD4-D7は、89s52のピンP2.4、P2.5、P2.6、およびP2.7に接続されています。ADC0808出力ピンはAT89s52のポートP1に直接接続されています。アドレスラインピンADDA、ADDB、AADCは、P3.0、P3.1、およびP3.2で接続されます。
ALE(アドレスラッチイネーブル)、SC(変換開始)、EOC(変換終了)、OE(出力イネーブル)、およびクロックピンはP3.3、P3.4、P3.5、P3.6、およびP3.7で接続されています。 。
ここでは、ADC0808のピン26、27、および28に接続された3つのポテンショメータを使用しました。
回路に電力を供給するために、9ボルトのバッテリーと5ボルトの電圧レギュレーター、つまり7805が使用されます。
ワーキング:
このプロジェクトでは、ADC0808の3つのチャネルをインターフェースしました。また、デモンストレーションでは、3つの可変抵抗器を使用しました。回路に電力を供給すると、マイクロコントローラーは適切なコマンドを使用してLCDを初期化し、ADCチップにクロックを与え、アドレスラインを使用してADCチャネルを選択し、開始変換信号をADCに送信します。この後、ADCは最初に選択されたADCチャネル入力を読み取り、変換された出力をマイクロコントローラーに渡します。次に、マイクロコントローラーはLCDのCh1位置にその値を表示します。そして、マイクロコントローラはアドレスラインを使用してADCチャネルを変更します。次に、ADCは選択されたチャネルを読み取り、出力をマイクロコントローラーに送信します。そして、名前Ch2としてLCDに表示します。そして、他のチャネルについても同様です。
ADC0808の動作は、ADC0804の動作とよく似ています。この場合、ADCは動作するためにクロック信号を必要とするため、最初のマイクロコントローラはタイマー0割り込みを使用して500KHzのクロック信号をADC0808に提供します。これで、マイクロコントローラはLOWからHIGHレベルの信号をADC0808のALEピン(そのアクティブHighピン)に送信して、アドレスのラッチを有効にします。次に、HIGHからLOWレベルの信号をSC(変換開始)に適用することにより、ADCはアナログからデジタルへの変換を開始します。次に、EOC(変換終了)ピンがLOWになるのを待ちます。EOCがLOWになると、アナログからデジタルへの変換が完了し、データを使用する準備ができたことを意味します。この後、マイクロコントローラは、ADC0808のOEピンにHIGHからLOWの信号を印加することによって出力ラインを有効にします。
ADC0808は、出力ピンでレシオメトリック変換出力を提供します。また、放射分析変換の式は次の式で与えられます。
V in /(V fs -V z)= D x /(D max -D min)
どこ
Vに変換するための入力電圧であり、
Vは、FSフルスケール電圧である
Vのzはゼロ電圧であり、
D xは、データがメジャーである点であり、
D maxは最大データ制限である
Dの分が最小データ限界であります
プログラムの説明:
プログラムには、まずヘッダーファイルをインクルードし、ADCとLCDの可変ピンと入出力ピンを定義します。
#含める
LCDの初期化、文字列の印刷、LCDコマンドなどのいくつかのLCD関数とともに、遅延を作成するための関数が作成されました(void delay)。これらはコードで簡単に見つけることができます。8051とその機能とのLCDインターフェースについては、この記事を確認してください。
この後、メインプログラムでLCDを初期化し、それに応じてEOC、ALE、EO、SCピンを設定します。
void main(){int i = 0; eoc = 1; ale = 0; oe = 0; sc = 0; TMOD = 0x02; TH0 = 0xFD; lcd_ini(); lcdprint( "ADC 0808/0809");
次に、プログラムはADCを読み取り、ADC出力を変数に格納し、void read_adc()およびvoid adc(int i)関数を使用して、10進数からASCIIへの変換後にLCDに送信します。
void read_adc(){number = 0; ale = 1; sc = 1; delay(1); ale = 0; sc = 0; while(eoc == 1); while(eoc == 0); oe = 1; number = input_port; delay(1); oe = 0; } void adc(int i){switch(i){ケース0:ADDC = 0; ADDB = 0; ADDA = 0; lcdcmd(0xc0); read_adc();