51 MCU研究ノート_13 ADC

ADC

開発ボード上のポテンショメータを調整する場合、デジタル チューブは、AD モジュールによって収集されたポテンショメータの電圧値を表示し、それに応じて変更することができます。

開発ボードには、フォトレジスタ、サーミスタ、ポテンショメータの 3 つのアプリケーションがあります。

一般にAD変換は、利用効率を上げるために複数の入力を持っています。

画像-20230327170005984

ADC は、アドレスのラッチとデコードによって、どちらの入力を使用するかを判断します。

画像-20230327172256586

オペアンプ、電圧コンパレータ、反転アンプ、ボルテージフォロアとして使用可能

T 型抵抗ネットワーク DA コンバーター:

画像-20230327195138979

ローパスフィルター:入力には直流と交流の2つの成分があり、ローパスフィルターを通して直流を取り出すことができます。ボルテージフォロアにより駆動能力が向上します。

画像-20230327195154405

d の値は固定されているため、d に従って a を調整するだけなので、da の方が簡単です。

ad 電圧の判断方法は?電圧値をある電圧と比較して、それよりも大きいか小さいかを比較し、徐々に近づいて近似値を見つけます。

解像度: 細かさ。たとえば、8 ビットの広告は 5v を 0 ~ 255 の範囲に変換できます。

変換速度: 最大サンプリング/セトリング周波数。

XPT2046はSPIを使用し、タイミングは立ち上がりエッジで入力され、立ち下がりエッジで出力され、入出力を実現できます。

画像-20230327213950578

シングルエンド モードを使用します (タッチ スクリーンのチェック ポイントの方が優れています)。

PD1=1 は内部基準電圧を採用し、内部電圧は 2.5v です。ADC マッピング範囲は 0~5v であることがわかっているため、1 の内部電圧は 0 の 5v の外部電圧ほど良くありません。

アドレス構成:

画像-20230327220710512

VBAT: バッテリー電圧。

AUX: 補助電圧。

XP YP: XY ポジティブ。

手順と広告変換を読む:

#define XPT2046_XP_8 0x9C    // 1001 1100
#define XPT2046_YP_8 0xDC    // 1101 1100
#define XPT2046_VBAT_8 0xAC  // 1010 1100
#define XPT2046_AUX_8 0xEC   // 1110 1100
#define XPT2046_XP_12 0x94   // 1001 0100
#define XPT2046_YP_12 0xD4   // 1101 0100
#define XPT2046_VBAT_12 0xA4 // 1010 0100
#define XPT2046_AUX_12 0xE4  // 1110 0100

unsigned int XPT2046_ReadAD(unsigned char command)
{
    
    
    unsigned char i;
    unsigned char temp=command;
    unsigned int ADValue = 0;
    XPT2046_DCLK = 0;
    XPT2046_CS = 0;
    for (i = 0; i < 8; i++)
    {
    
    
        XPT2046_DIN = temp >> 7;
        temp <<= 1;
        XPT2046_DCLK = 1;
        XPT2046_DCLK = 0;
    }

    for (i = 0; i < 12; i++)
    {
    
    
        XPT2046_DCLK = 1;
        XPT2046_DCLK = 0;
        if (XPT2046_DOUT)
            ADValue |= (0x0800 >> i);
    }
    XPT2046_CS = 1;
    //for 12 bit:
    if(command&0x08)return ADValue>>4;
    else return ADValue;
}
void main()
{
    
    
	unsigned int ADValue = 0;
	LCD_Init();
	LCD_ShowString(1, 1, "ADC NTC RG");
	while (1)
	{
    
    
		ADValue = XPT2046_ReadAD(XPT2046_XP_8);//电位器
		LCD_ShowNum(2, 1, ADValue, 3);
		ADValue = XPT2046_ReadAD(XPT2046_YP_8);//热敏电阻
		LCD_ShowNum(2, 5, ADValue, 3);
		ADValue = XPT2046_ReadAD(XPT2046_VBAT_8);//光敏电阻
		LCD_ShowNum(2, 9, ADValue, 3);
		delayMs(10);
	}
}

dac も pwm の原理を採用し、01 の周波数を変更してランプの明るさをシミュレートします (出力ポート: P2^1)。そのため、DACは交換できるため、広く使用されていません。

おすすめ

転載: blog.csdn.net/jtwqwq/article/details/129821688