Таxометр формула пересчета ?

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
FUZZY_
Потрогал лапой паяльник
Сообщения: 390
Зарегистрирован: Чт сен 24, 2009 17:22:51
Откуда: UK

Таxометр формула пересчета ?

Сообщение FUZZY_ »

S=(60*Fo*Nx*k)/nox ,
где
S - скорость вращения (об/мин)
Fo - тактовая частота контроллера (Гц)
Nx - целое число периодов измеряемой скорости
k - коеф. пропорциональности (сколько импульсов за 1 оборот)
nox - целое число периодов тактовой частоты микроконтролера

Вопрос: Fo/nox - это время измерения т е время за которое мы будем проводить измерение (подсчет Nx)?

Пусть
k=4
Fo/nox= 0.25 cek (1/4) cek
Nx=300


то S=60*300=18000 об/мин - правильно ?
akl
Друг Кота
Сообщения: 4444
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Сообщение akl »

Здравствуйте.
Выражение для определения скорости вращения правильное. Далее
-nox/Fo=0.25[сек] время измерения, т.е. время за которое мы будем проводить измерение (подсчет Nx)
-k=1/4 - коэффициент пропорциональности; величина, обратная числу импульсов за 1 оборот.
S=60*4*300*1/4=18000 об/мин.
В принципе, правильно. Но, точное число периодов Nx за 0.25сек будет в очень редких случаях. Нельзя, при измерении этим методом, привязываться к времени измерения, которое, при этом, является вспомогательной величиной. Нужно всего лишь измерить величину nox за время прохождения целого Nx.
http://radiokot.ru/forum/viewtopic.php?p=152501#152501
FUZZY_
Потрогал лапой паяльник
Сообщения: 390
Зарегистрирован: Чт сен 24, 2009 17:22:51
Откуда: UK

Сообщение FUZZY_ »

akl писал(а):Здравствуйте.
Выражение для определения скорости вращения правильное. Далее
-nox/Fo=0.25[сек] время измерения, т.е. время за которое мы будем проводить измерение (подсчет Nx)
-k=1/4 - коэффициент пропорциональности; величина, обратная числу импульсов за 1 оборот.
S=60*4*300*1/4=18000 об/мин.
В принципе, правильно. Но, точное число периодов Nx за 0.25сек будет в очень редких случаях. Нельзя, при измерении этим методом, привязываться к времени измерения, которое, при этом, является вспомогательной величиной. Нужно всего лишь измерить величину nox за время прохождения целого Nx.
http://radiokot.ru/forum/viewtopic.php?p=152501#152501


Возникает второй вопрос выбор оптимального Nx
чтобы было приемлемое время измерения <= 1сек и не слишком
большое nox
akl
Друг Кота
Сообщения: 4444
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Сообщение akl »

В том-то и дело, что Вы сами выбираете оптимальное время измерения, в течение которого считается Nx и nox.
Вы выбрали примерно 0.25 секунды. Допустим, что меряется скорость вращения 17999 об/мин. Время измерения 301 периода этой скорости будет равно 250847,26xxx мксек, а nox будет равно 2'006'778 и результат будет равен S=17999.0 об/мин. Если же принять время измерения примерно 0.275 сек, то за это время пройдет Nx=331, но и nox будет равно 2'206'789 об/мин. Результат S=17'999.0 об/мин.
FUZZY_
Потрогал лапой паяльник
Сообщения: 390
Зарегистрирован: Чт сен 24, 2009 17:22:51
Откуда: UK

Сообщение FUZZY_ »

akl писал(а):В том-то и дело, что Вы сами выбираете оптимальное время измерения, в течение которого считается Nx и nox.
Вы выбрали примерно 0.25 секунды. Допустим, что меряется скорость вращения 17999 об/мин. Время измерения 301 периода этой скорости будет равно 250847,26xxx мксек, а nox будет равно 2'006'778 и результат будет равен S=17999.0 об/мин. Если же принять время измерения примерно 0.275 сек, то за это время пройдет Nx=331, но и nox будет равно 2'206'789 об/мин. Результат S=17'999.0 об/мин.


Расчет не совсем понял
Nx=301
S=17999
k=4
откуда=> (Fo/nox)=17999/(60*4*301)=>0.249155592 сек (0.3377%)

т.е 249155.59хх мксек откуда у вас взялось 250847,26xx

при Nx=300 (Fo/nox) =17999/(60*4*300)=>0.249986111 c (0.0055%)

при Nx=299 (Fo/nox) =17999/(60*4*299)=>0.250822185 c (0.32%)


Пусть за время 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 об/мин

Вопрос об эффективности использования первого или второго метода измерения применимо к MK

При использовании привязки по времени 0,25 с в первой формуле
мах при самых неблагоприятных случаях погрешность +/- 60 об/мин

При использовании целочисленной арифметики во 2 м случае
+/- 60 ob/min
однако при использовании с плавающей точкой во втором случае
точность измерения можно значительно повысить

Отсюда вывод о применении 16 разрядных МК для даной задачи - если хотим точность приблизить к истиному значению измеряемой величины
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

Сообщение GP1 »

FUZZY_ писал(а):однако при использовании с плавающей точкой во втором случае
точность измерения можно значительно повысить

Отсюда вывод о применении 16 разрядных МК для даной задачи - если хотим точность приблизить к истиному значению измеряемой величины


жесть! :shock:
ты еще предложи DSP или ARM поставить!
Чем дальше, тем больше становлюсь занудой...
Изображение
akl
Друг Кота
Сообщения: 4444
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Сообщение akl »

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
FUZZY_
Потрогал лапой паяльник
Сообщения: 390
Зарегистрирован: Чт сен 24, 2009 17:22:51
Откуда: UK

Сообщение FUZZY_ »

Здраствуйте.
Эмуляция схемы в Proteuse sp3 rus

счетчик U2:A выделяет период сигнала с датчика оборотов
дающего 4 имп./оборот
счетчик U2:B - период тактовой частоты котроллера


При 600 об/мин => 10 об/с => наш датчик выдаст 40 импульсов

Получаем 60 000 импульсов показания счетчика

Время 1 оборота 60 000 * To=60 000 /600 000 = 0.1 c

то за 1 с - 10 оборотов а за минуту 10*60=600
Вложения
m.rar
(11.83 КБ) 377 скачиваний
FUZZY_
Потрогал лапой паяльник
Сообщения: 390
Зарегистрирован: Чт сен 24, 2009 17:22:51
Откуда: UK

Сообщение FUZZY_ »

при 610 об/мин 59017

Один оборот происходит за время
59017*to= 59017/ 600 000= 0.098361666 c

за 1 с 10.166562
за 1 мин 10.166562*60 = 609.993

При 8000 об/мин 4501

за 1 с 600 000 / 4501 =133.30367

за 1 мин 133.30367*60=7998.22 погрешлость=8000-7998,22=1,78


Общая формула для вышеприведеной схемы

S=60*(Fo/Ni) где

Fo -Частота заполнения
Ni количество импульсов за 1 полный оборот
FUZZY_
Потрогал лапой паяльник
Сообщения: 390
Зарегистрирован: Чт сен 24, 2009 17:22:51
Откуда: UK

Сообщение FUZZY_ »

Итак для "разжеваного nox Nx Fo "


1 Нужна подпрограмма умножения 4х байтного на 1(2) байтного числа
2 Нужна подпрограмма деления 6 байтного числа на 3х байтное

Интересно за сколько идут эти вычисления при Fo=8 Mhz ?
akl
Друг Кота
Сообщения: 4444
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Сообщение akl »

Здравствуйте.
Привожу картинки работы AVR STUDIO 3.21, из которых видно время вычислений для получения результата, начиная от команды CLI и выполнением подпрограммы DIV.
-Fo=8'000'000Гц, S=610 об/мин
-Fo=600'000Гц, S=610 об/мин
Возможности подпрограмм MULT и DIV намного превышают требования, предложенные Вами.
У меня встречный вопрос
Время вычисления скорости вращения при Fo=8 Mhz и Fo=0.6 Mhz? Только, если не затруднит, в понятном формате (например gif).
FUZZY_
Потрогал лапой паяльник
Сообщения: 390
Зарегистрирован: Чт сен 24, 2009 17:22:51
Откуда: UK

Сообщение FUZZY_ »

Спасибо всем кто откликнулся.
Спасибо за практическое применение метода измерения на практике.
Все вопросы по даной теме исчерпаны.
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»