На рисунке показана схема простого частотомера созданного на основе микроконтроллера PIC16F628A. Частотомер измеряет частоту от 2 Гц до 10 МГц, результат измерения выводится на первую строку индикатора 1602А, во второй строке отображается период измеряемого сигнала от 100 нс до 500 мс. Время измерения 1 секунда.
Сигнал уровня ТТЛ можно непосредственно подавать на вход частотомера через конденсатор емкостью 100 пФ, для расширения возможности частотомера можно собрать усилитель формирователь, который повышает чувствительность до 50 мВ и защищает вход частотомера от перегрузок.
Прошивка — Freq_F628_hastotomer.hex
Скажите пожалуйста, а на сколько разрядов расчитана ваша схема? Мне крайне важны цифры индикации после запятой, минимум в пятикратном разряде. Например частоту 5Гц мне просто необходимо увидеть вот так: 5,000036 Гц. А также мне крайне важно, чтобы частотомер мог легко отличить частоты, например: 7,000063 Гц от 7,000064 Гц. Ваша схема сможет справиться с этой задачей?
Нет, эти схемы не имеют такой точности, тем более на низкой частоте. Вам нужно измерять период, а не частоту. А эти схемы просто считают кол-во импульсов за 1 секунду. Конечно на ардуино можно поэкспериментировать, увеличить время счета до 100 секунд, тогда конечно можно получить приемлемую точность.
Жаль.. Очень жаль. Я уже весь интернет перелопатил в поисках такого частотомера.. Единственно нашел что-то подходящее вот здесь: https://www.radiokot.ru/konkursCatDay2017/16/ , но данная схема сложная для меня. Просто могу её не осилить. Да и компоненты к ней нужно где-то доставать…
На PIC контроллерах, можно измерять методом подсчета прерываний при прохождении входного импульса. Но на Arduino это проще сделать. На PIC контроллере помимо прерываний необходимо использовать компаратор (программно) для точного переключения по времени следования импульсов. Можно конечно над этим подумать, но надо время.
Вот например библиотека https://www.pjrc.com/teensy/td_libs_FreqMeasure.html на которой основан частотомер http://rcl-radio.ru/?p=42800 измеряет частоту через измерение периода. Если изменить время измерения то можно добится большой точности на НЧ.
А как изменить время измерения периода?
Вот пример скетча для Arduino:
#include
void setup() {
Serial.begin(57600);
FreqMeasure.begin();
}
double sum=0;
int count=0;
void loop() {
if (FreqMeasure.available()) {
// average several reading together
sum = sum + FreqMeasure.read();
count = count + 1;
if (count > 30) {
float frequency = FreqMeasure.countToFrequency(sum / count);
Serial.println(frequency,5);
sum = 0;
count = 0;
}
}
}
Частотомер измеряет период колебаний, тридцать раз, суммирует результат и делит его на 30. Период достаточно точно измеряет. Если частота 5 Гц то период 0,2 сек * 30, то время измерения 6 секунд. Если увеличить время измерения до 60 циклов, то точность будет еще больше.
В данном примере частота выводится до 5-го знака после запятой, какова реальная точность я не знаю, это надо собирать схему и тестировать.
На PIC контроллерах можно конечно такое реализовать, но я не задавался таким вопросом.
Я понял. Спасибо Вам большое за Ваши старания!