1
\$\begingroup\$

I have a 0.1-4.4ohm rheostat I need to feed to an ADC(assume 10 bit) within a microcontroller. I will do some maths with the counts and eventually set digipots to control some external equipment. The rheostat is on the headlight dimmer switch of a car, and is not an often adjusted item nor is it quickly adjusted. It may take a few hundred mS to go end to end with it at the fastest.

The .1 to 4.4ohm rheostat is a design constraint and cannot be modified. I use the term rheostat as it is just a variable resistor and not a potentiometer/voltage divider.

The circuit will be fed ~12volts as it is utilized within an automotive environment. My current plan is to use a simple automotive grade 5v regulator to run the entire circuit from that way it's all protected.

My plan is to include the rheostat as the ground side resistor in a voltage divider and use a 4700ohm resistor as a current resistor for the high side. This will draw low current and give me a voltage output of 0-4mV based on the .1-4.4ohm rheostat.

As the resolution of a 10bit ADC(assuming 10 bit at this time) is 4.88mV/count, I'll need to amplify the 0-4mV signal to feed to the ADC. My plan here is to use a simple op-amp setup as non-inverting and with a gain of 1001 using a feedback resistor of 1Mohm and tieing the inverting pin to ground via a 1kohm. In theory this gives me a ~0-4volt output I can feed into the ADC to work with. If a gain of 1001 is too high, I could drop lower to 250 or so. The output voltage from the op-amp is not important as I just need enough counts within the ADC to correlate the ADC well with the .1-4.4ohm rheostat position.

I modeled the circuit in LTspice and it appears it would work. I modeled it around an AD8032 but I actually have a MCP603 on hand. The MCP603 was not available within LTspice but if anything, the MCP603 seems better suited? In any event, my breadboard circuit does not work. Only the components shown in the sketch from LTspice are what I have on the breadboard. I'm not sure if I need any caps or anything like that, I'm not sure the real world connections and such an op-amp requires.

Currently, the breadboarded circuit just has an output that is stuck around ~5V. The input into the non-inverting pin doesn't seem to change the state of the output pin. I'm assuming the op-amp is saturated but I'm not sure why or what to do about it- or how I am miss-using it.

I gave the entire scope of my project so that if someone has a better idea/plan they can understand what I'm doing.

If the overall plan is sound, I'm then just looking for suggestions on getting the op-amp up and running with all the supporting components. Other op-amp suggestions are fine, but my requirements are very simple as compared to any other examples I find.

LTspice Circuit Snip

TLDR- I'm looking to use a simple op-amp circuit to amplify a 0-4mV signal to a ~0-4V signal to feed into an ADC. My current circuit isn't working and I'm looking for suggestions on what to try next.

\$\endgroup\$
3
  • 1
    \$\begingroup\$ +1 for the problem description and not only asking why the 0 to 4mV input amplifier with large gain does not work. Could you please confirm that the 4k7 resistor is part of the final circuit and not only for measurement/tests? Would you consider other solutions, like feeding the variable resistor with a (larger) current source? \$\endgroup\$
    – devnull
    Oct 18, 2021 at 20:19
  • \$\begingroup\$ Not sure why you chose a 4.7k resistor. A 1k will give you a greater initial voltage swing, and will dissipate less than 1/4 watt at 14.5 volts. \$\endgroup\$ Oct 18, 2021 at 20:24
  • \$\begingroup\$ The 4700ohm resistor is part of the final circuit. I chose it for a few reasons. First off, the 4700 gave me a return of 0-4mV and for sake of doing math with easy numbers, I could 1000x those returns and get 0-4V which was good for the ADC. Probably a bad reason. Second reason is the power supplying this circuit is 12 volts (battery) and originally supplied a 5k pot. so .028watts draw. I know if I keep my power around that I'm fine, I'm not sure how much I can draw actually. worse case is we come up with a circuit that works and I need to run a seperate power wire. \$\endgroup\$ Oct 18, 2021 at 21:13

1 Answer 1

1
\$\begingroup\$

You have certainly used an inappropriate op-amp for such an application- an 80MHz amplifier with +/-1.5mV Vos. A better op-amp is necessary but may not be sufficient.

You have provided a relatively strong justification for using the existing rheostat, but, in my opinion, a weak justification for operating at such a low current, and not, say 10x or 30x higher, which would yield a more robust signal. I assume the headlight signal is switched so you could also switch the resistor or current source. A signal of DC 4mV is possible to deal with using modern parts and a certain amount of experience, but it's far from ideal.

Assuming you wish to proceed with the 4mV FS signal (resolution of 4uV), your layout and construction will have to be very well arranged. A low Vos op-amp such as one of the ones here will easily reduce the offset issue to a negligible issue. I would suggest a low-pass RC filter on the non-inverting input (which might also protect the input should the rheostat become shorted to +12) and a capacitor across the feedback resistor to reduce the gain at higher frequencies. "Ground" on R2 and R4 have to be at the same potential with no unnecessary current flowing between them or you'll have issues. You can think of this as a differential amplifier. You'll be lucky to get better than a 10% accuracy and stability even with a super-duper zero-drift amplifier due to thermal EMFs, EMI rectification in the op-amp front and and such like.

\$\endgroup\$
6
  • \$\begingroup\$ I can confirm the rheo can never be shorted to 12volts as I will power it from the 5volt supply. Should it short out, I have much bigger problems on my hands, like fire. I tried a 1k current resistor in my breadboard as mentioned above and still the output of the op-amp is 'stuck' to the high rail. Even if I ground the non-inverting pin the output is still stuck. I do not understand how I am miss-using these op-amps to cause this behavior. \$\endgroup\$ Oct 18, 2021 at 21:33
  • \$\begingroup\$ Reduce the gain (by reducing the 1M resistor to, say, 100K) and make some measurements. \$\endgroup\$ Oct 18, 2021 at 22:55
  • 1
    \$\begingroup\$ I'm accepting this as solved, for this specific inquiry anyways. I appreciate the help. I went and checked- the mirco controller is 3.3 volt based and has 12bit ADC. With this info I sized the current resistor in the voltage divider to 1kohm. The feedback resistor I left at 1Mohm and changed the grounding resistor(I don't know the accepted term for this) to 10k. Anyways, 101 gain. With this setup I can go from 890mV to 2.40V on the output. This doesn't quite match the calculations, I guess it's resistor tolerance. Next I will look at the filters you mention to stabilize things. Thanks \$\endgroup\$ Oct 18, 2021 at 23:10
  • \$\begingroup\$ Ok. Offset we would expect, but that's quite a large discrepancy in the gain (~40%), implying the rheostat resistance change is more like 6 ohms than 4.3 ohms, which seems large. Might want to be on the look-out for something amiss (such as oscillation in that 80MHz GBW op-amp- you really should put a capacitor across the 1M resistor if you have not already). \$\endgroup\$ Oct 19, 2021 at 0:15
  • \$\begingroup\$ I see about a 102-104 gain probing around. Lots of resistors so lots of tolerance going on I imagine. These are just bench resistors, for the final circuit I'll order something higher tolerance and between temperature stable. I added a low pass filter to the non inverting input using a 10uF cap to ground and a 100 ohm resistor in series. I calc to be around 160 hz. Added a .1uF cap on the Vdd leg to ground and a 1uF cap on the output to ground- seemed to work best. Things got more stable with 100k/1kohm resistors for same 101 gain. Finally a 4.7k output to gnd as a load resistor. \$\endgroup\$ Oct 19, 2021 at 3:09

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.