Страница 1 из 1
Низко частотный частотомер на AVR проблема с исчислением
Добавлено: Вс сен 04, 2011 17:16:04
aleksandr88

Сталкнулся я с такой трудностью нужен частотомер с диапазоном от 1-100Гц.С начало подумал просто считать импульсы с таймере Т0.Все нормально но не выводит десятичное число.Решил пойти другим путём и использовать два таймера Т1 и Т0 .На Т0 подою импульс и начинаю мерить его продолжительность таймером Т1.Все тоже хорошо работает но не получается выстроить линейку

.Разница в измерении таймера при переходе со 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

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 но множитель остаётся прежним

,сейчас лазию по коду и пытаюсь понять в чем причина.
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 в один герц

.Но как превратить это значение в линейку я не как не до пру

вот у мня на частоте десять герц длительность импульса составляет 1160000 тиков таймера Т1 а на ста герцах длительность импульса 164000 это при делителе таймера Т1 на 0.и при тактовой частоте частоте 8Мг .Я в тупики прочитал много инфы но самой сути не нашёл
Coviraylhik писал(а):Да ненадо сразу по коду лазить , все изменения вносятся через меню кнопками управления....
Сначала берете готовое и пользуетесь. В протеусе проект прекрасно симулируется 1 к 1, можно посмотреть что там к чему.
После пробы как есть, можно и усовершенствованием проекта заняться

Если там лишние вкусности убирать, так это не сложно, а вот добавить что, так это уж серьезней задача.
Эх все дела во вкусняшках их там не мало

Последние время я пытаюсь их разобрать но из за их не малого количества это для меня оказалось сложновато

.У вас случаем не осталось начального проекта без дополнительных функций который было бы легче усвоить или отделено только частотомер

Re: Низко частотный частотомер на AVR проблема с исчисление
Добавлено: Вс сен 11, 2011 19:27:35
akl
aleksandr88 писал(а):Я так и пытаюсь вычислять путём измерения количество тиков таймера Т1 в один герц

.Но как превратить это значение в линейку я не как не до пру

вот у мня на частоте десять герц длительность импульса составляет 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,987
190782362019732443561337407Гц. Подчеркнутое составляет погрешность дискретизации, для уменьшения которой следует увеличить время измерения, т. е. измерять не один период, а несколько.
Допустим время измерения принимается равным 0.2 секунды. За это время пройдет 9.98 периодов измеряемой частоты, но никто не может запретить не останавливать таймер. В соответствии с принятым алгоритмом нужно подсчитать число тиков таймера за время прохождения ЦЕЛОГО числа периодов измеряемой частоты. Тогда за время прохождения 10 периодов измеряемой частоты таймер накопит 1'600'416. И вычисленное значение частоты будет 49,987
003379121428428608561773939Гц с гораздо меньшей погрешностью.
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