Как правильно посчитать потребляемую мощность?

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Аватара пользователя
ПростоНуб
Собутыльник Кота
Сообщения: 2723
Зарегистрирован: Пт сен 07, 2018 20:20:02
Откуда: деревня в Тульской губернии

Как правильно посчитать потребляемую мощность?

Сообщение ПростоНуб »

Нужно контролировать потребляемую мощность на розетке под управлением ESP32. Сейчас использую для этой цели ESP32-C3 (RISC-V)
Прототип выглядит так: https://youtu.be/cv17alONmCw
К нулевому каналу ADC1 подключен модуль с трансформатором ZMPT101b и LM358. К первому каналу того же ADC - модуль с ACS712.
Потоковым чтением через DMA считываю синусоиду с обоих каналов, фильтрую её медианным фильтром с фиксированным окном в пять значений, а далее считаю по отдельность RMS для напряжения и тока.
СпойлерКод на Rust.

Код: Выделить всё

# AppConfig:
max_measured_freq = 100 # Hz
min_measured_freq = 25 # Hz
rms_half_periods = 12
sps_freq = 20000 # Hz
voltage_channel = 0
zero_voltage = 2490 # raw
reference_voltage =  238.0 # V
reference_voltage_raw = 680.0
zero_current = 2848 # raw
reference_current = 7.4 # A
reference_current_raw = 522.0 # raw

Код: Выделить всё

use anyhow::bail;
use derivative::Derivative;
use esp_idf_hal::peripheral::Peripheral;
use esp_idf_svc::hal::adc::{
    AdcContConfig, AdcContDriver, AdcMeasurement, Attenuated, EmptyAdcChannels,
};
use std::convert::TryFrom;

use crate::median::*;
use crate::Config;
use crate::PERIPHERALS;

const VOLTAGE_CHANNEL: usize = 0;

#[derive(Derivative)]
//#[derivative(Default, Copy, Clone, Debug)]
#[derivative(Default)]
struct ChannelBuffers {
    zero_raw: u16,
    reference_rms: f32,
    reference_raw: f32,
    #[derivative(Default(value = "0"))]
    zero_deviation: i32,
    #[derivative(Default(value = "0"))]
    squares_sum: u32,
    #[derivative(Default(value = "0"))]
    count: u16,
    #[derivative(Default(value = "[0; 5]"))]
    median_buf: [u16; 5],
    #[derivative(Default(value = "0"))]
    median_idx: usize,
    #[derivative(Default(value = "false"))]
    median_started: bool,
}

pub struct RmsMeashureResult {
    pub volatge_rms: f32,
    pub current_rms: f32,
    pub frequency: f32,
}

pub fn rms_meashure(app_config: &Config) -> anyhow::Result<RmsMeashureResult> {
    let peripherals = PERIPHERALS.clone();
    let mut peripherals = peripherals.lock();
    let adc_config = AdcContConfig {
        sample_freq: esp_idf_hal::prelude::Hertz(app_config.sps_freq),
        frame_measurements: 16,
        frames_count: 4,
    };

    let adc_channels = EmptyAdcChannels::chain(Attenuated::none(unsafe {
        peripherals.pins.gpio0.clone_unchecked()
    }))
    .chain(Attenuated::none(unsafe {
        peripherals.pins.gpio1.clone_unchecked()
    }));
    let mut adc = AdcContDriver::new(
        unsafe { peripherals.adc1.clone_unchecked() },
        &adc_config,
        adc_channels,
    )?;

    adc.start()?;
    let mut ch = [
        ChannelBuffers {
            zero_raw: app_config.zero_voltage,
            reference_rms: app_config.reference_voltage,
            reference_raw: app_config.reference_voltage_raw,
            ..Default::default()
        },
        ChannelBuffers {
            zero_raw: app_config.zero_current,
            reference_rms: app_config.reference_current,
            reference_raw: app_config.reference_current_raw,
            ..Default::default()
        },
    ];

    let mut is_zero_crossed = false;
    let mut zero_check_block_count: u16 = 1;
    let mut zero_cross_count: u16 = app_config.rms_half_periods + 1;
    let mut last_voltage: u16 = 0;
    let mut max_measurements: i32 =
        (app_config.sps_freq as i32 * app_config.rms_half_periods as i32 * 2)
            / app_config.min_measured_freq as i32
            + 1;

    let mut samples = [AdcMeasurement::default(); 16];
    'reading_loop: loop {
        if let Ok(num_read) = adc.read(&mut samples, 100) {
            for smp in samples.iter().take(num_read) {
                if max_measurements <= 0 {
                    println!("Can't calculate frequency. May be power off?");
                    bail!("Can't calculate frequency. May be power off?");
                }
                let i: usize = usize::try_from(smp.channel())?;
                if i >= ch.len() {
                    println!("Invalid GPIO");
                    bail!("Invalid GPIO");
                } else {
                    if ch[i].median_idx > 4 {
                        ch[i].median_idx = 0;
                        if !ch[i].median_started {
                            ch[i].median_started = true;
                        }
                    }

                    if ch[i].median_started {
                        let median_value = median5(ch[i].median_buf);
                        if i == VOLTAGE_CHANNEL {
                            if zero_cross_count == 0 {
                                break 'reading_loop;
                            }

                            if zero_check_block_count > 0 {
                                zero_check_block_count -= 1;
                            } else if (last_voltage < app_config.zero_voltage
                                && median_value >= app_config.zero_voltage)
                                || (last_voltage >= app_config.zero_voltage
                                    && median_value < app_config.zero_voltage)
                            {
                                zero_check_block_count = (app_config.sps_freq
                                    / app_config.max_measured_freq as u32
                                    / 2
                                    / app_config.rms_half_periods as u32)
                                    as u16;
                                is_zero_crossed = true;
                                zero_cross_count -= 1;
                            }
                            last_voltage = median_value;
                        }

                        if is_zero_crossed {
                            let sq: u32 = if median_value >= ch[i].zero_raw {
                                (median_value - ch[i].zero_raw) as u32
                            } else {
                                (ch[i].zero_raw - median_value) as u32
                            };
                            ch[i].squares_sum += sq * sq;
                            ch[i].zero_deviation += ch[i].zero_raw as i32 - median_value as i32;
                            ch[i].count += 1;
                        }
                    }

                    ch[i].median_buf[ch[i].median_idx] = smp.data();
                    ch[i].median_idx += 1;
                }
                max_measurements -= 1;
            }
        }
    }
    drop(adc);

    let v_rms = ((ch[0].squares_sum as f32 / ch[0].count as f32).sqrt()
        / app_config.reference_voltage_raw
        * app_config.reference_voltage)
        .round();
    let c_rms = (((ch[1].squares_sum as f32 / ch[1].count as f32).sqrt()
        / app_config.reference_current_raw
        * app_config.reference_current
        * 10f32)
        .round()
        // pickups
        - 3f32)
        / 10f32;

    let res = RmsMeashureResult {
        volatge_rms: if v_rms < 55f32 { 0f32 } else { v_rms },
        current_rms: if v_rms < 55f32 || c_rms < 0.5f32 {
            // current deviation
            0f32
        } else {
            c_rms
        },
        frequency: if v_rms < 55f32 {
            0f32
        } else {
            (app_config.sps_freq as f32 / ch[0].count as f32 / 4f32
                * app_config.rms_half_periods as f32
                * 10f32)
                .round()
                / 10f32
        },
    };

    for (i, chan) in ch.iter().enumerate() {
        println!(
            "GPIO{}: freq = {}, RMS = {} (raw: {} deviation: {}) by count {}",
            i,
            (app_config.sps_freq as f32 * app_config.rms_half_periods as f32
                / chan.count as f32
                / 4f32
                * 10f32)
                .round()
                / 10f32,
            ((chan.squares_sum as f32 / chan.count as f32).sqrt() / chan.reference_raw
                * chan.reference_rms
                * 10f32)
                .round()
                / 10f32,
            (chan.squares_sum as f32 / chan.count as f32).sqrt().round(),
            (chan.zero_deviation as f32 / chan.count as f32).round(),
            chan.count
        );
    }

    Ok(res)
}
Проблема в том, что и точность никакая, да и средневзвешенная сумма положительных и отрицательных замеров странным образом улетает на +-200 попугаев.
Кто-нибудь подобное делал?

На всякий случай приложу еще и схему.
Изображение
Реклама
Аватара пользователя
Jack_A
Друг Кота
Сообщения: 6308
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Re: Как правильно посчитать потребляемую мощность?

Сообщение Jack_A »

[uquote="ПростоНуб",url="/forum/viewtopic.php?p=4642962#p4642962"]далее считаю по отдельность RMS для напряжения и тока[/uquote]
... ну и? Перемножаем RMS напр. и тока, получаем х.з.ч., а не потребляемую активную мощность, бо без учёта сдвига фаз. Или оно только для электроплиток и утюгов, где потр. мощщность всегда активная?
СпойлерЭх, не знал я четверть века назад, когда ещё работал, об Rust (да и сейчас не знаю :)) ) . Пришлось на древней Меге104 на асме городить дивайсы. Может, потому они до сих пор работают? И считл этот энергетический мультиметр с десяток параметров, хотя камень был древний и частота всего 8МГц.
Насчёт улетающих куда-то попугаев ничего сказать не могу, к сожалению. У меня никто никуда не улетал - может по причине (см. выше). Ну дак пресловутый Хруст вроде заточен на создание безошибочных программ ? :shock:
Изображение
Реклама
Аватара пользователя
ПростоНуб
Собутыльник Кота
Сообщения: 2723
Зарегистрирован: Пт сен 07, 2018 20:20:02
Откуда: деревня в Тульской губернии

Re: Как правильно посчитать потребляемую мощность?

Сообщение ПростоНуб »

[uquote="Jack_A",url="/forum/viewtopic.php?p=4643135#p4643135"]Или оно только для электроплиток и утюгов, где потр. мощщность всегда активная?[/uquote]
На данный момент именно так. Если потребуется считать реактивную мощность, то естественно, это сделаю. Вопрос был совсем не об этом.

[uquote="Jack_A",url="/forum/viewtopic.php?p=4643135#p4643135"]Ну дак пресловутый Хруст вроде заточен на создание безошибочных программ ? :shock:[/uquote]
Нет, конечно. Он позволяет исключить большинство ошибок при работе с динамической памятью. Само собой, на восьмибитном МК это малоактуально, в отличии от ESP32 с FreeRTOS и веб-сервером.
Аватара пользователя
Ivanoff-iv
Друг Кота
Сообщения: 7077
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Откуда: Сердце Пармы

Re: Как правильно посчитать потребляемую мощность?

Сообщение Ivanoff-iv »

Варианты или циклично (хотя-бы 100 раз в секунду) перемножать мгновенные значения тока и напряжения, постаравшись их как можно одновременнее получить, или делать замеры IUI, а ток усреднять потом (или наоборот - UIU, и усреднять напряжение)
Результат умножения складывать в буфер, из которого (тоже регулярно) результат вынимать и преобразовывать из попугаев в Ватты

а можно микросхему от старого счетчика взять (которая с импульсным выходом)
Для тех, кто не учил магию мир полон физики :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
ПростоНуб
Собутыльник Кота
Сообщения: 2723
Зарегистрирован: Пт сен 07, 2018 20:20:02
Откуда: деревня в Тульской губернии

Re: Как правильно посчитать потребляемую мощность?

Сообщение ПростоНуб »

[uquote="Ivanoff-iv",url="/forum/viewtopic.php?p=4643157#p4643157"]Варианты или циклично (хотя-бы 100 раз в секунду)[/uquote]
100 раз в секунду при частоте 50 Гц будет вообще ни о чем.
Там в коде видно, что SPS установлен в 20 Кгц. То есть, я 10 тыс. раз в секунду замеряю напряжение и ток со сдвигом в 100 микросекунд.


[uquote="Ivanoff-iv",url="/forum/viewtopic.php?p=4643157#p4643157"]а можно микросхему от старого счетчика взять (которая с импульсным выходом)[/uquote]
Тоже вариант. Но старого счетчика, нет. Да и хотелось все же в веб-интерфейсе выдавать напряжение и ток, а не только мощность. В деревне у меня в розетке с одинаковым успехом можно обнаружить как 160 вольт, так и 260.
С реактивкой пока никаких проблем нет, так как это будет управление электронагревателем по WiFi.
Задача не считать потребление, а мониторить напряжение, ток и потребляемую мощность.
Реклама
Аватара пользователя
es131245
Потрогал лапой паяльник
Сообщения: 369
Зарегистрирован: Пт фев 01, 2013 21:05:30

Re: Как правильно посчитать потребляемую мощность?

Сообщение es131245 »

[uquote="ПростоНуб",url="/forum/viewtopic.php?p=4643172#p4643172"]мониторить напряжение, ток и потребляемую мощность[/uquote]

О какой мощности идет речь?
Реклама
Аватара пользователя
ПростоНуб
Собутыльник Кота
Сообщения: 2723
Зарегистрирован: Пт сен 07, 2018 20:20:02
Откуда: деревня в Тульской губернии

Re: Как правильно посчитать потребляемую мощность?

Сообщение ПростоНуб »

[uquote="es131245",url="/forum/viewtopic.php?p=4643178#p4643178"]О какой мощности идет речь?[/uquote]
Написал же:
Ivanoff-iv писал(а):это будет управление электронагревателем по WiFi
Так что пока только активная. Реактивная неинтересна.
Если же вопрос о максимальной мощности, то можно считать, что не более 2.5 КВт.
Аватара пользователя
es131245
Потрогал лапой паяльник
Сообщения: 369
Зарегистрирован: Пт фев 01, 2013 21:05:30

Re: Как правильно посчитать потребляемую мощность?

Сообщение es131245 »

Тогда в цепь 220 последовательный шунт и мерить быстро U до и после.
U до = U 220
(U2-U1)/R = I цепи 220
U*I*cosФи =P


[uquote="mickbell",url="/forum/viewtopic.php?p=3873797#p3873797"]Предлагаю ещё один вариант, проверенный. АЦП, к примеру, ADC121S101, запитанный через REF198 от ADUM6402, он же развязывает сигнальные линии от МК. В моём случае перед АЦП стоит опер, другой (оба опера в одном корпусе) буферит REF/2 для сдвига сигнала.[/uquote]
Аватара пользователя
ПростоНуб
Собутыльник Кота
Сообщения: 2723
Зарегистрирован: Пт сен 07, 2018 20:20:02
Откуда: деревня в Тульской губернии

Re: Как правильно посчитать потребляемую мощность?

Сообщение ПростоНуб »

[uquote="es131245",url="/forum/viewtopic.php?p=4643184#p4643184"]Тогда в цепь 220 последовательный шунт и мерить быстро U до и после.[/uquote]
И чем два трансформатора ZMPT101b с двумя LM358 лучше измерения тока датчиком Холла в ACS712 и напряжения одним трансформатором ZMPT101b с одним LM358?

[uquote="mickbell",url="/forum/viewtopic.php?p=3873797#p3873797"]Предлагаю ещё один вариант, проверенный. АЦП, к примеру, ADC121S101, запитанный через REF198 от ADUM6402, он же развязывает сигнальные линии от МК. В моём случае перед АЦП стоит опер, другой (оба опера в одном корпусе) буферит REF/2 для сдвига сигнала.[/uquote]
Чем он лучше, чем родной АЦП у ESP32-C3? Гляньте на схему. Там три питания:
1. МК - 3.3 В
2. ОУ и ACS712 - 5 В
3. Реле - 5 В
Аватара пользователя
Ivanoff-iv
Друг Кота
Сообщения: 7077
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Откуда: Сердце Пармы

Re: Как правильно посчитать потребляемую мощность?

Сообщение Ivanoff-iv »

ПростоНуб писал(а):100 раз в секунду при частоте 50 Гц будет вообще ни о чем.
Да, опечатался... 100 раз за период... :oops:

Добавлено after 4 minutes 20 seconds:
Если измеряешь с равными промежутками по очереди ток и напряжение, то тем более нужно находить среднее значение, чтобы моменты замеров совпадали хотябы виртуально
Для тех, кто не учил магию мир полон физики :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Аватара пользователя
es131245
Потрогал лапой паяльник
Сообщения: 369
Зарегистрирован: Пт фев 01, 2013 21:05:30

Re: Как правильно посчитать потребляемую мощность?

Сообщение es131245 »

[uquote="ПростоНуб",url="/forum/viewtopic.php?p=4643185#p4643185"]И чем два трансформатора ZMPT101b с двумя LM358 лучше измерения тока датчиком Холла в ACS712 и напряжения одним трансформатором ZMPT101b с одним LM358?[/uquote]

Первое это ардуино, оно не подходит на аналоговых измерений.
Потом датчики хола, они сами по себе грубые 2% + сильная зависимость от магнитного поля вокруг. (Вы же не хотите экранировать датчик от магнитного поля?)
Даже если Вы это сделаете то их чувствительность проигрывает любому измерительному трансформатору.

Транс лучшее бюджетное решение.
Но там свои заморочки, например трансформатор сам по себе фильтр и искажает входной сигнал.
Например Вы поставили старый мотор где на роторе искра ЭДС при разрыве обмотки.
Тут Ваш транс не покажет ВЧ импульс а наоборот срежет его своей L поставляющей.
Вы будете мерить усреднённое значение.

Только решение нашего Тутанхамона из Екатеринбурга позволит Вам честно смотреть сигнал, без искажений, без расчета CosФи.
PS LM358 тоже говно, он дает смещение 2-7мВ по входу. Таких в схеме нужно минимум 2. Так что берите ОУ с смещением по напряжению не более 0.1мВ Что бы измерения 12бит АЦП не превратились в 10бит АЦП
Аватара пользователя
Ivanoff-iv
Друг Кота
Сообщения: 7077
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Откуда: Сердце Пармы

Re: Как правильно посчитать потребляемую мощность?

Сообщение Ivanoff-iv »

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

Добавлено after 3 minutes 45 seconds:
ПростоНуб, перечитал 1й пост, попробуй фильтровать для одной величины например 5, а для другой 6 значений и фильтр взять не медианный, а усреднение или медианно усреднительный (откидываем по одному крайнему, а остальное усредняем)

Добавлено after 2 minutes 52 seconds:
и ещё, мк успевает это всё обработать? как часто происходит пересчёт? после каждого измерения или значительно реже?
Для тех, кто не учил магию мир полон физики :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Аватара пользователя
es131245
Потрогал лапой паяльник
Сообщения: 369
Зарегистрирован: Пт фев 01, 2013 21:05:30

~

Сообщение es131245 »

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


[uquote="Ivanoff-iv",url="/forum/viewtopic.php?p=4643196#p4643196"]Мне кажется что измерять напряжение до и после шунта - не очень правильное решение т.к. точность его будет низкой,
лучше измерять падение напряжения непосредственно на шунте[/uquote]


:))) это тоже самое. Как раз падение на шунте мультиметром так и мерится. Разность напряжений до и после шунта.
Или Вы хотите развязать схему и подвесить её на U1?
Вот это хз чем обернётся. Не боитесь измерительный каскад на ~220В вешать?
Изоляцию не жалко, но если тронете рукой, то пострадать можете до 2,5кВт
Аватара пользователя
Ivanoff-iv
Друг Кота
Сообщения: 7077
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Откуда: Сердце Пармы

Re: Как правильно посчитать потребляемую мощность?

Сообщение Ivanoff-iv »

ПростоНуб, а откуда берутся "отрицательные замеры"? по идее в + полуволну +*+=+ а в - полуволну -*-=+, поэтому их разделять не нужно

Добавлено after 1 minute 51 second:
es131245 писал(а): это тоже самое.
В теории - да, то-же самое, но попробуй миллиВольты павшие на шунте разглядеть на фоне сотен Вольт в сети, да ещё при неодновременности измерения...

Добавлено after 3 minutes 26 seconds:
Если на ТТ делать - то ток идёт через ТТ - он дубовый и напряжения на нем малы, да ещё и шунтом закорочен, поэтому его индуктивность сигнал практически не исказит, а то, напряжение, что после ТТ уже и руками трогать не страшно
Последний раз редактировалось Ivanoff-iv Чт окт 31, 2024 15:42:15, всего редактировалось 1 раз.
Для тех, кто не учил магию мир полон физики :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Аватара пользователя
es131245
Потрогал лапой паяльник
Сообщения: 369
Зарегистрирован: Пт фев 01, 2013 21:05:30

Re: Как правильно посчитать потребляемую мощность?

Сообщение es131245 »

[uquote="Ivanoff-iv",url="/forum/viewtopic.php?p=4643201#p4643201"]а откуда берутся "отрицательные замеры"? по идее в + полуволну +*+=+ а в - полуволну -*-=+, поэтому их разделять не нужно[/uquote]

Трансформаторы работают на переменном токе. Там ток идет в одну сторону, потом в обратную (-U).
Поэтому и делается первый каскад смещения на +U/2.
Получается ноль в середине, "0" это -U, а макс это +U

У st есть датащит AN4207, это называется ADC дифференциальный режим измерений
Аватара пользователя
Ivanoff-iv
Друг Кота
Сообщения: 7077
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Откуда: Сердце Пармы

Re: Как правильно посчитать потребляемую мощность?

Сообщение Ivanoff-iv »

Про измерение двухполярных величин я знаю, мне не понятен термин "отрицательные замеры" и откуда он взялся...
в смысле зачем замеры делить на положительные и отрицательные, если алгоритм расчёта аболютно одинаков?

Добавлено after 1 minute 34 seconds:
[uquote="es131245",url="/forum/viewtopic.php?p=4643204#p4643204"]Получается ноль в середине,[/uquote] где вы нашли середину у чётного числа? 8) (шутка)
Для тех, кто не учил магию мир полон физики :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Аватара пользователя
es131245
Потрогал лапой паяльник
Сообщения: 369
Зарегистрирован: Пт фев 01, 2013 21:05:30

Re: Как правильно посчитать потребляемую мощность?

Сообщение es131245 »

[uquote="Ivanoff-iv",url="/forum/viewtopic.php?p=4643201#p4643201"]
es131245 писал(а): это тоже самое.
В теории - да, то-же самое, но попробуй миллиВольты павшие на шунте разглядеть на фоне сотен Вольт в сети, да ещё при неодновременности измерения...[/uquote]

Почему мВ? Смотря какое сопротивление шунта. При шунте 0.1ом на нем будет 1В
А после 1В еще стоит каскад усилителя до 0.7U adc
Аватара пользователя
Ivanoff-iv
Друг Кота
Сообщения: 7077
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Откуда: Сердце Пармы

Re: Как правильно посчитать потребляемую мощность?

Сообщение Ivanoff-iv »

Просто из вашего описания я понял, что стоит 2 трансформатора напряжения, один до, второй после шунта, потом идёт низмерение этих 2х напряжений (соответственно до и после), а затем из этих 2х величин вычисляется падение...

и, кстати, если на 0,1 Ом резисторе падает 1 Вольт, то он греется на 10 Вт - неплохая такая печечка...
Для тех, кто не учил магию мир полон физики :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Аватара пользователя
es131245
Потрогал лапой паяльник
Сообщения: 369
Зарегистрирован: Пт фев 01, 2013 21:05:30

Re: Как правильно посчитать потребляемую мощность?

Сообщение es131245 »

Я вообще предлагал 1 шунт и без трансформаторов. Гальванические развязанные ОУ.
И в расчете вы на нолик ошиблись. Там 1Вт, тк 0.1 один из самый большых шунтов по сопротивлению. Обычно там меньше
Аватара пользователя
ПростоНуб
Собутыльник Кота
Сообщения: 2723
Зарегистрирован: Пт сен 07, 2018 20:20:02
Откуда: деревня в Тульской губернии

Re: Как правильно посчитать потребляемую мощность?

Сообщение ПростоНуб »

[uquote="es131245",url="/forum/viewtopic.php?p=4643192#p4643192"][uquote="ПростоНуб",url="/forum/viewtopic.php?p=4643185#p4643185"]И чем два трансформатора ZMPT101b с двумя LM358 лучше измерения тока датчиком Холла в ACS712 и напряжения одним трансформатором ZMPT101b с одним LM358?[/uquote]

Первое это ардуино[/uquote]
Откуда вдруг взялось ардуино?

[uquote="es131245",url="/forum/viewtopic.php?p=4643192#p4643192"]Потом датчики хола, они сами по себе грубые 2% + сильная зависимость от магнитного поля вокруг.[/uquote]
Вообще то в даташит ACS712 +-1.5%. И непонятно, с чего Вы решили, что с ZMPT101B и ОУ можно получить точность заметно лучше.

[uquote="es131245",url="/forum/viewtopic.php?p=4643192#p4643192"](Вы же не хотите экранировать датчик от магнитного поля?)[/uquote]
Это как раз намного проще и займет меньше места, чем установка второго ZMPT101B.

[uquote="es131245",url="/forum/viewtopic.php?p=4643192#p4643192"]Даже если Вы это сделаете то их чувствительность проигрывает любому измерительному трансформатору.[/uquote]
Так напряжение я и измеряю через трансформатор. Но как через него измерять ток?
В счетчиках ток измеряется, как разность потенциалов шунта. Так, само собой точнее, но меня вполне и 1.5% устраивают.
Само собой, что можно это делать, для примера, на ADE7755, Тогда и трансформатор не нужен, хотя схема становится существенно сложней.
Но мне не нужна точность 0.1%. Меня вполне устроит не 1.5, а даже 5%.

[uquote="es131245",url="/forum/viewtopic.php?p=4643192#p4643192"]PS LM358 тоже говно, он дает смещение 2-7мВ по входу. Таких в схеме нужно минимум 2. Так что берите ОУ с смещением по напряжению не более 0.1мВ Что бы измерения 12бит АЦП не превратились в 10бит АЦП[/uquote]
Так их и есть два в схеме. Благо в корпусе их и есть два. А так как у ADC опорное напряжение ~1000 мВ, то эти милливольты, с учетом их деления на пять с выхода LM358, четырехратной (2 разряда) разницы ну уж никак дать не могут.
Ответить

Вернуться в «Разные вопросы по МК»