Controlling field coil current of an alternator by sensing its load current at o

Hey Everyone,

I am trying to do a senior design project in which i will remove rectifiers from an alternator to replicate a small scale AC Generation plant. This alternator will be produce an AC voltage to a load. I plan to have a hall effect sensor which reads magnetic field generated the the current passing and send a voltage output proportional to it. I want to be able to send this voltage to an arduino duemaliove board and have it control the current to a certain level. If it is not up to that level. a voltage will be outputted from the arduino to a voltage amplifier (Darlington transistor) and increase the current sent to the feild coils of the alternator thereby increasing the voltage generated. I am curious to of the does this arduino board meet this standard and feasibility?

Thank You,


Yes, that sounds perfectly doable. However the frequency of the AC current might be an issue - some ‘AC’ hall sensors are for 50/60Hz only and the general purpose ones have a frequency limit. I think alternators are typically run quite fast so frequencies could be quite high.

The Arduino is up to the task but I'm wondering about your other components. Rather than a Hall sensor sensing the current's magnetic field why not just read the current directly using something like an Allegro ACS712 (or device in that category). A nice, isolated current sensing device with a fairly high bandwidth so could keep up with alternators faster than 60 Hz.

Also the whole "Darlington transistor voltage amplifier" sounds sketchy. How much current are we talking about here? What exactly is the interface to the alternator? Do you have a motor driver for it or are you going to roll your own?

-- The Gadget Shield: accelerometer, RGB LED, IR transmit/receive, speaker, microphone, light sensor, potentiometer, pushbuttons

The alternator is driven by a dc motor which is powered by a brute force power supply. The alternator is going no more than 500 rpm. I will look up the Allegro as you have recommended to sense the current through the magnetic field. I characterized the alternator by applying a dc current to the field coil and measured the Voltage (E) generated by connecting a multimeter to the 2/3 taps coming off the alternator. The total amount of current i fed the coils was 7 amps and it produced about 24 volts AC voltage. (See first Image)The whole concept is the following, I want to be able to read the current at the load ( a variable load for that matter) with a hall effect sensor because it will not consume power from the line since it is isolated. By reading the current at the load i want to maintain a reference current no matter how much the variable resistor load changes.

The idea is to read current at the load . Send that data to the arduino to be sampled and the board will see this value and match it against a set current we would like to maintain (reference current). If it sees the value drop to say…4amps and the reference is 7 amps. It will send and output voltage of 5 volts and a maximum of 300mA is what i believe the arduino boards can output. This current will be sent to an op-amp for priming and feedback. An op-amp can output a maximum of 20mA of current so for safety we will only control it to output 10mA and then feed it to a darlington transistor. The Op-amp is connected to the darlington transistor. The output of the darlington will be used to interface with the field coils of the alternator AND also serve as feedback to the op-amp. I need a maximum of 7amps running through the load based on the characterizing i have done. The darlington transistor pair i have purchased will give me a gain of High DC Current Gain : hFE = 1000 @ VCE = 4V, IC = 5A (Min.) I hope this makes sense, and please if you see any flaws in my methods please let me know.

Thank you all in advance for taking the time to help me with this project, it is greatly appreciated. I have attached images of the field coil current vs the voltage produced from the alternator by it. Then i have two snapshots of the opamp and darlington pair configuration.




Things are mostly OK but your Darlington idea is a recipe for fire. You didn't mention the power source for the DC motor. Your scheme is dropping part of that voltage in the motor and the remainder in the Darlington. The more that is dropped in the Darlington, the less voltage the motor sees and the slower it spins. Is this the plan?

This is a bad plan. Think about how much current is flowing through the Darlington transistor, how much voltage is dropped by the transistor, then multiply the two. That is the transistor's power dissipation. Anything over 1W-2W or so and you will either have to invest in some serious heatsinking or a fire extinguisher.

Generally DC motor power is controlled through PWM. Either apply power fully on to the motor or fully off, at a "high" frequency (over 200 Hz or so) and the duty cycle of the on-time controls average power to the motor. By turning a transistor (MOSFET's are recommended at higher currents for lower power dissipation) you minimize heating in this switching element.

-- The Aussie Shield: breakout all 28 pins to quick-connect terminals


The plan is not exactly as how i portrayed, let me try again.

I meant to say that the alternator is being driven by a dc motor. The DC motor in turn is powered by an external power source. You see, I'm trying to replicate an AC generation system. So the external power supply which powers the DC motor is suppose to simulate a steam turbine being spun at a constant rate never changing in a plant. Therefore no voltage will be dropped by the motor because it is not really part of my control circuit.

Also I'm not trying to drop all the voltage on the darlington, what I'm trying to do is have the arduino output a controlled voltage to a linear voltage amplifier, in this case a Darlington transistor which has a high current gain. Therefore i can send the appropriate current from the arduino to the op amp pictured above which in turn then will be fed to the darlington for a appropriate current gain. once this gain is ample it will be fed to the field windings of the alternator. when the alternator get this rush of current it will be able to generate a bigger magnetic field as its rotating inside (or smaller depending on if there is enough current at the load or not), and the bigger the magnetic field is, the more voltage will be induced into the coils which will increase the voltage outputted from the alternator. And that is how i intend to control the amount of voltage outputted by the alternator by measuring current at the load.

Not by dropping voltages along the darlington. I hope this is more clear, and once again thank you.

[Therefore i can send the appropriate current from the arduino to the op amp pictured above which in turn then will be fed to the darlington for a appropriate current gain. once this gain is ample it will be fed to the field windings of the alternator.

OK, my mistake. But you must stop thinking about the Darlington as purely "current gain". It does have a voltage drop, whether you would like it to or not. This product of voltage drop and current through the Darlington is power loss in the Darlington.

You say you need alternator field windings of 7A? Look at your TIP140 datasheet (first page) for the parameter named VCE(sat) "Collector-Emitter Saturation Voltage". This is the voltage dropped by the Darlington, and it varies with current. The datasheet specifies 2V at 5A and 3V at 10A so let's ballpark 2.5V at 7A for your alternator field.

Then, your Darlington will dissipate 7A * 2.5V = 17.5W of power. For about 1-2 seconds. Then you reach for the fire extinguisher.

Now if you strap your TIP140 to a hulking heatsink (thermal resistance of 5 C/W or less I'd say) or a big block of aluminum the heat might be managed and the transistor might survive.

For a frame of reference, look around your uni lab for power sources. Which ones can supply 7A? How big are they? Do they have fans? You cannot simply replicate what they do with a single transistor.

-- The Arduino Drum Machine: MIDI development system with 14-track MIDI drum machine sequencer / groove-box software

I think i also forgot to mention that the Darlington pair will also also have a power supply powering it with 15 volts so that i can use this external DC power supply . I understand now about the issue of too much power being dropped through the would cause a big fire issue. What if i just scaled my amperage requirements down? won't that lower the heat build up? Say for example i will use up to a maximum of 1 amp to power my alternator coils. Then that will still generate 9 volts of E in the open circuit test. so the voltage drop for the darlington will then be, lets see if its 2v at 5 amps then the ratio is .4? so it will gie .4volt drop at 1 amp then i would dissipate 1amp at .4 volt = .4 watts. This shoud relatively clear up my issue then right? If i make these adjustments would i be able to design all the circuitry to work with the arduino uno?

I hope i did the calculations right i'm low on sleep because i'm trying to do this senior design project and manage a 17 hour courseload at school and 3 on campus jobs.

Thanks for your help,


If you scale your amperage down to 1A it should be a lot more manageable. Take a look at Figure 1 in the TIP140 datasheet -- it shows you how much voltage is dropped (on average) as a function of collector current (1A) and current into the base. Supposing you saturate the base sufficiently (Ib>=100uA or so) then I'd expect a voltage drop of about only 0.7V based on that graph. That's 0.7W of power dissipation which should get the transistor up to about 70C-80C. Too hot to touch but still well within its operating limits.

-- The Quick Shield: breakout all 28 pins to quick-connect terminals

Hmmm so if I buy a heat sink then i should be able to control the heat factor. The maximum input current i can supply the base of the darlington is 10mA anyways (because an op-amp can safely output a maximum of 20mA, so i use half of that for safety =10mA. If i want to maintain a current of 1 amp maximum to the field coils then my drop in power is kept under control. Do you think this project as a whole is plausible now?

I’m waiting for my transistor to arrive. I also need to purchase a used alternator because the one I have crapped out on me. So do you see my project as a whole working with the arduino board as a current adjuster?

So lets look at the internals of the arduino board and see how it can match my specifications. If I was to feed the output of a hall effect sensor to an input port of the arduino then i can determine how much current is running down the load. It would probably be better if i can read voltage but that would eat some power in order to do so. So i won’t.

The arduino will read this current and compare it against a set current value load. if it is not up to this value it will determine how much current it will need to send to the output port which will then be amplified by the op-amp and darlington transistor. The darlington will then amplify the output current and send it to the feild coils to increase the amount of current thereby increasing the size of the magnetic feild and then that will induce a bigger flux, thereby increasing the voltage at the load.

What do you think?

Thank you

Yes, your project sounds plausible now. I would go back to the idea of reading voltage to measure load current if you can. It will not "eat" nearly as much power as you think if you use a voltage divider with high-value resistors. If, for example, you expect up to 24VDC out (after rectifying) then a voltage divider formed with a 10k resistor and 56k resistor will map 33V to 5V at the Arduino A/D input and will only dissipate 17mW of power in the voltage divider. No need for a Hall sensor.

The software running on the Arduino is going to have to guard against oscillation in the system. Have you studied feedback control theory? If not, just think about not adjusting the current too often else you'll end up oscillating everything.

-- The Rugged Motor Driver: two H-bridges, more power than an L298, fully protected

Rugged, Don't forget, the the alternator already has its rectifiers removed. Its actually going to output probably a maximum of 9Volts AC because i intend to have the darlington only give a maximum gain of 1amp of current to the field coils. In addition I don't think i can use a voltage divider because this method will only work if i know the values of the resistors to be constant.

But in a real AC system, the resistor which is suppose to simulate the consumer load is always varying. therefore how would i be able to read the voltage if the resistance is always varying between a voltage divider? is there anyway around this? or should i just simplify my circuit and not have the resistance vary? but then this will take one important function of this project and throw it out, the abillity to manage the output AC voltage from the alternator no matter how much the load varies.

I have taken control systems and it seems i agree that if i adjust the voltage too often, then it will eventually oscillate everything like you said. So i intend to sample every say... every 30 seconds perhaps?

I've also included a picture of my planned with the voltage divider as you have mentioned just so you can get a bigger picture of what i'm trying to do. I hope there is another option if the resistance varies.

i cant seem to post the picture up even though its 1280 kb

There are two resistors (actually three), one which simulates the load and varies (and hopefully is rated for high power), and another two-fixed-resistor voltage divider which simply is used to measure the voltage across the load, and sends its center node off to the Arduino for measurement. I think that's what you're aiming for.

I think a 30s adjustment interval might be a little unimpressive. I was thinking more on the order of hundreds of milliseconds but then again I don't know the step response of your system (nor how easily impressed your instructors are).

-- The Gadget Shield: accelerometer, RGB LED, IR transmit/receive, speaker, microphone, light sensor, potentiometer, pushbuttons

I agree thats what i am aiming for. Should i use a ball park range of 100mSeconds? How can i find the step response to my system.

I’m trying to work out the circuit you recommended for me, it seems that if there is no voltage generated at the AC Alternator output then there will be 0 volts being fed to the arduino (whether or not the variable resistor varies), therefore a program inside the arduino will realize that this value means there is no power being generated. So it will send and output voltage of which is proportional to the current. This current should be 1mA because if my darlington gives a current amplification of 1000 based on the Data sheet, then it will send 1mA * 1000 = 1Amp of current to the field coils to thereby generate the proportional 9 volts, (not considering how the resistance will then play a factor in decreasing this voltage) but then the microprocessor will then detect voltage at the divider again and get a reading of a higher voltage. If the variable resistor which i will be just using an 11 ohm variable power resistor changes, then the voltage outputted to the arduino will still be slightly lower.

The only relation i can find is

if output of arduino port = 1mA then i know im generating 9 Volts AC at the alternator. Also if the voltage divider outputs 5 volts to the arduino input board. Then i know the variable resistance is at 0 ohms.

maximum power dissipation from that voltage divider is (V^2)/(Variable resistor max = (9^2)/(11ohms + 12.5ohm+10 ohm) = 2.47 watts.

A thought: You could use PWM to drive the field windings, and with a beefy MOSFET output only a small or no heat sink would be necessary. You would have to find a good frequency to run the PWM at - the Arduino default might be too low (although field coils tend to be high inductance and smooth current rather well.

So instead of the darlington transistor you will just connect an Mosfet (what type of mosfet) Pmos? Nmos? to the output of the arduino? then this current will be amplified? Is this solely for the purpose of avoiding heat generation?