Slowing small motor rotation

Hi All,

I'm using a tiny motor (from a small solar car, it draws 20mA) to turn a 2 cm mirror ball for a dolls house. The chip used is a 08M2, which will also be playing a tune and flashing some LED's

The PWM seems to turn the motor too fast for the mirror ball, also if I reduce the clock speed of the chip to reduce the PWM, then the tune speed will be effected.

The other idea I have is to turn the motor for the mirror ball every couple of seconds, hanging off a rubber band to twist and absorb the spin, then leave it for a couple of seconds to untwist.

Any other ways to slow the motor?

Thanks,

Jim.
 

westaust55

Moderator
What PWM settings are you using?
We are guessing without some idea of what you have tried and how much "too fast" it is.

Have you tried something like:
pwmout pwmdiv64, 2, 207, 42​
which with a 4 MHz clock generates a 75 Hz frequency with the duty (on time) down at 5% so I would expect the motor to be relatively slow.

pwmout pwmdiv64, 2, 222, 45 ; this is 70 Hz at 5% duty with 4 MHz clock
pwmout pwmdiv4, 2, 213, 862 ; this is 58 Hz at 5% duty with 4 Mhz clock
pwmout pwmdiv4, 2, 213, 172 ; this is 58 Hz at 1% duty with a 4 Mhz clock - as slow as you can go at 4 MHz
 
I've tried PWM all the way to the lowest setting, it's still quite fast.

The other problem I have it that the piezo is on the PWM / tune pin.
 

premelec

Senior Member
Try a PULSOUT of sufficient duration to make the motor move a little and then vary how often you hit it with that - the pulse can happen in between something else you have going...
 

BeanieBots

Moderator
premelec's suggestion is also what I would suggest but if that proves problematic to integrate into the other things you are doing, try simply adding a resistor or a few diodes in series with the motor.
 

jedynakiewicz

Senior Member
As the motor only draws 20mA you could try installing an ordinary potentiometer to the motor - but make sure that you use a linear pot and not a logarithmic pot - say 500R as a starter. With such a small current draw, especially as you are pulsing it, I think that even a small preset would probably work okay. See what resistance works best and then substitute a correctly-rated resistor as a permanent fix.
 

hippy

Ex-Staff (retired)
The other problem I have it that the piezo is on the PWM / tune pin.
You may be able to connect the other end of the piezo to a bi-directional I/O pin; when INPUT it should mute the piezo no matter what PWM is doing, set HIGH or LOW it will enable TUNE which comes out the same PWM pin. You will probably have to issue a PWMOUT OFF command to allow use of the pin for TUNE.

Unless you also have a means to disable the motor then the TUNE may affect it. That may not however be a problem.
 

Goeytex

Senior Member
It is not likely or may even be impossible to slow down a small direct drive (brushless ?) DC motor to a speed adequate for turning a disco ball. I would guess that a disco ball should rotate somewhere from 1 to 5 RPM. This will require a gear reduction type motor.

I hooked up the same type of motor that you have and it simply will not operate at less than about 100 RPM whether it be via PWM or pulseout with delay. And at 100 rpm with PWM it has almost no torque.

I suggest that you have the wrong device for the task at hand.

A miniature servo may work ok. These can be modified for continuous rotation if desired.
 

jtcurneal

Senior Member
Instead of using a direct drive motor, how about thinking of using a small stepper. A stepper can produce torque at very low speeds.

Joel
 

AllyCat

Senior Member
Hi,

Yes a stepper with a built-in reduction gear train is the obvious answer if you can find one small enough. Similarly, I also like the previous "analogue clock movement" idea if small enough (a surplus watch with a second hand?).

Otherwise, probably a combination of the suggestions I made in the other thread, i.e. low duty cycle, low frequency PWM drve, additional intertia on the motor shaft, and some form of "reduction gear" e.g. belt drive (elastic band) or a friction drive of the motor shaft onto a larger disc.

Beware that I believe that each note of a "tune" disables most other PICaxe output events except for PWM?

Cheers, Alan.
 

Technical

Technical Support
Staff member
Have you tried driving the motor from the 'tune' pin, in parallel to the piezo?
The tune pulsing will effectively be a crude form of PWM.
 

Goeytex

Senior Member
Stepper motors tend to get hot, especially with continuous operation. They are also somewhat complicated to drive and require more I/O resources. For these reasons I usually consider steppers as a last resort if other acceptable options are available.

I just modified a servo for continuous rotation. It took about 15 minutes. At the slowest setting I can get about 4 rpm. The problem with using a servo is that the servo / servopos commands require exclusive use of the Picaxe timer. This means a separate 08M2 to control the servo as the tune command will inhibit the servo output while a tune is playing.

Update: Instead of using servo and servopos, I used PWMOUT @ 61 hz and adjusted the duty cycle so that the servo turns CW @ approx 3.5 rpm. That is a pulse width of 1.56ms with my servo.

< pwmout pwmdiv64, b.2,255,98 >

There seems to be no conflict with the tune command. The tune output will need to be moved from Pin B.2 to another Pin so that the servo motor can be controlled with via PWM on b.2.
 
Last edited:

techElder

Well-known member
Last edited:

erco

Senior Member
Your original thread asked for a button-cell solution. Another novel approach might be to copy or hack one of these old Tomy Micro Pets. They actually used button cells to drive solenoids (!) to move the legs for the pets to walk. I have a couple of them and they are really cute... AHEM, I mean, my twin girls think they're cute. http://www.youtube.com/watch?v=p3REWg5sEQc

The mechanism to rotate your ball would be to use a solenoid to advance a gear one tooth at a time, almost like a stepper motor.

Speaking of PWM, I'm about to try PWM and HPWM on a 20M2 for the first time, but my expectations are very low. Nearly all modern speed controllers use a PWM frequency so high that they fail to deliver a signal that can move a motor at very low speeds (that IS the whole idea, after all). To me, the squealing sound of a PWM signal going through a stationary motor sounds like it's singing the FAIL song. Slow bit banging (on any processor) works far better for even glacial speeds at full torque. Here I'm using a PWM frequency of ~10 hz: http://www.youtube.com/watch?v=RJDu233hO1k So you might try that.
 

boriz

Senior Member
Good suggestions all. But if you choose to stick with your DC motor. Here's some ideas. I can picture them clearly enough, and I'm sure they could all be made to work with sufficient fiddling, but describing these mechanisms in words will be hard...

-Use a disc, (maybe a lid from something), as a reduction gear. Just press the motor shaft up against the edge. Friction drive. The centering does not need to be particularly precise as the motor can be loose mounted and pulled against the disc with an elastic band. You might need to add friction to the disc edge using glue or tape or a rubber band or something like that.

-Similar to above, but make it into a single stage pulley using an elastic band as a drive belt. You might need to 'machine' the edge of the lid for the belt to stay on.

-Coil an elastic band around the mirrorball spindle two or three loops, then extend both ends of the band in opposite directions, 90 degrees to the ball shaft. Pin one end to a fixed point, the other end is connected (glued?) to the end of the motor spindle. The motor spindle is in the same axis as the elastic band. Just like a rubber powered model airplane, the motor can twist the elastic band and this will turn the mirror ball as the band pulls tighter. The motor will need to turn for a fixed period, then relax for a while so that the elastic band can unwind and the ball should rotate in the other direction.

-Fix the motor to the mirroball spindle at 90 degrees (like a T where the top of the T is the motor axis and the vertical of the T is the mirrorball shaft). Wrap thread around the motor shaft, then pin each end. The motor will 'winch' itself along the thread. You'll have to reverse it before it goes more than 50 degrees or so. Maybe use an elastic band instead of thread for extra traction.

-Mount the motor on the same axis as the mirrorball spindle directly in line with it, with the shaft pointing down towards the mirror ball shaft, with a gap of (say) 2 inches. Connect the two spindles with an elastic band. The mirrorball shaft must pass through a wax bearing (a bit of candle is perfect). This will add resistance and damp the rotation. Spin the motor up at full power one way for a few seconds then reverse it for a few seconds etc. The mirrorball will turn slowly one way then the other.

-Mount the mirrorball directly onto the motor shaft. Drive it directly at 1000RPM, strobe the LED light so that the ball looks frozen. Tweak the speeds to make it seem to be rotating slowly.

Cheap and cheerful :)
 
Top