И всё же нужно переписать строку с возможностью деления на 0. Это же авионика, а не мигание светодиодом на столе, тут всё должно быть по MISRA C, даже двух команд на строке нельзя:
micros_prev = micros(); rpm_val++;
Из кода я так и не понял откуда взялось micros(), приведён фрагмент программы?
Хоть статья понравилась, выглядит странным использование ардуино (как софта) в таком ответственном изделии. Программа на чистом С почти ничем не будет отличаться от приведённого скетча, за исключением полного контроля за происходящим. А так — остаётся элемент магии.
Я не спорю, мне любопытно. Просто в статье не хватает вводной что ли.
Почему вообще надо ставить датчик? Я наивно полагал что все современные автомобили оборудованы оным. Вот даже совсем несовременные содержат поплавок с потенциометром, его не нужно ставить. Добавить только электронный обвес для точности и трекинга расхода [и слива].
Тем не менее, штатный ДУТ во многих автомобилях, не только дизельных, — потенциометрический поплавковый (на датчике холла даже безопаснее по идее). Что не так со штатным датчиком? Сопротивление мы умеем измерять легко и точно, нелинейность «уровень — напряжение» можно откалибровать, всплески топлива можно отфильтровать программно.
Т. е. Заменили ОУ рассчитанный на -25… 85 °C на аналог для 0… 70 °C ?!!!
Я вместо них ставлю LM2904 (-40… 125), чего и вам советую, а лучше LM158 (от -55).
В схеме из даташита для термокопенсации холодного спая указан некий диод D1 без обозначений. Видимо, измерительный термочувствительный диод, но какой именно?
С аналоговым выходом 10 мВ/К и термокомпенсацией: AD594/595/596/597. AD8495 — 5 мВ/К.
Есть с АЦП, например, ADS1118.
Maxim выпускает в ассортименте всякие драйверы.
Разумеется, практической значимости данная халтурка не представляет и для измерения температуры с помощью термопары нужно использовать более точные АЦП. Хорошим встроенным АЦП обладает к примеру микроконтроллер ADuCM360, причем он рассчитан именно на столь малые входные сигналы.
Крайне странный вывод.
Обычно для усиления сигнала и температурной компенсации используют специальный драйвер. Если хотят бюджетного и доступного решения — усиливают сигнал с помощью операционного усилителя. Но переходить на другую архитектуру микроконтроллера только из-за 24-битного АЦП…
Большинство курсов написаны для людей, начинавших с чего-то попроще: 8051 и подобных, PIC, AVR.
Поколение эмбеддеров стартующих сразу с ARM только появляется. Отсюда часть сложностей.
Я бы при делении просто проверил делитель на == 0 и если да, то установил некое максимальное значение RPM_MAX.
Из кода я так и не понял откуда взялось micros(), приведён фрагмент программы?
Хоть статья понравилась, выглядит странным использование ардуино (как софта) в таком ответственном изделии. Программа на чистом С почти ничем не будет отличаться от приведённого скетча, за исключением полного контроля за происходящим. А так — остаётся элемент магии.
Вся соль в этом.
И ещё нужен акселерометр, т. к. если автомобиль стоит немного под углом, то показания будут отличаться.
Почему вообще надо ставить датчик? Я наивно полагал что все современные автомобили оборудованы оным. Вот даже совсем несовременные содержат поплавок с потенциометром, его не нужно ставить. Добавить только электронный обвес для точности и трекинга расхода [и слива].
Т. е. Заменили ОУ рассчитанный на -25… 85 °C на аналог для 0… 70 °C ?!!!
Я вместо них ставлю LM2904 (-40… 125), чего и вам советую, а лучше LM158 (от -55).
Есть с АЦП, например, ADS1118.
Maxim выпускает в ассортименте всякие драйверы.
Крайне странный вывод.
Обычно для усиления сигнала и температурной компенсации используют специальный драйвер. Если хотят бюджетного и доступного решения — усиливают сигнал с помощью операционного усилителя. Но переходить на другую архитектуру микроконтроллера только из-за 24-битного АЦП…
Поколение эмбеддеров стартующих сразу с ARM только появляется. Отсюда часть сложностей.