کوډ ولټوئ

د کنټرول 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 وصل کړو، موږ اړتیا لرو چې په PCB باندې دوه پرې کول ترسره کړو ترڅو د 555 ټایمر محصول له MOSFET ګیټونو څخه جلا کړو. دلته دا څنګه ترسره کوو:

  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. پوټینشیومیټر (اختیاري): که تاسو لاسي کنټرول غواړئ، یو 10kΩ پوټینشیومیټر د Arduino د A0 پن سره وصل کړئ، د نورو دوو پنونو سره 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 پنونه دي چې د PWM سیګنال دوه MOSFET ګیټ سرکټونو ته لیږي. دا د 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] د PCB لارو پرې کول ترڅو د 555 ټایمر جلا کړي
  • [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 input wires
60A 3000W PWM board 7 input 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);  
}

هغه شیان چې تاسو ورته اړتیا لرئ

فایلونه📁

هیڅ فایل شتون نلري.