Частотомер Шмидта на ATMega8

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Civil
Встал на лапы
Сообщения: 138
Зарегистрирован: Вс май 16, 2010 01:13:39

Частотомер Шмидта на ATMega8

Сообщение Civil »

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

Частота 0.01Гц-40МГц
Тахометр
Измерение заполняемости меандра
Измерение длины импульса

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

Вот такая конструкция: http://www.avr-asm-tutorial.net/avr_en/ ... nt_m8.html

Если кто-то уже делал - поделитесь впечатлениями, и вообще, давайте обсудим конструкцию.
Реклама
Аватара пользователя
Liv
Вымогатель припоя
Сообщения: 525
Зарегистрирован: Сб сен 20, 2008 12:12:30
Откуда: Minsk
Контактная информация:

Re: Частотомер Шмидта на ATMega8

Сообщение Liv »

Насчет лучший можно поспорить: http://radiokot.ru/forum/viewtopic.php?p=425206#p425206
Реклама
Civil
Встал на лапы
Сообщения: 138
Зарегистрирован: Вс май 16, 2010 01:13:39

Re: Частотомер Шмидта на ATMega8

Сообщение Civil »

Liv писал(а):Насчет лучший можно поспорить
Простите, но по ссылке я не нашел ни схемы ни характеристик прибора (кроме верхней границы). Кроме того эта Ваша разработка, как я понимаю, не является общедоступной. О чем в таком случае спорить?
Аватара пользователя
Liv
Вымогатель припоя
Сообщения: 525
Зарегистрирован: Сб сен 20, 2008 12:12:30
Откуда: Minsk
Контактная информация:

Re: Частотомер Шмидта на ATMega8

Сообщение Liv »

Вам бы только повторять готовое! А самостоятельно подумать? В Сети полно информации о принципах измерения частоты, но любительские конструкции почему-то зациклились на методе прямого счета. Частотомер по Вашей ссылке имеет режим измерения периода, но это как костыль. В то же время метод обратного счета (Reciprocal Counting) позволяет получить низкую погрешность измерения на любых частотах. Если прибор дополнить аналоговыми интерполяторами (схемотехнически это очень просто), то точность повышается еще в несколько десятков раз. Мой частотомер еще не закончен, прошивку можно рассматривать только как бета (пока нет сервисов). Но само измерение частоты работает. Вот схемы, платы, прошивки:
Вложения
FC-510.zip
(233.33 КБ) 1461 скачивание
Реклама
Эиком - электронные компоненты и радиодетали
Civil
Встал на лапы
Сообщения: 138
Зарегистрирован: Вс май 16, 2010 01:13:39

Re: Частотомер Шмидта на ATMega8

Сообщение Civil »

Леонид Иванович, Вы зря наехали на Шмидта - в его конструкции Mode-2 как раз предполагает метод обратного отсчета. А то, что он предлагает нам выбор метода измерения не говорит о нем ничего плохого : )

По Вашей наводке немного почитал о методах. Нашет вот такую табличку:
Frequency counters have gone through several evolution stages in their design since
their first appearance on the market:
Stage 1 until 70-ies Conventional counting
Stage 2 1980-ies Reciprocal counting (period measurement + inversion)
Stage 3 1990-ies Interpolating Reciprocal Counting
Stage 4 2000-ies Multiple Time Stamp Average Continuous Counting

Как я понимаю, Ваш прибор реализует 3 стратегию. Несомненно это предполагает повышенную точность будущего прибора. Однако его сложность однозначно выходит за рамки моего запроса. Поэтому у меня к Вам предложение: может быть Вы в качестве независимого экперта посоветуете хорошую и простую разработку на ATMega8 (менее предпочтительный выбор на AVR в целом)?

P.S. Многие ссылки с заглавного поста Вашего сайта ведут в пустоту. А жаль.
Реклама
Аватара пользователя
Liv
Вымогатель припоя
Сообщения: 525
Зарегистрирован: Сб сен 20, 2008 12:12:30
Откуда: Minsk
Контактная информация:

Re: Частотомер Шмидта на ATMega8

Сообщение Liv »

Civil писал(а):Леонид Иванович, Вы зря наехали на Шмидта - в его конструкции Mode-2 как раз предполагает метод обратного отсчета. А то, что он предлагает нам выбор метода измерения не говорит о нем ничего плохого : )
Нет, не зря :) Здесь возможно, несколько неточная терминология. У нас обратным счетом обычно называют простое измерение периода. У него это реализовано. Но такой метод дает относительную погрешность, растущую с частотой. А обычный метод прямого счета дает погрешность, уменьшающуюся с частотой. Настоящий же метод Reciprocal counting предполагает длительность измерения, примерно равную установленному интервалу, а не периоду входного сигнала. В результате относительная погрешность измерения не зависит от частоты.
Civil писал(а):Как я понимаю, Ваш прибор реализует 3 стратегию.
Да, реализован Reciprocal Counting + Interpolating. В принципе, без особых затрат можно реализовать и 4 стратегию (Time Stamping), но мой FC-510 задумывался именно как простенький любительский прибор, там это излишне. Даже без этого погрешность целиком определяется опорным генратором.
Civil писал(а):Однако его сложность однозначно выходит за рамки моего запроса.
Ну Вы даёте! Этот прибор на удивление получился простым. Фактически собран на двух микросхемах. Неужели это сложно? Ну плюс нормальный входной буфер, которого обычно в любительских конструкциях не бывает. Нормированный входной импеданс (1 МОм || 30 пФ) позволяет использовать стандартные осциллографические щупы, причем даже с делителем 1:10, и работать ими до 60 МГц.
Civil писал(а):Поэтому у меня к Вам предложение: может быть Вы в качестве независимого экперта посоветуете хорошую и простую разработку на ATMega8?
На голом AVR методом Reciprocal counting получается измерять до 500 кГц, с некоторыми извратами можно получить, наверное, и половину Fclk. Но это не более 10 МГц - мало. Поэтому вырисовывается какая-то внешняя логика. Была такая мысль, описать в статье частотомер на ATmega8 + внешние счетчики. Но в 21-м веке решил не позориться - поставил CPLD.
Civil писал(а):P.S. Многие ссылки с заглавного поста Вашего сайта ведут в пустоту. А жаль.
Причина в том, что у меня нет денег на собсвенный хостинг, поэтому информация лежит где попало. Если Вас интересует что-то конкретное, пишите, вышлю.
Реклама
Civil
Встал на лапы
Сообщения: 138
Зарегистрирован: Вс май 16, 2010 01:13:39

Re: Частотомер Шмидта на ATMega8

Сообщение Civil »

Похоже Вы правы, он действительно недодумал свой прибор, взяв для расчета только один период. Жаль, это резко снижает его ценность. Может быть кто-то захочет доделать, тем более, что код комментирован очень подробно.
Этот прибор на удивление получился простым. Фактически собран на двух микросхемах. Неужели это сложно?
Одна только пайка TQFP выглядит для меня космическими технологиями : )
Причина в том, что у меня нет денег на собсвенный хостинг, поэтому информация лежит где попало.
Может быть стоит перенести статьи в Лайвджорнал? Или для простоты можно их конвертировать в pdf - он хорошо индексируется поисковиками и не будет требовать переформатирования при переносе в другое место.
Я, кстати, ранее пользовался Вашей работой - статьей о шаговых двигателях, не зная кто ее автор. Теперь рад выразить Вам свою благодарность.
Аватара пользователя
Liv
Вымогатель припоя
Сообщения: 525
Зарегистрирован: Сб сен 20, 2008 12:12:30
Откуда: Minsk
Контактная информация:

Re: Частотомер Шмидта на ATMega8

Сообщение Liv »

Civil писал(а):Похоже Вы правы, он действительно недодумал свой прибор, взяв для расчета только один период. Жаль, это резко снижает его ценность. Может быть кто-то захочет доделать, тем более, что код комментирован очень подробно.
Вряд ли это можно исправить программно. Для реализации Reciprocal Counting необходима определенная структура внешних счетчиков (нужно аппаратно формировать ворота для счета импульсов заполнения и одновременно считать периоды входной частоты). Поэтому нужно или лепить снаружи логику, или запихнуть ее в CPLD.
Civil писал(а):Одна только пайка TQFP выглядит для меня космическими технологиями : )
Это прямо какое-то самовнушение беспомощности. Это же не BGA, хотя и их некоторые дома паяют. А припаять TQFP с шагом 0.8 мм - поверьте, никаких проблем. Это даже быстрее и проще, чем DIP. Берёте жало "микроволна". Это обычное жало, у которого на рабочей плоскости сделано небольшое углубление. Можно сделать из любого жала. Побольше канифоли, кладете микросхему на площадки и один раз проводите паяльником. Всё, ряд выводов припаян.

Если сильно боитесь, то ATmega8 бывает в DIP, а EPM3064A - в PLCC. Там обычные панельки с шагом 2.54 мм. Но так делать не надо, нужно стремиться делать по-современному.
Civil писал(а):Может быть стоит перенести статьи в Лайвджорнал?
Не нравится там мне форматирование. Я все-таки надеюсь, что мне подарят хостинг (обещают), вот тогда и выложу.
Civil писал(а):Или для простоты можно их конвертировать в pdf
Просто HTML конвертировать в PDF не позволит ущемленное чувство прекрасного. Иллюстрации в PDF должны быть векторными, хоть оригиналы в COREL есть, но сверстать - это приличный кусок работы.
Civil писал(а):Я, кстати, ранее пользовался Вашей работой - статьей о шаговых двигателях, не зная кто ее автор. Теперь рад выразить Вам свою благодарность.
Не за что. Если интересует материал какой-то из статей - пишите.
Civil
Встал на лапы
Сообщения: 138
Зарегистрирован: Вс май 16, 2010 01:13:39

Re: Частотомер Шмидта на ATMega8

Сообщение Civil »

Вряд ли это можно исправить программно. Для реализации Reciprocal Counting необходима определенная структура внешних счетчиков (нужно аппаратно формировать ворота для счета импульсов заполнения и одновременно считать периоды входной частоты). Поэтому нужно или лепить снаружи логику, или запихнуть ее в CPLD.

Если я правильно понимаю теорию, то различие (по ресурсам) прямого подсчета от обратного только в наличии дополнительного счетчика внутренних импульсов (clock).
f=(counted input )/((counted clock)*(clock time))
Занятно, что время Gate в формуле отсутствует и соответственно точность его выдержки несущественна.
Аватара пользователя
Liv
Вымогатель припоя
Сообщения: 525
Зарегистрирован: Сб сен 20, 2008 12:12:30
Откуда: Minsk
Контактная информация:

Re: Частотомер Шмидта на ATMega8

Сообщение Liv »

Да, точное значение времени Gate знать не надо, оно лишь приблизительно задает точность измерения. А различие по ресурсам определяется не только количеством счетчиков, но и их организацией. По фронту входного сигнала нужно начинать счет имульсов заполнения, по N-ному фронту - прекращать. Ну и эти входные импульсы нужно считать. Аппаратные ресурсы AVR не позволяют запускать счет по внешнему сигналу. Приходится заменять это захватом значения счетчика. А счет входных импульсов производить в прерывании по захвату. Но это медленно. Чтобы существенно все ускорить, нужно переносить входную логику наружу. Решается двумя счетчиками и двумя D-триггерами. Но лучше одна Altera.
R2-D2
Родился
Сообщения: 2
Зарегистрирован: Вс янв 09, 2011 17:42:57

Re: Частотомер Шмидта на ATMega8

Сообщение R2-D2 »

Ув. Liv а можете поподробнее рассказать про организацию алгоритма Обратного счета (Reciprocal Counting)... что то не могу найти внятного описания в интернете, как все организовано. Савсибо!
Аватара пользователя
ssse
Родился
Сообщения: 5
Зарегистрирован: Пт дек 03, 2010 19:28:50
Откуда: Ростов

Re: Частотомер Шмидта на ATMega8

Сообщение ssse »

Здравствуйте, интерполятор реагирует на импульсы, порядка микросекунд...
Но если я правильно понимаю, то при тактовой 12.8 мгц минимум это 78 нс... который надо учесть... можно поподробнее про это?
Смотрел схему одного частотомера, там при заполняющих импульсах 10 мгц, интерполятор работает от десятков нс, до сотен... вероятно тут всё дело в формировании нониусных импульсов?
Аватара пользователя
vsky
Открыл глаза
Сообщения: 63
Зарегистрирован: Пн апр 06, 2009 18:32:14

Re: Частотомер Шмидта на ATMega8

Сообщение vsky »

Доброго времени суток!

Вопросы к Леониду Ивановичу.

Подскажите пожалуйста, где обсуждается Ваша конструкция частотомера FC-510? Наткнулся на Ваше сообщение на форуме pro-radio.ru но там несколько другая тема.

Не могли бы Вы привести эскиз входной логики, где это "Решается двумя счетчиками и двумя D-триггерами."

Спасибо.
Закрыто

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