1. OCAU Merchandise is available! Check out our 20th Anniversary Mugs, Classic Logo Shirts and much more! Discussion in this thread.
    Dismiss Notice

Running a 6V DC motor using transistors

Discussion in 'Electronics & Electrics' started by LevPewPew, Jan 19, 2011.

  1. LevPewPew

    LevPewPew Member

    Joined:
    Feb 12, 2010
    Messages:
    8
    I'm trying to implement a simple 6V DC motor and have tried using the following schematics to do so, using an arduino microcontroller to control the transistors,

    Simple transistor switch:
    [​IMG]

    H-bridge:
    [​IMG]

    They both work fine if I replace the motor with an LED to test it, and the motor works fine when simply connected to a power source be it batteries or the arduino, however whenever I involve transistors like in these two different schematics, the motor simply does not run.

    I have tried all combinations of 5V(arduino), 6V(cell) and 9V(arduino with 9V battery supply) for all power rails, supplies and transistor switching.

    I've tried using both BC547 and 2n2222 NPNs and use BC557 PNPs for my transistors.

    Any help in understanding why a transistor has this effect or what I might be doing wrong would be greatly appreciated.
     
  2. Goth

    Goth Grumpy Member

    Joined:
    Jun 22, 2002
    Messages:
    9,228
    Location:
    /dev/null
    Do you need to turn the motor only in one direction, or in both directions controlled by software?

    If the former, you only need one transistor, if the latter, you need a H-bridge.

    Your first schematic is good, almost.

    The pin of a transistor which is drawn on the schematic with the arrow is the emitter, but you've got it labelled as the collector.

    It should be the emitter which is connected to ground on your circuit.

    If your motor is connected to 5 V on the Arduino and it's plugged into a PC, it might be drawing too much current and tripping the USB host overcurrent protection.

    A NPN transistor such as BC547, PN100, BC548, 2N2222 or 2N3904 should be perfectly suitable here.

    Building a H-bridge that works when you've got 4 transistors, and your motor runs at 12 V or some higher voltage and your microcontroller works at 5 V is a little bit tricky, you need to know what you're doing to get the transistors biased properly on the high side, and usually you need an extra two transistors to switch the PNP transistors.

    http://forums.overclockers.com.au/showthread.php?t=900992&highlight=H-bridge

    http://forums.overclockers.com.au/showthread.php?t=762014&highlight=H-bridge
     
  3. OP
    OP
    LevPewPew

    LevPewPew Member

    Joined:
    Feb 12, 2010
    Messages:
    8
    Yeah I didn't even notice it was labeled wrong lol, I just worked with it in the way you described.

    I'm not using USB power at all at the moment, I am just hooking up a 9V battery to the arduino as it's power supply.

    Ok yeah I had a feeling there was some problem with not being able to actually bias the transistors once the 6V DC motor is hooked up, I will browse through the two threads you linked me, thanks for your help. I'll post an update(s) if I make any progress.
     
  4. OP
    OP
    LevPewPew

    LevPewPew Member

    Joined:
    Feb 12, 2010
    Messages:
    8
    Hmm I have placed the two extra NPNs to switch my PNP transistors as those threads have suggested and for now i am just using batteries for testing (no microcontroller), with 6V as the source and 9V for switching and I still have the same problem, LED turns on fine but as soon as i try use the motor as a load nothing happens.

    I'm using 1kΩ resistors on the transistor bases and my supply is 9V so there is (9-0.7)/1000 = 8.3mA going to the bases, which should be more than enough to turn the transistor on.

    Is the motor somehow reducing current? This is all I can think of to explain why an LED works but the motor does not, if somehow there was not enough voltage the motor would simply be slower than I would like, rather than not turn on at all.

    This is my current configuration:
    [​IMG]
     
    Last edited: Jan 20, 2011
  5. aXis

    aXis Member

    Joined:
    Jun 27, 2001
    Messages:
    5,548
    Location:
    Kalgoorlie, WA
    There is no set "turn on" for BJT transistors. For the type of control you are after, you have to reach "saturation". I bet your current is too low and you are acting in the linear region whereby the transistor has a large voltage drop across it (somewhat like a variable resistor).

    Basically look at the transistor specs and find it's gain (hfe) at the typical current you are using. It will generally be smaller than the small signal gain - eg in the 10's. Then divide the motor current by that gain to work out the base drive required for saturation.

    For high current loads such as motors it can take a fair bit of base current, which is why it's often better to use MOSFET controls. Unfortunately you'll need special logic level MOSFETS as regular ones wont turn on properly at 5V.

    Also, in your first circuit you should absolutely definitely have a protection diode reversed biased across the motor, otherwise when you switch it off a large EMF will be generated and blow your circuit.
     
  6. OP
    OP
    LevPewPew

    LevPewPew Member

    Joined:
    Feb 12, 2010
    Messages:
    8
    The motor is rated for 250mA (no load) and 810mA(max efficiency) (I'm not sure which one to use here so I will do worst case scenario) and the smallest hFE amongst my transistors is 75.

    Therefore 0.81/75 = 10.8mA is the base drive required for saturation.

    I changed the 9V battery to using a power adapter that supplies 9V at 500mA so that I could be sure of the current. Even still the motor refuses to turn on. :upset:
     

Share This Page

Advertisement: