Ви не увійшли.
Здравствуйте, возникла возможность на работе заиметь точный AC/DC вольтметр c пределом измерения до одного вольта и хоть от энергетики я сам по себе не далек (работал и электромонтером и инженером РЗА), но крайне мельком касался таких тонких материй как микроконтроллеры. Начал смотреть ролики, читать статьи и даташиты, решил что для такого новичка как я оптимальным первым шагом будет реализовать вольтметр постоянного тока с помощью внешнего АЦП ADS1115 c Arduino Uno. Собрал следующую схему:
Использовать решил дифференциальный режим (мне он чисто теоретически показался точнее), питание ардуинка получает с USB, а скетч использую из примеров библиотеки ADS1115:
#include <Adafruit_ADS1X15.h>
Adafruit_ADS1115 ads; /* Use this for the 16-bit version */
//Adafruit_ADS1015 ads; /* Use this for the 12-bit version */
void setup(void)
{
Serial.begin(9600);
Serial.println("Hello!");
Serial.println("Getting differential reading from AIN0 (P) and AIN1 (N)");
Serial.println("ADC Range: +/- 6.144V (1 bit = 3mV/ADS1015, 0.1875mV/ADS1115)");
// The ADC input range (or gain) can be changed via the following
// functions, but be careful never to exceed VDD +0.3V max, or to
// exceed the upper and lower limits if you adjust the input range!
// Setting these values incorrectly may destroy your ADC!
// ADS1015 ADS1115
// ------- -------
ads.setGain(GAIN_TWOTHIRDS); // 2/3x gain +/- 6.144V 1 bit = 3mV 0.1875mV (default)
// ads.setGain(GAIN_ONE); // 1x gain +/- 4.096V 1 bit = 2mV 0.125mV
// ads.setGain(GAIN_TWO); // 2x gain +/- 2.048V 1 bit = 1mV 0.0625mV
// ads.setGain(GAIN_FOUR); // 4x gain +/- 1.024V 1 bit = 0.5mV 0.03125mV
// ads.setGain(GAIN_EIGHT); // 8x gain +/- 0.512V 1 bit = 0.25mV 0.015625mV
// ads.setGain(GAIN_SIXTEEN); // 16x gain +/- 0.256V 1 bit = 0.125mV 0.0078125mV
ads.begin();
}
void loop(void)
{
int16_t results;
int16_t results2;
/* Be sure to update this value based on the IC and the gain settings! */
//float multiplier = 3.0F; /* ADS1015 @ +/- 6.144V gain (12-bit results) */
float multiplier = 0.1875F; /* ADS1115 @ +/- 6.144V gain (16-bit results) */
results = ads.readADC_Differential_0_1();
results2 = ads.readADC_Differential_2_3();
Serial.print("Differential: "); Serial.print(results); Serial.print("("); Serial.print(results * multiplier); Serial.println("mV)");
results = ads.readADC_Differential_0_1();
//Serial.print("Differential2: "); Serial.print(results2); Serial.print("("); Serial.print(results2 * multiplier); Serial.println("mV)");
//results2 = ads.readADC_Differential_2_3();
delay(1000);
}
Разность измерений напряжения даже на самом большом диапазоне с мультиметром APPA у меня порядка 15 мВ, что меня в принципе устраивает, но когда контакты аналоговых входов ADS1115 висят в воздухе, он меряет какие-то наводки, шумы:
Я в мечтах лелею надежду эволюционировать до подключения дисплея и вывода напряжения туда, но хочу видеть четкий ноль, когда провода не подключены к объекту измерения.
Прошу прояснить для меня момент, есть ли возможность получить четкий ноль в данном случае и как? Или это нормальная ситуация, ибо смотря ролики на ютубе у многих заметил такой момент.
Неактивний
Причем этот "шум" появляется на самих аналоговых входах ADS1115, ибо я просто подключил плату и замерил мультиметром напряжение на контактах А1-А2 ADS1115 и увидел напряжение импульсы напряжения порядка 150 мВ.
Неактивний
... но когда контакты аналоговых входов ADS1115 висят в воздухе, он меряет какие-то наводки, шумы
Не помню, кто из великих сказал: "Есть два типа инженеров: одни создают антенны, а другие тоже создают антенны, но не преднамеренно." :-)
Нельзя просто так оставить просто кусок провода висеть в воздухе. Это волновой вибратор, который принимает на частоте, для которой длина четвертьволны равна длине щупа. Даже когда вы подключите два таких щупа (земля и линия) к устройству, в итоге все равно получится рамочная антенна.
Если это принципиально убрать такой эффект, попробуйте использовать коаксиальный кабель с соответствующим разъемом или витую пару с дифференциальным подключением. Таким образом щупы будут выполнять функцию только волновода.
И, конечно же, шум можно снизить за счет избыточного сэмплирования АЦП, тем более в цепи постоянного тока.
Остання редакція Mishka (2021-04-29 10:26:37)
Неактивний
SkepticK пише:... но когда контакты аналоговых входов ADS1115 висят в воздухе, он меряет какие-то наводки, шумы
Не помню, кто из великих сказал: "Есть два типа инженеров: одни создают антенны, а другие тоже создают антенны, но не преднамеренно." :-)
Всегда получал истинное и неподдельное удовольствие от подобного общения на форумах, видимо это уже часть некой культуры коммуникации в интернете. Но это мелочи, во всяком случае, спасибо за ответ, меня просто в виду моей неопытности в этой теме одолевают сомнения (возможно я допустил какую глупую ошибку и как следствие получил вышеупомянутые результаты, хотя с другой стороны в даташите ADS1115 приведена таблица зависимости помех от диапазона измерения и увеличения параметра "DATA RATE", но опять же при просмотре огромного числа роликов на эту тему видел у готовых проектов четкий ноль на вольтметре и подумал о возможном существовании калибровки данного АЦП).
Причем упомянутые мною помехи фиксируются не только на проводах "в воздухе", но и на самих аналоговых входа ADS1115, что меня смутило.
Последнее спасибо за ответ, буду пробовать увеличивать сэмплирование АЦП.
Неактивний
" Все уровни при дифф. включении измеряются относительно земли вашего АЦП, и если между землями источника сигнала и АЦП есть какая-то помеха то можно получить проблемы, которые вы собственно и получили.
Поэтому нужна либо 100% гальваническая развязка входящего сигнала, либо наоборот нулевое сопротивление между землями. "
Неактивний
А, похоже, я неправильно прочел первый пост! Как я теперь понимаю, сам по себе АЦП показывает некое напряжение на входе, даже если от него отключено вообще все, включая щупы, так?
Действительно, как сказал renoshnik, возможно что-то проходит по питанию. Имеет смысл убедиться, что земля имеет хороший, стабильный ноль, и что питание от Ардуино имеет развязку конденсаторами, обычно это 10 мкФ + 0.1 мкФ. Особенно это актуально, если модуль включен в макетную плату. Можно добавить несколько дополнительных проводов для GND и для более чистого сигнала включить его через отдельный LDO.
Неактивний
Изучил эту тему и да, скорее всего это и есть моя ошибка, ибо все размещаю на бредборде, завтра перед работой зайду на радиорынок за конденсаторами. Тонкая материя в которой много подводных камней, но так интереснее.
Спасибо за помощь.
Неактивний