Control XY-1250 10-50A 60A 3000W PWM motor Speed controller using Arduino without potentiometer
Control XY-1250 10-50A 60A 3000W PWM motor Speed controller using Arduino without potentiometer
This video explains how modify the 60A PWM module and control it with Arduino. Either with potentiometer or just Arduino code.
If you don't want to control this module using external signal, and see this module fully tested under different loads, you may
have to see XY-1250 60A Module is tested and expaliend page.
see How to control 60A motor using Arduino with potentiometer.
Chapters of this video
- 00:00 Start
- 00:40 Introduction
- 01:42 Hardware explained
- 04:26 Waveform viewed on oscilloscope
- 06:56 Disconnecting the signal from board
- 08:49 Powering Arduino from this board
- 12:26 Code explained
- 15:42 Testing with Arduino
- 16:28 Code to control without potentiometer
Components used in this module
-Schottky 4 diode MBR20100CTG datasheet (pdf)-Datasheet for NCE7190A Mosfet (8 pieces) (pdf)
-Datasheet S2H1002A4 Constant Current diode (2 pieces used) (pdf)
-2nd Datasheet S2H1002A4 Constant Current diode (2 pieces used) (pdf)
Resources for this sketch
- XY-1250 60A Module is tested and expaliend
- VL53L0X Datasheet(pdf)
- Main Review of 10-50V 60A 3000W PWM (YouTube)
- Using Potentiometer with Arduino (Code and video)
- Get Wiring Diagram for this from Robojax Arduino Course on Udemy
- Get Early Access to my videos via Patreon
/*
* 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 wihtout potentiometer See video for demonstration
*
* how ot 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 Jan 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 wihtout 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 50milliscond 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 50milliscond 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 wiht value from 0 to 100%
* @param speed is integer value representing % from 0-100
* @return none
* written Jan 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);
}