DC Motor Speed control with Arduino using PWM

0
45

आज हम गोल गोल घूमेंगे. आज हम DC मोटर को arduino के साथ interface करेंगे. और सिर्फ on off नहीं उसकी स्पीड भी control करेंगे. तो तैयार हो जाइये अगले project के लिए, मेरे यानी अभिषेक के साथ.

Introduction

तो DC Motor एक electrical device है जो direct current पर काम करता है. यह magnet और coil से बनता है. हम यहाँ यह कैसे काम करता है वो नहीं सीखेंगे क्योकि हम सब इस device को अपने स्कूल के टाइम से पढ़ते है और हम सब को fleming’s left hand rule भी पता है.2019-03-23_00h09_06.png

आज हम dc मोटर को arduino से interface करेंगे. आप मोटर को uno के साथ direct नहीं  operate कर सकते. इसके लिए हमे motor driver की जरुरत होती है. हम L293D motor driver use करेंगे. इस driver से आप maximum 4 motor चला सकते है. अगर Half bridge mode से कर रहे है तो 4 मोटर और Full H bridge mode से कर रहे है तो 2 मोटर. Half bridge mode से आप motor को सिर्फ एक ही direction में चला सकते है लेकिन फुल H bridge mode से आप forward और reverse दोनों direction में मोटर घुमा पाएंगे. अगर इतना समझ आया तो अभी चलते हैं हम लोगो अगले step पर .

Circuit Diagram

2019-03-23_00h10_58.png

Arduino Code

#define swit  8
#define spe   0
#define frpwm 9
#define bkpwm 10

boolean mot_dir = 0;
int mot_speed;

void setup() {

  pinMode(swit, INPUT_PULLUP);
  pinMode(frpwm,   OUTPUT);
  pinMode(bkpwm,   OUTPUT);
}

void loop() {
  mot_speed = analogRead(spe)*0.25;
  if(mot_dir)
    analogWrite(frpwm, mot_speed);
  else
    analogWrite(bkpwm, mot_speed);
  if(!digitalRead(swit)){            
    while(!digitalRead(swit));      
    mot_dir = !mot_dir;             
    if(mot_dir)
      digitalWrite(bkpwm, 0);
    else
      digitalWrite(frpwm, 0);
  }
}


कोड working

चलिए अब code समझते है. हम switch को 8 number की pin में connect  करेंगे. यह switch से dc motor की direction change करेंगे. अब हम एक potentiometer लगायेंगे जिससे हम DC Motor की Speed control करेंगे. अब हम Full H bridge use करेंगे. इसके लिए दो pins 9 और 10 को हमने frpwm और bkpwm नाम दिया है. Diagram में दिया है वेसे आप L293D use करके dc motor connect कर लीजिय.

अब swi को input pullup set करते है. इसका मतलब open condition में input high होगा और press करने पर low हो जाएगा. spe analog input है. frpwm और bkpwm output है.  यह सब हम void setup() के अन्दर करेंगे.

सबसे पहले हम speed के लिए spe का data read करेंगे और उसे अपनी motor की values के साथ map करेंगे. इसलिए data read करने के लिए analogRead() function है और उसे map करने के लिए 0.25 से MULTIPLY किया है. यह data हम mot_speed में save करेंगे.

अब direction के लिए हमने boolean variable mot_dir रखा है. अगर यह 1 होगा तो clockwise motion और अगर 0 तो anticlockwise motion में motor घूमेगी. आप if else branching से समज ही गए होंगे. अब pwm use कने के लिए analogWrite(pin_number,value) यह function use कर सकते है. pwm mode सिर्फ कुछ pins पे ही होगा.आप अपने uno बोर्ड पे देखिये की जिस pin पर ~ का symbol होगा उस पर pwm use कर सकते है.

इसके बाद हम वापस चेक करते है swi press हुई है के नहीं. अगर हुई है तो mot_dir toggle करेंगे जिससे direction toggle होगी. अब अगर direction clockwise है तो bkpwm को ground करना पड़ेगा और अगर anticlockwise है तो frpwm को. इसलिए last वाला if else logic है.

Let’s Do It…

अब आप potentiometer को घुमा कर speed set कीजिये और switch press करके direction change करिये. तो दोस्तों देखा आपने, यह कितना आसन है. अब एक dc motor configure किया तो 4 motor configure करके आप अपनी robot car बना सकते है.

आज हम सीखे dc मोटर के बारे में और कैसे pwm से उसकी speed control कर सकते है. तो फिर दोस्तों मिलते है अगले blog में तब तक के लिए मुस्कुराते रहिये और सीखते रहिये. bye bye. 🙂


LEAVE A REPLY

Please enter your comment!
Please enter your name here