shtep, нужна плата с тремя 16-битными таймерами + что бы были выведены три их тактовых входа. Есть вариации плат мега2560 со всеми распаяными пинами, вот например. Думаю это для вас самый оптимальный вариант.
Спасибо за ответ. Пришла здравая мысль воткнуть схему переключения и считывать по показания очереди.
Сначала собрал частотомер с подсчетом тиков в нуле и единице (не хотелось разбираться с прерываниями :). На низких частотах хорошо измеряет, но уже на килогерцах показания начинают скакать. Хотя сам сигнал ТТЛ, близкий к меандру, с хорошими фронтами (с триггера Шмитта). Обработка усреднением (а тем более сортировка) сильно замедляют процесс измерения. Тогда использовал схему и скетч, предложенный dimax. Понравилась краткость программы. Только не понял, зачем обязательно использовать 5-ый пин и для дисплея. Оставил его на чистый вход, дисплей подцепил на 8,9, 10, 11,12,13. Спасибо автору, все замечательно работает.
Один из участников данной темы использует ЛСД Шилд, и чтобы не курочить Шилд чисто под этот проект, было решено программно переключать 5 пин между частотомером и дисплеем. Всё-таки не все хотят намертво привязывать железо, которое завтра может пригодиться где-то ещё
Здравствуйте, использовал схему предложеную dimax с расшарингом пинов, подключил arduino и LCD, через резистор подключил сигнал, но после заливки программы на дисплее показывает иероглифы и при измерении также показывает иероглифы, хотел спросить почему так может происходить?
Здравствуйте, хочу поинтересоваться, как можно измерить длительность положительного импульса (секунды, или милисекунды). который подается на микроконтроллер (программирую в ардуино).
пробовал pulsein(), но увыб ничего толкового не получается
Здравствуйте, хочу поинтересоваться, как можно измерить длительность положительного импульса (секунды, или милисекунды). который подается на микроконтроллер (программирую в ардуино).
Примерно так:
unsigned long time1 = millis();
delay(500);
unsigned long time2 = millis();
long dlit = time2 - time1;
ваш код измерения частоты оказался самым работоспособным... в области частот интересующих меня(20Гц.....250 кгц)...я скопировал ваш код и внес некоторые изменения, но что-то не так отображается на дисплее(2004А). Почему то Гц отображаются как Hzz...мне нужно отображать частоту входного сигнала с двумя знаками после запятой. Я еще не очень разбираюсь в программировании.
int_tic=0; TCNT1 = 0;
lcd.setCursor(3, 1);
lcd.print(" ");
lcd.setCursor(3, 1);
if (tic < 1000){
lcd.print(tic);
lcd.print(" Hz");
// и далее без изменения
Допустим. Но если речь идет о измерении частоты, то насколько я понимаю, для того чтоб измерить количество тактов за один период, нужно два аппаратных канала: один для измерения "положительного" полупериода, а другой для измерения "отрицательного" полупериода.
Допустим. Но если речь идет о измерении частоты, то насколько я понимаю, для того чтоб измерить количество тактов за один период, нужно два аппаратных канала: один для измерения "положительного" полупериода, а другой для измерения "отрицательного" полупериода.
Нет. Нужно просто измерить интервал между двумя соседними фронтами одинаковой полярности, и пересчитать.
shtep, нужна плата с тремя 16-битными таймерами + что бы были выведены три их тактовых входа. Есть вариации плат мега2560 со всеми распаяными пинами, вот например. Думаю это для вас самый оптимальный вариант.
Спасибо за ответ. Пришла здравая мысль воткнуть схему переключения и считывать по показания очереди.
Сначала собрал частотомер с подсчетом тиков в нуле и единице (не хотелось разбираться с прерываниями :). На низких частотах хорошо измеряет, но уже на килогерцах показания начинают скакать. Хотя сам сигнал ТТЛ, близкий к меандру, с хорошими фронтами (с триггера Шмитта). Обработка усреднением (а тем более сортировка) сильно замедляют процесс измерения. Тогда использовал схему и скетч, предложенный dimax. Понравилась краткость программы. Только не понял, зачем обязательно использовать 5-ый пин и для дисплея. Оставил его на чистый вход, дисплей подцепил на 8,9, 10, 11,12,13. Спасибо автору, все замечательно работает.
Один из участников данной темы использует ЛСД Шилд, и чтобы не курочить Шилд чисто под этот проект, было решено программно переключать 5 пин между частотомером и дисплеем. Всё-таки не все хотят намертво привязывать железо, которое завтра может пригодиться где-то ещё
Спасибо за разъяснение!
Здравствуйте, использовал схему предложеную dimax с расшарингом пинов, подключил arduino и LCD, через резистор подключил сигнал, но после заливки программы на дисплее показывает иероглифы и при измерении также показывает иероглифы, хотел спросить почему так может происходить?
Здравствуйте, хочу поинтересоваться, как можно измерить длительность положительного импульса (секунды, или милисекунды). который подается на микроконтроллер (программирую в ардуино).
пробовал pulsein(), но увыб ничего толкового не получается
Здравствуйте, хочу поинтересоваться, как можно измерить длительность положительного импульса (секунды, или милисекунды). который подается на микроконтроллер (программирую в ардуино).
Примерно так:
Планируется ли под ОЛЕД или жк экран модификация?
Планируется ли под ОЛЕД или жк экран модификация?
а почему нет?
Уважаемый dimax
ваш код измерения частоты оказался самым работоспособным... в области частот интересующих меня(20Гц.....250 кгц)...я скопировал ваш код и внес некоторые изменения, но что-то не так отображается на дисплее(2004А). Почему то Гц отображаются как Hzz...мне нужно отображать частоту входного сигнала с двумя знаками после запятой. Я еще не очень разбираюсь в программировании.
вот так исправь
uabem
спасибо вам большое за помощь....все получилось как надо, но я не совсем понял смысл этих изменений....можете пояснить??
Достаточно
lcd.print(
" Hz "
);
Достаточно
lcd.print(
" Hz "
);
...не был уверен, что затрёт полностью...и, существует 99 способов...сто профессор...сто... )))
надо затирать знакоместо при уменьшении выводимого количества знакомест... в вашем случае при переходе с Khz к Hz
Ну, ещё к KHz пробел добавить тогда.
Конечно, если товарищ резко уменьшит строку на два и более символов, то не поможет. А по одному ежели скидывать, то нормально - последний знак затрёт.
Ну, ещё к KHz пробел добавить тогда.
Конечно, если товарищ резко уменьшит строку на два и более символов, то не поможет. А по одному ежели скидывать, то нормально - последний знак затрёт.
я жеж не настоящий сталевар, не могу как вы - скользящим взглядом на код...метод кардинального костыля наше фсё )))
Можно ли ещё раз уточнить, какая плата Mega имеет все распаянные пины таймеров/счетчиков и как их можно использовать одновременно.
Можно ли ещё раз уточнить, какая плата Mega имеет все распаянные пины таймеров/счетчиков и как их можно использовать одновременно.
любая видимо
Допустим. Но если речь идет о измерении частоты, то насколько я понимаю, для того чтоб измерить количество тактов за один период, нужно два аппаратных канала: один для измерения "положительного" полупериода, а другой для измерения "отрицательного" полупериода.
Немного обновлю тему,вот добавил вывод на OLED i2c дисплей .
Допустим. Но если речь идет о измерении частоты, то насколько я понимаю, для того чтоб измерить количество тактов за один период, нужно два аппаратных канала: один для измерения "положительного" полупериода, а другой для измерения "отрицательного" полупериода.
Нет. Нужно просто измерить интервал между двумя соседними фронтами одинаковой полярности, и пересчитать.