工具与软件:
我的 ADC 有问题。 我能够看到器件、但返回的值为25。 我将增益设置为1 (4.096V)、通道0上的输入电压为3.26v (使用万用表进行验证)、但输出为 ADC 值25或0.025v。 所有4通道输出错误的值。
我注意到有很多下冲、但我不确定这是否只是示波器引线或探头放置的误差。 我注意到有一个? 结束时发出通知。
如有任何帮助、将不胜感激。
谢谢!
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.
工具与软件:
我的 ADC 有问题。 我能够看到器件、但返回的值为25。 我将增益设置为1 (4.096V)、通道0上的输入电压为3.26v (使用万用表进行验证)、但输出为 ADC 值25或0.025v。 所有4通道输出错误的值。
我注意到有很多下冲、但我不确定这是否只是示波器引线或探头放置的误差。 我注意到有一个? 结束时发出通知。
如有任何帮助、将不胜感激。
谢谢!
我将代码更改为使用平均值计算、每秒128个样本、然后每5秒输出平均值、这有助于消除任何噪声问题。
它只是不停地输出128个、对温度的任何变化没有响应(即使输入电压在变化、由 MM 进行了验证
真的不知道除了可能用新的 ADC 替换 ADC 之外还有什么其他尝试。 当我将 FSR 更改为不同的值时、输出会发生变化、因此 ADC 会工作到某个点、但我想知道输入是否因下冲/过冲而损坏?
您好、DBC
如果过冲/下冲超过器件的建议运行条件、器件可能会损坏、但它认为此处的问题是数据解释不正确。
首先、您提到您要将器件设置为4.096V FSR、但从示波器捕获结果来看、您要写入配置寄存器的是+/-6.144V 的 FSR。 您也要将该器件设置为启动单次转换、但也要将其设置为在连续转换模式下运行。 我建议将该器件设置为单次模式。
您正在发出配置设置后立即发出读取转换结果命令。 您可能需要在发出读取转换寄存器命令之前添加更长的延迟、因为当您发出寄存器读取命令时、转换结果可能无法就绪。
此外、请确保正确解读数据、由于器件是12位器件、但数据是通过两个8位帧读取的、因此应忽略最后4位(始终为零)。
此致、
天使
下面是我的代码:#include <Arduino.h> #include <Wire.h> const int ADS1015_ADDRESS = 0x48; // Default I2C address for ADS1015 const int CONFIG_REGISTER = 0x01; const int CONVERSION_REGISTER = 0x00; const float GAIN = 4.096; const double INPUT_BIAS_V = 0.075; void setup() { Serial.begin(9600); Wire.begin(); } void loop() { Wire.beginTransmission(ADS1015_ADDRESS); Wire.write(CONFIG_REGISTER); Wire.write(0xC3); // MSB: single-shot mode, ±4.096V, single-ended channel 0 Wire.write(0x83); // LSB: 1600 SPS, disable comparator Wire.endTransmission(); delay(15); Wire.beginTransmission(ADS1015_ADDRESS); Wire.write(CONVERSION_REGISTER); Wire.endTransmission(); Wire.requestFrom(ADS1015_ADDRESS, 2); int16_t result = 0; if (Wire.available() == 2) { result = (Wire.read() << 8) | Wire.read(); } float voltage = result * GAIN / 2048; voltage -= INPUT_BIAS_V; Serial.print("ADC Value: "); Serial.print(result); Serial.print("\tVoltage: "); Serial.println(voltage, 4); delay(1000); }这将返回:ADC 值:448 Voltage:0.8210通道0上测得的电压为0.698V。 通道具有0.075V 的偏置。 我的最新捕获与此代码片段返回"[W:48][NUL]"所以我认为我的示波器在解码它时遇到了困难?
尊敬的 DBC:
您可能 只是看到示波器引线或探头放置出现了一些错误 、而不存在信号完整性问题。
您是否能够提供与您所指读数相对应的数字通信的示波器(或逻辑分析仪、如果可能)捕获?:
正在返回:ADC 值:448 电压:0.8210
这将有助于澄清您是否正确解释了来自 ADC 的数据。
此致、
天使