| Ваш IP: 54.173.237.152 | Online(16) - гости: 5, боты: 11 | Загрузка сервера: 4.6 ::::::::::::

Частотомер 6.5 МГц (Arduino)

Библиотека FreqCount, позволяет на своей основе создать довольно точный частотомер, с разными интервалами времени измерения. Так же небольшая коррекция файла библиотеки позволяет откалибровать частотомер.

На рисунке показана схема частотомера, помимо платы Arduino и одной кнопки, частотомер содержит усилитель-формирователь, который позволяет измерять частоту как импульсного, так и синусоидального сигнала. Максимальная частота которую может измерять частотомер 6,5 МГц, так же доступно три интервала времени измерения — 0.1, 1 и 10  секунд.

#include <FreqCount.h>//https://github.com/PaulStoffregen/FreqCount/archive/master.zip
#include <LiquidCrystal.h>
// вход частотомера 5 
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);// RS,E,D4,D5,D6,D7
void setup() {
  lcd.begin(16, 2);// LCD 16X2
  pinMode(3,INPUT);
  FreqCount.begin(1000);
}
unsigned long f;float f0;
int x,n=3,r;

void loop() {
  
  if(digitalRead(3)==HIGH){n++;x=0;delay(100);}
    lcd.setCursor(0,1);
  if(n==1){x++;if(x==1){FreqCount.begin(100);}r=-1;lcd.print("T = 0.1 s ");}
  if(n==2){x++;if(x==1){FreqCount.begin(10000);}r=1;lcd.print("T = 10 s ");}
  if(n==3){x++;if(x==1){FreqCount.begin(1000);}r=0;lcd.print("T = 1 s  ");}
  if(n>3){n=1;} 
    lcd.setCursor(0,0);
    lcd.print("F = ");
  if(f>=1000000 && n==3){f0=f/1000000.0;lcd.print(f0,6+r);lcd.print(" MHz");}
  if(f<1000000 && n==3){f0=f/1000.0;lcd.print(f0,3+r);lcd.print(" kHz");}
  if(f>=100000 && n==1){f0=f/100000.0;lcd.print(f0,6+r);lcd.print(" MHz");}
  if(f<100000 && n==1){f0=f/100.0;lcd.print(f0,3+r);lcd.print(" kHz");}
  if(f>=10000000 && n==2){f0=f/10000000.0;lcd.print(f0,6+r);lcd.print("MHz");}
  if(f<10000000 && n==2){f0=f/10000.0;lcd.print(f0,3+r);lcd.print(" kHz");}

  if (FreqCount.available()) { 
   
    f = FreqCount.read(); 
    
   lcd.setCursor(10,1);lcd.print("***");
  }
   delay(200);
   lcd.clear();
}

/*
Корректировка частотомера 
***************************************************************
В папке библиотек Arduino найти библиотеку FreqCount, 
в файле FreqCount.cpp найдите строки:
#if defined(TIMER_USE_TIMER2) && F_CPU == 12000000L
    float correct = count_output * 0.996155;
и заменить их на:
#if defined(TIMER_USE_TIMER2) && F_CPU == 16000000L
    float correct = count_output * 1.000000; 
где 1.000000 - Ваш поправочный коэффициент
корректировку нужно проводить подав на вход частотомера 1 МГц
После изминений файла загрузите по новой скетч в плату Arduino
***************************************************************
*/

 

Во второй версии частотомера используется восьми разрядный семисегментный индикатор на базе драйвера MAX7219.

#include <LedControl.h>//https://github.com/wayoda/LedControl/archive/master.zip
#include <FreqCount.h>//https://github.com/PaulStoffregen/FreqCount/archive/master.zip
LedControl lc = LedControl(12,11,10,1);// DIN(12), CLK(11), CS(10)
 
void setup() {
  lc.shutdown(0, false);
  FreqCount.begin(1000);
  lc.clearDisplay(0); 
  lc.setIntensity(0,8); // яркость 0-15
 
unsigned long f;
byte fq[8],pd=false;
 
void loop() {
 
  if (FreqCount.available()) {f = FreqCount.read(); }
  lc.setRow(0,7,0x47);
  fq[6]= f/1000000%10;
  fq[5]= f/100000%10;
  fq[4]= f/10000%10;
  fq[3]= f/1000%10;
  fq[2]= f/100%10;
  fq[1]= f/10%10;
  fq[0]= f%10%10;
  for(int i = 0;i < 7;i++){
  lc.setDigit(0,i,fq[i],pd);
  }
}

Добавить комментарий

Случайные статьи

  • УМЗЧ на микросхеме TDA1552Q

    УМЗЧ на микросхеме TDA1552Q

    Усилитель при высоком качестве звучания очень прост в изготовлении и не нуждается в налаживании. Он имеет универсальный вход с плавной регулировкой чувствительности. Это практически «полный» усилитель, но без входов для микрофона и звукоснимателя. Усилитель мощности реализован на МС фирмы Philips TDA1552Q. Схема его включения позаимствована из [1]. Предварительный усилитель собран …Подробнее...
  • Испытатель транзисторов на микросхемах

    Схема простого испытателя маломощных биполярных транзисторов показана на рисунке. Основа испытателя 2-а генератора, первый на низкую частоту, другой на частоту 5кГц. Инверторы DD1.4 DD2.4 позволяют согласовать выходные сопротивления генераторов с сопротивлениями цепей нагрузок, а так же получить нужные полярности напряжения питания проверяемых транзисторов обеих структур. Соответственно при проверке транзистора будет …Подробнее...
  • Драйвер для люминесцентной лампы 12В

    Драйвер для люминесцентной лампы 12В

    Схема драйвера для питания люминесцентной лампы выполнен на недорогих и широко доступных элементах. Основа драйвера таймер на TLC555 (генератор 50Гц). Силовой транзистор IRF510 нагружен обычным сетевым трансформатором, к первичной обмотке (240В) которого подключена люминесцентная лампа 4Вт. Первичная обмотка может быть от 6 до 10В. Транзистор VT1 должен быть установлен на небольшой трансформатор. …Подробнее...
  • Измеритель емкости конденсаторов до 15000мкФ

    Прибор способен производить измерения емкостей от единиц микрофарады до 15000мкФ, измеритель имеет восемь пределов: 3, 15, 30 ,150, 300, 1500, 3000, 15000 мкФ. Показания контролируются по стрелочному прибору — микроамперметр с 30-ю делениями шкалы. В исходном состоянии Сх и накопительный конденсатор С3 разряжены через замкнутые контакты SB1. При нажатии на …Подробнее...
  • Простой FM приемник на транзисторах

    Простой FM приемник на транзисторах

    На рисунке показана схема простого FM приемника на 4-х транзисторах. Приемник имеет малые габариты и питается от напряжения 1,5В. Звук выводится на головные телефоны. VT1 = BF199, VT2-VT4 = BC547 Катушка L1 состоит из 8 витков медного изолированного провода диаметром 1 мм. Катушка бескаркасная имеет диаметр 6 мм и длину …Подробнее...