Страница 1 из 1

Низко частотный частотомер на AVR проблема с исчислением

Добавлено: Вс сен 04, 2011 17:16:04
aleksandr88
:shock: Сталкнулся я с такой трудностью нужен частотомер с диапазоном от 1-100Гц.С начало подумал просто считать импульсы с таймере Т0.Все нормально но не выводит десятичное число.Решил пойти другим путём и использовать два таймера Т1 и Т0 .На Т0 подою импульс и начинаю мерить его продолжительность таймером Т1.Все тоже хорошо работает но не получается выстроить линейку :cry: :cry: .Разница в измерении таймера при переходе со 100 до 99Гц ровна 14 тактам счётчика Т1 а при переходи с 10 на 9Гц счётчик отчитывает 1390 тиков.
Вот ниже проект в протусе и CVAVR.

ПОМОГИТЕ :)) Заранее спасибо)))

Re: Низко частотный частотомер на AVR проблема с исчисление

Добавлено: Вс сен 04, 2011 17:25:35
Coviraylhik
Вот уже готовый универсальный проект частотомера с диапазоном 0.0001 герц и до предела тактования таймера(20-24 мегагерца без предделителя)
Тема здесь http://radiokot.ru/forum/viewtopic.php? ... 00#p924500

Re: Низко частотный частотомер на AVR проблема с исчисление

Добавлено: Вс сен 04, 2011 17:34:39
aleksandr88
это все хорошо :) но мне нужен код сишный или хотя бы алгоритм простой так как мне надо это встроить в один приборчик и отводить на индикацию не более 5 символов LCD

Re: Низко частотный частотомер на AVR проблема с исчисление

Добавлено: Вс сен 04, 2011 17:43:39
Coviraylhik
Все файлы с исходником в форуме есть, не знаю он на си или сях вот архив http://radiokot.ru/forum/download/file.php?id=69785 который лежит в форуме, которым сам я и пользуюсь....

Re: Низко частотный частотомер на AVR проблема с исчисление

Добавлено: Вс сен 04, 2011 17:47:19
aleksandr88
О благодарю =).Есть пища для размышления теперь буду разбирать исходник :))

Re: Низко частотный частотомер на AVR проблема с исчисление

Добавлено: Вс сен 04, 2011 18:11:05
aleksandr88
Вот у меня еще не большой вопрос.На дисплеи как я понял самая верхняя строка это вывод частоты но показание при подачи 10Гц там показывает 22884.324 :shock:

Re: Низко частотный частотомер на AVR проблема с исчисление

Добавлено: Вс сен 04, 2011 18:42:21
Coviraylhik
Да теперь наверное что написано в том форуме прочитать 18 страниц никто не одолеет :(
10Гц там показывает 22884.324
Конечно же там по умолчанию стоит коэфициент WattsPerHz = 2250.0 поставь через меню число 10 и будет чистый частотомер.... :)
Вот здесь я по своему усмотрению этот материал обобщил.

Re: Низко частотный частотомер на AVR проблема с исчисление

Добавлено: Пн сен 05, 2011 11:51:57
aleksandr88
Да 18 страниц многовато но сейчас попробую осилить :) Coviraylhik вы мня сильно не пинайте я начинающий=) но вот странная штука какая я меняю множитель в двух местах переменную WattsPerHz но множитель остаётся прежним :cry: ,сейчас лазию по коду и пытаюсь понять в чем причина.

Re: Низко частотный частотомер на AVR проблема с исчисление

Добавлено: Пн сен 05, 2011 21:00:49
Coviraylhik
Да ненадо сразу по коду лазить , все изменения вносятся через меню кнопками управления....
Сначала берете готовое и пользуетесь. В протеусе проект прекрасно симулируется 1 к 1, можно посмотреть что там к чему.
После пробы как есть, можно и усовершенствованием проекта заняться :)
Если там лишние вкусности убирать, так это не сложно, а вот добавить что, так это уж серьезней задача.

Re: Низко частотный частотомер на AVR проблема с исчисление

Добавлено: Вт сен 06, 2011 12:32:18
clawham
если вам нужен только частотомер то
берете и ищите темы на этом форуме где я уже разжевывал что да как по поводу частотомера...
суть в измерении времени в тактах кварца между импульсами а потом делаем тактовая частота/кол-во успевших прийти тактов
результат - герцы 0.000001 герца...по идее точность вниз неограничена...только терпением :)))
код там прост....всё остальное вокруг - удобности

Re: Низко частотный частотомер на AVR проблема с исчисление

Добавлено: Вс сен 11, 2011 07:49:43
aleksandr88
clawham писал(а):если вам нужен только частотомер то
берете и ищите темы на этом форуме где я уже разжевывал что да как по поводу частотомера...
суть в измерении времени в тактах кварца между импульсами а потом делаем тактовая частота/кол-во успевших прийти тактов
результат - герцы 0.000001 герца...по идее точность вниз неограничена...только терпением :)))
код там прост....всё остальное вокруг - удобности
Я так и пытаюсь вычислять путём измерения количество тиков таймера Т1 в один герц :) .Но как превратить это значение в линейку я не как не до пру :cry: :cry: вот у мня на частоте десять герц длительность импульса составляет 1160000 тиков таймера Т1 а на ста герцах длительность импульса 164000 это при делителе таймера Т1 на 0.и при тактовой частоте частоте 8Мг .Я в тупики прочитал много инфы но самой сути не нашёл :cry:
Coviraylhik писал(а):Да ненадо сразу по коду лазить , все изменения вносятся через меню кнопками управления....
Сначала берете готовое и пользуетесь. В протеусе проект прекрасно симулируется 1 к 1, можно посмотреть что там к чему.
После пробы как есть, можно и усовершенствованием проекта заняться :)
Если там лишние вкусности убирать, так это не сложно, а вот добавить что, так это уж серьезней задача.
Эх все дела во вкусняшках их там не мало :hunger: :) Последние время я пытаюсь их разобрать но из за их не малого количества это для меня оказалось сложновато :cry: .У вас случаем не осталось начального проекта без дополнительных функций который было бы легче усвоить или отделено только частотомер :solder:

Re: Низко частотный частотомер на AVR проблема с исчисление

Добавлено: Вс сен 11, 2011 19:27:35
akl
aleksandr88 писал(а):Я так и пытаюсь вычислять путём измерения количество тиков таймера Т1 в один герц :) .Но как превратить это значение в линейку я не как не до пру :cry: :cry: вот у мня на частоте десять герц длительность импульса составляет 1160000 тиков таймера Т1 а на ста герцах длительность импульса 164000 это при делителе таймера Т1 на 0.и при тактовой частоте частоте 8Мг .Я в тупики прочитал много инфы но самой сути не нашёл
Странные какие-то числа. У меня получаются совсем другие
Fclk=8'000'000 Гц, т. е. за 1 секунду будет 8'000'000 тиков таймера Т1
При частоте 10Гц, т.е. 10 колебаний в секунду будет 800'000 тиков таймера Т1
При частоте 100Гц, т.е. 100 колебаний в секунду будет 80'000 тиков таймера Т1
При частоте 49,987Гц, т.е. 49,987 колебаний в секунду будет 160'041 тиков таймера Т1 и частота вычисляемая по таким данным будет равна 49,987190782362019732443561337407Гц. Подчеркнутое составляет погрешность дискретизации, для уменьшения которой следует увеличить время измерения, т. е. измерять не один период, а несколько.
Допустим время измерения принимается равным 0.2 секунды. За это время пройдет 9.98 периодов измеряемой частоты, но никто не может запретить не останавливать таймер. В соответствии с принятым алгоритмом нужно подсчитать число тиков таймера за время прохождения ЦЕЛОГО числа периодов измеряемой частоты. Тогда за время прохождения 10 периодов измеряемой частоты таймер накопит 1'600'416. И вычисленное значение частоты будет 49,987003379121428428608561773939Гц с гораздо меньшей погрешностью.

Re: Низко частотный частотомер на AVR проблема с исчисление

Добавлено: Пн сен 12, 2011 14:36:22
aleksandr88
akl а вот у мня странная штука .Как вы писали я так вот делаю при 1 Мг частоты такта измерение Т1 рано при
1Гц 971'000 ну почти правильно
10Гц 73'000
100Гц 7'000 тиков

а должно вить быть при 10Гц 100'000 тиков а при 100Гц 10'000 тиков в чем может быль проблема
исходник простой контроллер вроде не грузится O_o
Вы не могли бы глянуть проект в чем причина ?

Re: Низко частотный частотомер на AVR проблема с исчисление

Добавлено: Пн сен 12, 2011 17:57:15
akl
К счастью, для таких целей мне вполне хватает 2313-й. Могу предложить в качестве примера код от уважаемого мною =GM=. Виртуоза этого дела. К сожалению, не помню откуда стырил этот код
FR_GM.TXT