Кодты іздеу

Control XY-1250 10–50A/60A 3000W PWM қозғалтқыш жылдамдығын басқару құрылғысын Arduino арқылы пайдалану

Control XY-1250 10–50A/60A 3000W PWM қозғалтқыш жылдамдығын басқару құрылғысын Arduino арқылы пайдалану

Бұл оқулықта біз сізге кәдімгі XY-1250 PWM қозғалтқыш жылдамдығын басқару құрылғысын (10–50A/60A, 3000W дейін) қалай түрлендіру керектігін көрсетеміз, оның жылдамдығын кіріктірілген тұтқаның орнына Arduino арқылы басқаруға болатындай етіп. Бұл жоғары қуатты қозғалтқыш контроллерін өз жобаларына қосқысы келетін әуесқойлар арасында танымал сұраныс—мысалы, арнайы электрлік лонгборд, CNC шпиндель жылдамдығын басқару, роботты жетек жүйесі немесе автоматты желдеткіш жүйесін жасау. Қолмен басқарылатын потенциометрді цифрлық сигналмен ауыстыру арқылы сіз қозғалтқыш жылдамдығын дәл, бағдарламаланатын басқаруға ие боласыз, бұл автоматтандыру мен қашықтан басқару үшін көптеген мүмкіндіктер ашады.

60A-3000W-PWM-board-0

Міне, осы қондырғымен жасауға болатын кейбір практикалық жобалар:

  • Бағдарламаланатын жылдамдықты арттыру функциясы бар арнайы электр лонгборд немесе го-карт жасау.
  • G-код арқылы реттелетін CNC станок шпиндель жылдамдығын басқару құрылғысын жасау.
  • Температура датчиктеріне негізделген жылдамдықты реттейтін автоматты жылыжай желдеткішін жасау.
  • Жоғары моментті қозғалтқыштары бар қашықтан басқарылатын робот жасау.
  • Шеберхана немесе шағын зауыт үшін ақылды конвейер таспа жүйесін әзірлеу.

Аппараттық құрамдас бөліктер

  • XY-1250 PWM қозғалтқыш жылдамдығын басқару модулі (10–50A/60A, 3000W)
  • Arduino Uno (немесе кез келген үйлесімді плата)
  • Тұрақты ток қозғалтқышы (тестілеу үшін)
  • Тұрақты ток қорек көзі (12V–36V ұсынылады)
  • Потенциометр (10kΩ) — қолмен басқару нұсқасы үшін
  • Жалғау сымдары
  • Дәнекерлеу үтігі мен сым (ПХД түрлендіру үшін)

XY-1250 қалай жұмыс істейді

XY-1250 PWM сигналын генерациялау үшін 555 таймер чипін (платада "U3" деп белгіленген) пайдаланады. Бұл сигнал жоғары қуатты қозғалтқыш тізбегін қосатын төрт MOSFET транзисторының затворын басқарады. Жұмыс циклі—қозғалтқыш жылдамдығын анықтайтын—әдетте 555 таймерінің 3-ші істікшесіне қосылған платадағы потенциометр арқылы орнатылады. Мұны Arduino арқылы басқару үшін 555 таймерінің шығысын MOSFET затворларынан ажыратып, оның орнына өзіміздің PWM сигналымызды беруіміз керек.

Бұл түрлендіру қажет, себебі Arduino жоғары токты MOSFET затворларын тікелей басқара алмайды. 555 таймері мен MOSFET арасындағы ПХД жолдарын кесу арқылы біз Arduino-дан өзіміздің төмен вольтты PWM сигналымызды қауіпсіз енгізе аламыз, бұл қозғалтқыш жылдамдығын толық цифрлық басқаруға мүмкіндік береді. (бейнеде 01:42)

XY-1250 платасын түрлендіру

60A 3000W қызыл модуль ПХД сызығы Arduino-мен жұмыс істеу үшін кесілген

Arduino-ны қосу алдында біз 555 таймерінің шығысын MOSFET затворларынан оқшаулау үшін ПХД-да екі кесу жасауымыз керек. Міне, қалай жасау керек:

  1. Платадағы 555 таймер чипін (U3) табыңыз. Оның 1-ші істікшені көрсететін кішкене нүктесі немесе сызығы бар.
  2. MOSFET затворларына қосылған диодтарға апаратын 3-ші істікшеден (шығыс) шығатын ПХД жолдарын анықтаңыз.
  3. Өткір пышақ немесе кесу дискісі бар айналмалы құралды пайдаланып, осы жолдарды екі жерден мұқият кесіңіз—әр шығыс жолы үшін бір.
  4. Кескеннен кейін үзілістің толық екенін тексеру үшін үздіксіздік тестерін пайдаланыңыз. 555 таймерінің 3-ші істікшесі мен MOSFET затвор аймағы арасында ешқандай дыбыс естілмеуі керек.

Бұл түрлендіру өте маңызды—ол 555 таймерінің сигналының біздің Arduino PWM сигналымызға кедергі келтіруіне жол бермейді. (бейнеде 07:02)

60A 3000W қызыл модуль ПХД сызығы 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. Қозғалтқыш: Тұрақты ток қозғалтқышын 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) мәніне азайтуға болады.

Код сонымен қатар пайыздық мәнді (0–100) PWM мәніне (0–255) түрлендіретін арнайы toPWM() функциясын қамтиды. Бұл потенциометрсіз белгілі бір жылдамдықты орнатқыңыз келсе пайдалы. Мысалы, 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);  
}

Сізге қажет болуы мүмкін нәрселер

Файлдар📁

Файлдар жоқ.