| Ваш IP: 100.24.209.47 | Online(26) - гости: 16, боты: 10 | Загрузка сервера: 1.76 ::::::::::::

Частотомер 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);
  }
}

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

Войти с помощью: 

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

  • Приемник прямого усиления 2-V-1 на трех транзисторах

    Приемник предназначен для приема СВ ДВ диапазона. Источник питания — 3 элемента по 1,5В, ток потребления не превышает 3 мА. Контур магнитной антенны состоит из L1 L2 C1. при приеме ДВ катушки включены последовательно, а при приеме СВ L1 замыкается. С катушки L3 сигнал снимается и поступает на усилитель РЧ …Подробнее...
  • Простой стерео декодер на TA7343АР

    Диапазон рабочих частот 66…74 или 88…108 МГц С помощью R7 регулируется разделение между каналами ЗЧ.   ***Сигнал подается с выхода частотного детектора УКВ(FM) — приемника на вход DA1 через корректирующую цепь R1C1. Литература Ж.Радиолюбитель 1 2000. Автор: С.СЫЧ, п.Ореховский , Брестской обл.Подробнее...
  • Светодинамическая установка

    Схема состоит из 3-х простых фильтров с Т-мостами на RC-компонентах. Фильтр на VT1 выделяет полосу частот от 20 до 400Гц, фильтр на VT2 — 300…2000Гц, на VT3 1500…6000Гц. Резонансные частоты 200, 1000 и 4000Гц. На входе СДУ включен повышающий трансформатор Т1 (первичная обмотка низкоомная). Мощность подключаемых ламп 100Вт(суммарная мощность). Но …Подробнее...
  • Бездроссельное питание люминесцентных ламп

    Схема без дроссельного питания люминесцентных ламп  показана на рисунке. Лампа накаливания включена последовательно с выпрямителем (выпрямитель собран по схеме удвоителя напряжения). Использование лампы накаливания вместо балластных конденсаторов более практично, она горит в пол накала, при пробое одного из конденсаторов горит в полный накал тем самым сигнализируя о неисправности. Нити накала …Подробнее...
  • Выпрямители

    Выпрямители

    На рисунке показана схема простого однополупериодного выпрямителя (рис. а) и эпюры напряжений на нагрузке (рис. б). В качестве входного напряжения использовано однофазное синусоидальное напряжение. Нагрузка Rн — активная, включенная последовательно с силовым полупроводниковым диодом VD. При поступлении от первичного источника переменного напряжения Uвх диод будет открыт при положительной полуволне и …Подробнее...