Возможно ли подобным способом измерить скорость вращения?

Тема в разделе "ESP8266, ESP32", создана пользователем SavvaRem, 27 янв 2024.

  1. SavvaRem

    SavvaRem Гик

    Добрый день форумчане.

    Пытаюсь сделать приблуду, которая должна замерять обороты вращения коленвала на моем гоночном "болиде". Суть идеи снимать индукционным датчиком (куском намотанного провода) со свечной проводки сигнал, затем с помощью ОУ приводить его прямоугольному виду и считать количество импульсов за какой-то период времени импользуя аппаратные прерывания по заднему фронту. Вопрос знатокам, взлетит ли следующий код. Предполагается использовать esp32

    Код (C++):
    #ifndef _ENGINE_MEASURER_H_
    #define _ENGINE_MEASURER_H_

    #include <cstdint>
    #include "imeasurer.h"

    namespace rpm {

        volatile uint32_t pulseCount{0};

        void IRAM_ATTR handleInterrupt() {
            pulseCount++;
        }
    };

    class engineWorker : iMeasurer {

        int m_interruptPin{};

    public:

        bool init(int interruptPin) {

            m_interruptPin = interruptPin;
            pinMode(m_interruptPin, INPUT_PULLUP);
            return true;
        }

        void measure(telemetry::fulldata& data) override {

            attachInterrupt(digitalPinToInterrupt(m_interruptPin), rpm::handleInterrupt, FALLING);
           
            //One pulse == 100 Hz
            delay(10);
              data.engine.rpm = rpm::pulseCount * 100;
              rpm::pulseCount = 0;
             
              detachInterrupt(digitalPinToInterrupt(m_interruptPin));
        }
    };

    #endif /* _ENGINE_MEASURER_H_ */
    Сам замер будет производиться в методе measure. Прошу покритиковать и высказатб мнения :)
    Спасибо
     
  2. b707

    b707 Гуру

    критикую.
    Вот у вас импульс указан 100 Гц
    Идея плохо дружит с математикой, 100 Гц это 6000 оборотов в минуту. При такой маленькой задержке у вас точность измерения будет 2-3 тыс оборотов туда-сюда.
    Для того чтобы уверенно измерять обороты начиная хотя бы с 1000 об.мин с точностью в 100 об/мин - нужно увеличить время измерения примерно до секунды.Так что ваша телеметрия будет весьма задумчивой.

    Чтобы получить хорошую точность и при этом все не тормозило - надо измерять не число оборотов за период, а время одного оборота.
     
  3. Ariadna-on-Line

    Ariadna-on-Line Гуру

    1. По-моему как-то не так. При 100 Герцах за 10 мС на счетчике гарантированно появится 1 импульс. Если появилось два - значит на входе 200 Герц. А это погрешность не 2-3К об/мин, а все 6К.
    2. Чтобы получить хорошую точность и при этом все не тормозило - надо измерять не число оборотов за период, а период за один оборот. )))))))
    3. Человек не способен осознать текст или цифры за время короче чем пол-секунды. Ну и нафига вам ускорять процесс измерения до 10мС ? Измерили число оборотов за пол-секунды и сидите "осмысливайте".
    4. Импульс с вашего "датчика" будет затухающей синусоидой. Чтобы перевести его в одиночный импульс лучше использовать перезапускаемый одновибратор типа 74HCT123.
     
    Последнее редактирование: 28 янв 2024
  4. parovoZZ

    parovoZZ Гуру

    Искровой промежуток даёт шум, а не синусоиду.
     
  5. parovoZZ

    parovoZZ Гуру

    Автор не указал, сколько тактов в двигателе.
     
  6. parovoZZ

    parovoZZ Гуру

    А эта часть уже работает?
     
  7. b707

    b707 Гуру

    а сколько бы ни было, каждая свеча дает только один импульс на оборот
     
  8. parovoZZ

    parovoZZ Гуру

    каждая свеча даёт один импульс на два оборота при двухтактном режиме работы, или каждые 4 оборота при 4-х тактном.
     
  9. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Ну нихрена себе автовладельцы. Я - велосипедист, лучше вас знаю. Зажигание работает 1 раз на цилиндр за 2 оборота коленвала на 4-тактнике. И 1 раз на цилиндр на оборот в 2-х тактнике.
     
    Последнее редактирование: 28 янв 2024
  10. SavvaRem

    SavvaRem Гик

    Так.. Мопед вот такой. 160 кубов, 1 цилиндр, 4 такта, максимальное количество оборотов в минуту порядка 9000 об/мин
     

    Вложения:

  11. SavvaRem

    SavvaRem Гик

    Ну и соответственно обороты надо замерить в диапазоне 1000 - 10000 с шагом в 100 (или 200) об/мин
     
  12. SavvaRem

    SavvaRem Гик

    Да есть вот это
     

    Вложения:

  13. parovoZZ

    parovoZZ Гуру

    и что на выходе? Чистый прямоугольник, который соответствует оборотам или всё же проскакивают иголки?
     
  14. SavvaRem

    SavvaRem Гик

    А это будем посмотреть
     
  15. Ariadna-on-Line

    Ariadna-on-Line Гуру

    С точки зрения схемотехники сделано не правильно.
     
  16. parovoZZ

    parovoZZ Гуру

    Можно поподробнее про эту точку зрения?
     
  17. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Пожалуйста.
     

    Вложения:

    • Moped.png
      Moped.png
      Размер файла:
      31 КБ
      Просмотров:
      64
    Последнее редактирование: 29 янв 2024
  18. parovoZZ

    parovoZZ Гуру

    А зачем ты выкладываешь не рабочую схему?
    К тому же со свечки прилетает не одиночный импульс, а шум, уходящий далеко в радиодиапазон. Так что симуляция не верная, схема не настроена. Не зачёт.
     
  19. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Показал что схема не по феншую схемотехники. Рабочих схем не обещал. Их и не просили.
    А насчет одиночного импульса - Специально на входе нарисовал генератор ПАЧЕК импульсов. Просто их не видно при такой частоте развертки осциллографа.
     
    Последнее редактирование: 30 янв 2024
  20. parovoZZ

    parovoZZ Гуру

    Феншуй схемотехники - это что?
    На вставлял значения элементов, взятые явно с потолка, а потом говоришь про какой-то феншуй. Так любая схема перестанет работать, даже если работала до этого.