Search Code

Kidhibiti cha XY-1250 10–50A/60A 3000W PWM cha Kasi ya Motor Kwa Kutumia Arduino

Kidhibiti cha XY-1250 10–50A/60A 3000W PWM cha Kasi ya Motor Kwa Kutumia Arduino

Katika mafunzo haya, tutakuonyesha jinsi ya kuchukua kidhibiti cha kawaida cha kasi ya motor cha PWM XY-1250 (kilichokadiriwa kwa 10–50A/60A hadi 3000W) na kukibadilisha ili uweze kudhibiti kasi yake kwa kutumia Arduino badala ya kifundo chake cha ndani. Hili ni ombi maarufu kutoka kwa wapenda hobby ambao wanataka kuunganisha kidhibiti cha motor chenye nguvu kubwa katika miradi yao wenyewe—kama vile kujenga longboard ya umeme maalum, udhibiti wa kasi wa spindle wa CNC, mfumo wa kiendeshi cha roboti, au mfumo wa feni wa kiotomatiki. Kwa kubadilisha potentiometer ya mwongozo na ishara ya dijiti, unapata udhibiti sahihi, unaoweza kupangwa juu ya kasi ya motor yako, jambo linalofungua ulimwengu wa uwezekano wa uendeshaji wa kiotomatiki na wa mbali.

60A-3000W-PWM-board-0

Hapa kuna miradi mingine ya vitendo unayoweza kujenga kwa usanidi huu:

  • Kujenga longboard ya umeme maalum au go-kart yenye kupanda kwa kasi kunakoweza kupangwa.
  • Kuunda kidhibiti cha kasi cha spindle cha mashine ya CNC kinachoweza kubadilishwa kupitia G-code.
  • Kujenga feni ya kiotomatiki ya chafu inayorekebisha kasi kulingana na sensorer za joto.
  • Kutengeneza roboti inayodhibitiwa kwa mbali yenye motor zenye torque kubwa.
  • Kuendeleza mfumo wa ukanda wa conveyor wenye akili kwa warsha au kiwanda kidogo.

Vipengele vya Vifaa

  • Moduli ya kidhibiti cha kasi cha motor cha PWM XY-1250 (10–50A/60A, 3000W)
  • Arduino Uno (au bodi yoyote inayooana)
  • Motor ya DC (kwa majaribio)
  • Ugavi wa nishati ya DC (12V–36V inapendekezwa)
  • Potentiometer (10kΩ) — kwa chaguo la udhibiti wa mwongozo
  • Waya za kurukia
  • Chuma cha solder na waya (kwa kubadilisha PCB)

Jinsi XY-1250 Inavyofanya Kazi

XY-1250 hutumia IC ya timer ya 555 (iliyoandikwa kama "U3" kwenye bodi) kutengeneza ishara ya PWM. Ishara hii inadhibiti lango la MOSFET nne zinazowasha mzunguko wa motor wa nishati kubwa. Mzunguko wa kazi—unaobainisha kasi ya motor—kawaida huwekwa na potentiometer ya ndani iliyounganishwa kwenye pini ya 3 ya timer ya 555. Ili kudhibiti hili kwa Arduino, tunahitaji kutenganisha pato la 555 kutoka kwenye lango za MOSFET na kuingiza ishara yetu ya PWM badala yake.

Badiliko hili ni muhimu kwa sababu Arduino haiwezi kuendesha moja kwa moja lango za MOSFET za mkondo wa juu. Kwa kukata nyimbo za PCB kati ya timer ya 555 na MOSFET, tunaweza kuingiza kwa usalama ishara yetu ya PWM ya voltage ya chini kutoka kwa Arduino, tukipata udhibiti kamili wa dijiti juu ya kasi ya motor. (katika video saa 01:42)

Kubadilisha Bodi ya XY-1250

60A 3000W red module PCB line cut to work with arduino

Kabla ya kuunganisha Arduino, tunahitaji kufanya mikato miwili kwenye PCB ili kutenga pato la timer ya 555 kutoka kwenye lango za MOSFET. Hivi ndivyo unavyofanya:

  1. Tafuta chip ya timer ya 555 (U3) kwenye bodi. Ina nukta ndogo au mstari unaoonyesha pini ya 1.
  2. Tambua nyimbo za PCB zinazotoka kwenye pini ya 3 (pato) zinazoelekea kwenye diode zilizounganishwa kwenye lango za MOSFET.
  3. Kwa kutumia kisu kikali au chombo cha kuzungusha chenye diski ya kukatia, kata kwa uangalifu nyimbo hizi katika sehemu mbili—moja kwa kila njia ya pato.
  4. Baada ya kukata, tumia kipima mwendelezo kuthibitisha kukata kumekamilika. Haupaswi kusikia beep kati ya pini ya 3 ya 555 na eneo la lango la MOSFET.

Badiliko hili ni muhimu sana—linazuia ishara ya timer ya 555 kuingilia ishara yetu ya PWM ya Arduino. (katika video saa 07:02)

60A 3000W red module PCB line cut to work with arduino

Mwongozo wa Wiring

Wiring ya mradi huu inahusisha kuunganisha Arduino kwenye bodi ya XY-1250 iliyobadilishwa. Hapa kuna mchoro wa muunganisho:

  1. Nishati kwa Arduino: XY-1250 ina kidhibiti cha voltage kinachotoa takriban 8.5V. Unganisha pato hili (waya nyekundu kati ya capacitor mbili) kwenye pini ya VIN ya Arduino. Hii inawezesha Arduino moja kwa moja kutoka kwa ugavi wa nishati wa motor. Muhimu: Usiunganishe hii kwenye pini ya 5V—itaunguza Arduino.
  2. Muunganisho wa ardhi: Unganisha ardhi kutoka XY-1250 kwenye pini yoyote ya GND kwenye Arduino.
  3. Ishara za PWM: Unganisha pini ya 5 ya Arduino kwenye njia ya kwanza iliyokatwa (ambapo pato la 555 lilikuwa), na pini ya 6 ya Arduino kwenye njia ya pili iliyokatwa.
  4. Potentiometer (hiari): Ikiwa unataka udhibiti wa mwongozo, unganisha potentiometer ya 10kΩ kwenye pini ya A0 ya Arduino, na pini zingine mbili kwenye 5V na GND.
  5. Motor: Unganisha motor yako ya DC kwenye vituo vya pato vya moduli ya XY-1250.

Mara baada ya kuunganishwa, Arduino itawezeshwa na ugavi huo huo kama motor, na itatuma ishara za PWM zilizosawazishwa kwenye mizunguko yote miwili ya lango la MOSFET. (katika video saa 10:25)

60A-3000W-PWM-board-7-inpu-wires read to be connected to Arduino

Maelezo ya Msimbo

Msimbo wa Arduino ni rahisi na unazingatia kutengeneza ishara za PWM. Hapa kuna sehemu muhimu zinazoweza kusanidiwa na mtumiaji:


#define pwmPin1 5
#define pwmPin2 6
#define controlPin A0
  • pwmPin1 na pwmPin2 ni pini za Arduino zinazotuma ishara ya PWM kwa saketi mbili za lango la MOSFET. Hizi zimefafanuliwa kama pini 5 na 6, ambazo zote ni pini zenye uwezo wa PWM kwenye Arduino Uno.
  • controlPin ni pini ya analogi iliyounganishwa na potentiometer (A0). Ikiwa hutaki kutumia potentiometer, unaweza kuipuuza hii.

Katika kazi ya loop(), msimbo unasoma thamani ya potentiometer (0–1023), inaipanga kwa thamani ya PWM (0–255), na kuituma kwa pini zote mbili za PWM. delay(500) inaweka kiwango cha uonyeshaji upya mara mbili kwa sekunde—unaweza kuipunguza hadi delay(100) kwa mwitikio laini zaidi.

Msimbo pia unajumuisha kazi maalum ya toPWM() inayobadilisha thamani ya asilimia (0–100) kuwa thamani ya PWM (0–255). Hii ni muhimu ikiwa unataka kuweka kasi maalum bila potentiometer. Kwa mfano, kupiga simu toPWM(50) kunarudisha 127, inayowakilisha mzunguko wa kazi wa 50%. Unaweza kutumia kazi hii katika msimbo wako mwenyewe kuweka kasi ya motor moja kwa moja.

60A-3000W-PWM-board-6

Upimaji na Maonyesho

Baada ya kupakia msimbo na kuunganisha kila kitu, unaweza kupima mpangilio. Ikiwa unatumia potentiometer, kuizungusha kutarekebisha kasi ya motor vizuri kutoka 0 hadi 100%. Mfuatiliaji wa serial utaonyesha thamani zote mbili za analogi ghafi (0–1023) na thamani ya PWM iliyopangwa (0–255).

Ikiwa unataka kudhibiti kasi kwa njia ya programu, unaweza kubadilisha usomaji wa potentiometer na thamani isiyobadilika. Kwa mfano, kuweka int pwm = toPWM(20); itaiendesha motor kwa kasi ya 20%. Hii ni kamili kwa matumizi ambapo unataka motor iendeshe kwa kasi maalum bila marekebisho ya mkono. (katika video saa 16:42)

Maonyesho ya Mradi wa Moja kwa Moja

Katika video, unaweza kuona kidhibiti cha XY-1250 kilichobadilishwa kikiendesha motor ndogo ya DC. Maonyesho yanaonyesha:

  • Kudhibiti kasi ya motor na potentiometer iliyounganishwa kwenye Arduino.
  • Kuweka motor kwa kasi isiyobadilika ya 20% kwa kutumia kazi ya toPWM().
  • Kuongeza kasi hadi 50% na kisha 80% kuonyesha anuwai kamili ya udhibiti.

Usomaji wa oscilloscope unathibitisha kwamba ishara zote mbili za PWM zimesawazishwa kikamilifu, bila tofauti ya awamu kati ya njia mbili. Hii inahakikisha MOSFET zinaendeshwa sawasawa, kuzuia uchakavu usio sawa au joto kupita kiasi. (katika video saa 14:56)

60A-3000W-PWM-board-3

Sura

  • [00:00] Utangulizi na muhtasari wa mradi
  • [01:42] Jinsi kidhibiti cha PWM cha XY-1250 kinavyofanya kazi
  • [04:28] Kupima ishara asili na oscilloscope
  • [07:02] Kukata nyimbo za PCB kutenga timer ya 555
  • [10:25] Kuunganisha Arduino kwenye moduli iliyobadilishwa
  • [12:18] Kuelezea msimbo wa Arduino
  • [14:56] Kuonyesha udhibiti wa motor na potentiometer
  • [16:42] Kudhibiti kasi kwa njia ya programu na thamani zisizobadilika
  • [20:32] Muhtasari wa mwisho na maneno ya kuhitimisha

Bilder

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
Språk: 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
Språk: 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);  
}

Tänker att du kanske behöver

Filer📁

Inga filer tillgängliga.