Частотомер
- Войдите на сайт для отправки комментариев
Чт, 27/03/2014 - 21:56
Ребят, как сделать счетчик импульсов в данной програаме? После расчета КСВ.
// Подключаем библиотеку дисплея: #include <LiquidCrystal.h> // Подключаем библиотеку шагового двигателя: #include <Stepper.h> #include <util/delay.h> // Количество шагов мотора: #define STEPS 48 // Шагов на оборот. // Подключаем математические функции: #include "math.h" // Объявляем переменные и приводим их в порядок: float SWRpad = 0; float SWRotr = 0; float SWR = 0; // Прописываем пины индикатора: LiquidCrystal lcd(8, 13, 9, 4, 5, 6, 7); // Создает класс шагового двигателя и объявляет какими ножками: Stepper stepper(STEPS, 8, 9, 10, 11); // Второй мотор: Stepper stepper2(STEPS, 2, 3, 4, 5); void setup () { analogReference(DEFAULT); // Стандартное опорное напряжение 5 В. lcd.begin(16, 2); // Задаем размерность экрана, 2 строки по 16 символов. // Установление скорости оборотов двигателя в оборотах в минуту (RPM). stepper.setSpeed(30); stepper2.setSpeed(30); } void loop () { // Считываем в порт значение частоты: SWRpad = analogRead(A2); // Читаем со второй ноги аналогово входа напряжение падающей волны. SWRotr = analogRead(A1); // Читаем с первой ноги аналогово входа напряжение отраженной волны. // Расчет и вывод КСВ: SWR = (SWRpad + SWRotr)/(SWRpad - SWRotr); // Определяем номер шага и значение КСВ - сравниваем с тем, что запомнили вначале. // Если новое значение лучше, то запомнинаем новое и номер шага. После полного оборота выбираем лучшее. lcd.setCursor(0, 0); lcd.print(" SWR "); if (SWR>1) { lcd.setCursor(4, 0); lcd.print(">1");} else if (SWR > 3) { // Один полный круг вперед: stepper.step(1*STEPS); stepper2.step(1*STEPS); delay(1000); // Задержка определяется временем на шаг двигателя. // Один полный круг назад: stepper.step(-1*STEPS); stepper2.step(-1*STEPS); delay(1000); lcd.setCursor(4, 0); lcd.print(SWR); } // Задержка и очистка экрана: delay (100); lcd.clear(); }
pulseIn()
Интересно, зачем нужно условие 44й строки которое только при неисправных детекторах может быть ложным? А по сути вопроса уже ответили, несколько замеров периода, усреднить и всё.
Большое спасибо. Я новичок, а что именно нужно прописать? Напишите пожалуйста
Большое спасибо. Я новичок, а что именно нужно прописать? Напишите пожалуйста
По логике вашего кода вас интересует КСВ<=3, если это не так, то начинаете что то там крутить по непонятному алгоритму(вообще что это за регулятор?). Какую частоту при этом хотите мерить не очень понятно, падающей волны?
Да - КСВ<=3, падающей волны. Помогите написать
автоматическое антенное согласующее устройство
Начнём с начала, что по вашему необходимо сделать, чтобы измерить частоту переменного сигнала?
Начнём с начала, что по вашему необходимо сделать, чтобы измерить частоту переменного сигнала?
он новичёк...
он новичёк...
Новичёк строящий согласующие устройства ВЧ тракта? Хм..
алгоритм: измеряяем КСВ, если КСВ < 1.3, то отображаем. Если КСВ>1.3, то делаем полный шаг, счетчик, отображаем
Новичёк строящий согласующие устройства ВЧ тракта? Хм..
нет повода подозревать во лжи - сказал, "новичог" - значит, так и есть.
А для чего вам измерение часоты? У вас же наверняка не амплитудная модуляция, и частоту модулированного сигнала измерить, да ещё и ардуиной, не удастся. Ну если очень очень хочется, то гармонический сигнал сначала нужно превратить в меандр, а уж дальше в зависимости от частоты или через счётчик или напрямую через развязывающие оптопары на дуину и измерять скважность.
Ваши ответвители наверняка с детектирующими элементами (диод с кондёром и возможно резюком нагрузки). Через такой детектор ну никак частоту нельзя измерить.
Может выход после делителя 74HCT4040 для измерения частоты? Автор, что за разработка? Тюнер для трансивера или усилителя? Степером крутить кондер и катушку?
Ребята, может кто то использовал в частотомере делитель 74HCT4040? что то никак не могу понять как работает на выходе и что писать в ардуине что бы показывал частоту.