Перейти к содержанию
    

три частоты на АТмегу 128 с использованием таймеров

Теперь есть: /upload/Books/Dvoryashin, Kuznecov. Radiotexnicheskie izmereniya (Sov.Radio, 1978)(ru)(L)(T)(181s)_EE_.djvu

Там же появились ещё две книжки по списку из поста #105. Всего книг: номер1 (спасибо add'у), номер 2 и 50 первых страниц номера 3. Если у кого есть полная электронная копия номера 3, дайте мне знать, буду очень благодарен.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну раз так, предскажите положение N2, зная N1, если они зависимы, покажите формулу для расчёта или хотя бы алгоритм. Такие измерения БУДУТ независимыми, поскольку входная частота и опорная частота асинхронны, т.е. НЕЗАВИСИМЫ.

 

Начинать можно было бы и на следующем периоде, если бы контроллер справился с таким потоком.

Вы немного не поняли что я имею в виду под независимостью отсчетов в Вашем последнем методе.

Давайте будем считать чуть по-другому, пусть n1,n2,... это будут не моменты времени а разница

времен меджу соседними засечками (~1мс), а m1,m2,... это будет количество импульсов которые

произошли между нашими засечками.

Это те исходные данные которые мы РЕАЛЬНО получаем от таймеров.

А теперь объясните мне как рассчет по Вашему алгоритму может дать на большом интервале(~1сек)

точность лучше чем просто скользящее среднее на этом же интервале.

 

ИМХО, Вы просто заново открыли скользяшее среднее... :)

 

Если Вы так не считаете, покажите численный пример в котором результат Вашего

алгоритма будет лучше чем у простого скользящего среднего...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вы неправильно понимаете предложенное мною для метода захвата и затем дефунктом для метода ворот. n1,n2,... это не разница времен между соседними засечками (~1мс), это разница времён конца и начала наших окон (длительностью порядка 1с), поэтому никакого скользящего среднего, это именно честное усреднение результатов 1000 измерений частоты, каждое из которых честно взято на 1с интервале.

 

Попробуйте перечитать мой пост #101, попробуйте его приложить всего к ДВУМ измерениям со сдвигом на 1 мс, ну или на 500мс, неважно, после этого можем продолжить обсуждение.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ИМХО, Вы просто заново открыли скользяшее среднее... :)

Не совсем. Скользящее среднее останется скользящим средним независимо от того пересекаются интервалы измерений или не пересекаются.

 

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

(что мы сделаем 100 измерений с точнотью X, что мы сделаем одно измерение со стократной точностью - суммарная точность не изменится).

 

Теперь возврящаясь к нашим баранам, точность единичного измерения , как было показано ранее, зависит от интеравала измерения T, для обоих методов точность определяется |k* 1/T| Гц (k - коэффициент конкретного метода). т.о. если интервал измерения будет больше, то скользящее среднее одного и того же количества выборок даст более точный результат.

 

=GM= предложил сделать уплотнение выборок не меняя интервала измерения, за счет пересечения интервалов. см. иллюстацию:

 

Уплотнение предложенное =GM=
1111
-2222
--3333
---4444
----------> t

обычное скользящее среднее на этом же интервале:
1
-2
--3
---4
----5
-----6
------7
где цифра соответствует номеру выборки

 

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

 

В итоге интервал измерения увеличен многократно (на русунке в 4 раза), а количество выборок уменьшается всегда на константу (вдвое).

Что это дает? Плюсы (одно из двух):

- сокращение времении измерения без потерь в точности

- увеличение суммарной точности не меняя времени измерения.

 

минусы:

- высокая сложность

- ресурсоемкость

- неустойчивость к внешним помехам.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

defunct, вы меня удивляете, ну какая сложность в методе defunct'а? Делать выборки из таймера не каждую секунду, а каждую миллисекунду? Да разве это сложность? Зато погрешность можно снизить в 100 раз.

 

Вот вы говорите "неустойчивость к внешним помехам". Ну а какой метод будет устойчив? Да никакой, все они дадут неверное значение.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Делать выборки из таймера не каждую секунду, а каждую миллисекунду? Да разве это сложность?

Реализовать может быть и не сложно, а как для проца - сложнее ровно в 1000 раз.

Да и в реализации сложнее, например, уже нельзя просто остановить таймер и прочитать его значение.

 

Кстати, я подправил пост, перечитайте еще раз если не затруднит ;>

 

Вот вы говорите "неустойчивость к внешним помехам". Ну а какой метод будет устойчив? Да никакой, все они дадут неверное значение.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Реализовать может быть и не сложно, а как для проца - сложнее ровно в 1000 раз

Что такое сложнее для проца в 1000 раз? Что-то новенькое.

Да и в реализации сложнее, например, уже нельзя просто остановить таймер и прочитать его значение

Да зачем его останавливать? Его дело железное - считать до посинения. Для считывания у вас есть ICR.

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что такое сложнее для проца в 1000 раз? Что-то новенькое.

отвечу вопросом на вопрос, сложность какого цикла выше:

1).
for(i = 0; i < 1; i++)
    do_f(i);

2).
for (i = 0; i < 1000; i++)
   do_f(i);

 

Да зачем его останавливать? Его дело железное - считать до посинения. Для считывания у вас есть ICR.

По правде, не задумывался о применении ICR в методе ворот.

Это в захвате есть ICR, а тут ... гм. на досуге рассмотрю такую возможность.

 

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

Не факт что в классическом изменится (особенно если усреднение сделано грамотно - отбрасывать несколько локальных минимумов и несколько локальных максимумов, то помеха будет отфильтрована полностью), а вот в нашем случае как не фильтруй точно изменится т.к. 99.9% выборок задето, и это минус.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Если имеется возможность увеличить или то или другое, то очевидно суммарная точность возрастет. Согласны?
смотря что считать единичным измерением

Вы неправильно понимаете предложенное мною для метода захвата и затем дефунктом для метода ворот.
=GM= предложил сделать уплотнение выборок не меняя интервала измерения, за счет пересечения интервалов. см. иллюстацию:
Понял я все как раз правильно

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

Но если принебреч внешней помехой, то за счет асинхронности частот, измерения будут независимыми.
частоты не совсем асинхронны...

 

n1,n2,... это не разница времен между соседними засечками (~1мс), это разница времён конца и начала наших окон (длительностью порядка 1с)

я специально обозвал их маленкими n а не большими N, но Вы намека не поняли...

Хорошо давайте по-порядку

-есть таймер который считает время N и есть счетчик M который считает импульсы

-таймер и счетчик считают непрерывно

-таймер и счетчик имеют достаточную разрядность

-тк рассматриваем метод захвата, все события в нашей системме привязанны к началу имульса

-старт каждого нового интервала ~1мс

-окончание через ~1сек от старта

-рассматриваем 3 секундный промежуток от начала измерений

-для каждой стартовой пары (Ni,Mi) через примерно 1сек получаем финишную пару (Ti,Ki)

-получив наборы пар (Ni,Mi) и (Ti,Ki) отсортируем их так чтобы время возрастало

-получим набор пар (Xj,Yj) таких что для k>j Xk>=Xj и Yk>=Yj

-если получим соседние одинаковые пары, выкинем повторы из списка

-для каждой пары (X(j+1),Y(j+1)) вычтем из нее пару (Xj,Yj)

(X(j+1)-Xj,Y(j+1)-Yj) и обзовем новые пары (ni,mi) где ni - время между соседними засечками а

mi - количество импульсов между соседними засечками

Это наш исходный набор данных, для ni гарантируется соотношение ni<=(~1мс)

те мы имеем набор данных о коротких промежутках ~1мс и количестве импульсов между ними

 

А вот теперь раскажите каким образом при таких промежутках измерения мы будем получать

точность не относительно этого промежутка а относительно более длинных

и вот это:

(что мы сделаем 100 измерений с точнотью X, что мы сделаем одно измерение со стократной точностью - суммарная точность не изменится).
тут как нельзя кстати...

 

Кстати, сразу замечу что при преобразовании наборов пар (Ni,Mi) и (Ti,Ki) к парам (ni,mi)

точность я нигде не потерял, и запросто можно сделать обратное преобразование

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

singlskv частоты не совсем асинхронны...

 

Конечно! Не совсем! Меняем входную частоту, и от этого немного меняется опорная частота. Мило! Называется затягивание частоты в автогенераторах, к нашему случаю никакого отношения не имеет.

 

singlskv А вот теперь раскажите, каким образом при таких промежутках измерения мы будем получать точность не относительно этого промежутка, а относительно более длинных.

 

Ну вы всё же не путайте длину интервала наблюдения и статистическую обработку. На более длинном интервале наблюдения вы гарантированно уменьшите погрешность, а с помощью статистики вы уменьшите standard deviation, СКО по-нашему. Почувствуйте разницу.

 

singlskv Это наш исходный набор данных, для ni гарантируется соотношение ni<=(~1мс)

те мы имеем набор данных о коротких промежутках ~1мс и количестве импульсов между ними

 

Можно и таким подходом воспользоваться, составить систему из 1000 уравнений, и решать ее каким-нибудь экзотическим способом, минимизируя невязки. Почти уверен, что матрица будет тёплицевой. Всё это хорошо для диссертации, но слабо применимо к микроконтроллерам.

 

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

 

Ну что ж, следующая модификация приведёт к измерению каждого периода входной частоты нахождением времени пересечения нуля и измерению частоты таким способом (:-). Кстати, на этом мой коллега защитил диссертацию.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Не верна только оценка погрешности этого метода измерения.

 

По сути Ваш метод это и есть скользящее среднее по неравномерной шкале времени.

есть пары (n1,m1),(n2,m2),.....

считаем суммы Sn1 и Sm1 начиная от пары (n1,m1) и пока Sn1 не станет больше 1сек

получаем первый результат Sm1/Sn1

считаем суммы Sn2 и Sm2 начиная от пары (n2,m2) и пока Sn2 не станет больше 1сек

получаем второй результат Sm2/Sn2

итд.

 

понятно что считать каждый раз суммы заново не нужно,

достаточно например для получения второго результата

 

если (Sn1-n1 > 1сек) то Sn2=Sn1-n1 Sm2=Sm1-m1 результат Sm2/Sn2

иначе Sn2=Sn1-n1+Sum(nj,...,nk) где j следующее значение ni не вошедшее в Sn1,

а k такое чтобы Sn2>1сек

тогда Sm2=Sm1-m1+Sum(mj,...,mk)

и результат соответственно Sm2/Sn2

 

как видите это и есть скользящее среднее на интервале в 1сек

и именно это Вы и получаете в своем методе

 

так же можно было бы привести неравномерную шкалу к равномерной

для этого каждую пару (ni,mi) условно говоря заменим на ni пар (1, mi/ni)

и дальше будем суммировать эти пары на интервале ровно 1сек

но это конечно уже только теоритически, практический выигрыш от этого небольшой

а затраты ....

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

как видите это и есть скользящее среднее на интервале в 1сек

Естественно мы усредняем несколько измерений. Никто этого не отрицает. И используется скользящее среднее.

 

Только скажите, если мы будем сразу учитывать разность смежных пар без промежуточных сумм (без перекрытия интервалов), разве это не останется тем же самым скользящим средним по неравномерной шкале времени?

 

Иллюстрацию в #154 смотрели? В обоих вариантах - скользящее среднее.

 

А про то, где будет выше точность я уже писал выше, с чем Вы не согласны? С тем что точность измерения на 1с интервале будет выше чем на интервале 1ms?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Только скажите, если мы будем сразу учитывать разность смежных пар без промежуточных сумм (без перекрытия интервалов), разве это не останется тем же самым скользящим средним по неравномерной шкале времени?
конечно оно им и будет, причем эти два метода тождественно равны

в одном посте я показал как не теряя точности перейти от секундных интервалов к

интервалам длительностью ~1мс

в другом наоборот от интервалов ~1мс к секундным интервалам

эти два подхода тождественны и по получаемой точности тоже...

А про то, где будет выше точность я уже писал выше, с чем Вы не согласны? С тем что точность измерения на 1с интервале будет выше чем на интервале 1ms?

Я не согласен только с трактовкой точности для метода GM.

У нас есть от 1000 до 2000 интервалов на каждую секунду и каждый

из интервалов не более 1мс

(меньше 2000 тк некоторые старты совпадут с финишами)

 

то есть изначально мы имеем ТОЛЬКО эти интервалы, все остальное мат. обработка

 

Что предложил GM сначала, а давайте говорит GM сделаем скользящее среднее по этим

коротеньким интервалам и улучшим точность.

Сделали, все здорово точность улучшилась...

Но тут вдруг захотелось ее еще улучшить, и возникла идея, а давайте с небольшим сдвигом

запустим скользящее среднее еще раз по данным полученным после первой итерации...

Запустили и объявили что вот, тк мы сделали небольшой сдвиг в данных (1мс),

теперь у нас все данные стали независимыми и поэтому мы считаем что

точность опять выросла в 1000 раз несмотря на то что диапазон увеличился всего в 2 раза.

 

Ну и я так понимаю что этот процесс можно продолжать до бесконечности... :)

 

Вот собственно это, такое отношение к рассчету точности, мне и не нравится...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

To singlskv Ваша теория хороша, но никакого отношения к действительности не имеет, хотя бы потому, что в реале сумма коротких интервалов НЕ РАВНА одному большому интервалу N(1000)-N(1).

 

Фронты входной частоты надо рассматривать как дискретную случайную величину эргодического процесса.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

To singlskv Ваша теория хороша, но никакого отношения к действительности не имеет, хотя бы потому, что в реале сумма коротких интервалов НЕ РАВНА одному большому интервалу N(1000)-N(1).
Вы все-таки невнимательно читаете...

для примерно секундного интервала будет не ровно 1000 маленьких интервальчиков из которых

он состоит, их будет от 1000 до 2000, но каждый из них будет не более ~1мс длительностью

 

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

поэтому мы и можем так легко разбить наш секундный интервал на интервалы не более ~1мс...

 

На самом деле для варианта с воротами это было бы не так, и там действительно события

были ассинхронны с входной частотой, в методе же захвата, все строго (+-0,5 такта) синхронно

с входным сигналом.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...