Has anyone used a motor like this? Supposedly it is from Canon.
What's the minimum amount of circuitry needed to run it?
Thanks!
Sam
Has anyone used a motor like this? Supposedly it is from Canon.
What's the minimum amount of circuitry needed to run it?
Thanks!
Sam
What is the winding resistance?
Wouldn't you know, I went to check the windings and my meter's battery died, so I robbed one out of the smoke alarm and it was dead too. So I ran out and bought some. If my house catches on fire sometime soon, you've saved my life.
So, the windings...
The one closest to the shaft is 20.7 ohms.
The other one furthest from the shaft is 43.4 ohms.
That seemed strange to me, so I tried other combinations and they were open circuits, so I guess those have to be the two.
I have some of these or similar motors, from eBay (£3 for a dozen or something
crazy). Mine have 50 ohm windings (both the same).
Bit too low a resistance to drive directly from Arduino pins alas, and you'd need
8 schottky diodes too, and I don't know what current they are rated for even...
One could use a 100 ohm series resistor with each winding and connect it to two pins,
adding 2 BAT85's to each pin to act as flybacks. I suspect there's a nice
little QFN packaged chip to drive these from I2C somewhere if you can solder SMT.
(In fact I'm sure I've seen a chip that can drive similar motors somewhere).
Wonder how to even measure the torque from such a beastie!
That looks like a nice solution to try.
I also found this: http://www.diodes.com/datasheets/ds30195.pdf
Could that be used in place of the BAT85s?
Thanks!
Sam
Could that be used in place of the BAT85s?
Yes, that is a nice compact solution. Just about any silicon diode will work.
The ~20 mA allowable from a port pin may not be enough to activate the motor, but it is certainly worth a try!
Any ideas if 20mA isn't enough? Hopefully something quite smaller than a full blown h-bridge. Could something like a modern version of a 4066 work?
Try it first. If it works, you are done.
samw3:
That looks like a nice solution to try.I also found this: http://www.diodes.com/datasheets/ds30195.pdf
Could that be used in place of the BAT85s?
Thanks!
Sam
Excellent - that's exactly the sort of component you need! 200mA continuous and already
in a quad bridge
Well, it's working, but it doesn't have hardly any torque at all. Just touching it lightly stops it. Still pretty cool.
Thanks for the help!
Nice! So how fast can you drive it before it mis-steps?
MarkT:
I have some of these or similar motors, from eBay (£3 for a dozen or something
crazy). Mine have 50 ohm windings (both the same).
I haven't come across anything like this before. What should I use to search Ebay for them?
...R
MarkT:
Nice! So how fast can you drive it before it mis-steps?
Pretty fast. I'm not sure how fast, I had it running at 1 ms delays between steps without any noticeable skips. But I'm not sure yet how man steps per revolution there are. I can test that and let you know.
Robin2:
Here's the listing I got mine from:
http://www.ebay.com/itm/10PCS-4-Wire-2-Phase-Mimi-stepper-motor-for-Canon-micro-stepping-motor-D6mm/370953776904
For those interested, here's the code I used to drive the motor. The coils are wired on consecutive pins, and in this case the first coil is on pins 2 and 3, and the second is on 4 and 5.
void setup()
{
}
void coilForward(int pin)
{
pinMode(pin, OUTPUT);
digitalWrite(pin, HIGH);
pinMode(pin+1, OUTPUT);
digitalWrite(pin+1, LOW);
}
void coilBackward(int pin)
{
pinMode(pin, OUTPUT);
digitalWrite(pin, LOW);
pinMode(pin+1, OUTPUT);
digitalWrite(pin+1, HIGH);
}
void coilOff(int pin)
{
pinMode(pin, OUTPUT);
digitalWrite(pin, LOW);
pinMode(pin+1, OUTPUT);
digitalWrite(pin+1, LOW);
}
int step = 0;
boolean blink = true;
void loop()
{
switch(step)
{
case 0:
coilForward(2);
coilOff(4);
break;
case 1:
coilForward(2);
coilForward(4);
break;
case 2:
coilOff(2);
coilForward(4);
break;
case 3:
coilBackward(2);
coilForward(4);
break;
case 4:
coilBackward(2);
coilOff(4);
break;
case 5:
coilBackward(2);
coilBackward(4);
break;
case 6:
coilOff(2);
coilBackward(4);
break;
case 7:
coilForward(2);
coilBackward(4);
}
step++;
if(step == 8) step = 0;
delay(10);
}
Thanks for the link and the code. I must get some when the guy gets back from holidays.
You should put the pinmode statements in setup() as they only need to be called once.
...R
So I got some QSBT40's and hacked up a breakout board, now on order:
Board is 11x16mm in size, I added a 1206 decoupling capacitor for good measure
as well as the QSBT40 and 0805 resistors. I'm going to try 100 ohms or so for
Arduino and 47 ohm for another(*) 3.3V microcontroller I use (which can source upto 40mA,
ie NOT the Due which is much less beefy).
(*) The P8X32A "Proepeller" - its got 32 pins so could drive 7 motors (allowing for serial
comms).
Another thought I had was that an RS485 driver chip can source/sink into a 50 ohm
load safely (they are designed to drive a 100 ohm twisted pair terminated at each end),
so could be used to drive the motor at higher currents from 5V. Dual RS485 transmitters
are pretty cheap...
Erm, the worlds smallest 3D printer?! Tiny robot...
One use is indicators, attach a drum with graphics around the edge, visible through a
slot in the front panel... Or a faked needle-style meter (need some gearing though).
Probably too big for a PicoSumo Bot! picobot's first steps - YouTube
Have you discovered what is the max current they can take?
How does their torque compare with a similarly sized DC motor?
...R