Текущее время: 17 окт 2019, 01:19

Город ХОББИ

Занятие любимым хобби - это путь к счастливой жизни!

Частотомер на Ардуино

Тут собраны схемы различных устройств сделанных на контроллерах Ардуино, Лазерный гравер на Ардуино, Металлоискатель на Ардуино, Метеостанция, Кодовый замок, и множество других устройств и изобретений
Аватар пользователя
 
Сообщений: 709
Зарегистрирован: 27 мар 2013, 22:12

Частотомер на Ардуино

Сообщение -=dp=- » 12 май 2015, 23:04

Всем Здравствуйте!

Представляем Вашему вниманию очередной мой проект - Частотомер на Ардуино.
Для изготовления частотомера на Ардуино нам понадобятся следующие детали:

1. Плата Ардуино УНО
2. Текстовый LCD дисплей 1602А.
3. Переменный резистор 10КОм
4. Библиотеки FreqMeasure и LiquidCrystal

Библиотеки проверены и работоспособны на 100% скачиваем в этой теме.
После того как библиотеки скачены, распаковываем их и копируем в папку C:\Program Files\Arduino\libraries.
Далее включаем паяльник и готовимся к распайке схемы:


Вложения
shem.jpg
Схема частотомера на Ардуино УНО
FreqMeasure.rar
Библиотека частотомера
(11.03 KiB) Скачиваний: 2669
LiquidCrystal.rar
Библиотека для LCD дисплея 1602A
(13.42 KiB) Скачиваний: 1550

Аватар пользователя
 
Сообщений: 709
Зарегистрирован: 27 мар 2013, 22:12

Re: Частотомер на Ардуино

Сообщение -=dp=- » 12 май 2015, 23:14

И тааааак...., если схема спаяна, проверяем ее внимательно, ошибки устраняем, иначе рискуем сжечь Ардуину или дисплей :D
Но, а если все ОК, то двигаемся дальше.

Запускаем среду разработки Ардуино ИДЕ, создаем новый проект и копируем туда вот этот код:

Код: выделить все

/*
ArduinoFreqMetr v 1.0
 */
#include <FreqMeasure.h>
#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2);

void setup() {
  lcd.begin(16, 2);
  lcd.print("ArduinoFreqMeter");
  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);
      lcd.setCursor(0, 1);
      lcd.print(frequency);
      lcd.print(" Hz");
      sum = 0;
      count = 0;
    }
  }
}




Код минимален, поэтому я думаю пояснений и комментариев он не требует.
Все предельно просто.
Подключаем Ардуину к USB порту и прошиваем данный скетч.
После прошивки настраиваем переменным резистором контрастность дисплея (иначе можете ничего не увидеть :D ) подаем на 8 цифровой вход частоту с генератора , уровень до 5 В, и радуемся работе частотомера ;)

Вот как это должно выглядеть:


Вложения
1.jpg
Цифровой частотомер на Ардуино
2.jpg
Частотомер на Ардуино
3.jpg
Самодельный частотомер на Ардуино УНО

Аватар пользователя
 
Сообщений: 709
Зарегистрирован: 27 мар 2013, 22:12

Re: Частотомер на Ардуино

Сообщение -=dp=- » 12 май 2015, 23:30

Да, и не забываем про корпус, который я сделать еще не успел :D

Для усовершенствования скетча можно добавить перевод частоты из Гц в КГц, МГц.

Делается это так:

Код: выделить все

/*
ArduinoFreqMetr v 1.1
 */
#include <FreqMeasure.h>
#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2);

void setup() {
  Serial.begin(57600);
  lcd.begin(16, 2);
  lcd.print("ArduinoFreqMeter");
  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);
      lcd.setCursor(0, 1);
      //--------Блок вычисления частоты в ГЦ---------------------
      if (frequency < 1000){
      lcd.print(frequency);
      lcd.println("   Hz");
      };
       //--------Блок вычисления частоты в КГЦ---------------------
     
      if (frequency > 1000){
      float freq = frequency / 1000;
      lcd.print(freq);
      lcd.println("  KHz");
      };
     
      sum = 0;
      count = 0;
    }
  }
}




Вложения
4.jpg
ArduinoFreqMeter - Частотомер на Ардуино

Аватар пользователя
 
Сообщений: 709
Зарегистрирован: 27 мар 2013, 22:12

Re: Частотомер на Ардуино

Сообщение -=dp=- » 13 авг 2015, 11:23

В магазине робототехники и радиоэлектроники newmar.ru
в Калининграде можно купить LCD дисплей для Ардуино
и контроллеры Ардуино разных модификаций.

Купить дисплей для Ардуино
можно тут http://newmar.ru/index.php?id_product=1 ... er=product


Вложения
341-thickbox_default.jpg
Купить LCD дисплей для Ардуино в Калининграде
212-thickbox_default.jpg
Купить Ардуино в Калининграде

 
Сообщений: 1
Зарегистрирован: 06 янв 2016, 15:26

Re: Частотомер на Ардуино

Сообщение perhan » 06 янв 2016, 15:33

спасибо собрал работает !!!!



Аватар пользователя
 
Сообщений: 709
Зарегистрирован: 27 мар 2013, 22:12

Re: Частотомер на Ардуино

Сообщение -=dp=- » 27 фев 2016, 15:47

perhan писал(а):спасибо собрал работает !!!!


Схема рабочая 100% ;)

LCD дисплеи для Ардуино можно купить в Калининграде тут http://newmar.ru/index.php?id_category= ... r=category



 
Сообщений: 2
Зарегистрирован: 14 апр 2016, 16:01

Re: Частотомер на Ардуино

Сообщение Komakirill » 14 апр 2016, 16:03

Добрый день! А с генератора второй контакт - на Gnd? У меня расходомер ТПР, думаю с него частоту считывать и обрабатывать...



Аватар пользователя
 
Сообщений: 709
Зарегистрирован: 27 мар 2013, 22:12

Re: Частотомер на Ардуино

Сообщение -=dp=- » 14 апр 2016, 19:55

Komakirill писал(а):Добрый день! А с генератора второй контакт - на Gnd? У меня расходомер ТПР, думаю с него частоту считывать и обрабатывать...


Здравствуйте!

Да, второй контакт на общий - GND



 
Сообщений: 2
Зарегистрирован: 14 апр 2016, 16:01

Re: Частотомер на Ардуино

Сообщение Komakirill » 15 апр 2016, 15:01

Спасибо! И еще вопросик - судя по подключению к цифровому входу, входной сигнал должен быть прямоугольным, TTL? то есть, если у меня измеряемый сигнал - синус с амплитудой 50 мв, мне его надо усилить операционником и преобразовать в прямоугольный компаратором?



Аватар пользователя
 
Сообщений: 709
Зарегистрирован: 27 мар 2013, 22:12

Re: Частотомер на Ардуино

Сообщение -=dp=- » 12 май 2016, 21:40

Частотомер предназначен для измерения TTL частоты, но можно измерять и синус если добавить усилитель на одном транзисторе и после него пару инверторов шотки.
Кстати, максимальная измеряемая частота может достигать даже нескольких десятков мегагерц, если использовать делители типа 155ИЕ1 (делит на 10), 3 шт последовательно будут делить на 1000.



 
Сообщений: 1
Зарегистрирован: 13 май 2016, 14:57

Re: Частотомер на Ардуино

Сообщение Fedot » 13 май 2016, 15:04

Добрый день. есть дисплей 1602 I2C, но вот мозгов не хватает переписать скетч под него. Заранее благодарен если кто то поможет.



 
Сообщений: 15
Зарегистрирован: 02 янв 2016, 16:11

Re: Частотомер на Ардуино

Сообщение IROBOT » 09 окт 2016, 16:25

Fedot писал(а):Добрый день. есть дисплей 1602 I2C, но вот мозгов не хватает переписать скетч под него. Заранее благодарен если кто то поможет.

Берите пример с библиотеки liquid cristal 12c и поменяйте настройки дисплея и инициализацию.остальное заработает



 
Сообщений: 15
Зарегистрирован: 02 янв 2016, 16:11

Re: Частотомер на Ардуино

Сообщение IROBOT » 09 окт 2016, 16:33

Fedot писал(а):Добрый день. есть дисплей 1602 I2C, но вот мозгов не хватает переписать скетч под него. Заранее благодарен если кто то поможет.

Вот перекомпилил,проверяйте.Библиотеки можно через менеджер библиотек доустановить
Код: выделить все
/*
ArduinoFreqMetr v 1.1
 */
#include <FreqMeasure.h>

#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27,20,4);  // set the LCD address to 0x27 for a 16 chars and 2 line display
#include <Wire.h>


void setup() {
  Serial.begin(57600);
  lcd.init();
  lcd.print("ArduinoFreqMeter");
  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);
      lcd.setCursor(0, 1);
      //--------Блок вычисления частоты в ГЦ---------------------
      if (frequency < 1000){
      lcd.print(frequency);
      lcd.println("   Hz");
      };
       //--------Блок вычисления частоты в КГЦ---------------------
     
      if (frequency > 1000){
      float freq = frequency / 1000;
      lcd.print(freq);
      lcd.println("  KHz");
      };
     
      sum = 0;
      count = 0;
    }
  }
}





Аватар пользователя
 
Сообщений: 22
Зарегистрирован: 08 апр 2013, 08:57

Re: Частотомер на Ардуино

Сообщение Серега » 06 июн 2019, 08:21

ykamerton писал(а):Да что за напасть, не идет ни один твой скетч у меня.... Не светится дисплей 12c

Куда это вставить.. тут работает.

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C _lcd1(0x27, 16, 2);
int _dispTempLength1=0;
boolean _isNeedClearDisp1;

int _disp3oldLength = 0;
void setup()
{
Wire.begin();
delay(10);
_lcd1.init();
_lcd1.backlight();
}
void loop()
{if (_isNeedClearDisp1) {_lcd1.clear(); _isNeedClearDisp1= 0;}



if (1) {
_dispTempLength1 = ((String("0"))).length();
if (_disp3oldLength > _dispTempLength1) {_isNeedClearDisp1 = 1;}
_disp3oldLength = _dispTempLength1;
_lcd1.setCursor(int((16 - _dispTempLength1)/2), 0);
_lcd1.print((String("0")));
} else {
if (_disp3oldLength > 0) {_isNeedClearDisp1 = 1; _disp3oldLength = 0;}
}
}

:lol:

Припаяйте светодиод подсветки через резистор к +5 в и не надо никаких правок в скетче Димона :!:
Все работает, лично проверял ;)




Вернуться в Устройства на Ардуино

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1