ESP32 и модуль датчика Холла A3144

Тема в разделе "ESP8266, ESP32", создана пользователем OOM, 24 янв 2019.

  1. OOM

    OOM Нерд

    Может кто подскажет как к NodeMCU ESP32S подключить модуль датчика Холла А3144.

    Нужно считывать и контролировать обороты мотора. Поиски в просторах Инета результата не дали
     
  2. 5 вольт питание, синальный пин цифровой через input_pullup.
     
  3. OOM

    OOM Нерд

    Поставлю вопрос по другому.
    В Arduino_Mega2560 я решал эту задачу так:
    Код (C++):
    [code]
    // Установки для датчиков Холла моторов
    byte n = 2;      // число магнитов
    float r_L = 7.0;   // радиус левого тела в сантиметрах
    float r_R = 7.0;   // радиус левого тела в сантиметрах
    float r_speed_L, rev_time_L, r_speed_R, rev_time_R, r_speed; //
    volatile unsigned long lastflash, flash;
    unsigned int RPM_L, RPM_R;

    //Начало программы
    void setup()
    {
       //Подключение прерывания
    attachInterrupt(2,sens,RISING); //подключить прерывание на 21 пин при повышении сигнала на левом моторе
    attachInterrupt(3,sens,RISING); //подключить прерывание на 20 пин при повышении сигнала на правом моторе

    }

    // Основной цикл программы
    void loop() {
     
      // Расчет и вывод значений оборотов и скорости моторв
    if (micros() - lastflash > 1000000) { // если сигнала нет больше секунды
        RPM_L = RPM_R = 0;                            // считаем, что всё стоит и не крутится
        r_speed = r_speed_L = r_speed_R = 0;
      } else {
        rev_time_L = (float) flash / 1000000 * n;                       // время одного оборота в секундах левого мотора, с учётом числа магнитов
        rev_time_R = (float) flash / 1000000 * n;                       // время одного оборота в секундах правого мотора, с учётом числа магнитов
        RPM_L = (float) 60 / rev_time_L;                                // обороты в минуту левого мотора
        RPM_R = (float) 60 / rev_time_R;                                // обороты в минуту правого мотора
        r_speed_L = (float) 2 * 3.1415 * r_L / 100 / rev_time_L * 3.6;  // скорость точки на радиусе левого мотора, км/ч
        r_speed_R = (float) 2 * 3.1415 * r_R / 100 / rev_time_R * 3.6;  // скорость точки на радиусе правого мотора, км/ч
        r_speed = (float) r_speed_L + r_speed_R /2;                     // средняя скорость моторов, км/ч
        }
      }

    //(Функция расчета оборотов
    void sens() {
      flash = micros() - lastflash;   // вычислить время между двумя оборотами
      lastflash = micros();           // запомнить время последнего оборота
    }
     
    [/code]

    Пробовал на ESP32 не получается, вот я и задаю вопрос как это можно решить на ESP32
     
  4. казалось бы причем тут датчик холла?
     
  5. OOM

    OOM Нерд

    Потому, что я им измерял скорость оборотов