Відповісти

Введіть повідомлення і натисніть Надіслати
Параметри

Назад

Огляд теми (нові повідомленні вгорі)

Honey
2021-06-20 13:02:27

Сделайте выпрямитель в высоковольтной части схемы, а потом делителем на резисторах или с помощью ОУ приведите к диапазону 0-5В. Так уменьшите влияние нелинейности и падения напяжения на диодах.

theoristos
2021-06-20 12:04:27

Бред какой-то

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

В скетче идёт тупо вычисление пикового максимума за 200мс и деление его на корень из 2. Такое работает только для ровной, красивой синусоиды.

В схеме нарисован делитель-"усреднитель" с диодом в верхнем плече. Такое
1. Пропускает только положительный полупериод.
2. Имеет крайне кривое отношение к определяемому _пиковому_ значению. Ибо пиковое исходного сигнала превращается в среднее положительного полупериода + вклады гармоник с разными множителями от делителя. Ибо делитель с кондёром в нижнем плече для разных частот имеет разные коэффициенты деления для разных частот.
3. Не учитывается падение напряжения на диоде, которое в зависимости от типа может быть сильно разным.

SkepticK
2021-05-13 12:28:36

Пробовал схему с одним диодом, конденсатором и стабилитроном ac-voltmeter-using-arduino-circuit-diagram.png и результаты также были далеки от удовлетворительных, менял и емкость конденсатора и сам диод. Допускаю что сам совершаю элементарную ошибку, поэтому утверждать неработоспособность этой идеи не буду)
В данный момент сделал смещение 2.5 В и с использованием библиотеки получил значения с погрешность в 5 %.

Honey
2021-05-13 10:56:09

А один диод не вносит такую огромную нелинейность?

SkepticK
2021-05-13 09:00:07

Пробовал использовать диодный мост, но он вносит огромную нелинейность на таком относительно маленьком диапазоне как 0-5 В.

Honey
2021-05-12 22:37:46

Если у Вас задача найти среднеквадратическое значение напряжения (RMS), то у него есть прекрасное свойство: знак напряжения (плюс или минус) совершенно не важен (смотрите формулу, там возведение в квадрат), поэтому вместо диода сделайте выпрямитель.
Играться со смещением напряжения для данной задачи - плохая идея, т.к. потеряется реальный ноль и результаты RMS будут далеки от истины.

SkepticK
2021-05-12 21:47:41

Я думаю сделав смещение на 2.5 В попробовать использовать данную библиотекуhttps://github.com/MartinStokroos/TrueR … re_rms.ino,может кто-то ее уже использовал? Она даёт результат?

Honey
2021-05-12 21:21:40

Если сигнал стабильный, то делается так:
1. по прерыванию компаратора запускается таймер на N тактов
2. по сработке таймера запускается ADC
3. инкрементируется N и повторяется все с начала
Так можно оцифровать сигнал с дискретностью до 1/F_CPU.
Необходимо, чтобы не срабатывали никакие другие прерывания во время этого процесса. Очень желательно этот участок писать на ассемблере.

SkepticK
2021-05-12 19:47:07

От 0 до 5 В. Сегодня начал изучать тему смещения синусоиды на 2.5 В, но пока слабо представляю реализацию выборки за период в 20 мс,вот. За любой совет буду благодарен.

akapulko
2021-05-12 17:44:47

"напряжение до 5В" - это 0..5В? -5..5В? -100..5В?

SkepticK
2021-05-11 14:19:02

Доброго времени суток, захотел сделать измерительный элемент с отображением значений для высоковольтного делителя напряжения. С измерением постоянного напряжения и выводом результатов проблем нет, попутно использую внешний АЦП ADS1115, но с переменкой проблемы и я так понял что ардуино не сильно для этого и подходит, хотя находил некоторые проекты в интернете, пробовал следующие варианты:
1) использовать следующую библиотеку https://github.com/MartinStokroos/TrueRMS;
2)следующую схему arduino-ac-voltmeter-circuit-1024x558.png и код для нее

#include <LiquidCrystal.h>    // include Arduino LCD library
 
// LCD module connections (RS, E, D4, D5, D6, D7)
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
 
void setup(void) {
  lcd.begin(16, 2);           // set up the LCD's number of columns and rows
  lcd.setCursor(0, 0);
  lcd.print("RMS Voltage:");
  analogReference(INTERNAL);  // set ADC positive reference voltage to 1.1V (internal)
}
 
// get maximum reading value
uint16_t get_max() {
  uint16_t max_v = 0;
  for(uint8_t i = 0; i < 100; i++) {
    uint16_t r = analogRead(A3);  // read from analog channel 3 (A3)
    if(max_v < r) max_v = r;
    delayMicroseconds(200);
  }
  return max_v;
}
 
// main loop
void loop() {
 
  char buf[10];
  // get amplitude (maximum - or peak value)
  uint32_t v = get_max();
  // get actual voltage (ADC voltage reference = 1.1V)
  v = v * 1100/1023;
  // calculate the RMS value ( = peak/√2 )
  v /= sqrt(2);
 
  sprintf(buf, "%03u Volts", v);
  lcd.setCursor(0, 1);
  lcd.print(buf);
 
  delay(100);
 
}
 
// end of code.

3)пробовал использовать диодный мост вместо одного диода в предыдущей схеме.
Во всех случаях результаты далеки от посредственных, погрешности на мой взгляд огромные (представляют собой крайне не линейный характер и доходят до 30 % от подаваемого значения). В идеале хотел бы измерять переменное напряжение до 5 В с погрешностью в 1 %. Суть моего вопроса вообще насколько это возможно, а если возможно то буду крайне благодарен за совет в его реализации. Находил проекты с использованием ОУ, но сам с ними еще не работал и вообще без году неделю начал изучать ардуино, поэтому изначально искал более казуальное решения.

Підвал форуму