Перейти к содержанию

Частотомер До 4Мгц (Лучшее Решение)


artos5

Рекомендуемые сообщения

Добрый день Всем!

Второй день сижу с решением задачи измерения частоты.

На данный момент могу точно мерить до 45000Гц

свыше 45000 и до 4000000Гц погрешность довольно высокая... до 50....100Гц . Как можно повысить точность измерения (читал что можно получить высокую точность измерений на этих частотах)?

Один момент, у меня есть только один таймер свободный для измерения частоты, я использую такой алгоритм:

1 разрешаю счет на входе.

2 жду некое время

3 запрещаю счет

4 переписываю в переменную

5 преобразовываю значение для вывода на дисплей

6 выдаю на экран

7 обнуляю все переменные и счетчики

8 по программном таймеру выдерживаюсь около 300.....500мс и на начало цикла.

Вот пример кода:

if (++timer_sck > 10)  // функция частотомера свыше 45000Гц
         {
            TCCR1B=7; //TCCR0=0x07;    

            delay_ms(ms_hi);  // грубо  3  с помощью этих вставленных переменных я буду в дальнейшем калибровать прибор
            delay_us(us_hi);  // точно 895


            TCCR1B=0;
            freg=TCNT1;
            TCNT1=0;
            freg = freg * 10000; 
            freg = freg / 1001; // коефициент деления


              sprintf(buffer,"F/i=%4u,%1dkHz  ", freg/100, freg%100);  // отображаем значение частоты
              lcd_gotoxy(0,3);
              lcd_puts(buffer);
              freg=0;
              timer_sck=0;




         }

этот кусок у меня будет работать от 0 до 45000Гц

к нему у меня претензий нету.

работает хорошо.

В дальнейшем еще хочу сделать авто конфигурацию измерения

if (++timer_sck > 10)  // функция частотомера от 0 до 45000Гц
         {
            TCCR1B=7; //TCCR0=0x07;    

            delay_ms(ms_lo);  // грубо
            delay_us(us_lo);  // точно 


            TCCR1B=0;
            freg=TCNT1;
            TCNT1=0;
            //freg = freg * 13;

            if(freg <= 45000)
            {
              sprintf(buffer,"F/i=%6uHz", freg);  // отображаем частоту
              lcd_gotoxy(0,3);
              lcd_puts(buffer);
              freg=0;
              timer_sck=0;
            } else
            {
              lcd_gotoxy(0,3);
              lcd_putsf("F/i > HIGH");
            }

С ув. Артем

Изменено пользователем artos5

Что может быть лучше в радиоэлектронике, чем программирование микроконтроллеров ?

Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

Что-бы точно измерить частоту необходимо выдержать точный интервал времени, за который считать импульсы на входе.

Задержки типа delay_ms не прокатят, т.к. они будут прерываться обработчиками. Вы даже не сможете откалибровать с их помощью, т.к. при разной входной частоте у Вас будет разное кол-во переполнений таймера, соответственно разное кол-во вызовов обработчика, ну и соответсвенно разное кол-во прерываний вашей "задержки".

Итог - 2 таймера, как минимум. Один - счёт входных импульсов, второй - период счёта.

Ссылка на комментарий
Поделиться на другие сайты

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...