- Необходими компоненти:
- Обяснение на веригата:
- Генератор на сигнали, използващ 555 IC таймер:
- Затвор на Шмит:
- Обяснение на кода на брояча на честотите на Arduino:
Почти всеки електронен любител трябва да се е сблъскал със сценарий, при който трябва да измери честотата на сигнала, генериран от часовник, брояч или таймер. Можем да използваме осцилоскоп, за да свършим работата, но не всеки от нас може да си позволи осцилоскоп. Можем да закупим оборудване за измерване на честотата, но всички тези устройства са скъпи и не са за всеки. Имайки предвид това, ние ще проектираме прост, но ефективен брояч на честоти, използвайки Arduino Uno и спусъка на Schmitt.
Този брояч на честоти на Arduino е рентабилен и може лесно да бъде направен, ще използваме ARDUINO UNO за измерване на честотата на сигнала, UNO е сърцето на проекта тук.
За да тестваме честотомера, ще направим фиктивен генератор на сигнал. Този фиктивен генератор на сигнал ще бъде направен с помощта на 555 таймер чип. Схемата на таймера генерира квадратна вълна, която ще бъде предоставена на UNO за тестване.
С всичко на място ще имаме измервател на честота Arduino и генератор на квадратни вълни. Arduino може да се използва и за генериране на други видове вълни като синусоида, вълна на зъб и т.н.
Необходими компоненти:
- 555 таймер IC и 74LS14 затвор на Schmitt или НЕ порта.
- 1K Ω резистор (2 броя), 100Ω резистор
- Кондензатор 100nF (2 броя), кондензатор 1000µF
- 16 * 2 LCD,
- Пот 47KΩ,
- Макет и някои конектори.
Обяснение на веригата:
Схемата на измерване на честотата с помощта на Arduino е показана на фигурата по-долу. Веригата е проста, LCD е свързан с Arduino, за да покаже измерената честота на сигнала. „Вход на вълната“ отива към веригата на генератора на сигнали, от която подаваме сигнал към Arduino. Задейства се затвор на Schmitt (IC 74LS14), за да се гарантира, че към Arduino се подава само правоъгълна вълна. За филтриране на шума сме добавили няколко кондензатора с мощност. Този честотомер може да измерва честоти до 1 MHz.
Схемата на генератора на сигнали и спусъка на Schmitt са обяснени по-долу.
Генератор на сигнали, използващ 555 IC таймер:
На първо място ще говорим за генератор на квадратни вълни, базиран на 555 IC, или трябва да кажа 555 Astable Multivibrator. Тази схема е необходима, тъй като с поставения честотомер трябва да имаме сигнал, чиято честота ни е известна. Без този сигнал никога няма да можем да кажем как работи честотният измервателен уред. Ако имаме квадрат с известна честота, можем да използваме този сигнал за тестване на честотомера Arduino Uno и можем да го променим за корекции за точност, в случай на отклонения. Картината на генератора на сигнали с помощта на 555 Timer IC е дадена по-долу:
Типична схема от 555 в режим Astable е дадена по-долу, от която сме извлекли горепосочената схема на генератора на сигнали.
Честотата на изходния сигнал зависи от RA, RB резистори и кондензатор C. Уравнението е дадено като, Честота (F) = 1 / (Период от време) = 1,44 / ((RA + RB * 2) * C).
Тук RA и RB са стойности на съпротивление и C е стойност на капацитета. Поставяйки стойностите на съпротивлението и капацитета в горното уравнение, получаваме честотата на изходната квадратна вълна.
Вижда се, че RB от горната диаграма се заменя с пот в схемата на генератора на сигнали; това се прави, за да можем да получим квадратна вълна с променлива честота на изхода за по-добро тестване. За простота може да се замени пота с обикновен резистор.
Затвор на Шмит:
Знаем, че всички тестови сигнали не са квадратни или правоъгълни вълни. Имаме триъгълни вълни, зъбни вълни, синусоиди и така нататък. Тъй като UNO е в състояние да открива само квадратни или правоъгълни вълни, ние се нуждаем от устройство, което може да променя всеки сигнал към правоъгълни вълни, затова използваме Schmitt Trigger Gate. Затворът на Schmitt е цифрова логическа порта, предназначена за аритметични и логически операции.
Тази порта осигурява OUTPUT въз основа на INPUT ниво на напрежение. Задействането на Schmitt има ниво на напрежение THERSHOLD, когато входният сигнал, приложен към портата, има ниво на напрежение по-високо от THRESHOLD на логическата порта, OUTPUT отива HIGH. Ако нивото на сигнала на входното напрежение е по-ниско от THRESHOLD, изходът на портата ще бъде НИСКИ. Обикновено не получаваме спусъка на Шмит отделно, винаги имаме НЕ порта, следващ спусъка на Шмит. Работата на Schmitt Trigger е обяснена тук: Schmitt Trigger Gate
Ще използваме чип 74LS14, в него има 6 порта на Schmitt Trigger. Тези шест порта са свързани вътрешно, както е показано на фигурата по-долу.
Таблицата на истината на обърнатата врата на Schmitt Trigger е показана на фигурата по-долу, с това трябва да програмираме UNO за инвертиране на положителните и отрицателните периоди от време на нейните терминали.
Сега ще подаваме всякакъв вид сигнал към ST порта, ще имаме правоъгълна вълна от обърнати периоди от време на изхода, ще подаваме този сигнал към UNO.
Обяснение на кода на брояча на честотите на Arduino:
Кодът за това измерване на честотата с помощта на arduino е доста прост и лесно разбираем. Тук обясняваме функцията pulseIn, която главно отговаря за измерването на честотата. Uno има специална функция pulseIn , която ни позволява да определим продължителността на положителното състояние или продължителността на отрицателното състояние на конкретна правоъгълна вълна:
Htime = pulseIn (8, HIGH); Ltime = pulseIn (8, LOW);
Дадената функция измерва времето, през което високо или ниско ниво е налице при PIN8 на Uno. Така че в един цикъл на вълната ще имаме продължителността на положителните и отрицателните нива в Микро секунди. Функцията pulseIn измерва времето в микро секунди. В даден сигнал имаме високо време = 10mS и ниско време = 30ms (с честота 25 HZ). Така 30000 ще се съхраняват в Ltime цяло число и 10000 в Htime. Когато ги съберем, ще имаме Продължителност на цикъла и като го обърнем, ще получим Честотата.
Пълният код и видео за този честотомер с помощта на Arduino са дадени по-долу.