ADS1115
- Войдите на сайт для отправки комментариев
Пнд, 19/02/2018 - 11:03
Здравствуйте, при работе с ADS1115 выводит только нули. Использовал разные скетчи, проверял адрес модуля программой, само подключение. С чем это может быть связано?
С чем это может быть связано?
С тем, что либо неправильно подключено, либо используется неправильный скетч. Вы же ни того ни другого нам не показываете, так что проверяйте сами.
Схема подключения выглядит точно так, вот скетч(так же пробывал встроенные в библиотеку скетчи)
Я может ошибаюсь, но readADC_SingleEnded() это вроде измерение между входом и землёй, а у Вас на два входа батарейка подключена.
Так "-" батареи разве не надо на GND завести? Вроде в п. 9.3.1 даташита это прямо сказано ("When single-ended signals are measured, the negative input of the ADC is internally connected to GND by a switch within the multiplexer"), т.е. он измеряете относительно своего GND.
Можно, конечно, "-" батареи подать и на AIN3 и измерять остальные AIN's относительно его, но для этого надо специально MUX конфигурировать (см. п. 10.1.2 даташита), но именно AIN3, а не AIN0, как у Вас.
Так "-" батареи разве не надо на GND завести?
Пробовал по-разному, результаты АЦП всегда равны нулю, не должны ли быть какие-нибудь помехи?
Пробовал по-разному, результаты АЦП всегда равны нулю, не должны ли быть какие-нибудь помехи?
Я не знаю. С тех пор, как человек здесь читал сигнал с пина Ресет и потом до усрачки нам всем доказывал, что это можно делать, я даже не пытаюсь догадываться что и как люди "пробуют по-разному", а обсуждаю только то, что вижу. Пока я вижу схему на которой измеряемое напряжение подключено неправильно и код, который не читал потому, что он неправильно выложен и его невозможно обсуждать (нет номеров строк).
Появится схема и код "по-разному" будем обсуждать "по-разному", а если схемы и кода нет - то и обсуждать нечего.
Вы бы хоть демку от библы посмотрели -
// Adafruit_ADS1115 ads; /* Use this for the 16-bit version */
Adafruit_ADS1015 ads; /* Use thi for the 12-bit version */
Комментарии для кого пишутся?
Плюс, как замечено выше -
Вы прицепили измеряемую батарею к дифф. входу, а получить значение хотите с "однополярного".
Появится схема и код "по-разному" будем обсуждать "по-разному", а если схемы и кода нет - то и обсуждать нечего.
#include <Adafruit_ADS1015.h> #include <Wire.h> Adafruit_ADS1115 ads(0x48); float Voltage = 0.0; void setup(void) { Serial.begin(9600); ads.begin(); } void loop(void) { int16_t adc0; adc0 = ads.readADC_SingleEnded(0); Voltage = (adc0 * 0.1875)/1000; Serial.print("AIN0: "); Serial.print(adc0); Serial.print("\tVoltage: "); Serial.println(Voltage, 7); Serial.println(); delay(1000); }Ilyardu, A4 - SDA A5 -SCL
Да, только на этой схеме перепутал.
Adafruit_ADS1015 ads; /* Use thi for the 12-bit version */
Изменил, но ничего не поменялось. АЦП нули выводит.
Подключал по приведеной схеме, использовал пример из библиотеки, всё прекрасно работает.
Правда я в библиотеке Adafruit_ADS1015.cpp закоментировал строку Wire.begin(), а в setup вставил
#include <Wire.h> #include <Adafruit_ADS1015.h> Adafruit_ADS1115 ads(0x48); //16 бит и адрес устройства int Voltage0; int Voltage1; float Voltage2; float Voltage3; void setup(void) { Wire.begin(); // SDA SCL I2C ads.begin(); //включаем АЦП } void loop() { ADS1115(); } void ADS1115(){ // получаем и формируем данные с ADS1115 int16_t adc0, adc1, adc2, adc3; // на выходе АЦП получаем 16-разрядное целое adc0 = ads.readADC_SingleEnded(0); //Измеряем напряжение1 220 adc1 = ads.readADC_SingleEnded(1); //Измеряем напряжение2 220 adc2 = ads.readADC_SingleEnded(2); //Измеряем напряжение3 13,5 adc3 = ads.readADC_SingleEnded(3); //Измеряем напряжение4 13,5 Voltage0 = (adc0 * 0.1875)/15; //пересчитываем в 220 вольт Voltage1 = (adc1 * 0.1875)/15; //пересчитываем в 220 вольт Voltage2 = (adc2 * 0.1875)/250; //пересчитываем в 13,5 вольт Voltage3 = (adc3 * 0.1875)/250; //пересчитываем в 13,5 вольт }Здравствуйте, пробую подключить модуль ads1115 с Али к ардуино уно, и он после 10 секунд работы отрубает данные и обрубает шину i2c, после этого i2c scanner уже не работает. Через некоторое время ситуация может повториться, модуль неожиданно включается, работает немного и снова вырубается на несколько часов... Если подключить одновременно по шине еще и экран, то он не работает. Скетч стандартный, как в этой теме. Может кто с таким сталкивался? Адрес 0x48 на земле.
Как выглядит модуль?
По ходу он на 3.3V, а вы его в 5V втыкаете.
PS. Хотя нет, у меня тоже без доп. стабилизаторов, но с 5V работал...
По даташиту сам чип от 2 до 5.5. Или там есть разные ревизии по питанию?
Да спутал я с каким-то другим модулем, видимо.