My current limiting/voltage limiting power supply keeps dropping from its set value (12V) to below 3 volts when I run these stepper motors. They are rated to run at 2.8 volts but apparently perform better at higher voltages. How can I get my power supply to run at 12 volts?
Hi, we need more details to help. Like what power supply model, what drivers are you using.. The power supply powers the drivers and the driver control the motor with pulses at high frequency and control the current that way. It is typical to run the driver at much higher than motors rated voltage which is actually not a very useful number anyway. The current and the inductance values are more important. Cheers Gary
Hi Gary, Thank you for your fast reply. I didn't include much info because I thought it might be an obvious problem. I got it working okay so maybe there is no problem. I am just confused as to why open builds recommend you use a 12-24V power supply if my power supply only wants to provide around 3V. Power supply Linear Power Supply HY3006D Motor Driver is the "Arduino Motor Shield V2.0"
I don’t know why you would use that type of PSU, all you need is a switching constant voltage PSU, if you can set the one you have to a fixed voltage and not fixed amperage you should be ok. The drive does the current control. The motor will have very slow max RPM at 3v. Higher voltage gets you higher speed, due to inductance. There are lots of things to read on the web about steppers and what voltage to use out there. Cheers Gary
This is one of the better reads: Step Motor Basics | Geckodrive. You may find sections 6 and 9 fairly useful.
I thought that PSU would be useful for simulating other PSU's since it can limit current and voltage. However there is no button to switch between voltage and current, it just automatically regulates on or another. I am now using This 24V power supply LRS-350-24 - MEAN WELL - Open / Enclosed Frame AC-DC Power Supplies With this voltage step down https://www.velleman.eu/products/view/?id=435566 The voltage going into the motor shield drops from 12 to 6 as soon as the motor starts moving. It is still moving very slowly as well no matter what speed I put into the code.
I'm guessing that voltage regulator is not able to handle true 2.5A like it says. What is the goal of this project? Maybe we can help. Is this the board you are using? many settings to consider.. Cheers Gary
Post some pictures of your wiring setup, we can try and spot the problem. What stepper driver are you using (You cant just wire the motor to the PSU, you need a stepper driver in between). Also post any code you are running please
Hi everyone sorry for the delay. Gary: I am building a 3D printer and want to drive the stepper motors as fast as possible. And yes that is the board I am using Peter: I attached a picture of my wiring set up. I have just been using the example code in the Arduino motor shield library so I can eliminate code as the source of my problem. This code just runs through a few different driving styles. I am not able to get the motor to run faster than 60rpm. Stepper motors should be able to do about 300rpm I think. /* This is a test sketch for the Adafruit assembled Motor Shield for Arduino v2 It won't work with v1.x motor shields! Only for the v2's with built in PWM control For use with the Adafruit Motor Shield v2 ----> Adafruit Motor/Stepper/Servo Shield for Arduino v2 Kit */ #include <Wire.h> #include <Adafruit_MotorShield.h> // Create the motor shield object with the default I2C address Adafruit_MotorShield AFMS = Adafruit_MotorShield(); // Or, create it with a different I2C address (say for stacking) // Adafruit_MotorShield AFMS = Adafruit_MotorShield(0x61); // Connect a stepper motor with 200 steps per revolution (1.8 degree) // to motor port #2 (M3 and M4) Adafruit_StepperMotor *myMotor = AFMS.getStepper(200, 1); void setup() { Serial.begin(9600); // set up Serial library at 9600 bps Serial.println("Stepper test!"); AFMS.begin(); // create with the default frequency 1.6KHz //AFMS.begin(1000); // OR with a different frequency, say 1KHz myMotor->setSpeed(10); // 10 rpm } void loop() { Serial.println("Single coil steps"); myMotor->step(300, FORWARD, SINGLE); myMotor->step(300, BACKWARD, SINGLE); Serial.println("Double coil steps"); myMotor->step(300, FORWARD, DOUBLE); myMotor->step(300, BACKWARD, DOUBLE); Serial.println("Interleave coil steps"); myMotor->step(300, FORWARD, INTERLEAVE); myMotor->step(300, BACKWARD, INTERLEAVE); }
Right, so: 1) The Stepper Driver IC itself handles the constant chopper current at a specific motor voltage (The voltage isnt set, the current is. The voltage is automatic as a function of the set Current, combined with the motor coils resistance. You dont need to worry about that at all, set the stepper Driver to 1.6ish Amps and the rest happens magically). The Stepdown converter in there, thats got to go. Higher voltage input into the stepper driver, allows the stepper driver itself to do what it needs to, faster. Higher step rates, cooler running, better overall. You read too much into the voltage ratings/recommendations. Stepper Motors are Constant Current devices, not voltage dependant loads Take out the stepdown, and call it a day. Everything will work optimally (With stepper current properly adjusted) (note above assumes your stepper driver has adjustment - I dont know it, not from our store (; sorry)
2) if you then still have trouble, get a decent stepper driver like a DQ542MA Stepper Motor Driver (;
Okay, this all makes sense. However, the Arduino shield only recommends 5V-12V input. Will running 24V directly into it be an issue?
Isn't (or now wasn't) that motor shield one channel? you need three axis, there are many cheap options (which will take 24V) out there.. I'm not a printer guy but I'm sure someone can recommend a good cheap Arduino Uno setup. Cheers Gary
Why not use a RAMPs board with DRV8825 drivers, or a smoothieboard? A RAMPs board with 5 drivers is cheaper than a stack of those shields and it is a easily configured well documented system.