Seeking help, Current source(100 Hz to 1 MHz,0.2 to 0.5 mA)

dayusimon
Hi,

I want to build a current source capable of generating pulsed-DC current (unipolar square wave) and pulsed-AC current(bipolar square wave) .

The current frequency is from 100 Hz to 1 MHz.
The current amplitude is from 0.2 to 0.5 mA. (1 uA resolution preferred)

Seperate solutions for pulsed-DC or pulsed-AC current sources are also welcome if a single solution is not possible.

The resistive load is 0.5K to 2K ohm.
(The load behaves as a variable resistor. Its resistance increases up to Mega ohms with time. However, I only need to measure its resistance between 0.5K and 2K ohm. Please take this into consideration in the design of the current source. We also want to know if something like two back-to-back zener diodes in series with the load which limit the voltage and bypass the current would work. )

yungman
I cannot think of an easier way, this is what I have. This is a concept, not necessary a working circuit yet. This is a bipolar current pulse circuit that is programmable. This is not a small project, a lot more thinking has to be put into make it work. I am not going to guarantee this will work nor it's the best way, just an idea to start, anything more, I need to get pay!:rofl:

154613[/ATTACH]"]

Currents are generated by the two controlled current source. One suggestion of current source is shown using an opamp and Q5. This is to generate the -ve current source adjustable by the voltage across R as shown. You are going to have to generate the Vc that is reference to -V.

The pulse current is generated by differential pair made up of Q3 and Q4. Q3 is to steer the current. If the input of Q3 is 0V, Q4 will be turn off. But if input of Q3 is less than -5V, Q3 will be turned off and the Q4 will conduct the current from the current source below to the output. The +ve side works the same.

I use enhancement mode MOSFET instead of BJT so I don't have to worry about base current that cause inaccuracy. Also I don't have to worry about base-emitter diode voltage break down when switching. Use small signal MOSFET to avoid excess output capacitance. JFET might also work, you just have to work out the voltages, the driver and all.

If I can think of an easier way, I'll come back. But you are asking a lot and don't expect to have anything easy. This is going to be a project by itself, not exactly an ingenious little circuit with some fancy trick.

For 1uA resolution, you need a 12 bit DAC to get the accuracy even though the resolution is only 1/1000 or a 10 bit DAC. You can get away with 10 Bits data, just ground the 2LSB to guarantee accuracy.

Attachments

• 2igghnn.jpg
17.2 KB · Views: 1,002
Last edited:
dayusimon
The circuit you share should work but it seems too difficult for me. Because I am a newbie to electrical engineering, I need a simple solution where as less components as possilbe are used.

I wonder if I can build the current source with a DDS function generator(like AD9833/5), a Low Pass Filter, an amplifier and an improved Howland current pump, as shown in the attached figure. Can it work?

I am also confused by these issues.
Should I just use a basic improved Howland current pump without A2 and A3 OP-AMPs?
Can I use zener diodes in series with the load in case that the load resistance goes beyond a certain value (several K Ohms)? If so, how to choose zener dioes?
What LPF ic should I use?
How to choose OP-AMPs for the amplifier and Howland pump?
How to stablize the amplifier and the howland pump?

There are many things I don't know about the current source. Please point out any error or potential problems you find. Your advice are greatly appreciated.

Attachments

• basics.png
15.2 KB · Views: 773
yungman
The circuit you share should work but it seems too difficult for me. Because I am a newbie to electrical engineering, I need a simple solution where as less components as possilbe are used.

I wonder if I can build the current source with a DDS function generator(like AD9833/5), a Low Pass Filter, an amplifier and an improved Howland current pump, as shown in the attached figure. Can it work?

I am also confused by these issues.
Should I just use a basic improved Howland current pump without A2 and A3 OP-AMPs?
Can I use zener diodes in series with the load in case that the load resistance goes beyond a certain value (several K Ohms)? If so, how to choose zener dioes?
What LPF ic should I use?
How to choose OP-AMPs for the amplifier and Howland pump?
How to stablize the amplifier and the howland pump?

There are many things I don't know about the current source. Please point out any error or potential problems you find. Your advice are greatly appreciated.

This is an interesting circuit. This one should work if you can accept the lower output impedance. As long as you realize it is not a true current source. The trancient output impedance is R2B instead of very high impedance like the one I gave. The one I have has output impedance way into the MΩ. Also it is capable of much higher speed. It is much closer to a true control current source.

In normal operation, if you want 0.5mA, R2B usually has to be about 30KΩ or under for +/-15V power supplies. If you use very high voltage opamp, you can increase to say 300K by using +/-200V supply and use amp from Apex, those are going to cost a lot of money each and you are pushing the edge of 1MHz if you can even get there.

So if you can accept 30KΩ output impedance, you can do it. be careful on stability though as you have multiple opamp in the loop. You need to use opamp at least about 5MHz BW to get the speed. I don't see the need of A2 as the output impedance of A1 is quite low and more than capable to drive R4. So you only need 2 opamp.

Staff Emeritus
It sounds as though you already have a design in mind. Maybe you should buy an off the shelf function generator, concentrating all your effort on building the transconductor, especially if this is just for short-term testing. A google search would be canny, unless you wish to reinvent the wheel. Accuracy, resolution, and stability may or may not be considerations.

I haven't read this, but it looks like a good start.
http://www.ti.com/lit/an/snoa474/snoa474.pdf [Broken]

Last edited by a moderator:
dayusimon
Thanks for replies and the technical note provided by NascentOxygen.

The MOSFET idea is good. Some current-source circuits do use switches to get AC current with frequency up to KHz easily. But I am not sure if the ciucuit works well up to Mega Hertz because I cannot understand the working principles of Q1 to Q4 MOSFETs.

An improved Howland pump has a very large output impedance (ideally infinite) if correct resistors are chosen. eg. (R2B+R2A)/R1=R4/R3
The amplifier before the Howland pump scales the output voltage from the DDS function generator down to a suitable range( ~40 mV), so a small resistor (100 ohm) will be used for R2B to get ~0.4 mA current. And the output current should be independent on the power supply of the Howland pump as long as the supply can drive the load sufficiently.
A2 and A3 are used to reduce the error caused by very small current through R2A and R4 in the original 'improved Howland circuit'. However, I am not sure if I should use them for stability concerns.

Please give me hints on possible risks and corresponding solutions for the DDS-based plan.
I can only handle very simple circuits, so please use as less components as possbile.
Thank you very much.

yungman
Watch out the current created by negative feedback like your circuit. From my understanding, your current is done by a voltage source feeding back by sensing the voltage across R2B to create the current. It is only high impedance IF the loop gain of the circuit is high. When you run out of loop gain, the impedance at the output goes lower and lower. The only thing you can count on is the resistance of R2B. You are asking for 1MHz, that is not low for a closed loop feedback control system and you need to be careful about the poles and zeros and the speed of the opamp. Also, any closed loop feedback circuit has settling time concern. You need to get into control and stability estimation either by using Bode Plot or using LaPlace Transform. We have a resident expert here in the forum on closed loop feedback...Jim Hardy if he is around here today.

This kind of current sensing feedback type of circuit is commonly used in commercial current supply where it is a voltage supply with voltage controlled by the current from the output. These are not really current source when frequency goes up. That's the reason I mention you need to use high speed opamp to keep the loop gain high.

I don't know your application as you never described it. So when you asked for a current source, that's what I gave you. But if I know more about what you are driving, then I can start pushing the limit ( lower the output impedance) and make the circuit a lot more simple. You also need to specify the settling time requirement on top of the frequency. Or else, even if you can switch at 1MHz, the current level never settle down to have a stable value. Control system designer need to know this to design the closed loop. I do closed loop controlled system, but I am not an expert, I just get the job done, nothing to write home. I'll let expert like Jim Hardy and others to help you on your circuit.

In my design, the precision of the current is done by the circuit on the right side that don't require speed...as you can see the 0.01uF feedback cap I put as the dominant pole. The precision is by choosing the resistor R and the Vc source. The switching is done in open loop by the MOSFET or JFETs. those FETs don't have much gate current so what you draw from the source reflected exactly at the drain. This is precision by design and should have precision beyond 0.1% easily if choose quality parts.

BUT, before I make you worry too much, build the circuit and try it. It's easy to build.

Last edited:
yungman
I forgot to answer the Q3 and Q4. they form a differential pair. The current is supplied at the tail( the source of the two transistor where they connect together). So no matter how you switch, the current can only be the value set by the circuit on the right.

The way the differential pair works: The gate of Q4 is biased at -5V. say the Vgs to turn the FET on is +3V. So the source of Q4 should stay at -8V. Q3 serves to either steer the current away or not. If gate of Q3 is driven to 0V, the source of Q3 will follow and goes to -3V( remember Vgs is +3V). This will drive the source of Q4 to -3V. Therefore the Vgs of Q4 is -2V ( gate at -5V and source is driven to -3V by Q3). Q4 is off, all the current from the current source at the source of the FETs goes to the source of Q3 and nothing goes to the output of the circuit.

But if gate of Q3 goes to say -10V, the source of Q4 will hold the source of Q3 at -8V(-5V at gate +(-3V) or the Vgs). With this, the Vgs of Q3 is -2V. Q3 will be off. All the current from the current source at the bottom goes through Q4 and to the output. with this, you are sinking the exact current that is sunk by the current source at the bottom.

Since, gate current of FETs are much lower than the current source ( gate current are usually below 1nA or even in pA range). So whatever current the current source drawn, it reflects exactly at the output of the circuit. This way, I put the speed burden on the FETs and the precision current on the slow circuit composed of the opamp and R. The current source is operated in DC ( very slow speed), speed is from the FETs switching. With the right FETs, I think this can work to 25MHz limited by the switching circuit that drive the Q3.( you need RF FETs). And settle in nS. Remember, that's one requirement you need to ask yourself on top of 1MHz requirement. You can design one that can switch at 1MHz but cannot settle in 50nS...if the loop is under damp, it'll keep ringing even though it switches fast enough.

Last edited:
dayusimon
Hi,yungman. Thanks for the detailed explanation of the working principles of Q3 and Q4. Very clear.

Sorry for the missing information on the application of the current source. My experiments need 24 channel current sources at the same time to drive 24 special resistors whose resistance will increase with time from 0.5K Ohm up to hundreds of Mega Ohms. However, I only need to measure the resistance between 0.5K and 1K to study the aging properties of the resistor metal material.

I still have two questions to understand the basics of your circuit.
(1)How to control ONs and OFFs of Q1 and Q2 with proper timing if I want an adjustable duty factor? I preferred the DDS-based plan because it's easier to get adjustable duty factor.
(2)Can I make Vc in the OP-MOSFET current source by simply using a differntial amplifier and a buffered voltage-output DAC which are connected to the ends of the sensing resistor?

The settle time of less than 100 ns really poses a chanllenge on the OP-AMP in the Howland Pump. Can anyone tell me how to choose a right OP-AMP?

Thanks.

Attachments

• Vc.png
24.7 KB · Views: 693
Last edited:
yungman
Sorry for the missing information on the application of the current source. My experiments need 24 channel current sources at the same time to drive 24 special resistors whose resistance will increase with time from 0.5K Ohm up to hundreds of Mega Ohms. However, I only need to measure the resistance between 0.5K and 1K to study the aging properties of the resistor metal material.

Now I have a much better idea of your project. You are just measure a resistance under 2K! You don't need a true current source. You have 24 channels, you should not use my design as it is bigger. Why do you want to pulse it, why not just measure it?

In fact, if I understand you correct, you are JUST measuring change of resistance, you don't need a current source at all. How do you measure the voltage after you drive with the constant current pulse? You use data acquisition system like a A to D converter?

If I were to do this and have to pulse it for reason I don't understand, just drive the DUT( device under test...your resistor) with an opamp through a precision reference resistor. The opamp just drive whatever pulse of amplitude you choose. Then read the voltage developed at the junction between the reference resistor and the DUT. You get the voltage of the divider. You know the value of the reference resistor. When you digitized the reading, back calculate the value of the DUT. No closed loop, no current source, no over or under damp from closed loop feedback. You can do easily 5MHz like this.

For 24 channel, your top priority is to simplify the electronics and put the burden on the software. I'll answer your question on my design later as it is relevant for you from my understanding.

yungman
I still have two questions to understand the basics of your circuit.
(1)How to control ONs and OFFs of Q1 and Q2 with proper timing if I want an adjustable duty factor? I preferred the DDS-based plan because it's easier to get adjustable duty factor.
If you want to pulse high, just drive the Q1, if you want to pulse low, drive Q3. If you need bipolar pulse, drive both together so it either source or sink current. That's what you were asking for...to be able to generate bipolar pulses, in fact, that's what making it hard and the circuit gets bigger!

(2)Can I make Vc in the OP-MOSFET current source by simply using a differntial amplifier and a buffered voltage-output DAC which are connected to the ends of the sensing resistor?
You can use differential amp to translate the voltage from the DAC to the -V reference. But the circuit you posted is not correct.
The settle time of less than 100 ns really poses a chanllenge on the OP-AMP in the Howland Pump. Can anyone tell me how to choose a right OP-AMP?

Thanks.

You don't need to go any further with my design as it is not suitable for you.

Yes, getting 100nS settling time make it harder for any closed loop feedback control system. You need a high speed opamp so you can get more loop gain in the closed loop so the Howland Pump behave more ideal ( higher output impedance). Worry about this more if you HAVE TO use the Howland Pump. I don't think you need it unless I still don't understand what you want.

dayusimon
Hi,yungman.
I have to use current source because I need a 'constant' current (periodically) to interact with the DUT to study its aging mechanism. You know, in many cases a 'constant' test condition must be built for characterization.
I measure the resistance of the DUT through a RMS-DC converter which will produce a voltage signal and then send it to an A/D converter. This part of circuit is more about layout techniques.
The idea of switching between two unidirectional currents instead of directly producing a bidirectional current is better. Can you give me a detailed diagram?

yungman
Hi,yungman.
I have to use current source because I need a 'constant' current (periodically) to interact with the DUT to study its aging mechanism. You know, in many cases a 'constant' test condition must be built for characterization.
I measure the resistance of the DUT through a RMS-DC converter which will produce a voltage signal and then send it to an A/D converter. This part of circuit is more about layout techniques.
The idea of switching between two unidirectional currents instead of directly producing a bidirectional current is better. Can you give me a detailed diagram?

My last suggestion can be pulsed exactly like what you asked for! It is a pulsed voltage divider and you can use A to D conversion of the voltage and back calculate back to the resistance. Unless I still missing something, you don't need current source. If you are not running closed loop feedback like your circuit, you can get an opamp that can pulse and settle fast enough for you. settling in 100nS is easy so you have plenty of time to acquire the data.
It will be very big you have to have my circuit for 24 channels! Keep thinking whether there is a better way! I don't have a better diagram as this involve real design. That will be a lot of work for me as if I am on the job. But if you have specific question, I might be able to help.

yungman
Here is what I have in mind. From my understanding, this should do what you want. The DAC should be bi-polar so 0V is 7FH for 8bit DAC, so you put value larger than 07FH to get positive pulse, or smaller than 07FH to get negative pulse. Any of the R/2R multiplying DAC that can settle at 10nS or so can do the job beautifully for you. You create the pulse by loading the DAC, nothing more. Then you read the divided voltage with a data acquisition module and calculate the resistance of the DUT in software.

154663[/ATTACH]"]

If you want really constant current. Use this circuit and control in the software. You know what you put into the DAC. Say you put in 5V. Say you then read back 3V. So you know you have 2V drop across your reference resistor R, agree?

If you know the value of your resistor R, and you know the voltage drop across it, you can control the current, right? So you really can simulate the constant current source by adjusting the DAC so you get constant voltage across the reference resistor R. You don't need to check every time you pulse, say you make the software check the current and do the calculation once every minute or so. Your aging drift is a slow process, check and calibrate the constant current ones per minute should be plenty. The rest of the time you just pulse the DAC. I think that sound very reasonable to take say 10mS to calibrate every minute and pulse at full speed the rest of the time.

The big different here is I put the burden onto the software and make the hardware very simple. Remember if this is a product and it is 24 channel, this cost money and my original circuit is not easy to implement. With this new approach, I put the burden on the software but this is a one time thing and don't cost anything in the product. The other true constant current source might need tweeking and all where this one pretty much guarantee by design if you choose the right DAC that has the accuracy and fast settling time. You still need some sort of DAC and A/D for any other approach, so you can see this new approach is really just an opamp and a resistor! What's not to like?

Rule number one for hardware engineer...Dump everything to the programmer...if possible!:rofl:

Attachments

• 119co4l.jpg
9.4 KB · Views: 421
Last edited:
dayusimon
Geez, unfortuantely I have to dump everything to myself.
I tried to use two wilson current mirrors as source and sink, but I couldn't figure out how to swtich them fast enough. Although I like the idea that possibly gets higher freqency current, I have to give it up.
I will follow the plan using DDS function generator and Howland pump which is somewhat straightforward to me. For the degradation of the output impedance issue, I will try a generalized impedance circuit.
Thank you.

yungman
Geez, unfortuantely I have to dump everything to myself.
I tried to use two wilson current mirrors as source and sink, but I couldn't figure out how to swtich them fast enough. Although I like the idea that possibly gets higher freqency current, I have to give it up.
I will follow the plan using DDS function generator and Howland pump which is somewhat straightforward to me. For the degradation of the output impedance issue, I will try a generalized impedance circuit.
Thank you.

Why? My last one is simpler than Howland pump, much simpler. What is a DDS function generator? I bet you can use that in place of the DAC. It is just a pulse driving the DUT through the R!