કોડ શોધો

કંટ્રોલ 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 PWM સિગ્નલ જનરેટ કરવા માટે 555 ટાઈમર IC (બોર્ડ પર "U3" તરીકે લેબલ થયેલ) નો ઉપયોગ કરે છે. આ સિગ્નલ ચાર MOSFET ના ગેટને નિયંત્રિત કરે છે જે હાઇ-પાવર મોટર સર્કિટને સ્વિચ કરે છે. ડ્યુટી સાયકલ—જે મોટરની ગતિ નક્કી કરે છે—સામાન્ય રીતે 555 ટાઈમરના પિન 3 સાથે જોડાયેલા ઓનબોર્ડ પોટેન્શિયોમીટર દ્વારા સેટ કરવામાં આવે છે. આને Arduino વડે નિયંત્રિત કરવા માટે, આપણે 555 ના આઉટપુટને MOSFET ગેટથી ડિસ્કનેક્ટ કરવાની અને તેના બદલે આપણો પોતાનો PWM સિગ્નલ ફીડ કરવાની જરૂર છે.

આ ફેરફાર જરૂરી છે કારણ કે Arduino સીધા હાઇ-કરંટ MOSFET ગેટ ચલાવી શકતું નથી. 555 ટાઈમર અને MOSFET વચ્ચેના 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 સિગ્નલો સંપૂર્ણપણે સિંક્રનાઇઝ્ડ છે, બંને ચેનલો વચ્ચે કોઈ તબક્કાનો તફાવત નથી. આ સુનિશ્ચિત કરે છે કે MOSFET સમાન રીતે ચલાવવામાં આવે છે, અસમાન ઘસારો અથવા વધુ ગરમી અટકાવે છે. (વિડિયોમાં 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 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);  
}

તમને જોઈતી વસ્તુઓ

સંસાધનો અને સંદર્ભો

ફાઇલો📁

કોઈ ફાઇલો ઉપલબ્ધ નથી.