Search Code

کنٹرول XY-1250 10–50A/60A 3000W PWM موٹر اسپیڈ کنٹرولر اردوینو کا استعمال کرتے ہوئے

کنٹرول XY-1250 10–50A/60A 3000W PWM موٹر اسپیڈ کنٹرولر اردوینو کا استعمال کرتے ہوئے

اس ٹیوٹوریل میں، ہم آپ کو دکھائیں گے کہ ایک عام XY-1250 PWM موٹر اسپیڈ کنٹرولر (جو 10–50A/60A اور 3000W تک ریٹیڈ ہے) کو کیسے تبدیل کیا جائے تاکہ آپ اس کی رفتار کو اس کے بلٹ ان نوب کی بجائے Arduino سے کنٹرول کر سکیں۔ یہ شوق رکھنے والوں کی ایک مقبول درخواست ہے جو اپنے پروجیکٹس میں ہائی پاور موٹر کنٹرولر شامل کرنا چاہتے ہیں—جیسے کہ کسٹم الیکٹرک لانگ بورڈ، CNC سپنڈل اسپیڈ کنٹرول، روبوٹک ڈرائیو سسٹم، یا خودکار پنکھے کا سسٹم بنانا۔ دستی پوٹینشیومیٹر کو ڈیجیٹل سگنل سے تبدیل کرکے، آپ اپنی موٹر کی رفتار پر قطعی، پروگرام قابل کنٹرول حاصل کرتے ہیں، جو آٹومیشن اور ریموٹ آپریشن کے لیے امکانات کی ایک دنیا کھولتا ہے۔

60A-3000W-PWM-board-0

یہاں کچھ عملی پروجیکٹ ہیں جو آپ اس سیٹ اپ کے ساتھ بنا سکتے ہیں:

  • پروگرام قابل اسپیڈ ریمپنگ کے ساتھ کسٹم الیکٹرک لانگ بورڈ یا گو کارٹ بنانا۔
  • 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 سگنل پیدا کیا جا سکے۔ یہ سگنل چار MOSFETs کے گیٹ کو کنٹرول کرتا ہے جو ہائی پاور موٹر سرکٹ کو سوئچ کرتے ہیں۔ ڈیوٹی سائیکل—جو موٹر کی رفتار کا تعین کرتا ہے—عام طور پر آن بورڈ پوٹینشیومیٹر کے ذریعے سیٹ کیا جاتا ہے جو 555 ٹائمر کے پن 3 سے منسلک ہوتا ہے۔ اسے Arduino سے کنٹرول کرنے کے لیے، ہمیں 555 کے آؤٹ پٹ کو MOSFET گیٹس سے منقطع کرنا ہوگا اور اس کی بجائے اپنا PWM سگنل فراہم کرنا ہوگا۔

یہ تبدیلی ضروری ہے کیونکہ Arduino براہ راست ہائی کرنٹ MOSFET گیٹس کو چلا نہیں سکتا۔ 555 ٹائمر اور MOSFETs کے درمیان PCB ٹریس کاٹ کر، ہم Arduino سے اپنا کم وولٹیج PWM سگنل محفوظ طریقے سے داخل کر سکتے ہیں، جس سے ہمیں موٹر کی رفتار پر مکمل ڈیجیٹل کنٹرول ملتا ہے۔ (ویڈیو میں 01:42 پر)

XY-1250 بورڈ میں تبدیلی

60A 3000W ریڈ ماجیول PCB لائن کٹ Arduino کے ساتھ کام کرنے کے لیے

Arduino کو منسلک کرنے سے پہلے، ہمیں 555 ٹائمر کے آؤٹ پٹ کو MOSFET گیٹس سے الگ کرنے کے لیے PCB پر دو کٹ لگانے ہیں۔ یہ ہے طریقہ:

  1. بورڈ پر 555 ٹائمر چپ (U3) تلاش کریں۔ اس پر ایک چھوٹا سا ڈاٹ یا لائن ہے جو پن 1 کی نشاندہی کرتی ہے۔
  2. پن 3 (آؤٹ پٹ) سے آنے والے PCB ٹریس کی شناخت کریں جو MOSFET گیٹس سے منسلک ڈائیوڈز تک جاتے ہیں۔
  3. تیز چاقو یا کٹنگ ڈسک والے روٹری ٹول کا استعمال کرتے ہوئے، ان ٹریس کو دو جگہوں پر احتیاط سے کاٹیں—ہر آؤٹ پٹ پاتھ کے لیے ایک۔
  4. کاٹنے کے بعد، تسلسل ٹیسٹر سے تصدیق کریں کہ کٹ مکمل ہے۔ 555 کے پن 3 اور MOSFET گیٹ ایریا کے درمیان کوئی بیپ نہیں سننی چاہیے۔

یہ تبدیلی اہم ہے—یہ 555 ٹائمر کے سگنل کو ہمارے Arduino کے PWM سگنل میں مداخلت کرنے سے روکتی ہے۔ (ویڈیو میں 07:02 پر)

60A 3000W ریڈ ماجیول PCB لائن کٹ Arduino کے ساتھ کام کرنے کے لیے

وائرنگ گائیڈ

اس پروجیکٹ کی وائرنگ میں Arduino کو تبدیل شدہ XY-1250 بورڈ سے منسلک کرنا شامل ہے۔ یہ ہے کنکشن ڈایاگرام:

  1. Arduino کے لیے پاور: XY-1250 میں ایک وولٹیج ریگولیٹر ہے جو تقریباً 8.5V آؤٹ پٹ کرتا ہے۔ اس آؤٹ پٹ (دو کیپیسٹرز کے درمیان سرخ تار) کو Arduino کے VIN پن سے منسلک کریں۔ یہ Arduino کو براہ راست موٹر کی پاور سپلائی سے چلاتا ہے۔ اہم: اسے 5V پن سے منسلک نہ کریں—اس سے Arduino جل جائے گا۔
  2. گراؤنڈ کنکشن: XY-1250 سے گراؤنڈ کو Arduino کے کسی بھی GND پن سے منسلک کریں۔
  3. PWM سگنلز: Arduino پن 5 کو پہلے کٹے ہوئے ٹریس سے (جہاں 555 کا آؤٹ پٹ تھا) اور Arduino پن 6 کو دوسرے کٹے ہوئے ٹریس سے منسلک کریں۔
  4. پوٹینشیومیٹر (اختیاری): اگر آپ دستی کنٹرول چاہتے ہیں، تو Arduino کے A0 پن سے 10kΩ پوٹینشیومیٹر منسلک کریں، باقی دو پن 5V اور GND سے۔
  5. موٹر: اپنی DC موٹر کو XY-1250 ماجیول کے آؤٹ پٹ ٹرمینلز سے منسلک کریں۔

وائرنگ مکمل ہونے کے بعد، Arduino اسی سپلائی سے چلے گا جیسے موٹر، اور یہ دونوں MOSFET گیٹ سرکٹس کو ہم آہنگ PWM سگنل بھیجے گا۔ (ویڈیو میں 10:25 پر)

60A-3000W-PWM-board-7-inpu-wires Arduino سے منسلک ہونے کے لیے تیار

کوڈ کی وضاحت

Arduino کوڈ سیدھا ہے اور PWM سگنلز پیدا کرنے پر مرکوز ہے۔ یہاں اہم صارف کے قابل ترتیب حصے ہیں:


#define pwmPin1 5
#define pwmPin2 6
#define controlPin A0
  • pwmPin1 اور pwmPin2 وہ Arduino پن ہیں جو دو MOSFET گیٹ سرکٹس کو PWM سگنل بھیجتے ہیں۔ یہ پن 5 اور 6 کے طور پر متعین کیے گئے ہیں، جو Arduino Uno پر دونوں PWM-قابل پن ہیں۔
  • controlPin وہ اینالاگ پن ہے جو پوٹینشیومیٹر (A0) سے منسلک ہے۔ اگر آپ پوٹینشیومیٹر استعمال نہیں کرنا چاہتے، تو آپ اسے نظر انداز کر سکتے ہیں۔

loop() فنکشن میں، کوڈ پوٹینشیومیٹر کی قدر (0–1023) پڑھتا ہے، اسے PWM قدر (0–255) میں تبدیل کرتا ہے، اور اسے دونوں PWM پنوں پر بھیجتا ہے۔ delay(500) ریفریش ریٹ کو فی سیکنڈ دو بار مقرر کرتا ہے—آپ اسے ہموار ردعمل کے لیے delay(100) تک کم کر سکتے ہیں۔

کوڈ میں ایک حسب ضرورت toPWM() فنکشن بھی شامل ہے جو فیصدی قدر (0–100) کو PWM قدر (0–255) میں تبدیل کرتا ہے۔ یہ مفید ہے اگر آپ پوٹینشیومیٹر کے بغیر مخصوص رفتار مقرر کرنا چاہتے ہیں۔ مثال کے طور پر، toPWM(50) کو کال کرنے سے 127 واپس آئے گا، جو 50% ڈیوٹی سائیکل کی نمائندگی کرتا ہے۔ آپ اس فنکشن کو اپنے کوڈ میں موٹر کی رفتار براہ راست مقرر کرنے کے لیے استعمال کر سکتے ہیں۔

60A-3000W-PWM-board-6

جانچ اور مظاہرہ

کوڈ اپ لوڈ کرنے اور سب کچھ منسلک کرنے کے بعد، آپ سیٹ اپ کو جانچ سکتے ہیں۔ اگر آپ پوٹینشیومیٹر استعمال کر رہے ہیں، تو اسے گھمانے سے موٹر کی رفتار 0 سے 100% تک آسانی سے ایڈجسٹ ہو جائے گی۔ سیریل مانیٹر خام اینالاگ قدر (0–1023) اور تبدیل شدہ PWM قدر (0–255) دونوں دکھائے گا۔

اگر آپ رفتار کو پروگرام کے ذریعے کنٹرول کرنا چاہتے ہیں، تو آپ پوٹینشیومیٹر کی پڑھائی کو ایک مقررہ قدر سے بدل سکتے ہیں۔ مثال کے طور پر، int pwm = toPWM(20); مقرر کرنے سے موٹر 20% رفتار پر چلے گی۔ یہ ان ایپلیکیشنز کے لیے بہترین ہے جہاں آپ چاہتے ہیں کہ موٹر دستی ایڈجسٹمنٹ کے بغیر مخصوص رفتار پر چلے۔ (ویڈیو میں 16:42 پر)

لائیو پروجیکٹ کا مظاہرہ

ویڈیو میں، آپ تبدیل شدہ XY-1250 کنٹرولر کو ایک چھوٹی DC موٹر چلاتے ہوئے دیکھ سکتے ہیں۔ مظاہرہ درج ذیل دکھاتا ہے:

  • Arduino سے منسلک پوٹینشیومیٹر کے ذریعے موٹر کی رفتار کو کنٹرول کرنا۔
  • toPWM() فنکشن کا استعمال کرتے ہوئے موٹر کو مقررہ 20% رفتار پر سیٹ کرنا۔
  • رفتار کو 50% اور پھر 80% تک بڑھانا تاکہ کنٹرول کی مکمل رینج دکھائی جا سکے۔

آسکلوسکوپ کی ریڈنگز تصدیق کرتی ہیں کہ دونوں PWM سگنل بالکل ہم آہنگ ہیں، دونوں چینلز کے درمیان کوئی فیز فرق نہیں ہے۔ یہ یقینی بناتا ہے کہ MOSFETs یکساں طور پر چلائے جائیں، جس سے غیر مساوی لباس یا زیادہ گرمی سے بچا جا سکتا ہے۔ (ویڈیو میں 14:56 پر)

60A-3000W-PWM-board-3

ابواب

  • [00:00] تعارف اور پروجیکٹ کا جائزہ
  • [01:42] XY-1250 PWM کنٹرولر کیسے کام کرتا ہے
  • [04:28] آسکلوسکوپ کے ساتھ اصل سگنل کی جانچ
  • [07:02] 555 ٹائمر کو الگ کرنے کے لیے PCB ٹریس کاٹنا
  • [10:25] Arduino کو تبدیل شدہ ماجیول سے جوڑنا
  • [12:18] Arduino کوڈ کی وضاحت
  • [14:56] پوٹینشیومیٹر کے ساتھ موٹر کنٹرول کا مظاہرہ
  • [16:42] مقررہ اقدار کے ساتھ پروگرام کے ذریعے رفتار کو کنٹرول کرنا
  • [20:32] حتمی خلاصہ اور اختتامی کلمات

تصاویر

60A-3000W-PWM-board-2
60A-3000W-PWM-board-2
60A-3000W-PWM-board-1
60A-3000W-PWM-board-1
60A-3000W-PWM-board-4
60A-3000W-PWM-board-4
60A-3000W-PWM-board-3
60A-3000W-PWM-board-3
schematic of mosfet gate in 60A 3000W PWM
schematic of mosfet gate in 60A 3000W PWM
60A 3000W red module PCB line cut to work with arduino
60A 3000W red module PCB line cut to work with arduino
60A 3000W red module PCB line cut to work with arduino
60A 3000W red module PCB line cut to work with arduino
60A-3000W-PWM-board-7-inpu-wires
60A-3000W-PWM-board-7-inpu-wires
60A-3000W-PWM-board-6
60A-3000W-PWM-board-6
60A-3000W-PWM-board-0
60A-3000W-PWM-board-0
196-Code for XY-1250 12-50V 60A PWM to work with Arduino with Potentiometer
زبان: C++
/*
 * 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);
}
197-Code for XY-1250 12-50V 60A PWM to work with Arduino
زبان: C++
/*
 *  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);  
}

آپ کو جن چیزوں کی ضرورت ہو سکتی ہے

فائلیں📁

کوئی فائلیں دستیاب نہیں ہیں۔