ЭБУ bosch m7.9.7. Согласно распиновке, на 8 ноге - низковольтный выход тахометра. К сожалению, не нашел подробной документации, в которой описывался бы характер сигнала, но где-то читал, что импульсы амплитудой +5v.
Настроил таймер arduino на тактирование от внешнего источника, подал сигнал генератора с частотой 1kHz и амплитудой 3v, для проверки - все работает отлично.
void setupTimer(){
pinMode(5,INPUT);
TCCR1A = 0;
TCCR1B = 0;
TCCR1B |= (1<<CS12) | (1<<CS11) | (1<<CS10);
TCNT1 = 0;
}
uint32_t prev_int = 0;
void loop() {
const float dt = (millis()-prev_int)/1000.f;
prev_int = millis();
rpm = TCNT1*60*1.f/dt;
TCNT1 = 0;
Serial.println(rpm/2);
delay(1000);
}
Подключил 5 пин ардуино к выходу тахомтера, а землю к массе двигателя. Параллельно подключли диагностический модуль, чтобы было с чем сранивать показатели. Покрутил стартер. Результат получился странным, ардуино насчитывает куда больше импульсов (даже с учетом того, что тахометр выдает два импульса за оборот), и притом результат нестабильный, сильно плавают значения, хотя я даже по звуку слышу, что стартер крутит со стабильной скоростью.
Купил осцилограф, подключил щуп к выходу тахометра, землю - к массе. Покрутил стартером.
![67a8ae945465d463237977.jpeg](https://habrastorage.org/webt/67/a8/ae/67a8ae945465d463237977.jpeg)
Осцилограмма меня обескуражила. Во-первых амплитуда не такая уж низковольтная, во-вторых, странная несиметричность по уровню (-3 - +8). Но сам сигнал довольно чистый, без шумов, частота 8hz, примерно соответствует тому, что показывает диагностический сканер. Теперь надо понять как же мне посчитать эти импульсы при помощи микроконтроллера.