কোড অনুসন্ধান

Arduino কোড L9110 ডুয়াল DC মোটর কন্ট্রোলার মডিউলের জন্য

Arduino কোড L9110 ডুয়াল DC মোটর কন্ট্রোলার মডিউলের জন্য

এই টিউটোরিয়ালে, আমরা শিখব কীভাবে L9110 ডুয়াল মোটর কন্ট্রোলার মডিউল এবং একটি Arduino ব্যবহার করে দুটি DC মোটর নিয়ন্ত্রণ করা যায়। এই প্রকল্পটি আপনাকে প্রতিটি মোটরের দিক এবং গতি পরিচালনা করতে সক্ষম করবে, যা রোবোটিক্স এবং অটোমেশনের মতো বহুমুখী অ্যাপ্লিকেশনের জন্য অনুমতি দেবে। এই গাইডের শেষে, আপনার কাছে উপাদানগুলি কীভাবে সংযোগ করতে হয় এবং আপনার মোটরগুলিকে মসৃণভাবে চালানোর জন্য প্রয়োজনীয় কোড লেখার একটি স্পষ্ট ধারণা থাকবে। যদি আপনার স্পষ্টীকরণের প্রয়োজন হয়, তবে ভিডিওটি (ভিডিওতে 00:00 এ) দেখতে ভুলবেন না।

হার্ডওয়্যার ব্যাখ্যা

L9110 ডুয়াল DC মোটর কন্ট্রোলার মডিউল আপনাকে একই সাথে দুটি মোটর নিয়ন্ত্রণ করতে দেয়। এতে দুটি H-ব্রিজ সার্কিট রয়েছে, যা আপনাকে মোটর ভোল্টেজের পোলারিটি বিপরীত করতে সক্ষম করে। এর অর্থ হল আপনি কন্ট্রোল পিন টগল করে সহজেই প্রতিটি মোটরের দিক পরিবর্তন করতে পারেন। মডিউলটিতে চারটি মূল পিন রয়েছে: প্রতিটি মোটরের জন্য দুটি, ঘূর্ণনের দিক নিয়ন্ত্রণ করতে। যখন আপনি একটি পিন উচ্চ এবং অন্যটি নিম্ন সেট করেন, মোটরটি এক দিকে ঘোরে; পিনের অবস্থা বিপরীত করলে এটি বিপরীত দিকে ঘুরবে। এই নমনীয়তা রোবোটিক্সের মতো অ্যাপ্লিকেশনের জন্য অপরিহার্য, যেখানে মোটর চলাচলের উপর সুনির্দিষ্ট নিয়ন্ত্রণ প্রয়োজন।

ডেটাশিট বিবরণ

নির্মাতাSTMicroelectronics
পার্ট নম্বরL9110
লজিক/IO ভোল্টেজ2.5–5.5 V
সাপ্লাই ভোল্টেজ2.5–12 V
আউটপুট কারেন্ট (প্রতি চ্যানেল)1 A
পিক কারেন্ট (প্রতি চ্যানেল)2 A
PWM ফ্রিকোয়েন্সি নির্দেশিকা10 kHz
ইনপুট লজিক থ্রেশহোল্ড0.8 V (নিম্ন), 2.0 V (উচ্চ)
ভোল্টেজ ড্রপ / RDS(on) / স্যাচুরেশন0.3 V at 1 A
থার্মাল সীমা150 °C
প্যাকেজDIP-16
নোট / ভেরিয়েন্টছোট রোবোটিক্স প্রকল্পে সাধারণত ব্যবহৃত হয়।

  • ক্রমাগত অপারেশনের জন্য সঠিক হিট-সিংকিং নিশ্চিত করুন।
  • সর্বোত্তম কর্মক্ষমতার জন্য PWM সংকেত 10 kHz এর নিচে রাখুন।
  • শব্দ কমানোর জন্য পাওয়ার সংযোগের কাছে ডিকপলিং ক্যাপাসিটর ব্যবহার করুন।
  • বিপরীত পোলারিটি সংযোগ থেকে সাবধান থাকুন; এগুলি মডিউলের ক্ষতি করতে পারে।
  • অতিরিক্ত গরম এড়াতে সর্বদা রেটেড কারেন্ট সীমা পরীক্ষা করুন।

ওয়্যারিং নির্দেশাবলী

Arduino এর সাথে L9110 ডুয়াল DC মোটর কন্ট্রোলার মডিউল সংযোগ করতে, পাওয়ার পিন সংযোগ করে শুরু করুন। L9110 এর VCC পিনটি Arduino এর 5V আউটপুটের সাথে সংযুক্ত করুন এবং GND পিনটি Arduino এর একটি গ্রাউন্ড পিনের সাথে সংযুক্ত করুন। এরপর, মোটর A এর জন্য, A1A পিনটি Arduino এর ডিজিটাল পিন 2 এর সাথে এবং A1B পিনটি ডিজিটাল পিন 3 এর সাথে সংযুক্ত করুন। তারপর, মোটর B এর জন্য, B1A পিনটি ডিজিটাল পিন 8 এর সাথে এবং B1B পিনটি ডিজিটাল পিন 9 এর সাথে সংযুক্ত করুন। নিশ্চিত করুন যে মোটরগুলি L9110 মডিউলের তাদের নিজ নিজ আউটপুটের সাথে সঠিকভাবে সংযুক্ত রয়েছে।
Arduino-wirign-for-L9110-motor-driver

কোড উদাহরণ ও ওয়াকথ্রু

সেটআপ ফাংশনে, আমাদের কন্ট্রোল পিনগুলিকে আউটপুট হিসাবে সংজ্ঞায়িত করতে হবে। Arduino এর জন্য মোটর দিক কার্যকরভাবে নিয়ন্ত্রণ করা অপরিহার্য:
void setup() {
  pinMode(B1A,OUTPUT);// পিনকে আউটপুট হিসাবে সংজ্ঞায়িত করুন
  pinMode(B1B,OUTPUT);
  
  pinMode(A1A,OUTPUT);
  pinMode(A1B,OUTPUT);    
  delay(3000);
}
এই কোড স্নিপেটটি মোটর কন্ট্রোল পিন সেট আপ করে, নিশ্চিত করে যে Arduino L9110 মডিউলে সংকেত পাঠাতে পারে। প্রোগ্রামের প্রধান লুপটি `motorA` এবং `motorB` ফাংশনগুলিকে বিভিন্ন প্যারামিটার দিয়ে কল করে মোটর নিয়ন্ত্রণ করে দিক পরিবর্তন করতে:
void loop() {
  motorA('R');// মোটর A কে ডানে ঘুরান
  delay(2000);
  motorA('L');// মোটর A কে বামে ঘুরান
  delay(2000);   
  motorA('O');// মোটর A বন্ধ করুন
  delay(2000); 
  ...
}
এই অংশে, মোটরগুলিকে ডানে এবং বামে ঘোরানো হয়, দিক পরিবর্তন পর্যবেক্ষণের জন্য মাঝে বিলম্ব সহ। `motorA` ফাংশনটি ইনপুট দিকের উপর ভিত্তি করে মোটর A নিয়ন্ত্রণ করতে সংজ্ঞায়িত করা হয়েছে:
void motorA(char d) {
  if(d =='R'){
    digitalWrite(A1A,LOW);
    digitalWrite(A1B,HIGH); 
  } else if (d =='L'){
    digitalWrite(A1A,HIGH);
    digitalWrite(A1B,LOW);    
  } else {
    digitalWrite(A1A,LOW);
    digitalWrite(A1B,LOW);    
  }
}
এই ফাংশনটি প্রদত্ত দিক পরীক্ষা করে এবং সেই অনুযায়ী কন্ট্রোল পিন সেট করে মোটরটিকে পছন্দসই দিকে ঘোরাতে বা বন্ধ করতে।

প্রদর্শন / কী আশা করবেন

যখন আপনি কোডটি চালান, আপনার মোটরগুলিকে বাম এবং ডান ঘূর্ণনের মধ্যে বিকল্প হতে দেখা উচিত। বিলম্বগুলি আপনাকে দিক পরিবর্তন স্পষ্টভাবে পর্যবেক্ষণ করতে দেয়। বিপরীত সংযোগের মতো সাধারণ ভুল থেকে সাবধান থাকুন, যা অপ্রত্যাশিত আচরণ বা উপাদানগুলির ক্ষতি করতে পারে। অতিরিক্তভাবে, নিশ্চিত করুন যে আপনার পাওয়ার সাপ্লাই আপনার ব্যবহৃত মোটরগুলির জন্য পর্যাপ্ত (ভিডিওতে 00:00 এ)।

ছবি

L9110_motor_driver_module-1
L9110_motor_driver_module-1
L9110_motor_driver_module-12
L9110_motor_driver_module-12
L9110_motor_driver_module-3
L9110_motor_driver_module-3
Arduino-wirign-for-L9110-motor-driver
Arduino-wirign-for-L9110-motor-driver
107-Arduino code for an L9110 dual DC motor controller module
ভাষা: C++
/*
 * Display number on a seven-segment display with Arduino
 * Written by Ahmad Shamshiri for Robojax.com
Date modified: Jun 11, 2018 at 17:20 in Ajax, Ontario, Canada
Watch video instructions for this code: https://youtu.be/-g6Q9lSHDzg

Code is provided for free AS IS without warranty. 
You can share this code as long as you keep the above note intact.
 */

const int A1A = 2;//define pin 2 for A1A
const int A1B = 3;//define pin 3 for A1B

const int B1A = 8;//define pin 8 for B1A
const int B1B = 9;//define pin 9 for B1B




void setup() {
  pinMode(B1A,OUTPUT);// define pin as output
  pinMode(B1B,OUTPUT);
  
  pinMode(A1A,OUTPUT);
  pinMode(A1B,OUTPUT);    
  delay(3000);
}

void loop() {

  motorA('R');// Turn motor A to RIGHT
  delay(2000);
   motorA('L');// Turn motor A to LEFT
  delay(2000);   
  motorA('O');// Turn motor A OFF
  delay(2000); 
    
  motorB('R');// Turn motor B to RIGHT
  delay(2000);
   motorB('L');// Turn motor B to LEFT
  delay(2000); 
  motorB('O');// Turn motor B OFF
  delay(2000); 
   
  motorA('R');// Turn motor A to RIGHT
  motorB('R'); // Turn motor A to RIGHT 
  delay(2000);
  motorA('L');// Turn motor A to LEFT
  motorB('L');// Turn motor B to LEFT     
  delay(3000);
  motorA('O');// Turn motor A OFF
  motorB('O');// Turn motor B OFF
  delay(5000);
   
}

/*
 * @motorA
 * Activation rotation of motor A
 * d is the direction
 * R = Right
 * L = Left
 */
void motorA(char d)
{
  if(d =='R'){
    digitalWrite(A1A,LOW);
    digitalWrite(A1B,HIGH); 
  }else if (d =='L'){
    digitalWrite(A1A,HIGH);
    digitalWrite(A1B,LOW);    
  }else{
    //Robojax.com L9110 Motor Tutorial
    // Turn motor OFF
    digitalWrite(A1A,LOW);
    digitalWrite(A1B,LOW);    
  }
}// motorA end


/*
 * @motorB
 * Activation rotation of motor B
 * d is the direction
 * R = Right
 * L = Left
 */
void motorB(char d)
{

    if(d =='R'){
      digitalWrite(B1A,LOW);
      digitalWrite(B1B,HIGH); 
    }else if(d =='L'){
      digitalWrite(B1A,HIGH);
      digitalWrite(B1B,LOW);    
    }else{
    //Robojax.com L9110 Motor Tutorial
    // Turn motor OFF      
      digitalWrite(B1A,LOW);
      digitalWrite(B1B,LOW);     
    }

}// motorB end

আপনাকে যা প্রয়োজন হতে পারে

সম্পদ ও রেফারেন্সসমূহ

এখনো কোনো সম্পদ নেই।

ফাইলসমূহ📁

ডেটাশিট (পিডিএফ)

ফ্রিটজিং ফাইল