Измерение переменного напряжения Arduino uno

Skeptick
Offline
Зарегистрирован: 12.05.2021

Доброго времени суток, совсем недавно начал изучать такую материю как "Ардуино" и пока смотрел ролики на ютубе все было крайне просто). Но обзавелся я Arduino uno и первой задачей себе поставил слепить вольтметр постоянного напряжения с выводом значений на дисплей, с этим я вполне справился докупив АЦП ADS1115 для пущей точности. Захотел расширить данное создание до измерения переменного напряжения до 5 В с точностью 1 % (было бы идеально) и понял что набрел на стену. Изучив всевозможные тематические форумы стало понятно что вопрос этот поднимается часто, но решения я не нашел. Пойдя по пути наименьшего сопротивления изначально попробовал использовать данную библиотеку со приложенным примером скетча, но ничего не вышло. Затем пошел по самому ожидаемому пути-использованию диодного моста и нашел данную схему:

Собрал ее:

Использовал следующий текст программы:

int Volt = A0; // Для входа переменного напряжения
 

void setup() {
  pinMode(Volt, INPUT);

  Serial.begin(9600);
}
 
//Loop Function Start Here
void loop() 
{ 
  
   int AcVolt = analogRead(Volt); // считывание аналогового входа
   float AcVoltOut = (AcVolt * (5.098 / 1023)); // преобразование в вольты
   Serial.println(AcVolt); // отображение в последовательном мониторе
   //lcd.setCursor(0,0);
   Serial.print("AC Voltage");
  Serial.println(AcVoltOut); // отображение в последовательном мониторе значения в вольтах
   delay(100);
 }

Немного отредактировал приложенную к источнику скетч для вывода в серийный порт, а не на дисплей. И снова ничего не вышло. В диапазоне от 0-1 В показания серийного порта в области 0,300 В. С повышением переменного напряжения на выходе моста измеряемые значения не пропорционально растут и вблизи 2 В уже сравниваются, а затем превышают значение подаваемое на вхож моста.

Господа, уверен выслушаю всего интересного в свой счет, но я не прошу кого-то что-то за меня делать. Просто если кто-то знает в чем моя ошибка, либо уже делал подобные вещи и подскажет правильное направление или схематическое решение-буду крайне благодарен.

rkit
Offline
Зарегистрирован: 23.11.2016

Потому что мост нелинейный. Не годится схема принципиально. Потому что чтобы делать такие вещи нужно учить схемотехнику, а не arduino.

Skeptick
Offline
Зарегистрирован: 12.05.2021

Конструктивно и быстро, спасибо.

rkit
Offline
Зарегистрирован: 23.11.2016

Вот так это делается для изолированного источника переменного тока. R4 и R5 считается как делитель до 2.5V максимум. И не забывая, у 5 вольт переменного тока амплитуда не равна 5 вольтам. Дальше вычитаем 2.5 смещения и считаем по обычной RMS формуле.

Skeptick
Offline
Зарегистрирован: 12.05.2021

Спасибо, если можно то задам вопрос:

имеет ли смысл не делать смещение при использовании ADS1115 как АЦП, ведь как я понял по даташиту в диф. режиме он меряет отрицательное напряжение и могу сравнивать по модулю и так искать наибольшее значение?

nik182
Offline
Зарегистрирован: 04.05.2015

Мост дейсвительно вещь нелинейная. Но если измерять в диапазоне 165 - 300 вольт, а не от нуля, То погрешность от нелинейности минимальна, а факт отсутсвия напряжения чётко фиксируется. Другое дело, что конденсаторы в измерительной цепи заряжаются до максимального напряжения, которое престичывается однозначно в действующее значение только если входное напряжение чистый синус, чего в наших сетях не бывает. Форма напряжения всегда искажена. Поэтому, если хотим измерять действующее напряжение сети, надо рассчитывать RMS огибающей напряжения. Для этого надо снять как минимум 20 точек (чем больше тем лучше) на период и по формуле расчитать RMS. Как раз схема rkit заточена под данный метод. Делитель R4 R5 выбирается из соображений наксимального переменного напряжения, которое не долно превышать половины максимального напряжения АЦП. Для ардуины 5 вольт, напряжение на R5 - 2.5 вольта. При действующем напряжении вторичной обмотки трансформатора 12 вольт, максимальное напряжение будет 12*1.44*1.4 =17.3 вольта соответственно резисторы, если взять R5=2.5 кОм, то R4 17.3 - 2.5 = 14.7  - ближайший резистор большего номинала 15 кОм. 

 

nik182
Offline
Зарегистрирован: 04.05.2015

Skeptick пишет:

Спасибо, если можно то задам вопрос:

имеет ли смысл не делать смещение при использовании ADS1115 как АЦП, ведь как я понял по даташиту в диф. режиме он меряет отрицательное напряжение и могу сравнивать по модулю и так искать наибольшее значение?

Почему искать максимальное значение неправильно я уже написал. Нужно считать RMS -wiki в помощь. В дифрежиме измерять без смещения можно, но делитель R4 R5 нужен. Его надо рассчитать под максимальное напряжение 1115 АЦП. 

Skeptick
Offline
Зарегистрирован: 12.05.2021

Тогда это уже TRMS (если я не путаю), но все равно большое спасибо, буду пробовать двигаться в этом направлении.

nik182
Offline
Зарегистрирован: 04.05.2015

TRMS это обозначение на тестерах, что они показывают не пересчитанное максимальное, а рассчитанное честно RMS.

rkit
Offline
Зарегистрирован: 23.11.2016

Skeptick пишет:

ведь как я понял по даташиту в диф. режиме он меряет отрицательное напряжение

Отрицательное напряжение относительно другого входа, не относительно нуля питания.  Ты можешь подключить напряжение смещения на один из дифференциальных входов и не делать вычитания в софте.

nik182
Offline
Зарегистрирован: 04.05.2015

rkit пишет:

Отрицательное напряжение относительно другого входа, не относительно нуля питания.  Ты можешь подключить напряжение смещения на один из дифференциальных входов и не делать вычитания в софте.

Так то оно да, но только если делитель смещения будет точно на половину напряжения. Обычными резисторами это сделать очень проблематично, а деже малое смещение будет существенно влиять при расчёте RMS. Поэтому всё равно приходится вычитать постоянную составляющую из полученного ряда значений напряжения перед расчётом. Поэтому нет смысла в делителе на на вторую ногу. Достаточно просто резистора между диф входами. 

Skeptick
Offline
Зарегистрирован: 12.05.2021

А на сколько глупо/критично/абсурдно брать 5 В для смещения с самой ардуино?

rkit
Offline
Зарегистрирован: 23.11.2016

В условиях сборки с фото - большой разницы не сделает.

Skeptick
Offline
Зарегистрирован: 12.05.2021

Оценил) Сборка естественно улучшится в случае положительных результатов, спасибо за помощь.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Skeptick пишет:

Захотел расширить данное создание до измерения переменного напряжения до 5 В с точностью 1 % (было бы идеально) и понял что набрел на стену. Изучив всевозможные тематические форумы стало понятно что вопрос этот поднимается часто, но решения я не нашел.

Невозможно найти решение не сформулированной задачи.

Если напряжение постоянное, то его величина - константа. По определению.

Если напряжение переменное - то его величина функция времени. Но никак не единственное число. 

Если хотите чего-то осмысленного, нужно сформулировать критерий, как произвольную функцию следует преобразовывать в единственное число.

В дальнейшем обсуждении фигурирует аббревиатура RMS - да, это один из возможных вариантов подобного преобразования. Но отнюдь не единственный. Тем более, что в схеме с диодом Вы пытались получить что-то совершенно иное. Поэтому и неудивительна кардинальная разница в результатах.

Skeptick
Offline
Зарегистрирован: 12.05.2021

Пожалуй, Вы правы, сформулировал так себе. В идеале хотел бы получить измеренное RMS напряжение 50 Гц до 5 В.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Skeptick пишет:

В идеале хотел бы получить измеренное RMS напряжение 50 Гц до 5 В.

Ну так nik182 уже описал вариант решения.