I'm planning on making a H bridge for reverse motor control, so to get started, I bought a few transistors to play with. For reference, the transistor has BC546 written on its flat part, so shoving that into Google brings up this datasheet:

http://www.datasheetcatalog.org/datasheet/philips/BC546_547_3.pdf

My first plan (just to get the hang of working with transistors) was to have the positive lead from my 9v battery connected to the collector, the base connected to pin 6 from the arduino, and the emitter connected to one end of the motor. The remaining ends of the motor and the battery both go to ground, which goes to the GND slot in my arduino. I anticipated that switching the battery on without powering the arduino whatsoever would have no effect on the motor, since the lack of current flowing through the base would not allow any current at all to flow through from the collector to the emitter, and then to the motor. Conversely, sending a signal down from the arduino to the base (with the battery on) should have turned the motor on due to the current flowing into the base.

However, I noticed that even when the base was NOT connected to pin 6 and both grounds from the motor and the battery were also not connected to the arduino, (in other words, the arduino is completed separated from the circuit) the motor begins to turn at some frequency when the battery is in the 'on' position. That is, instead of continuous power, the motor turns on, then off, then on, and so forth. I approximate the time between consecutive ons to be between about 0.4 of a second.

This makes absolutely no sense to me, because at school I always thought that no current would flow through from the collector to the emitter if no current flowed through the base. So if anyone could shed some light on this issue, it would be greatly appreciated.

I apologize for an incomplete post, I have edited it to make a little more senseIt would help your attempt to have tried some of the examples provided in your IDE.. First. Doing so gives you a familiarity with properly using a port pin, the processor pins are Not indestructible. It's a good idea to follow some of those sometimes silly little exercises - Understand that they are there for a good reason and follow as many as you can find parts to do so... Do them and understand why they work - This is really important as it is both microcontroller training, it is electronics training, it is Programming training And it is what you need most to work well with the Arduino product.What I was trying to say is it is a good idea to get some familiarity with basic electronics first. Your connection to the Arduino was not the proper method to drive a transistor which is what Patduino was trying to point out. Your issue with the transistor conducting was most likely a floating base lead that is picking up a stray signal and conducting. This was in part why I advised you to study some basics first. Make a drawing (it's good practice and a good thing to learn to draw schematics) so you can post it here for commentary. I apologize for my rather terse note in the beginning... BUT you still need a little electronics training first. You have some data from an experiment and no way to understand it without some more training. There is an application called Fritzing that can be downloaded free from this forum that will help you with the schematic drawing and for making drawings of breadboards as well.{Heavily Edited RKJ}

Bob

--> WA7EMS "The solution of every problem is another problem." -Johann Wolfgang von GoetheI do answer technical questions PM'd to me with whatever is in my clipboard

You'll need to include a 1k or 2.2k resistor inline between the GPIO pin and transistor base to limit current flow. (These are common values you should be able to use for all of your future projects as you get the hang of them...)

The intermittent operation you describe is most likely caused by the fact that the voltages are floating - not tied together, and varying enough to trigger the transistor switch.

Pat

There are 10 types of people in the world, those who understand binary, and those that don't.

My problem is that even when the base is NOT connected to the arduino, the motor is still turning intermittently when the battery is on. @Patduino, dhenry: I thought it was some kind of interference, could you please elaborate more, or perhaps link me to a page where it explains what is going on? I'm not exactly sure what voltage floating is. Also, advice on how to stop this would be appreciated.

To add to the confusion, a short while ago I attempted the circuit again, however, this time I attached the transistor base to arduino pin 7, and both the grounds (the negative battery end and the ground motor end) to the GND pin on the arduino.

Circuit here: http://imgur.com/mrmPv

My first impression was that this circuit was working, that is, sending a signal down pin 7 (digitalwrite(forw,HIGH)) made the motor turn on, whereas sending a LOW signal down pin 7 keeps the motor off. However, when I switched the battery off, the motor kept turning under the command of the arduino, meaning that this entire time, the motor was being powered by the signal from pin 7 instead of the power from the battery!

The problem is your are using the npn transistor improperly to switch the motor, both the collector and base current flow thru the emitter, so the base drive current is apparently powering your small motor, what you need to do to properly switvh the motor is to connect the motor + to the battery positive, the motor - to the transistor collector, and the transistor emitter to the battery -then connect the battery - to your arduino ground, and wire a resistor between the transistor base and the arduino pin, now when you output high it will turn on fully, and turn off fully when outputtting low

For more information on using the transistor just google transistor as switch and you will find various schematics on the proper wiringjust remember your transistor is npn(switches negative), which is different from pnp (switches positive)also because you are driving a dc motor you should have a flyback diode(google that too for examples) to prevent damage to your transistor

First, those transistors have typical gain ranging from 150 - 270. This means almost any EMI in the area will cause the transistor to turn on, at least a little. The base needs to be connected to something, so the first circuit is a no go. 2nd, the next circuit you show is also a common collector circuit, which is probably not ideal for your needs, and it would need to have a base resistor to limit the base current. Setting it up as a common emitter would allow you get a little more potential across the motor too. Finally, the transistor is not up to the task of running even a tiny motor. You almost certainly need a bigger transistor and I would recommend a Darlington arrangement which is basically 2 transistors, althogh you can buy power Dalingtons in a single device.

See the attached schematic. It will handle a motor that draws up to 10A and is pretty cheap.

@Patduino, dhenry: I thought it was some kind of interference, could you please elaborate more, or perhaps link me to a page where it explains what is going on? I'm not exactly sure what voltage floating is. Also, advice on how to stop this would be appreciated.

Connect a 10k resistor from the base to ground. That'll keep the base voltage 0 when not connected to the Arduino. It's a good idea to keep it there even when it is connected. Voltage floating just means that the base isn't tied directly to any voltage source, so the voltage fluctuates in value, sometimes it has enough to trigger your transistor. The 10k pull-down resistor will tie it to ground so it won't do that. Google pull-down resistor for more. This is a very common problem.

Also, when you connect the Arduino GPIO pin to the base, put a 1k resistor in between them.

There are 10 types of people in the world, those who understand binary, and those that don't.

... I would recommend a Darlington arrangement which is basically 2 transistors, althogh you can buy power Dalingtons in a single device.

See the attached schematic. It will handle a motor that draws up to 10A and is pretty cheap.

1. The flyback diode is on the wrong place in that schematic, it doesn't protect the transistor when the motor switches off. For that, you need a flyback diode connected in parallel with the motor.

2. IMO darlingtons should almost never be used, because they have high saturation voltage. If the motor draws a substantial current, this results in a lot of power being dissipated in the darlington, so it will get hot and need a heatsink. A power mosfet is a much better solution in such a case. If the current is not so high (say 500mA or less), then a single transistor will do the job more efficiently and with less heat generation than a darlington, especially if the transistor is a high gain low saturation type such as the ZTX851.

Formal verification of safety-critical software, software development, and electronic design and prototyping. See http://www.eschertech.com. Please do not ask for unpaid help via PM, use the forum.