I have a small motor, it powers fine from the 3V3 and GND output of the arduino nano ble 33. However I need to be able to switch it on and off. My first attempt was to use an output pin, but that doesn't supply enough power. I'm trying to use a 2N3904 transistor (my first time attempting to use one, so sorry if I've done something stupid). I've tried wiring it as follows, but no luck:

enter image description here

Is this possible, or do I need something more substantial like a reed switch?

  • electronics.stackexchange.com/q/77262/6680 Commented May 26, 2021 at 18:41
  • 1
    The motor draws 100 to 200 mA. From Figure 16 of the 2N3904 datasheet, the 100 mA curve shows an Ib of 10 mA and Vce of 0.35 V. This voltage drop is a large percentage of the supply voltage which reduces the voltage across the motor to 3.3 - 0.35 = 2.95 V which is at the limit of its specification, so consider using an N-channel MOSFET which has a much lower voltage drop across drain-source. Also, the motor requires a reverse-biased protection across its terminals.
    – tim
    Commented May 26, 2021 at 19:37
  • If you use Logic Level UIS (Avalanche) rated MOSFET (check Vgs to be sure it is on) you will not need the diode. Remember the Arduino a Power Supply it is NOT! If you keep using the 3V from the arduino put more on order you will fry it in due time. I would guess you blew the gate of the 2N3904, you need a current limit resistor in series with the micro to base.
    – Gil
    Commented May 26, 2021 at 19:47

1 Answer 1

  • 1st : you have to put an appropriate resistor between the output of your arduino and transistor Base pin

  • 2nd : you have to connect you motor and biased transistor to >>>> a suitable power supply (which has enough current (Amps) on it's output)

you can use this circuit instead of yours :

enter image description here

  • 3rd : don't forget to use the diode in the schematic; it protects transistors from you motor coil's spikes you can use 1n4147 ( it depends on the size of your motor but i think, it works for you ( i wasn't successful to take a look at your motor and it's specifications )

  • 4th : ignore the number of transistor, you can use your transistor (2N3904) instead of it

  • 5th :NOTICE : this circuit has a problem, you have to connect appropriate power supply and replace "arduino 5 volts" by the + of your power supply in this circuit schematic

good luck

  • If you are an electronic engineer, don't use an eletronics circuit that you grab from internet that has everything wrong with the design. 1) the resistor is too high, with the value, the Ibe is only (5-0.7)/10000=0.43mA, assume the DC current gain is 50, it will only capable of produce Ice of .43x50 = 21.5mA even with a correct 2N3904, this is more designed for driving a single LED, certainly not sufficient to drive a motor. 1N4007 is a retifier with very slow recovery time, not design for rapid recovery.
    – hcheung
    Commented May 27, 2021 at 4:20
  • I mentioned that he can use appropriate resistor, and for diode, you are right, i edited the answer,i forgot this problem of 1n400X series, he can use 4147 one or others. As i said, he can use the appropriate values of resistor, i just take him an overall vision of his/her problem's solution Commented May 27, 2021 at 5:46

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.