СВЕТОДИОД и ДВИГАТЕЛЬ "ВКЛЮЧАЮТСЯ", когда УСТРОЙСТВО BLE ПРИБЛИЖАЕТСЯ К МИКРОКОНТРОЛЛЕРУ ESP32 DFR0575

У меня есть этот код, который работает отлично, но я хочу, чтобы мое устройство тоже начало вибрировать (сейчас работает только светодиод).

На батарейном модуле Wemos я просто подключил вибродвигатель к тому же контакту светодиода, и он работает отлично.

Теперь я хочу сделать то же самое на микроконтроллере Beetle ESP32 DFR0575. Я использовал тот же код, но не могу заставить модуль вибрировать (светодиод работает идеально).

вот этот код:

 #include <BLEAdvertisedDevice.h>
   #include <BLEDevice.h>
   #include <BLEScan.h>

   const int PIN = 2;
   const int CUTOFF = -50;


   void setup() {
     pinMode(PIN, OUTPUT);
     BLEDevice::init("tkr");
   }

   void loop() {
     BLEScan *scan = BLEDevice::getScan();
     scan->setActiveScan(true);
     BLEScanResults results = scan->start(1);
     int best = CUTOFF;
     for (int i = 0; i < results.getCount(); i++) {
       BLEAdvertisedDevice device = results.getDevice(i);
       int rssi = device.getRSSI();
       if (rssi > best) {
         best = rssi;
       }
     }
     digitalWrite(PIN, best > CUTOFF ? HIGH : LOW);
   }

, 👍0

Обсуждение

Подключаете ли вы вибродвигатель непосредственно к цифровому выходному контакту? Или вы используете какой-то драйвер (например, транзистор)?, @chrisl

В батарейном модуле Wemos я подключаю вибрацию к цифровому выходному контакту. Но то же самое не работает на микроконтроллере Beetle ESP32 DFR0575, я не знаю почему.., @Alex x

Какой тип батарейного модуля у вас есть? Можете ли вы предоставить ссылку? Гуглянув, я нашел разные щиты батареи для Wemos. Также скажите, к какому штифту вы подключили вибродвигатель именно на обеих платах., @chrisl

Модуль Батареи Wemos (https://www.amazon.com/gp/product/B07M9X7HS6/ref=ppx_yo_dt_b_asin_title_o08_s00?ie=UTF8&psc=1) подключен на вывод 16 Рабочий ---- Микроконтроллер Beetle ESP32 DFR0575 подключен на вывод 2 НЕ РАБОТАЕТ, @Alex x

почему вы снова задаете этот вопрос? .... отредактируйте свой исходный вопрос с дополнительной информацией вместо репоста ... https://arduinoprosto.ru/q/68964/vibration-and-led-light-on-ble-approach, @jsotola


1 ответ


2

Как правило, очень опасно управлять любым двигателем непосредственно с цифрового выходного штифта. Двигателям часто требуется гораздо больший ток, чем может обеспечить цифровой вывод. Исходя из ответа на этот вопрос, ESP8266 может обеспечить 20 мА или 12 мА в зависимости от текущего направления (может немного отличаться для ESP32, но не существенно). Потребляемый ток больше, чем может обеспечить вывод, может привести к разрушению выходного оборудования вывода. Нелегко сказать, когда это произойдет, потому что это зависит не только от текущего розыгрыша, но и от времени и вариаций изготовления.

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

Я не могу дать вам полное объяснение, почему это работает с первой платой, но не со второй. Я думаю, это имеет отношение к вышесказанному.

Вы всегда должны делать 2 вещи, когда управляете двигателями с микроконтроллером:

  1. Используйте схему драйвера двигателя: Вы можете либо купить готовый к использованию драйвер двигателя, либо построить его самостоятельно. Если вы хотите повернуть двигатель только в одном направлении (как в случае с вибрационным двигателем), все, что вам нужно, - это МОП-транзистор, который будет действовать как переключатель между двигателем и источником питания. Этот переключатель управляется выходным контактом Arduino (который должен подавать только очень низкий ток для переключения). Вы можете погуглить "MOSFET в качестве переключателя". Обязательно используйте МОП-транзистор, который может обеспечить необходимый ток и который хорошо насыщает используемое напряжение затвора (рабочее напряжение микроконтроллера).

  2. Используйте обратный диод: Напряжение обратной индукции также может повредить МОП-транзисторы. Вы хотите, чтобы эти скачки напряжения быстро исчезли, пропуская ток на землю. Вы можете сделать это с помощью обратного диода. Это диод, который соединяет сток и источник МОП-транзистора. Он ориентирован так, чтобы блокировать нормальную работу (нормальное положительное напряжение питания). Когда МОП-транзистор выключается, в двигателе накапливается большое отрицательное напряжение, но поскольку диод проводит таким образом, напряжение будет безопасно поступать на землю, так что индукционное напряжение не повредит другим электронным частям.

,

Большое вам спасибо, я постараюсь. единственная проблема, с которой я столкнулся, заключается в том, что я нашел много Моп-транзисторов на amazon, но я не знаю, что купить., @Alex x

Мне нужно что-то очень маленькое..., @Alex x

Вам уже нужно определить, куда должен вписываться МОП-транзистор: вы ищете МОП-транзистор, который может пропускать несколько сотен мА (в зависимости от вашего двигателя, вы можете просто измерить реальное значение) без радиатора (что означает, что максимальный ток должен быть явно выше этого значения). Кроме того, его пороговое напряжение должно быть явно меньше 3,3 В (что соответствует напряжению плат ESP). И он должен быть небольшим, поэтому лучше всего подойдет SMD-деталь. Просто используйте один из них при таких условиях., @chrisl