Controlling DC-motor with arduino

Hello, I am new to this forum and also using Arduino so I hope that you all can bear with me and maybe give me a nudge in the right direction. I have a little project that I am working on but something is wrong. I am trying to control a small DC-motor with my arduino but for that I need a bit more voltage than what my Arduino can supply. I instead have a 9v battery and by using a transistor (PN2222A) I can controll the motor with the desired power.

Now here is my problem, when I am controlling the DC-motor with my transistor the motor is less powerfull and easy to stop by just putting a finger on it, but when connected directly to my power supply it is much stronger. As far as I know everything is correctly connected, the transistor should be able to withstand 40v and 800mA and nothing is broken.

I have attached an image of my circuit (please note that it may not be perfect).

My transistor also gets very hot, is that normal?

I hope that this is enough info for someone to get a grip on what I might be doing wrong, any help is appreciated. I also hope that I am posting this in the right location but maybe a mod can move this if it is wrong. Thank you! :smiley:

If you measure the current going to the motor, you can probably answer the questions.

Paul

Please post a link to the motor.

9V batteries are intended for smoke alarms, and are totally unsuitable for motors. Likewise, the PN2222A is not capable of handling the current required by most motors.

One recommended method for unidirectional motor control employs a logic level MOSFET, like this one, as shown below. Don't forget the inductive kick diode, required to protect the control element from high voltage spikes.