التحكم في سرعة و اتجاه محرك DC موتور مع ESP32 اكتب تعليقُا

ESP32 with DC Motor and L298N Motor Driver – Control Speed and Direction

يوضح هذا المشروع كيفية التحكم في اتجاه وسرعة محرك التيار المستمر باستخدام ESP32 و L298N Motor Driver . سوف نلقي نظرة  على كيفية التحكم في سرعة واتجاه محرك التيار المستمر باستخدام ESP32 مع الاردوينو IDE ودرايفر L298N للمحرك .

ملاحظة: هناك العديد من الطرق للتحكم في محرك التيار المستمر . سنستخدم L298N .

لفهم هذا المشروع بشكل أفضل ، قد ترغب في إلقاء نظرة على معرفة كيفية مواجهة الدرايفر مع محرك التيار المستمر في المشروع التالي  :

تحكم محرك التيار المستمر مع ESP32 - السرعة والاتجاه

فلنضع مثالًا بسيطًا للتحكم في سرعة واتجاه محرك DC واحد .

الادوات المطلوبة لتحكم في محرك التيار المستمر مع ESP32 - السرعة والاتجاه

لإكمال هذا المشروع ، تحتاج إلى الأجزاء التالية :

esp32-dc-motor-l298n-parts-required
  • ESP32 DOIT DEVKIT V1 Board
  • DC motor
  • L298N motor driver
  • Power source: 4x 1.5 AA batteries or Bench power supply
  • 2x 100nF ceramic capacitors (optional)
  • 1x SPDT slide switch (optional)
  • Jumper wires

مخطط التوصيل لتحكم في محرك التيار المستمر مع ESP32 - السرعة والاتجاه

يرتبط المحرك الذي سنتحكم فيه بدبابيس إخراج المحرك ، لذلك نحتاج إلى توصيل دبابيس ENABLEA و INPUT1 و INPUT2 الخاصة بمحرك إلى ESP32 . اتبع الرسم التخطيطي التالي لتوصيل محرك التيار المستمر وسائق المحرك L298N إلى ESP32 .

ESP32_1_DC_Motor_bb

يتطلب محرك التيار المستمر قفزة كبيرة في التيار ، لذلك يجب تشغيل المحركات باستخدام مصدر طاقة خارجي من ESP32 . على سبيل المثال ، نحن نستخدم بطاريات 4AA ، ولكن يمكنك استخدام أي مصدر طاقة آخر مناسب . في هذا المشروع ، يمكنك استخدام مصدر طاقة من 6 فولت إلى 12 فولت .

يعد المفتاح بين حامل البطارية وسائق المحرك أمرًا اختياريًا ، لكن من السهل جدًا قطع الطاقة وتطبيقها . وبهذه الطريقة ، لن تحتاج إلى الاتصال باستمرار فقط افصل الأسلاك لتوفير الطاقة .

نوصي بلحام مكثف خزفي بحجم 0.1uF بين الطراف الموجبة والسالبة لمحرك التيار المستمر ، كما هو موضح في الرسم البياني للمساعدة في تخفيف أي طفرات في الجهد. (ملاحظة: تعمل المحركات أيضًا بدون مكثف.)

الكود البرمجي لتحكم في محرك التيار المستمر مع ESP32 - السرعة والاتجاه

يتحكم الكود التالي في سرعة واتجاه محرك التيار المستمر . هذا الكود غير مفيد في العالم الحقيقي ، إنه مجرد مثال بسيط لفهم أفضل لكيفية التحكم في سرعة واتجاه محرك التيار المستمر باستخدام ESP32 .

// Motor A
int motor1Pin1 = 27; 
int motor1Pin2 = 26; 
int enable1Pin = 14; 

// Setting PWM properties
const int freq = 30000;
const int pwmChannel = 0;
const int resolution = 8;
int dutyCycle = 200;

void setup() {
  // sets the pins as outputs:
  pinMode(motor1Pin1, OUTPUT);
  pinMode(motor1Pin2, OUTPUT);
  pinMode(enable1Pin, OUTPUT);
  
  // configure LED PWM functionalitites
  ledcSetup(pwmChannel, freq, resolution);
  
  // attach the channel to the GPIO to be controlled
  ledcAttachPin(enable1Pin, pwmChannel);

  Serial.begin(115200);

  // testing
  Serial.print("Testing DC Motor...");
}

void loop() {
  // Move the DC motor forward at maximum speed
  Serial.println("Moving Forward");
  digitalWrite(motor1Pin1, LOW);
  digitalWrite(motor1Pin2, HIGH); 
  delay(2000);

  // Stop the DC motor
  Serial.println("Motor stopped");
  digitalWrite(motor1Pin1, LOW);
  digitalWrite(motor1Pin2, LOW);
  delay(1000);

  // Move DC motor backwards at maximum speed
  Serial.println("Moving Backwards");
  digitalWrite(motor1Pin1, HIGH);
  digitalWrite(motor1Pin2, LOW); 
  delay(2000);

  // Stop the DC motor
  Serial.println("Motor stopped");
  digitalWrite(motor1Pin1, LOW);
  digitalWrite(motor1Pin2, LOW);
  delay(1000);

  // Move DC motor forward with increasing speed
  digitalWrite(motor1Pin1, HIGH);
  digitalWrite(motor1Pin2, LOW);
  while (dutyCycle <= 255){
    ledcWrite(pwmChannel, dutyCycle);   
    Serial.print("Forward with duty cycle: ");
    Serial.println(dutyCycle);
    dutyCycle = dutyCycle + 5;
    delay(500);
  }
  dutyCycle = 200;
}

في هذا المشروع ، أظهرنا لك كيفية التحكم في اتجاه وسرعة محرك DC باستخدام ESP32 وسائق L298N للمحرك .  نأمل أن تكون هذه المشروع مفيدة.

 

أنتهت !!!

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *