#1
Сообщение
ivanpost » 10.10.2017{, 19:57}
Уважаемые знатоки! У меня в системе несколько счетчиков, поэтому аппаратный счетчик не подходит, но и счет всех импульсов не нужен, именно МГНОВЕННАЯ СКОРОСТЬ, которую буду оценивать 1-2 раза в секунду.
Поэтому подходит способ определения длительности между импульсами с приостановкой выполнения скетча.
Диапазон частоты входных импульсов - от 8 до 600 ГЦ.
Помогите сделать блок, вероятно на CODE, который бы ждал, ловил этот импульс, и мерил длительность до следующего выдавая интервал между ними в мкс.
Вот здесь парни сделали, но добавили делитель, который не нужен:
const uint8_t pinSensor = 2; // Определяем № вывода Arduino, к которому подключён датчик расхода воды
uint32_t varPulse; // Объявляем переменную для хранения длительности импульсов с датчика
uint8_t varResult; // Объявляем переменную для хранения рассчитанной скорости потока воды
//
void setup(){ //
pinMode(pinSensor, INPUT); // Конфигурируем вывод к которому подключён датчик, как вход
} //
//
void loop(){ //
varPulse=pulseIn(pinSensor, HIGH, 200000); // Считываем длительность импульса, но не дольше 0,2 сек
if(varPulse){varResult=uint8_t(1000000/(15*varPulse));} // Если длительность импульса считана, то рассчитываем скорость потока воды: Q = 1000000/(15L) л/мин
else {varResult=0;} // Если длительность импульса не считана, то считаем что скорость потока воды = 0 л/мин
}
И такой вопрос: можно ли делать такой блок на FBD сделав "выполнение по условию" и "выполнять в цикле пока" ? Успеет ли он померить такой импульс?
Добавлено (10.10.2017, 19:57)
---------------------------------------------
Уточнение! Вход в процедуру может прийтись на время, когда датчик уже "включен" и "ждать включения" - слишком долго. Для экономии процессорного времени имеет смысл считать смены состояния датчика и определять время между первой и третьей сменой состояния!