Точное измерение частоты и коэффициента заполнения на Arduino UNO
Компоненты и материалы
| Arduino UNO | 1 шт. |
| Символьный LCD 20×4 (HD44780-совместимый) | 1 шт. |
Инструменты
- Макетная плата 270 точек
Программное обеспечение
- Arduino IDE
О проекте
Arduino может использоваться как измерительный прибор для электрических и физических величин. Данный проект демонстрирует измерение частоты, длительности импульса (Ton, Toff) и коэффициента заполнения (duty cycle) прямоугольных импульсов, поданных на цифровой вход.
Схема подключения
- Входной сигнал (импульсы) → пин D7
- LCD: RS→D9, E→D8, D4–D7→D10–D13, RW→GND, VSS→GND, VDD→5V, VEE→подстроечный резистор 1 кОм (контраст), подсветка A/K→5V/GND
Принцип работы
- Arduino ждёт фронт импульса на D7.
pulseIn(pin, HIGH)— время высокого уровня (Ton, мкс).pulseIn(pin, LOW)— время низкого уровня (Toff, мкс).- Период
T = Ton + Toff. - Частота
f = 1 000 000 / T(Гц). - Коэффициент заполнения
D = Ton / T * 100(%). - Результаты выводятся на LCD каждую секунду.
Измеряемый диапазон ограничен функцией pulseIn (макс. ~3 минуты, мин. ~10 мкс). Для высоких частот (>50 кГц) лучше использовать аппаратные таймеры/прерывания.
Код (Arduino IDE)
#include <LiquidCrystal.h>
LiquidCrystal lcd(8, 9, 10, 11, 12, 13); // RS, E, D4, D5, D6, D7
#define pulse_ip 7
int ontime, offtime, duty;
float freq, period;
void setup() {
pinMode(pulse_ip, INPUT);
lcd.begin(16, 4); // 20x4 работает как 16x4 с этой библиотекой
lcd.clear();
lcd.print("Freq:"); lcd.setCursor(0,1); lcd.print("Ton:");
lcd.setCursor(0,2); lcd.print("Toff:"); lcd.setCursor(0,3); lcd.print("Duty:");
}
void loop() {
ontime = pulseIn(pulse_ip, HIGH);
offtime = pulseIn(pulse_ip, LOW);
period = ontime + offtime;
freq = 1000000.0 / period;
duty = (ontime * 100) / period; // целочисленно, для точности лучше float
lcd.setCursor(5,0); lcd.print(freq); lcd.print("Hz");
lcd.setCursor(4,1); lcd.print(ontime); lcd.print("us");
lcd.setCursor(5,2); lcd.print(offtime); lcd.print("us");
lcd.setCursor(5,3); lcd.print(duty); lcd.print("%");
delay(1000);
}
Схема подключения
См. раздел «Schematics» оригинала: минимальная схема — только Arduino, LCD и входной сигнал на D7.
Производственный процесс
- Измерение частоты и фазы в системах питания переменного тока
- Надежная система учета рабочего времени на Arduino с RFID и Python
- Универсальный Android-пульт на Arduino, 1Sheeld и ИК-управлении
- Умный вольтметр на Arduino и смартфоне — простое DIY-проект
- Умная банка на ESP8266 + Arduino: мониторинг наполненности в реальном времени
- Точное измерение частоты и коэффициента заполнения на Arduino UNO
- Управление Arduino-роботом через Firmata и геймпад Xbox One
- Измерение массы Земли с Arduino: пошаговое руководство по DIY
- Измерение расстояния в реальном времени: Ардуино-сонар с визуализацией в Processing
- Цифровой компас в реальном времени на Arduino и Processing