আরডুইনো কোড এবং ভিডিও: L293D ডিসি মোটর কন্ট্রোলার (গতি নিয়ন্ত্রণ ছাড়া)
এই টিউটোরিয়ালটি L293D মোটর কন্ট্রোলার ব্যবহার করে একটি DC মোটর নিয়ন্ত্রণ করতে Arduino-এর সাথে কীভাবে ব্যবহার করতে হয় তা কভার করে। L293D আপনাকে মোটরটি ঘড়ির কাঁটার দিকে এবং ঘড়ির কাঁটার বিপরীত দিকে উভয় দিকে ঘোরাতে দেয়। এই গাইডটি অনুসরণ করে, আপনি শিখবেন কীভাবে উপাদানগুলি সংযোগ করতে হয় এবং পছন্দসই মোটর নিয়ন্ত্রণ অর্জনের জন্য Arduino প্রোগ্রাম করতে হয়।
এই প্রকল্পে, আমরা একটি একক DC মোটর নিয়ন্ত্রণ করতে L293D মোটর ড্রাইভার ব্যবহার করব। Arduino কোডে দেওয়া নির্দেশের ভিত্তিতে মোটরটি দিক পরিবর্তন করতে সক্ষম হবে। সেটআপ এবং কোডটি আরও স্পষ্টভাবে বোঝার জন্য, সম্পর্কিত ভিডিওটি (ভিডিওতে 00:00 সময়ে) দেখা উপকারী।
হার্ডওয়্যার ব্যাখ্যা
L293D হল একটি ইন্টিগ্রেটেড সার্কিট যা মোটর চালানোর জন্য ডিজাইন করা হয়েছে। এটি একই সাথে দুটি DC মোটর বা একটি স্টেপার মোটর নিয়ন্ত্রণ করতে পারে। চিপটি একটি H-ব্রিজ কনফিগারেশন ব্যবহার করে যা মোটরে প্রয়োগ করা ভোল্টেজের পোলারিটি পরিবর্তন করে দিক নিয়ন্ত্রণের অনুমতি দেয়। এই নমনীয়তা এটিকে রোবোটিক্স এবং অটোমেশন প্রকল্পগুলির জন্য একটি চমৎকার পছন্দ করে তোলে।
L293D ছাড়াও, আমরা মোটর ড্রাইভারে নিয়ন্ত্রণ সংকেত পাঠাতে একটি Arduino বোর্ড ব্যবহার করব। Arduino মোটর সক্ষম করতে এবং এর ঘূর্ণনের দিক নির্ধারণ করতে প্রয়োজনীয় লজিক স্তর তৈরি করবে। সেটআপের জন্য একটি DC মোটর এবং মোটরের ভোল্টেজের প্রয়োজনীয়তার সাথে সামঞ্জস্যপূর্ণ একটি পাওয়ার সাপ্লাইও প্রয়োজন হবে।
ডেটাশিট বিবরণ
| প্রস্তুতকারক | টেক্সাস ইন্সট্রুমেন্টস |
|---|---|
| পার্ট নম্বর | L293D |
| লজিক/আইও ভোল্টেজ | 5 V |
| সাপ্লাই ভোল্টেজ | 4.5 - 36 V |
| আউটপুট কারেন্ট (প্রতি চ্যানেল) | 600 mA |
| পিক কারেন্ট (প্রতি চ্যানেল) | 1.2 A |
| PWM ফ্রিকোয়েন্সি নির্দেশিকা | 20 kHz |
| ইনপুট লজিক থ্রেশহোল্ড | 2.5 V (সাধারণ) |
| ভোল্টেজ ড্রপ / RDS(on) / স্যাচুরেশন | 1.5 V (সর্বোচ্চ) |
| থার্মাল সীমা | 150 °C (সর্বোচ্চ) |
| প্যাকেজ | 16-DIP |
| নোট / ভেরিয়েন্ট | দুটি মোটর নিয়ন্ত্রণ করতে পারে |
- সাপ্লাই ভোল্টেজ 36 V-এর বেশি না হয় তা নিশ্চিত করুন।
- সর্বোচ্চ কারেন্টের কাছাকাছি কাজ করার সময় উপযুক্ত হিট-সিংক ব্যবহার করুন।
- সর্বদা Arduino এবং মোটর ড্রাইভারের গ্রাউন্ড সংযোগ করুন।
- বিপরীত পোলারিটি সংযোগ এড়াতে ওয়্যারিং পরীক্ষা করুন।
- ভবিষ্যতের প্রকল্পগুলিতে প্রয়োজন হলে গতি নিয়ন্ত্রণ করতে PWM সংকেত ব্যবহার করুন।
ওয়্যারিং নির্দেশাবলী


L293D মোটর কন্ট্রোলারটি Arduino-এর সাথে সংযোগ করতে, পাওয়ার এবং গ্রাউন্ড সংযোগ করে শুরু করুন। L293D-এর পিন 4 এবং পিন 5 গ্রাউন্ডের সাথে সংযোগ করুন। তারপর, পিন 1 (Vcc1) Arduino-এর 5 V আউটপুটের সাথে সংযোগ করুন। Vcc2 (পিন 8) এর জন্য, এটি একটি বাহ্যিক পাওয়ার সাপ্লাইয়ের সাথে সংযোগ করুন, নিশ্চিত করুন যে এটি মোটরের ভোল্টেজ স্পেসিফিকেশনের সাথে মেলে।
এরপর, মোটরের পাওয়ার নিয়ন্ত্রণ করতে এনাবল পিন (পিন 1) Arduino-এর পিন 8-এর সাথে সংযোগ করুন। মোটর নিয়ন্ত্রণ ইনপুটগুলির জন্য, L293D-এর পিন 2 (1A) Arduino-এর পিন 2-এর সাথে এবং পিন 7 (2A) Arduino-এর পিন 7-এর সাথে সংযোগ করুন। অবশেষে, মোটর টার্মিনালগুলি L293D-এর পিন 3 (1Y) এবং পিন 6 (2Y)-এর সাথে সংযোগ করুন।
কোড উদাহরণ ও ব্যাখ্যা
নিম্নলিখিত কোডটি পিনগুলি প্রাথমিকভাবে সেট করে এবং মোটর নিয়ন্ত্রণ সেট আপ করে। ব্যবহৃত শনাক্তকারীগুলির মধ্যে প্রথম মোটর নিয়ন্ত্রণ পিনের জন্য P1A এবং এনাবল পিনের জন্য EN12 অন্তর্ভুক্ত। সেটআপ ফাংশনটি পিনগুলিকে আউটপুট হিসাবে কনফিগার করে।
void setup() {
Serial.begin(9600); // তথ্য প্রদর্শনের জন্য সিরিয়াল মনিটর সেট আপ করুন
pinMode(P1A, OUTPUT); // P1A-এর জন্য পিনটিকে আউটপুট হিসাবে সংজ্ঞায়িত করুন
pinMode(P2A, OUTPUT); // P2A-এর জন্য পিনটিকে আউটপুট হিসাবে সংজ্ঞায়িত করুন
pinMode(EN12, OUTPUT); // 1,2EN এনাবলের জন্য পিনটিকে আউটপুট হিসাবে সংজ্ঞায়িত করুন
}
লুপে, মোটরটিকে মাঝে বিরতি দিয়ে উভয় দিকে ঘোরানোর নির্দেশ দেওয়া হয়। Serial.println ব্যবহার করে মোটরের অবস্থা সিরিয়াল মনিটরে মুদ্রিত হয়।
void loop() {
Serial.println("ঘড়ির কাঁটার দিকে ঘোরানো হচ্ছে");
digitalWrite(EN12, HIGH); // 1A এবং 2A সক্ষম করুন
digitalWrite(P1A, HIGH); // P1A-তে HIGH সংকেত পাঠান
digitalWrite(P2A, LOW); // P2A-তে LOW সংকেত পাঠান
delay(3000); // মোটর 3 সেকেন্ড চলে
digitalWrite(EN12, LOW); // 1A এবং 2A নিষ্ক্রিয় করুন
}
এই অংশটি দেখায় যে P1A এবং P2A-তে পাঠানো লজিক স্তর পরিবর্তন করে কীভাবে মোটরের ঘূর্ণনের দিক নিয়ন্ত্রণ করা যায়। মোটরটি থামার এবং দিক পরিবর্তন করার আগে 3 সেকেন্ড চলে।
এখানে L293D হাফ-ব্রিজ ড্রাইভার কীভাবে ব্যবহৃত হয়:
প্রদর্শন / কী আশা করবেন
সেটআপ সম্পন্ন হলে এবং কোড আপলোড করা হলে, আপনার মোটরটি ৩ সেকেন্ডের জন্য এক দিকে ঘুরতে, ২ সেকেন্ডের জন্য থামতে এবং তারপর আরও ৩ সেকেন্ডের জন্য বিপরীত দিকে ঘুরতে দেখতে হবে। মোটরের অবস্থা সিরিয়াল মনিটরে প্রিন্ট হবে, যা ক্রিয়াগুলি নিশ্চিত করবে (ভিডিওতে ১২:০০ মিনিটে)।
সাধারণ ভুলগুলির মধ্যে রয়েছে মোটরে সঠিক ভোল্টেজ সরবরাহ নিশ্চিত করা এবং মোটরের সংযোগগুলি সঠিক কিনা যাচাই করা। মোটর সাড়া না দিলে, ওয়্যারিং এবং পাওয়ার সাপ্লাই সংযোগগুলি আবার পরীক্ষা করুন।
ভিডিও টাইমস্ট্যাম্প
- ০০:০০ - ভূমিকা
- ০২:৩০ - ওয়্যারিং ব্যাখ্যা
- ০৫:০০ - কোড ওয়াকথ্রু
- ১০:০০ - মোটর নিয়ন্ত্রণের প্রদর্শন
++
/*
* This is the Arduino code L293 DC motor driver (Advanced).
Using this code you can control a motor to rotate in both directions: clockwise (CW)
and counter-clockwise (CCW).
* *
// Written by Ahmad S. for Robojax.com on
// February 25, 2018 at 18:30 in Ajax, Ontario, Canada
* Permission granted to share this code given that this
* note is kept with the code.
* Disclaimer: this code is "AS IS" and for educational purposes only.
*
* watch L293 video for details https://youtu.be/jAmDliHcTJ0
* Code is available at http://robojax.com/learn/arduino
*
*/
// DC motor 1 control
#define P1A 2 // define pin 2 as for P1A
#define P2A 7 // define pin 7 as for P2A
#define EN12 8 // define pin 8 as for 1,2EN enable
// DC motor 2 control
#define P3A 10 // define pin 10 as for P3A
#define P4A 13 // define pin 13 as for P4A
#define EN34 9 // define pin 9 as for EN3 and EN4 enable
/*
* Permission granted to share this code given that this
* note is kept with the code.
* Disclaimer: this code is "AS IS" and for educational purposes only.
*
*/
void setup() {
// L293 Motor Control Code by Robojax.com 2018025
Serial.begin(9600);// setup Serial Monitor to display information
pinMode(P1A, OUTPUT);// define pin as OUTPUT for P1A
pinMode(P2A, OUTPUT);// define pin as OUTPUT for P2A
pinMode(EN12, OUTPUT);// define pin as OUTPUT for 1,2EN
pinMode(P3A, OUTPUT);// define pin as OUTPUT for P3A
pinMode(P4A, OUTPUT);// define pin as OUTPUT for P4A
pinMode(EN34, OUTPUT);// define pin as OUTPUT for 3,4EN
// L293 Motor Control Code by Robojax.com 2018025
}
void loop() {
// L293 Motor Control Code by Robojax.com 2018025
Serial.println("Rotating CW");
digitalWrite(EN12 ,HIGH);// Enable 1A and 2A
digitalWrite(P1A,HIGH);// send + or HIGH signal to P1A
digitalWrite(P2A,LOW);// send - or LOW signal to P2A
delay(3000);// motor runs for 3 seconds
digitalWrite(EN12 ,LOW);// Disable 1A and 2A
delay(2000);// motor stop for 3 seconds
Serial.println("Motor Stopped");
// L293 Motor Control Code by Robojax.com 2018025
// now changing the direction of rotation of motor
Serial.println("Rotating CCW");
digitalWrite(EN12 ,HIGH);// Enable 1A and 2A
digitalWrite(P1A,LOW);// send + or HIGH signal to P1A
digitalWrite(P2A,HIGH);// send - or LOW signal to P2A
delay(3000);// motor runs for 3 seconds
digitalWrite(EN12 ,LOW);// Disable 1A and 2A
delay(2000);// motor stop for 3 seconds
Serial.println("Motor Stopped");
Serial.println("=========== Loop done");
delay(500);
// L293 Motor Control Code by Robojax.com 2018025
}
/*
* This is the Arduino code L293 DC motor driver (Advanced).
Using this code you can control a motor to rotate in both directions: clockwise (CW)
and counter-clockwise (CCW).
* *
// Written by Ahmad S. for Robojax.com on
// February 25, 2018 at 18:30 in Ajax, Ontario, Canada
* Permission granted to share this code given that this
* note is kept with the code.
* Disclaimer: this code is "AS IS" and for educational purposes only.
*
* Watch L293 video for details: https://youtu.be/jAmDliHcTJ0
* Code is available at: http://robojax.com/learn/arduino
*
*/
// DC motor 1 control
#define P1A 2 // define pin 2 as for P1A
#define P2A 7 // define pin 7 as for P2A
#define EN12 8 // define pin 8 as for 1,2EN enable
// DC motor 2 control
#define P3A 10 // define pin 10 as for P3A
#define P4A 13 // define pin 13 as for P4A
#define EN34 9 // define pin 9 as for EN3 and EN4 enable
/*
* Permission granted to share this code given that this
* note is kept with the code.
* Disclaimer: this code is "AS IS" and for educational purposes only.
*
*/
void setup() {
// L293 Motor Contro Code by Robojax.com 2018025
Serial.begin(9600);// setup Serial Monitor to display information
pinMode(P1A, OUTPUT);// define pin as OUTPUT for P1A
pinMode(P2A, OUTPUT);// define pin as OUTPUT for P2A
pinMode(EN12, OUTPUT);// define pin as OUTPUT for 1,2EN
pinMode(P3A, OUTPUT);// define pin as OUTPUT for P3A
pinMode(P4A, OUTPUT);// define pin as OUTPUT for P4A
pinMode(EN34, OUTPUT);// define pin as OUTPUT for 3,4EN
// L293 Motor Contro Code by Robojax.com 2018025
}
void loop() {
if(value == 45){
rotateMA("CW",HIGH); // start motor in CW
}
delay(3000);
rotateMA("CW",LOW); // stop motor
delay(2000);
rotateMA("CCW",HIGH); // start motor in CCW
delay(3000);
rotateMA("CW",LOW); /// stop motor
delay(2000);
// L293 Motor Contro Code by Robojax.com 2018025
}// loop ends
/**
* function: rotateMA(String di,int action)
* Sends power to motor A
* di is a string and can be "CW" or "CCW"
* to use:
* rotateMA("CW",HIGH);// to rotate motor CW
* rotateMA("CCW",HIGH);// to rotate motor CCW
* to stop the motor:
* rotateMA("CW",LOW);// to stop motor
*/
void rotateMA(String di,int endis)
{
// L293 Motor Contro Code by Robojax.com 2018025
if(di =="CW"){
Serial.println(" Rotating CW");
digitalWrite(EN12 ,endis);// Enable 1A and 2A
digitalWrite(P1A,HIGH);// send + or HIGH signal to P1A
digitalWrite(P2A,LOW);// send - or LOW signal to P2A
}else{
// L293 Motor Contro Code by Robojax.com 2018025
// now changing the direction of rotation of motor
Serial.println(" Rotating CCW");
digitalWrite(EN12 ,endis);// Enable 1A and 2A
digitalWrite(P1A,LOW);// send + or HIGH signal to P1A
digitalWrite(P2A,HIGH);// send - or LOW signal to P2A
}
// L293 Motor Contro Code by Robojax.com 2018025
}//rotateMA ends here
আপনাকে যা প্রয়োজন হতে পারে
-
অ্যামাজনPurchase L293D motor driver ICamzn.to
-
অলি এক্সপ্রেসPurchase L293D motor driver IC from AliExpresss.click.aliexpress.com
সম্পদ ও রেফারেন্সসমূহ
এখনো কোনো সম্পদ নেই।
ফাইলসমূহ📁
ডেটাশিট (পিডিএফ)
-
robojax_L293D_motor_shield_manual.pdf
robojax_L293D_motor_shield_manual.pdf0.16 MB -
L293d datasheet
L293d_datasheet.pdf0.34 MB