Ознакомьте нас, пожалуйста, с использумым Вами методом измерения среднеквадратичного значения и оцените точность этого метода....orinoko писал(а):У меня идёт расчёт среднеквадратического значения.Это было к тому, что предлагалось умножить на ~328КРАМ писал(а):И что из этого следует?
Целочисленное деление на константу
- КРАМ
- Друг Кота
- Сообщения: 25271
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: Целочисленное деление на константу
- Реклама
-
orinoko
Re: Целочисленное деление на константу
при использовании моего метода расчёта СКЗ, если использовать такой метод деления на 200 (*328 и /65536), то набегает от 0,1 до 0,5% относительной погрешности, в зависимости от уровня напряжения. Разная погрешность, так как у нас целочисленное деление и остаток отбрасывается
Тут правда, появились коррективы начального ТЗ. Делить надо не 3-байтное, а 5-байтное число. Не знаю, чего это я так... Заработался наверное. Так что сорри, если что
Тут правда, появились коррективы начального ТЗ. Делить надо не 3-байтное, а 5-байтное число. Не знаю, чего это я так... Заработался наверное. Так что сорри, если что
- КРАМ
- Друг Кота
- Сообщения: 25271
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: Целочисленное деление на константу
Я не про метод деления спрашивал, а про метод ИЗМЕРЕНИЯ.
Что меряем, как производим семплирование?

Что меряем, как производим семплирование?
Re: Целочисленное деление на константу
Исходная формула врёт на числах кратных 200, начиная с 200, даёт результат на единицу меньше, чем надо.ChipKiller писал(а):откуда вместо X, (X+1) не понял....
делимое - результат
199 - 0
200 - 0
201 - 1
И так для всех чисел кратных 200 от 0 до 65535 (больше не проверял).
А добавление 1 просто логично в данном случае.
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
-
orinoko
Re: Целочисленное деление на константу
семплирование происходит с периодом 100 мкс. Используется внешний 16-разрядный АЦП в режиме двуполярного входа (AD7671). по мере поступления данных происходит накапливание суммы квадратов. при количестве слагаемых = 200 полученное число нужно поделить на 200, потом происходит извлечение корня. Таким образом расчётный период 20 мс.КРАМ писал(а):Я не про метод деления спрашивал, а про метод ИЗМЕРЕНИЯ.
Что меряем, как производим семплирование?
- Реклама
- КРАМ
- Друг Кота
- Сообщения: 25271
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: Целочисленное деление на константу
А что мешает привести число семплов до степени двойки?
Либо 128, либо 256.
Тогда и делить на 200 не потребуется.
Кстати, совершенно не обязательно постоянно долбить преобразованиями.
Можно накапливать данные в стробоскопическом режиме в кольцевой буфер, а вычисления делать просто в суперлупе с малой скоростью (по потребностям вывода, а не накопления)
Либо 128, либо 256.
Тогда и делить на 200 не потребуется.
Кстати, совершенно не обязательно постоянно долбить преобразованиями.
Можно накапливать данные в стробоскопическом режиме в кольцевой буфер, а вычисления делать просто в суперлупе с малой скоростью (по потребностям вывода, а не накопления)
-
orinoko
Re: Целочисленное деление на константу
у меня счас так и делается, но естественно, результат сильно скачет, так как я не попадаю на расчёт длительности, кратной полупериоду. Поэтому счас приходится делать дополнительные мероприятия, а именно, сначала усреднение 16 результатов (кольцо), а потом на ФНЧ. А вольтметр надо заточить на 50 Гц. Долбить преобразованиями требуется по другим причинам. вычисление СКЗ - это одна из сопутствующих функций. И изменить период семплирования тоже не получится, так как в приборе это время является тактовым для других действий.
Последний раз редактировалось orinoko Сб апр 20, 2013 21:01:59, всего редактировалось 1 раз.
- ChipKiller
- Сверлит текстолит когтями
- Сообщения: 1163
- Зарегистрирован: Ср янв 05, 2011 16:25:15
Re: Целочисленное деление на константу
..это точно - надуманная проблема и деление здесь излишне....КРАМ писал(а):А что мешает привести число семплов до степени двойки?
... при больших значениях Х, формула врёт гораздо больше и (X+1) здесь не спасет, а при ((X*328)-(X*82)>>8)>>16 различий с X/200 нет вообще...Kavka писал(а):Исходная формула врёт на числах кратных 200, начиная с 200, даёт результат на единицу меньше, чем надо.
- КРАМ
- Друг Кота
- Сообщения: 25271
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: Целочисленное деление на константу
orinoko писал(а):у меня счас так и делается, но естественно, результат сильно скачет, так как я не попадаю на расчёт длительности, кратной полупериоду. Поэтому счас приходится делать дополнительные мероприятия, а именно, сначала усреднение 16 результатов (кольцо), а потом на ФНЧ. А вольтметр надо заточить на 50 Гц. Долбить преобразованиями требуется по другим причинам. вычисление СКЗ - это одна из сопутствующих функций. И изменить период семплирования тоже не получится, так как в приборе это время является тактовым для других действий.
Вы выбрали странную архитектуру, а теперь жалуетесь на проблемы...
Опишите задачи - найдется решение...
-
orinoko
Re: Целочисленное деление на константу
Ни разу не пожаловался. Я отвечаю на вопросы. В первом посте я спросил про алгоритм деления на 200. Во втором мне показали ссылку, и меня она устроила.
Вычисление СКЗ напряжения - это функция появилась позже, так как данные всё равно я получаю постоянно. просто решил сделать "красиво".
И, кстати, этот вольтметр уже прошёл гос. метрологическую аттестацию (для постоянного тока). А эта функция - она больше для души (т.е. на данном этапе как "индикатор"). И захотелось улучшить, вот и всё.
Вычисление СКЗ напряжения - это функция появилась позже, так как данные всё равно я получаю постоянно. просто решил сделать "красиво".
И, кстати, этот вольтметр уже прошёл гос. метрологическую аттестацию (для постоянного тока). А эта функция - она больше для души (т.е. на данном этапе как "индикатор"). И захотелось улучшить, вот и всё.
- КРАМ
- Друг Кота
- Сообщения: 25271
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: Целочисленное деление на константу
Ладно, не хотите по существу, давайте по форме.
Частота промсети 50 Гц имеет стабильность по ГОСТ 13109-97 - 49,6...50,4 Гц.
Что делает странными Ваши старания относительно точности деления на 200 и вообще...
Сам метод определения СКЗ по временному интегрированию за период без измерения с необходимой точностью этого периода не может быть точнее стабильности частоты измеряемого напряжения.
Либо нужно переходить на частотный метод измерения СКЗ.

Частота промсети 50 Гц имеет стабильность по ГОСТ 13109-97 - 49,6...50,4 Гц.
Что делает странными Ваши старания относительно точности деления на 200 и вообще...
Сам метод определения СКЗ по временному интегрированию за период без измерения с необходимой точностью этого периода не может быть точнее стабильности частоты измеряемого напряжения.
Либо нужно переходить на частотный метод измерения СКЗ.
-
orinoko
Re: Целочисленное деление на константу
Я тут посчитал - при изменении частоты от 49,6 до 50,4 Гц погрешность расчёта СКЗ не превышает 0,6%, что меня вполне устраивает. При данном раскладе можно конечно и не увлекаться точность деления на 200
. В любом случае это будет лучше, чем есть сейчас. Ну а дальнейшие затраты на улучшение точности уже будут не соизмеримы с результатами этих затрат.
Спасибо за участие в дискусии.
Спасибо за участие в дискусии.
- КРАМ
- Друг Кота
- Сообщения: 25271
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: Целочисленное деление на константу
Это смотря как мерить...orinoko писал(а):Я тут посчитал
Если когерентно с периодом и с его начала, то да..., а если асинхронно или в произвольной постоянной фазе, то может быть много хуже.
Кстати, при измерении однополярным АЦП еще нужно правильно определить ноль синусоиды, т.е. посчитать ее среднее значение за период. Оттуда можно получить еще одну погрешность....
-
orinoko
Re: Целочисленное деление на константу
Именно наихудший вариант и получается, если начало отсчёта совпадает с началом периода (0 град) или с максимумом (90 град). Чем ближе начало отсчёта к 45 градусам, тем меньше погрешность. При переходе через примерно 45 градусов знак погрешности меняется.Если когерентно с периодом и с его начала
АЦП у меня с двуполярным входом.при измерении однополярным АЦП


