Hi guys,
I'm trying to make an arduino controlled turntable, basically a 160mm plywood disk that would be turning by a stepper motor.
I got the 28BYJ-48 motor with the driveboard, but it seems very weak. It can barely turn the disk, but if there's some object on the disk and minimal friction, it stucks.
Is this motor really so weak or can I do something with the code?
How are you powering the moto -- wall wart, batteries? Are you running it from the Arduino 5VDC or straight from wall wart / battery voltage? What voltage and amperage of wall wart / battery are you using?
Artem85:
I'm powering it right from arduino... shouldn't i?
That depends on the voltage and amperage the motor needs. The Arduino Uno's voltage regulator cannot supply more than 500mA at 5VDC. Other models vary.
Is there any information on the motor denoting voltage and amperage?
Ohm's law lets us convert the 50 Ohm resistance to mA:
That's only 100mA, so you appear to be meeting the current requirements of the motor.
You said you're using a driver board -- what's the part number / datasheet / link to where you bought it? I would hope that it's rated for at least 100mA but I guess we should check.
Also, how are you activating the motor? digitalWrite or analogWrite?
I made an experiment - connected this 5v motor to a 12v adapter, it worked great. Of course, it did heat up and I turned it off before it would born down.
/-----( Declare Constants, Pin Numbers )-----/ #define STEPS 100 //Number of steps per revolution
/-----( Declare objects )-----/
// create an instance of the stepper class, specifying
// the number of steps of the motor and the pins it's
// attached to
//The pin connections need to be 4 pins connected
// to Motor Driver In1, In2, In3, In4 and then the pins entered
// here in the sequence 1-3-2-4 for proper sequencing
Stepper small_stepper(STEPS, 8, 10, 9, 11);
/-----( Declare Variables )-----/
int Steps2Take;
void setup() /----( SETUP: RUNS ONCE )----/
{
// set the speed of the motor
small_stepper.setSpeed(200);
}/--(end setup )---/
If you run a motor's PWM frequency too fast, you also will get stuttering or little power output, since you don't give it time for the Magnetic field to form before it collapses again. This is just a physical limitation of motors.
mirith:
If you run a motor's PWM frequency too fast, you also will get stuttering or little power output, since you don't give it time for the Magnetic field to form before it collapses again. This is just a physical limitation of motors.
This would explain why it works faster at 12V -- stronger / quicker magnetic field.
Run the motor with nothing connected to the output shaft (perhaps a bit of sticky paper to make a flag so you can see what's happening).
How fast does it turn - seconds per revolution or revs/second as appropriate?
How powerful (how much torque) does it feel if you try to stop it with your fingers (assuming no sharp edges)?
If it is turning faster than 1 rev/second try slowing it down and see what that does to the torque?
Edit to Add...
I just looked at the datasheet - this is a 5-wire stepper, have you wired it correctly? I'm not sure how to do it, but I know the A4988 driver I have won't work with a 5-wire motor.
Thanks for the info guys. Meanwhile I managed to get way more power out of the motor by turning the coils on like that 8)
Now it can easily turn about 1kg, but before it could even barely turn itself! XD
I recently started using one of these. I found that the step per rev had to be 2048 and the max rpm had to be below about 14 or it would just vibrate. In fact anything much above 10RPM would skip steps. I have it now completing a single rev in about 10 seconds and it's very predictable in the movement. Using the standard Arduinio stepper example for a single turn it's working well. I did have to swap my center pins to get it to properly rotate in both directions (pins 9 and 10). I need to play with it some more but overall it's working but realize it's slow yet has decent torque.
You can use a 12v supply without a resistor. So long as the code allows it to cool off between moves. Or when going slower. This way you have the advantage of double the torque and speed when you need it. Did you see my code here on the forum? It makes this whole process as easy as 1 line of code...