This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
您好!
我 使用 MSP430f5659微控制器连接4-20mA 液位传感器。 我使用多通道读取 ADC 代码示例、例如 msp430f665x_adc_06.c. 当传感器处于固定高度时、它应该显示一个固定计数值、但它显示了一个值范围(例如、对于固定值、为804-824)。 我将基准电压用作 AVCC 和 AVSS,即3.3V 和 GND。 请建议一些解决方案来计算变体问题。
您好、Ryan、
感谢您的回答。
但我无法获得稳定的 ADC 计数值、正如我在数据表中研究过的那样。 我已经尝试将 AVCC 和 AVSS 配置为基准电压、并将内部 Vref 配置为基准电压。
我在3个通道上使用 ADC 值。 目前我正在检查 P6.2引脚上的计数值。
我的代码如下所示:使用 ref 作为内部 Vref
P6DIR &=~(BIT0 + BIT1 + BIT2);
P6SEL |= BIT0 + BIT1 + BIT2; //启用 A/D 通道输入 P6.0、p6.1、p6.2
ADC12CTL0 &=~ADC12ENC;
REFCTL0 &=~REFMSTR; //重置 REFMSTR 以将控制权交给
// ADC12_A 参考控制寄存器
ADC12CTL0 = ADC12ON|ADC12SHT03|ADC12REFON|ADC12REF2_5V| ADC12MSC;
//打开 ADC12、采样时间
//在基准发生器上并设置为
// 2.5V
ADC12CTL1 = ADC12SHP|ADC12CONSEQ_1_ADC12DIV_1; //使用采样计时器、单序列
ADC12CTL2 = ADC12RES_2 |ADC12REFOUT; //ADC12_A 分辨率12位
ADC12MCTL0 = ADC12INCH_0 |ADC12SREF_1; // ref+=AVcc、channel = A0、VR+=Vref+和 VR-=AVss
ADC12MCTL1 = ADC12INCH_1 |ADC12SREF_1; // ref+=AVcc、channel = A1、VR+=Vref+和 VR-=AVss
ADC12MCTL2 = ADC12INCH_2 |ADC12EOS | ADC12SREF_1; // ref+=AVcc、channel = A2、
ADC12CTL0 |= ADC12ENC;
使用 AVCC 作为基准电压:
P6DIR &=~(BIT0 + BIT1 + BIT2);
P6SEL |= BIT0 + BIT1 + BIT2; //启用 A/D 通道输入 P6.0、p6.1、p6.2
ADC12CTL0 &=~ADC12ENC;
ADC12CTL0 = ADC12ON+ADC12MSC+ADC12SHT0_3; //打开 ADC12、延长采样时间
//为了避免结果溢出、16个 ADC12CLK 周期
ADC12CTL1 = ADC12SHP+ADC12CONSEQ_1_ADC12DIV_1; //使用采样计时器、单序列
ADC12CTL2 = ADC12RES_2; //ADC12_A 分辨率12位
ADC12MCTL0 = ADC12INCH_0; // ref+=AVcc、channel = A0
ADC12MCTL1 = ADC12INCH_1; // ref+=AVcc、channel = A1
ADC12MCTL2 = ADC12INCH_2+ADC12EOS; // ref+=AVcc、channel = A2
ADC12CTL0 |= ADC12ENC;
我不知道完成转换需要多少个时钟周期、因此我尝试了多达32个时钟周期。
代码中是否有任何错误? 请建议一些解决方案。
您好、Ryan、
很抱歉、我无法分享原理图、但我使用165欧姆的串联电阻将4-20mA 电流转换 为最高3.3V 的电压。 该电压直接提供给微控制器的 P6.2引脚。
我已经检查 了从传感器接收到的电流以及转换后进入微控制器的电压。 电流和转换器电压固定在一定的高度。
我看不到电路有什么问题、那么我的计数值为什么会变化。
您好、Ryan、
我已经检查了控制器 ADC 引脚上的电压读数、它没有波动。 我还在 MCU 之前尝试过电压跟随器电路。
我没有得到稳定的值,我可以使用什么其他选项来获得稳定的值。
是否存在软件问题?
您好!
我已经在三个不同的硬件上尝试过与 ADC 相关的所有代码。 我已经对2000个值进行了平均计算,但计数偏差仍然存在,并且非常大(有时为4,有时为18)是否有任何推荐用于 ADC 的电路?