Как можно подключить Arduino для считывания сигнала с выхода тахометра, который управляется электронным блоком управления (ЭБУ) автомобиля?

ЭБУ Bosch M7.9.7. Согласно распиновке, на 8-й ноге находится низковольтный выход тахометра. Однако я не смог найти подробной документации, которая описывала бы характеристики сигнала. Где-то я читал, что импульсы имеют амплитуду +5V. <br/> Я настроил таймер Arduino на тактирование от внешнего источника и подал сигнал с генератора, имеющего частоту 1 kHz и амплитуду 3V, для проверки — все работает отлично. <br/> <pre><code>void setupTimer(){
  pinMode(5,INPUT);
  TCCR1A  = 0;
  TCCR1B  = 0;
  TCCR1B |= (1&lt;&lt;CS12) | (1&lt;&lt;CS11) | (1&lt;&lt;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);
}</code></pre> <br/> <br/> Я подключил 5-й пин Arduino к выходу тахометра, а землю — к массе двигателя. Параллельно я подключил диагностический модуль для сравнительного анализа показателей. Когда я покрутил стартер, результаты были странными: Arduino насчитывала гораздо больше импульсов (несмотря на то, что тахометр выдает два импульса за один оборот), и показатели были нестабильными, с сильными колебаниями значений, хотя по звуку было слышно, что стартер работает со стабильной скоростью. В итоге я купил осциллограф и подключил щуп к выходу тахометра, а землю — к массе. Затем я запустил стартер снова. <br/>
  • 9 февраля 2025 г. 13:44
Ответы на вопрос 2
Подключение Arduino к выходу тахометра автомобиля, особенно в случае, когда он управляется ЭБУ, требует некоторого понимания сигналов и образцов, которые вы ожидаете. Вот несколько рекомендаций и моментов, которые следует учесть при подключении и анализе сигнала тахометра.

### 1. Характеристика сигнала тахометра
- **Вольтаж**: Если вы читали, что сигнал тахометра имеет амплитуду +5V, но на практике это может быть и ниже, в зависимости от режимов работы. Обязательно проверьте сигнал с помощью осциллографа.
- **Импульсы**: Обычно тахометр выдает квадратные импульсы, но форма сигнала и его амплитуда могут меняться в зависимости от оборотов двигателя. Некоторые тахометры могут генерировать два импульса за один оборот двигателя.

### 2. Подключение
- Убедитесь, что вы подключили землю Arduino к общему заземлению автомобиля (массой двигателя), чтобы избежать проблем с уровнями сигнала.
- Если предполагаемая амплитуда выше 5V, или вы не уверены, можно использовать делитель напряжения для снижения амплитуды сигнала на вход Arduino.

### 3. Измерение частоты
В вашем коде вы используете таймер для измерения оборотов. Убедитесь, что вы правильно учитываете количество импульсов:

- Если тахометр выдает два импульса за оборот, вам нужно будет делить ваше значение RPM на 2 (что вы уже делаете).
- Обратите внимание на время, в течение которого вы считаете импульсы. Возможно, следует использовать более длительный интервал, чтобы получить более стабильные значения.

### 4. Параметры и улучшения кода
Ваш код кажется достаточно простым, но вот несколько улучшений:

- Попробуйте использовать прерывания для более точного отслеживания импульсов вместо таймера. Это позволит вам обрабатывать каждый импульс сразу, что улучшит точность измерений.
  
  Пример использования прерываний:
  ```cpp
  volatile unsigned long pulseCount = 0;

  void setup() {
    pinMode(5, INPUT);
    attachInterrupt(digitalPinToInterrupt(5), countPulse, RISING);
    Serial.begin(9600);
  }

  void loop() {
    delay(1000); // Раз в секунду
    unsigned long count = pulseCount; // Сохранить текущее количество импульсов
    pulseCount = 0; // Сбросить после счёта
    Serial.println(count / 2); // Два импульса за один оборот
  }

  void countPulse() {
    pulseCount++;
  }
  ```

### 5. Проверка с осциллографом
С помощью осциллографа вы можете:
- Проверить амплитуду и форму сигнала.
- Убедиться, что вы видите правильное количество импульсов при запуске стартера.
- Понять, есть ли шумы или другие артефакты на сигнале, которые могут влиять на считывание.

### Заключение
Продолжайте экспериментировать с вашими подключениями и кодом. Убедитесь, что вы используете корректные методы и подходы для измерения скорости. Модификации, основанные на ваших наблюдениях и сигналах, помогут вам более точно оценивать участие тахометра в процессе.
Лучше всего взять готовую схему для подключения, защиты, согласования. Смотрите схемы ЭБУ, их прилично. Январь, Бош, SECU и т.д.
Похожие вопросы