Go Down

Topic: Is my stepper motor wired correctly? (Read 5277 times) previous topic - next topic


Dec 28, 2012, 11:26 pm Last Edit: Dec 29, 2012, 12:22 am by MentalFloss Reason: 1
Hi all,

I am new to this forum and electronics in general, but I do like programming so the Arduino looks as a nice programming platform to get your electronics going.
As I am learning new things constantly I would like to wire a Mitsumi M35SP-9 stepper motor using BC337-40 Transistors for power.

From what I learned the stepper motor is a unipolar motor since it has 5 wires and the datasheet I found at http://www.mitsumi.co.jp/latest/Catalog/pdf/motor_m35sp_9_e.pdf states this as well. I wired the stepper on my breadboard as follows:

I have placed 4 BC337-40 transistors which I plan to source 1V @ 22mA on it's base for "on". The current-gain is 250 @ 100mA base current, so I expect at least 50 gain on 22mA which would already be enough to power the 0,5A the stepper is rated for and if not I can always increase the current to somewhere near 40mA since that would be the max current the Arduino can deliver (correct?). The collectors are all wired to the 4 different coils and the emitters are wired to ground.  I used a 180 Ohm resistor between the Arduino's digital outputs (31 through 34) to limit the current to 22mA (V=I*R results in 4V = 0,0222 * 180). The common middle wire of the stepper should be connected to 24V but I plan on 12V for testing purposes.

I have uploaded some pictures to my GDrive of how I wired everything: https://docs.google.com/folder/d/0B1x3wmtOYlNGSEVyc3Fnb2lleFk/edit

From what I understand it's a matter of programming the Arduino now using one of the available stepper libraries and start testing.
Did I overlook something? Are my resistor values and transistor calculations correct? Any tips?

All help is really appreciated!

Edit: I Misinterpreted the current gain. It's not expressed for Ib but for Ic. Basically 5mA will do fine on the base, but 22mA is no problem either :)



Sounds right to me. 

If you need more current you should try to limit it to about 30 mA since the 40 mA spec is "Absolute Maximum".

The built-in Stepper library should work.  Try File->Examples->Stepper->stepper_oneRevolution.  You will have to change:
Code: [Select]
Stepper myStepper(stepsPerRevolution, 8,9,10,11);
Code: [Select]
Stepper myStepper(stepsPerRevolution, 31,32,33,34);

If your stepper just hums or buzzes without moving, try swapping any two wires.
Send Bitcoin tips to: 1G2qoGwMRXx8az71DVP1E81jShxtbSh5Hp


Jan 03, 2013, 10:30 pm Last Edit: Jan 03, 2013, 10:43 pm by MentalFloss Reason: 1
Hi all,

Tonight I managed to wire up the stepper motor using a 20V power supply (old notebook adapter) and once starting up the motor did some humming.
As I knew I fumbled with the wiring so I'd line up all phases correctly but then one transistor (rated 800mA) burned up.
Shortly after the motor got very hot because the transistor shortened the collector and emitter.

At first I thought I might have shortened something but after some investigation I knew for sure I didn't.
So I trashed my transistor and did some measurements on the wiring.
I found out the middle wire is common and all other wires measured 25 Ohms to common (center coil taps) and around 50 Ohms when I measure the full coil.
So far so good, somehow I must have overdone it using the 20V supply, but strangely enough the motor is rated for 24V if I interpret the datasheet correctly.

I found another 12V adapter which I wired up and I used BD139 transistors rated for up to 1.5A.
I did the math: current = V(12 Volt) / R (25 Ohm) , so current must be around 500mA theoretically.
Again I started up and the humming appeared but no transistor went up in smoke so I finally managed to get the wiring correctly and the Arduino stepper example (which is 2-2 Excitation as far as I know) gave me a nice spin on the stepper!

Again the motor got very hot in a very short amount of time, so I measured the current on the common wire (which is wired to +V) which gave me 900-1000mA's.
So my questions are:
1) Am I misinterpreting the datasheet? It clearly states rated V=24, Current/Phase=513mA, 50 Ohms/Phase, 4 Phases
2) 2-2 Excitation should have 2 phases energized at any moment which would sum up to around 1000mA, which I am measuring as well. Is this correct?
3) If the sheet says 50 Ohms per phase would that be the resistance over the full coil? The label on the stepper says 20 Ohms, and I measured 25 Ohms for a half coil.
4) Does anyone know why the motor gets so hot in say 1 minute even though I am running the motor below it's rated voltage?
5) Why did my earlier transistors in the 20V case went up in smoke since current = V(20 Volt) / R (25 Ohm) would result in 800mA which they are rated for.

I'd really appreciate any help on this matter :)


Where are the obligatory flyback diodes?  A motor winding is an inductive load and you must protect those
transistors from the kick-back.
[ I will NOT respond to personal messages, I WILL delete them, use the forum please ]


Hi Mark,

I thought those were included in the BD139 package, but I could add them to protect the resistors anyways.
I should place them from collector to emitter, blocking the current from collector to emitter, right?

Could that be the source of my problems regarding the motor temperature?


I always, always... use Darlington Transistors with built in snubbing diodes, for driving motors.
HFE ~1000

PNP   http://www.redrok.com/PNP_Darlington_TIP127_-100V_-5A_Hfe1000_TO-220.pdf
NPN   http://www.adafruit.com/datasheets/TIP120.pdf       
No technical PMs.
The last thing you did is where you should start looking.


me too,those were included in the BD139 package, but I could add them to protect the resistors anyways.thank you


I can't see any referance to diodes in the BD139 data sheet.

I think your data sheet is not the right one for the motor you have.



Edit: I Misinterpreted the current gain. It's not expressed for Ib but for Ic. Basically 5mA will do fine on the base, but 22mA is no problem either :)

Current gain isn't relevant here, you are using the transistor as a switch so you
want the section of the datasheet showing Vsat against base drive for various
levels of collector current.

gain is for the linear region (collector > emitter voltage + 2V or more)

Vsat (saturation voltage) is what determines the performance as a switch
and you want it as low as practicable to reduce heat-dissipation as you
seem to have discovered.  For 800mA load try 60mA drive (ie more than an
Arduino can supply)

Unless you go for a modern super-beta device you'll find base drive is normally
0.1 x collector current for switching transistors.
[ I will NOT respond to personal messages, I WILL delete them, use the forum please ]

Go Up