Using a digital signal to turn on and off a vibrating motor


I'm designing a circuit with the IOIO-OTG board and a vibrating motor. The idea would be to have a digital pin on the IOIO board control the state of the motor (either ON or OFF).

The motor operates from 2.5 to 3.8 volts and the IOIO-OTG ports provide a 3.3 or 5V digital output (up to 5V if you use a drain circuit).

My current understanding is that I should be able to do something like this:

IOIO port @3.3V -> resistor -> motor @3V -> ground on IOIO

However, from what I'm reading, I should use a transistor and have the digital pin connect to its base. I remember from my electrical engineering classes that a BJT can be used as such a switch. However, I have a few questions regarding this:

  • What is wrong with my original implementation above? I assume it has to do with the safety of the board.
  • Is the proper implementation one with a transistor?
  • Are there any best practices I should be observing to protect the motor and the board for my little project?

Best Answer

Whether you need a transistor buffer or not will depend on the current capability of the IOIO-OTG board, and the current requirements of your motor.

A quick look through some of the IOIO_OTG documentation didn't reveal any IO current spec, but a photo of the board just shows one chip - presumably the PIC microcontroller, so I would assume the board can only safely drive a 20 mA load. I would expect any motor to require more than 20 mA so you will almost certainly need a transistor buffer to control it.

Related Topic