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.

[参考译文] ADS1015:未正确读取负值

Guru**** 2516170 points
Other Parts Discussed in Thread: ADS1015

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/973775/ads1015-not-properly-reading-negative-values

器件型号:ADS1015

你(们)好。

我将此 ADS1015连接到 Arduino、但它无法正常工作。

我将以差分方式测量、当我测量正值时、效果完全正常。 没有问题。

但是、当我想测量负值时、开始出现问题。 有时、它测量的值约为1.6伏、但当您以极小的方式更改电压时、它会停止测量任何值、而不返回任何值。 它在400mV 和5.1V 左右也能正常工作。 我不知道这可能会带来什么。

我将 addres 引脚拉至接地、我将用5V 为其馈电、并将 A0用作正输入、将 A1用作负输入。

我使用实验室工作台电源来提供不同的电压、Arduino 连接到笔记本电脑、笔记本电脑上没有插入充电器、因此不会对地短路。

我在这个帖子的底部包含了我的代码(摘自 Adafruit ADS1015库示例)

我期待您的建议、

提前感谢、

达安

这就是我连接所有设备的方式。 L_IO1和 LIO_2可以是 GND 或+30V。

(插入图像选项不起作用、因此我将其上传到了其他地方)

https://imgur.com/HKEw8FV

#include 
#include 

// AdafruIT_ADS1115 ADS;//将其用于16位版本*/
AdafruIT_ADS1015 ADS; /*将 thi 用于12位版本*/

void setup (void)
{
Serial.begin(9600);
Serial.println ("Hello!");

serial.println ("从 AIN0 (P)和 AIN1 (N)获取差分读数");
serial.println ("ADC 范围:+/- 6.144V (1位= 3mV/ADS1015、0.1875mV/ADS1115)");

// ADC 输入范围(或增益)可通过以下
//函数更改,但请注意不要超过 VDD +0.3V 最大值,或者
如果您调整输入范围,不要超过//上限和下限!
//错误地设置这些值可能会破坏您的 ADC!
// ADS1015 ADS1115
// ---- ----
ads.setGain(GAIN_TWOTHIRDS);// 2/3x 增益+/- 6.144V 1位= 3mV 0.1875mV (默认值)
// ads.setGain(GAIN_ONE); // 1x 增益+/- 4.096V 1位= 2mV 0.125mV
// ads.setGain(GAIN_TWO); // 2x 增益+/- 2.048V 1位= 1mV 0.0625mV
// ads.setGain(GAIN_FOUR); // 4x 增益+/- 1.024V 1位= 0.5mV 0.03125mV
// ads.setGain(GAIN_EIGHT); // 8x 增益+/- 0.512V 1位= 0.25mV 0.015625mV
// ads.setGain(GAIN_SIXTEEN);// 16x 增益+/- 0.256V 1位= 0.125mV 0.0078125mV

ads.begin();
}

void loop (void)
{
int16_t 结果;

/*请确保根据 IC 和增益设置更新此值! */
浮点乘法器= 3.0F;* ADS1015 @+/- 6.144V 增益(12位结果)*/
/浮点乘法器= 0.1875F;* ADS1115 @+/- 6.144V 增益(16位结果)*

/结果= ads.readadc_Different_0_1 ();

serial.print ("差分:");serial.print (结果);serial.print (");serial.print (结果*乘法器);serial.println ("mV");

延迟(100);
} 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    通过了解您如何时常获得正确的读数、可以消除数字通信中的计时问题。

    我还建议使用连接到数字总线线路的示波器来目视检查通信是否符合预期。

    您能否详细说明一下设备何时停止工作? 在某些输入电压下、器件根本没有响应?

    让我们开始消除:

    您能否确认每个引脚上的电压为正电压? 该器件只能读取正电压。 两者之间的差分电压可以为负、但每个引脚的电压必须在 GND 和 VDD 范围内。

    您是否正确解释了输出? 请注意下表中的输出代码。

    此致

    Cynthia