কন্ট্রোল XY-1250 10–50A/60A 3000W PWM মোটর স্পিড কন্ট্রোলার আরডুইনো ব্যবহার করে
এই টিউটোরিয়ালে, আমরা আপনাকে দেখাবো কীভাবে একটি সাধারণ XY-1250 PWM মোটর স্পিড কন্ট্রোলার (যা 10–50A/60A এবং সর্বোচ্চ 3000W পর্যন্ত রেটেড) নিয়ে সেটিকে এমনভাবে পরিবর্তন করা যায় যাতে আপনি এর বিল্ট-ইন নবের বদলে একটি Arduino দিয়ে এর গতি নিয়ন্ত্রণ করতে পারেন। এটি hobbyistsদের কাছে একটি জনপ্রিয় অনুরোধ যারা তাদের নিজস্ব প্রজেক্টে একটি উচ্চ-ক্ষমতার মোটর কন্ট্রোলার সংযুক্ত করতে চান—যেমন একটি কাস্টম ইলেকট্রিক লংবোর্ড তৈরি করা, একটি CNC স্পিন্ডল স্পিড কন্ট্রোল, একটি রোবোটিক ড্রাইভ সিস্টেম, অথবা একটি স্বয়ংক্রিয় ফ্যান সিস্টেম। ম্যানুয়াল পটেনশিওমিটারকে একটি ডিজিটাল সিগন্যাল দিয়ে প্রতিস্থাপন করার মাধ্যমে, আপনি আপনার মোটরের গতির উপর সুনির্দিষ্ট, প্রোগ্রামেবল নিয়ন্ত্রণ পাবেন, যা অটোমেশন এবং রিমোট অপারেশনের জন্য সম্ভাবনার একটি জগৎ খুলে দেয়।

এই সেটআপ দিয়ে আপনি কিছু ব্যবহারিক প্রজেক্ট তৈরি করতে পারেন:
- প্রোগ্রামেবল স্পিড র্যাম্পিং সহ একটি কাস্টম ইলেকট্রিক লংবোর্ড বা গো-কার্ট তৈরি করা।
- একটি CNC মেশিন স্পিন্ডল স্পিড কন্ট্রোলার তৈরি করা যা G-code দিয়ে সামঞ্জস্য করা যায়।
- একটি স্বয়ংক্রিয় গ্রিনহাউস ফ্যান তৈরি করা যা তাপমাত্রা সেন্সরের উপর ভিত্তি করে গতি সামঞ্জস্য করে।
- উচ্চ-টর্ক মোটর সহ একটি রিমোট-নিয়ন্ত্রিত রোবট তৈরি করা।
- একটি ওয়ার্কশপ বা ছোট কারখানার জন্য একটি স্মার্ট কনভেয়র বেল্ট সিস্টেম তৈরি করা।
হার্ডওয়্যার উপাদানসমূহ
- XY-1250 PWM মোটর স্পিড কন্ট্রোলার মডিউল (10–50A/60A, 3000W)
- Arduino Uno (বা যেকোনো সামঞ্জস্যপূর্ণ বোর্ড)
- DC মোটর (পরীক্ষার জন্য)
- DC পাওয়ার সাপ্লাই (12V–36V সুপারিশকৃত)
- পটেনশিওমিটার (10kΩ) — ম্যানুয়াল কন্ট্রোল বিকল্পের জন্য
- জাম্পার তার
- সোল্ডারিং আয়রন এবং তার (PCB পরিবর্তনের জন্য)
XY-1250 কীভাবে কাজ করে
XY-1250 একটি 555 টাইমার IC (বোর্ডে "U3" হিসেবে চিহ্নিত) ব্যবহার করে একটি PWM সিগন্যাল তৈরি করে। এই সিগন্যালটি চারটি MOSFET-এর গেট নিয়ন্ত্রণ করে যা উচ্চ-ক্ষমতার মোটর সার্কিট সুইচ করে। ডিউটি সাইকেল—যা মোটরের গতি নির্ধারণ করে—সাধারণত 555 টাইমারের পিন 3-এর সাথে সংযুক্ত অনবোর্ড পটেনশিওমিটার দ্বারা সেট করা হয়। এটি একটি Arduino দিয়ে নিয়ন্ত্রণ করতে, আমাদের 555-এর আউটপুটকে MOSFET গেট থেকে বিচ্ছিন্ন করতে হবে এবং তার বদলে আমাদের নিজস্ব PWM সিগন্যাল সরবরাহ করতে হবে।
এই পরিবর্তনটি প্রয়োজনীয় কারণ Arduino সরাসরি উচ্চ-কারেন্ট MOSFET গেট চালাতে পারে না। 555 টাইমার এবং MOSFET-এর মধ্যে PCB ট্রেস কেটে, আমরা নিরাপদে Arduino থেকে আমাদের নিজস্ব কম-ভোল্টেজ PWM সিগন্যাল ইনজেক্ট করতে পারি, যা আমাদের মোটরের গতির উপর সম্পূর্ণ ডিজিটাল নিয়ন্ত্রণ দেয়। (ভিডিওতে 01:42-এ)
XY-1250 বোর্ড পরিবর্তন করা
Arduino সংযোগ করার আগে, আমাদের 555 টাইমারের আউটপুটকে MOSFET গেট থেকে বিচ্ছিন্ন করতে PCB-তে দুটি কাট করতে হবে। এখানে কীভাবে করবেন:
- বোর্ডে 555 টাইমার চিপ (U3) খুঁজে বের করুন। এটিতে একটি ছোট বিন্দু বা লাইন রয়েছে যা পিন 1 নির্দেশ করে।
- পিন 3 (আউটপুট) থেকে আসা PCB ট্রেসগুলি চিহ্নিত করুন যা MOSFET গেটের সাথে সংযুক্ত ডায়োডগুলিতে যায়।
- একটি ধারালো ছুরি বা কাটিং ডিস্ক সহ একটি রোটারি টুল ব্যবহার করে, এই ট্রেসগুলি দুটি জায়গায় সাবধানে কাটুন—প্রতিটি আউটপুট পাথের জন্য একটি।
- কাটার পরে, কাটটি সম্পূর্ণ হয়েছে কিনা যাচাই করতে একটি কন্টিনিউটি টেস্টার ব্যবহার করুন। 555-এর পিন 3 এবং MOSFET গেট এলাকার মধ্যে কোনো বিপ শোনা যাওয়া উচিত নয়।
এই পরিবর্তনটি গুরুত্বপূর্ণ—এটি 555 টাইমারের সিগন্যালকে আমাদের Arduino-এর PWM সিগন্যালে হস্তক্ষেপ করা থেকে বিরত রাখে। (ভিডিওতে 07:02-এ)
ওয়্যারিং গাইড
এই প্রজেক্টের ওয়্যারিংয়ে Arduino-কে পরিবর্তিত XY-1250 বোর্ডের সাথে সংযুক্ত করা জড়িত। এখানে সংযোগ ডায়াগ্রাম দেওয়া হলো:
- Arduino-এর জন্য পাওয়ার: XY-1250-তে একটি ভোল্টেজ রেগুলেটর রয়েছে যা প্রায় 8.5V আউটপুট দেয়। এই আউটপুটটি (দুটি ক্যাপাসিটরের মধ্যে লাল তার) Arduino-এর VIN পিনের সাথে সংযুক্ত করুন। এটি মোটরের পাওয়ার সাপ্লাই থেকে সরাসরি Arduino-কে শক্তি দেয়। গুরুত্বপূর্ণ: এটি 5V পিনের সাথে সংযুক্ত করবেন না—এতে Arduino পুড়ে যাবে।
- গ্রাউন্ড সংযোগ: XY-1250 থেকে গ্রাউন্ডটি Arduino-এর যেকোনো GND পিনের সাথে সংযুক্ত করুন।
- PWM সিগন্যাল: Arduino পিন 5 প্রথম কাটা ট্রেসের সাথে (যেখানে 555-এর আউটপুট ছিল) এবং Arduino পিন 6 দ্বিতীয় কাটা ট্রেসের সাথে সংযুক্ত করুন।
- পটেনশিওমিটার (ঐচ্ছিক): যদি আপনি ম্যানুয়াল কন্ট্রোল চান, তাহলে Arduino-এর A0 পিনের সাথে একটি 10kΩ পটেনশিওমিটার সংযুক্ত করুন, বাকি দুটি পিন 5V এবং GND-তে।
- মোটর: আপনার DC মোটরটি XY-1250 মডিউলের আউটপুট টার্মিনালের সাথে সংযুক্ত করুন।
একবার ওয়্যারিং সম্পন্ন হলে, Arduino মোটরের মতো একই সাপ্লাই থেকে শক্তি পাবে এবং এটি উভয় MOSFET গেট সার্কিটে সিঙ্ক্রোনাইজড PWM সিগন্যাল পাঠাবে। (ভিডিওতে 10:25-এ)
কোড ব্যাখ্যা
Arduino কোডটি সরল এবং PWM সিগন্যাল তৈরি করার উপর কেন্দ্রীভূত। এখানে মূল ব্যবহারকারী-কনফিগারযোগ্য অংশগুলি দেওয়া হলো:
#define pwmPin1 5
#define pwmPin2 6
#define controlPin A0
pwmPin1এবংpwmPin2হলো আরডুইনো পিন যা দুটি MOSFET গেট সার্কিটে PWM সংকেত পাঠায়। এগুলো পিন 5 এবং 6 হিসাবে সংজ্ঞায়িত, যা আরডুইনো উনোতে PWM-সক্ষম পিন।controlPinহলো অ্যানালগ পিন যা পটেনশিওমিটারের সাথে সংযুক্ত (A0)। যদি আপনি পটেনশিওমিটার ব্যবহার করতে না চান, আপনি এটি উপেক্ষা করতে পারেন।
loop() ফাংশনে, কোডটি পটেনশিওমিটার মান (0–1023) পড়ে, এটিকে PWM মানে (0–255) ম্যাপ করে, এবং উভয় PWM পিনে পাঠায়। delay(500) রিফ্রেশ রেট প্রতি সেকেন্ডে দুইবার সেট করে—মসৃণ প্রতিক্রিয়ার জন্য আপনি এটি delay(100) এ কমাতে পারেন।
কোডটিতে একটি কাস্টম toPWM() ফাংশনও অন্তর্ভুক্ত রয়েছে যা শতাংশ মান (0–100) কে PWM মানে (0–255) রূপান্তর করে। এটি দরকারী যদি আপনি পটেনশিওমিটার ছাড়া একটি নির্দিষ্ট গতি সেট করতে চান। উদাহরণস্বরূপ, toPWM(50) কল করলে 127 ফিরে আসবে, যা 50% ডিউটি সাইকেল নির্দেশ করে। আপনি আপনার নিজের কোডে এই ফাংশনটি ব্যবহার করে সরাসরি মোটরের গতি সেট করতে পারেন।
পরীক্ষা এবং প্রদর্শন
কোড আপলোড করার এবং সবকিছু সংযুক্ত করার পরে, আপনি সেটআপটি পরীক্ষা করতে পারেন। যদি আপনি একটি পটেনশিওমিটার ব্যবহার করেন, এটি ঘোরালে মোটরের গতি 0 থেকে 100% পর্যন্ত মসৃণভাবে সামঞ্জস্য হবে। সিরিয়াল মনিটর কাঁচা অ্যানালগ মান (0–1023) এবং ম্যাপ করা PWM মান (0–255) উভয়ই প্রদর্শন করবে।
যদি আপনি প্রোগ্রাম্যাটিকভাবে গতি নিয়ন্ত্রণ করতে চান, আপনি পটেনশিওমিটার পড়াকে একটি নির্দিষ্ট মান দিয়ে প্রতিস্থাপন করতে পারেন। উদাহরণস্বরূপ, int pwm = toPWM(20); সেট করলে মোটরটি 20% গতিতে চলবে। এটি এমন অ্যাপ্লিকেশনের জন্য উপযুক্ত যেখানে আপনি ম্যানুয়াল সমন্বয় ছাড়াই একটি নির্দিষ্ট গতিতে মোটর চালাতে চান। (ভিডিওতে 16:42 এ)
লাইভ প্রকল্প প্রদর্শন
ভিডিওতে, আপনি পরিবর্তিত XY-1250 কন্ট্রোলার একটি ছোট DC মোটর চালাচ্ছে দেখতে পারেন। প্রদর্শনটি দেখায়:
- আরডুইনোর সাথে সংযুক্ত পটেনশিওমিটার দিয়ে মোটরের গতি নিয়ন্ত্রণ করা।
toPWM()ফাংশন ব্যবহার করে মোটরটিকে একটি নির্দিষ্ট 20% গতিতে সেট করা।- নিয়ন্ত্রণের সম্পূর্ণ পরিসর দেখাতে গতি 50% এবং তারপর 80% এ বৃদ্ধি করা।
অসিলোস্কোপ রিডিং নিশ্চিত করে যে উভয় PWM সংকেত পুরোপুরি সিঙ্ক্রোনাইজড, দুটি চ্যানেলের মধ্যে কোনো ফেজ পার্থক্য নেই। এটি নিশ্চিত করে যে MOSFET গুলি সমানভাবে চালিত হয়, অসম পরিধান বা অতিরিক্ত গরম হওয়া প্রতিরোধ করে। (ভিডিওতে 14:56 এ)
অধ্যায়
- [00:00] ভূমিকা এবং প্রকল্পের ওভারভিউ
- [01:42] XY-1250 PWM কন্ট্রোলার কীভাবে কাজ করে
- [04:28] অসিলোস্কোপ দিয়ে মূল সংকেত পরীক্ষা করা
- [07:02] 555 টাইমার আলাদা করতে PCB ট্রেস কাটা
- [10:25] পরিবর্তিত মডিউলে আরডুইনো সংযোগ করা
- [12:18] আরডুইনো কোড ব্যাখ্যা করা
- [14:56] পটেনশিওমিটার দিয়ে মোটর নিয়ন্ত্রণ প্রদর্শন
- [16:42] নির্দিষ্ট মান দিয়ে প্রোগ্রাম্যাটিকভাবে গতি নিয়ন্ত্রণ
- [20:32] চূড়ান্ত সারাংশ এবং সমাপ্তি মন্তব্য
ছবি
/*
* Modify XY-1250 12-50V 60A PWM to work with Arduino.
get this code and other resouces http://robojax.com/RTJ162
If you want to control it without a potentiometer, see http://robojax.com/RTJ162
*
* Written by Ahmad Shamshiri
* on Saturday, June 15, 2019 at 16:14
* in Ajax, Ontario, Canada
* www.robojax.com
* Watch the video instruction: https://youtu.be/k13iTmvPtUU
*/
#define pwmPin1 5
#define pwmPin2 6
#define controlPin A0
void setup() {
pinMode(pwmPin1,OUTPUT);
pinMode(pwmPin2,OUTPUT);
Serial.begin(9600);
}
void loop() {
int potValue = analogRead(controlPin);
Serial.print(potValue);
int pwm =map(potValue, 0,1023, 0, 255);
analogWrite(pwmPin1,pwm);
analogWrite(pwmPin2,pwm);
Serial.print(" ");
Serial.println(pwm);
delay(500);
}
/*
* @brief Converts a percentage value from 0 to 100% to 0-255.
* @param v An integer value representing a percentage from 0-100.
* @return A value from 0 to 255.
*/
int toPWM(int v){
return map(v, 0,100,0,255);
}
/*
* file: PWM_for_XY1260_module_no_pot
* Modify XY-1250 12-50V 60A PWM to work with Arduino
* This code allows you to control the motor without a potentiometer. See video for demonstration.
* resources page for this project https://robojax.com/RTJ162
Watch the video instruction on youTube: https://youtu.be/ZLZr2AZgmPI
*
* How to use:
* To control speed at 100%
motorControl(100);
delay(3000);//keep it running for 3 seconds
* To control speed at 400%
motorControl(40);
delay(3000);//keep it running for 3 seconds
* To stop motor
motorControl(0); //set zero
delay(3000);//keep it running for 3 seconds
* Written by Ahmad Shamshiri
* on Saturday, January 30, 2021, at 12:49
* in Ajax, Ontario, Canada
* www.Robojax.com
* Watch the video instruction: https://youtu.be/ZLZr2AZgmPI
*/
#define pwmPin1 3
#define pwmPin2 6
bool defaultMotorON = false;// or set to "true" to make the motor start
unsigned int defaultSpeed= 20;//20% set it in % 0=stop, 100=full speed
int toPWM(int);//prototype
void setup() {
pinMode(pwmPin1,OUTPUT);
pinMode(pwmPin2,OUTPUT);
Serial.begin(9600);
Serial.print("Control XY-1260 without pot");
if(defaultMotorON){
analogWrite(pwmPin1,toPWM(defaultSpeed));
analogWrite(pwmPin2,toPWM(defaultSpeed));
}else{
analogWrite(pwmPin1,0);
analogWrite(pwmPin2,0);
}
}
void loop() {
motorControl(100);//set speed to 100%
delay(3000);//keep motor running at 100% for 3 seconds
motorControl(0);//stops motor
delay(4000);//keep motor stopped for 4 seconds
motorControl(45);//set speed to 45%
delay(3000);//keep motor running at 45% for 3 seconds
motorControl(0);//stops motor
delay(4000);//keep motor stopped for 4 seconds
//from 0 to 100% with 50 millisecond delay (increasing speed)
for(int i=0; i<100; i++)
{
motorControl(i);//set speed with value of i from 0 to 100
delay(50);//give motor 50 milliseconds before going to the next value
}//for loop end
motorControl(0);//stops motor
delay(4000);//keep motor stopped for 4 seconds
//from 100% to 10 with 50 millisecond delay (decreasing speed)
for(int i=100; i>0; i--)
{
motorControl(i);//set speed with value of i from 0 to 100
delay(50);//give motor 50 milliseconds before going to the next value
}//for loop end
motorControl(0);//stops motor
delay(4000);//keep motor stopped for 4 seconds
}//loop end
/*
* @brief converts % value from 0 to 100% to 0-255
* @param v is integer value representing % from 0-100
* @return will return value from 0 to 255
*/
int toPWM(int v){
return map(v, 0,100,0,255);
}//
/*
* @brief controls the speed of motor with value from 0 to 100%
* @param speed is integer value representing % from 0-100
* @return none
* written January 30, 2021 by Ahmad Shamshiri
* www.robojax.com
*
*/
void motorControl(int speed)
{
int pwm= map(speed, 0,100,0,255);
analogWrite(pwmPin1,pwm);
analogWrite(pwmPin2,pwm);
}
আপনাকে যা প্রয়োজন হতে পারে
-
অ্যামাজন
-
অ্যামাজন60A 3000W PWM module on Amazonamzn.to
-
ইবে
-
ইবে60A 3000W PWM module on eBayebay.us
-
অলি এক্সপ্রেস60A 100A Motor Speed Controller on AliExpress-1s.click.aliexpress.com
-
অলি এক্সপ্রেস60A 100A Motor Speed Controller on AliExpress-2s.click.aliexpress.com
-
অলি এক্সপ্রেস60A 3000W PWM module on AliExpresss.click.aliexpress.com
-
ব্যাংগুড60A 100A Motor Speed Controller on Banggoodbanggood.com
সম্পদ ও রেফারেন্সসমূহ
-
বাহ্যিকDatasheet for NCE7190A MOSFET (8 Pieces) (PDF)datasheet.lcsc.com
-
বাহ্যিকSchottky Diode MBR20100CTG Datasheet (PDF)onsemi.com
-
বাহ্যিক
ফাইলসমূহ📁
কোনো ফাইল উপলব্ধ নেই।