FUZZY_ писал(а):... откуда у вас взялось 250847,26xx
Вопрос об эффективности использования первого или второго метода измерения применимо к MK
При использовании привязки по времени 0,25 с в первой формуле
мах при самых неблагоприятных случаях погрешность +/- 60 об/мин
При использовании целочисленной арифметики во 2 м случае
+/- 60 ob/min
однако при использовании с плавающей точкой во втором случае
точность измерения можно значительно повысить
Отсюда вывод о применении 16 разрядных МК для даной задачи - если хотим точность приблизить к истиному значению измеряемой величины
Здравствуйте.
"т.е 249155.59хх мксек откуда у вас взялось 250847,26xx"
Если не отступать от обозначений из Вашего первого поста, то у меня получается,что при измерении скорости вращения вала S=17'999[об/мин] с помощью датчика, вырабатывающего 4 импульса/оборот период поступления этих импульсов будет равен
-17'999/60=299,98(3)[об/сек]
-299,98(3)[об/сек]*4[1/об]=1199,9(3)[1/сек]
-1/1199,9(3)[1/сек]=8,3337963220178898827712650702817e-4[1/сек] или 833,37963220178898827712650702817[мкс]
За принятое время измерения примерно! 0.25[сек] на вход контроллера поступит
250'000[мкс]/833,37963220178898827712650702817[мкс]=299,98(3) периода измеряемой скорости вращения.
Но! Хотя время измерения уже закончилось, контроллер не останавливает счет числа nox. Счет заканчивается при поступлении активного фронта сигнала от датчика. При этом Nx будет равно 300.
a Nx=300 300*833,37963220178898827712650702817[мкс]=250013,88966053669648313795210845[мкс] nox=2000111
b Nx=301 301*833,37963220178898827712650702817[мкс]=250847,26929273848547141507861548[мкс] nox=2006778
c Nx=299 299*833,37963220178898827712650702817[мкс]=249180,51002833490749486082560142[мкс] nox=1993444
Sa=60*8000000*0.25*300/2000111=17999,001055441423001023443198902~17'999.0
Sb=60*8000000*0.25*301/2006778=17999,001384308578228384006601627~17'999.0
Sb=60*8000000*0.25*299/1993444=17999,000724374499609720664337699~17'999.0
Т.е. хотя время измерения меняется, результат остается правильным.
Погрешность измерения этим методом (для частоты) определяется по выражению P[Гц]=Fx/Fo*Tизм. Для Вашего примера P=299,98(3)/8'000'000*0.25=1,49991(6)e-4[Гц]
или для скорости вращения P[об/мин]=60*Fx/Fo*Tизм=60*299,98(3)/8'000'000*0.25=0,0089994(9)[об/мин]
"Пусть за время T сек вал делает 1 оборот
И за это время на вход поступает 6000 импульсов с частотой 600 000 Hz
Ni-количество импульсов заполнеия
Fi-частота импульсов заполнения
Ti-период импульсов заполнения Ti=1/Fi
T=Ni*Ti=Ni/Fi
частота вращения Fv=1/T [ob/sec]
Fv=Fi/Ni [ob/sec]
тогда S=60*Fv=60*(Fi/Ni)
При исходных данных S=60*(600 000/ 6 000) = 6000 об/мин"
Вы получили выражение, являющееся частным случаем выражения из первого поста, только для измерения по одному периоду
и коэффициенте преобразования =1.
S=60*(Fi{Fx}*1{Nx}*1{k}/Ni{nox}), где в фигурных скобках подставлены обозначения из первого поста.
Погрешность измерения будет выше в 8'000'000(Fx)/600'000(Fi)=13.(3) раз, но тоже довольно низкая и ну никак не +-60 [об/мин]
Ниже немного в тему. В выдержке из книги кратко и емко описан собственно метод измерения и приводится выражение для определения погрешности измерения. А по программе и схеме порогового тахометра можно убедиться, что на ассемблере без всяких "плавучек" получается точный результат.
http://radiokot.ru/forum/viewtopic.php?p=193610#193610