Saturday, September 19, 2020

How Common Mode Currents Are Generated in Switched Mode Power Supplies

Any Switched Mode Power Supply (SMPS), DC/DC converter, or any topology, be it Push-Pull, Single-Ended or Resonant will produce common mode currents or currents that flow between the input and output that are common to both the power rails and the ground terminals [1]. Figure 1 shows in simplified form a, typical single-ended SMPS that will be used to show how the common-mode currents arise.
Figure 1 –  Common-Mode currents arise because the voltage switching waveform on the transformer's primary windings causes a current to flow to the secondary side because of the transformer's inherent interwinding capacitance.

As in Figure 1, the switching action of the primary side power switch will induce a magnetic field in the transformer primary winding’s that is coupled by the secondary winding's that produces a voltage that is subsequently rectified and this is the main means of power transfer in any SMPS power supply.

However, there is also a voltage waveform that is impressed across the primary winding's and since the secondary windings are usually wound right on top of the primary [2] there will be capacitance between the input and output windings. This capacitance can be 50pF in even a small 1 Watt DC/DC converter.

When the voltage is switched on the primary there will then be a current that is induced into the secondary side via this transformer inter-winding capacitance. This current is called the “Common Mode Current” and can be measured with the circuit of Figure 2.

Figure 2 - A typical test fixture to measure common-mode currents. The current is impressed as a voltage across the 100 Ohm Resistor. The actual Current is then: Icm [Amps] = Vscope [Volts} / 100 [Ohms].


Figure 3 – Actual measured common mode current of a small 1 watt DC/DC converter of the type commonly found on cheap USB Isolators. The measurement of 18 mV p-p corresponds to 180 uA p-p.

As can be seen in Figure 3, this current is very fast and impulse like in nature and the harmonics extend well into the VHF frequency range. 18 mV peak to peak corresponds to a current of 180 uA peak to peak which is not insignificant considering that the current being common modern nature is flowing on the outsides of all the shielded cables, wires, PCB, and chassis components, etc.

The current in Figure 3 was measured from a cheap USB Isolator (Figure 5) that was meant to be inserted into a USB cable to provide galvanic isolation. And while it may do that job it will also provide a very nice VHF Impulse Generator into all of your other carefully designed circuitry.
Figure 5 – The Common Mode Current of Figure 3 was measured on this typical cheap USB Isolator that can be purchased for less than the price of a Large Latte. But is the cure worse than the disease?


Figure 6 – The common mode current now looks like what? Yes, an Impulse Noise Generator with a nice Dipole Antenna attached. All ready to put VHF noise all over your test bench.

Bottom Line:

Using an SMPS is a great way to get galvanic isolation in any circuit, but as far as Precision Analog goes it may make the “Total Noise” situation worse. As can be seen in Figure 6, adding this ‘Generator / Antenna’ into your design is probably not the desired effect that you were going to be looking for.

The only real mitigation to these Common-Mode Currents is to add inter-winding Faraday shielding inside the transformer to provide a local ground path inside the transformer for the currents or to use common-mode inductors on the input and output of the SMPS.

Perhaps a better way of providing USB isolation in instrumentation circuits is presented in the article:


[1] Over 25 years ago Jim Williams of Linear Technology did manage to find a Piezoelectric transformer that was an exciter on one end, a receiver on the other end, and a Piezoelectric bar perhaps 2 inches long in between. While this also produced common mode currents between the primary and secondary, they must have been minuscule because of the exceedingly low input to output capacitance. But this is a left-field sort of a device because of the size and price involved, which is so seldom used that it can be considered a ‘laboratory curiosity’ at best.

[2] Having any transformers primary and secondary winding's inter-wound as closely as possible reduces the Leakage Inductance between primary and secondary Leakage Inductance is where some of  the magnetic field is stored but can’t generally be used in providing useful power transfer between input and output circuits [3]. Adding Faraday Shielding between Primary and Secondary windings can reduce the common-mode currents by providing a ground leakage path, it will, however, increase the leakage inductance. Everything is a trade-off.

[3] There are always exceptions, some resonant converters are cleverly designed to utilize the leakage inductance, but these are not suited for low power designs. Again, everything is a trade-off.


Article By: Steve Hageman /

We design custom: Analog, RF, and Embedded systems for a wide variety of industrial and commercial clients. Please feel free to contact us if we can help with your next project.

Note: This Blog does not use cookies (other than the edible ones).

Wednesday, September 2, 2020

Lowering The Risk In New Designs


                                                           (Random Internet Screen Shot)

Gone are the days when we used to just slap some 0.1uF capacitors next to the Power Pin of an IC and be done with it. IC's are now very complex little subsystems, Take for example this cool little 18bit ADC I found. Not only does it convert at an alarmingly fast, 1 MSPS rate, but it also has a built-in amplifier/buffer with programmable voltage ranges of 2.5 to 12 Volts p-p and a low drift / trimmed reference all in one IC. The Programmable Gain Amplifier eliminates a whole lot of external signal conditioning circuitry and the 1 MSPS conversion rate makes signal processing easy because of the sheer speed of the ADC.

To do what this little 16 Pin TSSOP IC does would have taken at least 3 IC's and 1 square inch of PCB space just 10 years ago, today this is it (Figure 1).

Figure 1 – A complete, high-speed data acquisition system on a chip. That's it, there is nothing on the backside, and that really helps with isolation between channels. 10 years ago this would have taken at least 3 IC's and 3 times the board area. 30 Years ago and this would have been a 3x5 inch Module. The small, 5 pin IC in the upper right is a dedicated low noise regulator for the ADC's analog power requirements.

Complexity = Risk

Naturally, it has to be expected that some mistakes will be made in the design phase, either in conceptual or implementation errors. This is the fundamental trade-off in speed vs. analysis. There is a fine line that one must walk on every project.

No one wants to mess up the implementation so much so the initial breadboard does not work at all and is unfix-able. That would be a bad trade-off with too much speed. Likewise spending too much time on analysis can slow the project down and all that analysis might not uncover many conceptual errors anyway.

So what is the best way to reduce the inevitable risk of complexity? Well for starters, you can look around for other designs to leverage. To a certain degree leveraging working designs can be a great risk reducer.

On this design, however, I had no experience with the IC so what could I do? The data sheet certainly has some application information, but the real information came from the Eval Board. The good news is that with these complex IC's now the manufacturers always have to have an Eval board and these always include the schematic, parts list, and a sample layout.

With the datasheet and the Eval Board, you can at least compare what they both say. For instance, the datasheet showed the decoupling required for the internal reference section of the IC. Simple capacitors of a certain minimum size were recommended, with no mention of ESR, etc. But the Eval board told a different story. The Eval board showed slightly different values and most importantly it showed some small value resistors in series with the capacitors as if to say: "There is a minimum ESR requirement".

Assuming that the Eval board does indeed work (because the manufacturer sells it), this is good information to have. I can add the resistors to the first design and test to see if they are needed. If they aren't needed I can always replace them with zero ohm resistors going forward or remove them from the final layout. That is much easier than hacking in resistors to an already built board. What a drag that is!

Figure 2A – The datasheet said to bypass the Reference Pins like this.


Figure 2B – The Eval board says a slightly different story than the data-sheet (Figure 2A). I chose to follow the Eval board because it is known to work whereas the data-sheet is more: "In Theory". After all, it is easier to replace a few low-value resistors with jumpers than it is to add resistors to a board that does not have them.

Don't Believe Everything That You Read

The Eval board probably has a Material List and that is also a great start. Look up the parts and study their performance, but don't believe everything. In precision Analog Signal Processing you want to use COG dielectric capacitors in the signal path, this included the reference circuit(s). COG types not only have a very low-temperature drift, but they also have almost no capacitance drop with DC bias and most importantly they have no mechanical noise. This 'Mechanical Noise' is often overlooked and it has to do with the piezoresistivity [1] of the ceramic material. Many capacitor dialectics are Piezoelectric, that is if you induce stress onto the capacitor, it will produce a small voltage on its own. This can sadly often be found by simply tapping a built PCB with a pair of tweezers, or flexing the board, even slightly. As you can well imagine this undoes all the hard work of even the most carefully designed analog circuit.

For power supply rails we can use X7R types, these capacitors have higher Capacitance-Volume (CV) ratio density than COG but have no piezoresistivity effects. X7R types also have less dramatic capacitance shifts with DC bias than other types and have good overall lifetimes. Finally, the COG and X7R types are routinely rated to 125 degrees C.

While there is an alphabet soup of very high CV capacitors available many types have terrible piezoresistivity and exceeding poor capacitance drop with DC voltage, they are many times only rated to 85 Degrees C. And while they are very suitable for digital circuits, all these other ceramic capacitor types should be avoided for any and all precision analog design. Don't say I didn't warn you, be very careful of the capacitor types you choose no matter what the Eval Board uses.

Bottom Line

Don't be too cautious or you won't get anything done, also don't be in too much of a hurry or your design won't work at all. Instead, be careful and check all the sources available to you to get as much implementation information as possible to ensure that you can at least get some information out of that first PCB spin.

Bonus "Non-Analog" Idea

This getting a design second opinion also works for digital IC's especially Microprocessors. Read the datasheet but also check the manufacturer's Eval Board. The great thing about Microprocessors is there are so many eval boards and prototyping boards available. For instance, if you are looking at an ST Microelectronics STM32 Microprocessor: ST Micro usually makes several Eval board for each IC and then there is Olemex, Micro-Electronica, Digilent, Addafruit, Sparkfun and other manufacturers that make boards and provide schematics and Material Lists to compare notes with. This is an excellent way to reduce the risk when using a new microprocessor.



Article By: Steve Hageman /

We design custom: Analog, RF, and Embedded systems for a wide variety of industrial and commercial clients. Please feel free to contact us if we can help with your next project.

Note: This Blog does not use cookies (other than the edible ones).

Sunday, August 30, 2020

USB Isolation For Instrumentation Applications


USB in instrumentation applications is a 21st Century substitute for a 20th Century RS232 serial link, but with faster speeds. It still requires a conductive and grounded connection that can be several feet in length between the measuring device and the PC controller however and that is where the fun starts.

Trouble is, these communication links connect your carefully crafted measuring instrument to a PC or Laptop somewhere that may or may not have its own power supply, and then suddenly you have a massive ground loop through the AC power distribution system and all the other test instruments that may be in use.

Additionally now, nearly every test instrument includes a switching power supply that also produces ground currents due to the common-mode currents generated across their internal transformers. While these common mode currents can be carefully controlled and minimized by adding electrostatic shielding inside the transformer's windings, profit pressures have made such shielding very unlikely now.

This problem is created by common-mode currents generated by switching power supplies running down all the cables and completing the loop through the AC Mains connection. This loop is always many feet in diameter. Remember that a loop many feet in diameter has quite a large inductance and voltage across an inductor is proportional to the current rate of change,

           Vinductor = L * dI/dT

Even 60 Hz leakage current has a rate of change and will react with an AC Mains loop to produce unwanted 60 Hz voltages on your test bench. While this is not a concern and seldom noticed when probing around an embedded processor circuit. Having several switching power supplies in test instruments and the controller PC, etc. produce real havoc with low-level measurements.

Many times you can see the effects of this AC Mains ground loop by moving your hand around and touching various pieces of test equipment, the large capacitance of your body will change the path of the ground loop and you can observe the measurements changing. This is most readily apparent in real-time when looking at Oscilloscope displays when moving your hand about but it can be seen with sensitive DMM's also in that the DC values appear to change as you move your hand around.

What to do?

While running a noise-sensitive process or measurement sequence, the test instruments like a DMM, Oscilloscope, or Logic Analyzer can be disconnected from the measuring circuit, the controller PC remains, and that ground connection from the PC and it's switching power supply.

With a Laptop, the charger can sometimes be disconnected to cut that ground loop there, but this will only work for testing a few hours at best until the Laptop battery runs dead. This is not a solution for any tests, such as encountered when averaging very low noise measurements that can take 24 hours or more to run.

How about isolating the USB using one of those cheap USB isolators? There are many little isolators available for purchase online that do indeed cut the galvanic loop in the USB cable, but these common isolators also introduce noise of their own. This is because they add isolation in the USB digital side and any downstream device needs at least some trickle power to properly function. To get this trickle power these devices use – yes, you guessed it a very low cost and oftentimes low-quality DC/DC converter. These converters lack the necessary shielding on their isolation transformers and hence inject yet another source of noise inline, this time on the USB cable where you want it least.

These noise currents have to go somewhere and they will usually end up flowing back to each other through the AC Mains. That is again a huge ground loop.


Figure 2 – A generic USB Isolator based on the very popular Analog Devices ADuM3160 USB Bus Isolator chip [1]. This isolation works on the USB side and still contains another noise generator, namely in a very low-cost DC/DC converter (Black Block at Top of PCB) that is generating its own common-mode noise between the isolated system grounds. The Capacitance between the isolated grounds of this unit was measured at 44 pF.

Measuring the common mode current of the cheap Isolator from Figure 2 reveals that the DC/DC converter produces 18mV p-p across 100 ohms (180 uA p-p) as can be seen in Figure 3.


Figure 3A – The little DC/DC converter that is typical of these designs is not shielded and produces a lot of common-mode current. Using the test circuit shown in Figure 3B, it is measured as 18 mV p-p across 100 Ohms or 180 uA p-p. As can be seen the noise is impulse like and thus produces harmonics will into the VHF region where any wire length will act as an antenna launching the noise all over your lab.


Figure 3B – Typical test circuit for measuring the common mode noise of a DC/DC converter. Running from a battery source and a restive load not grounded to anything else and placed on a metal ground plane bonded to all the test instruments improves the measurement of the true common-mode noise. The voltage measured on the scope is converted to current by the formula: Icm = Vcm/100.

The other worry of these low-cost isolators is what isolation do they really have? Are they even Hipot tested? My suggestion is that if you want to use one of these that you use one that uses the full Analog Devices chipset like the Adafruit 2107 Isolator [2] because it uses a quality DC/DC converter that is Hipot tested by Analog Devices. Yes, it costs 5x more than the cheap designs, but at least you know the quality of the components.

Another Way

There is an alternative way to isolate the USB and that is to do the isolation on the Microprocessor side. This can be built into a system from the start. Since many projects use FTDI like USB to UART bridges [3] to translate the USB to a UART compatible serial signal, an optically coupled Isolator can be used between the FTDI chip UART output and the Microprocessor UART input. This has the advantage of not needing yet another DC/DC converter and that extra noise that that will produce.

A suitable Isolator is the OnSemi FOD8012A [4] as shown in figure 4. This part is rated for 15 Mbit/Sec operation which is well matched to the speed of the FTDI232RL Bridge IC. Normally I run my designs at 115,200 Baud for applications that require only low speeds to 921,600 Baud for systems that need more speed and native Windows Baud Rate compatibility to upwards of 3 M Baud for systems that can use a nonstandard Windows rate but need maximum throughput. The FOD8012A is well suited for these tasks.


Figure 4 – The FOD8012A is a simple to use 8 pin device. No additional DC/DC converter is required for operation since the USB side power can be supplied by the existing USB connection and the Host side is supplied by the existing Microprocessor power. Diagram provided by the courtesy of OnSemi.

Figure 5 – A complete circuit diagram of the "other, quieter" way to get USB isolation for a measurement product. The FOD8021A is simply added between the FTDI FT232RL USB Bridge chip and the Microprocessor Serial port lines. The FOD8021A can even do voltage translation from a 5 Volt to 3.3 Volt system.

Figure 6 – The actual implementation tucked into the corner of a PCB. The White FOD8012 can be seen as straddling the two ground regions. The measurement between the USB and measuring circuit ground shows 10 pF of capacitance between them which could be decreased by further by increased separation of the isolated and instrument ground regions on the PCB.

One thing to remember is that the outer metal shell of the USB connector cannot be connected to chassis ground or this will defeat the isolation. In the design idea presented here I use a 3D printed plastic bushing that I put in a larger hole than normal through the instrument's chassis that still is a tight fit around the USB connector shell. Doing this adds the mechanical support to the chassis necessary to keep the USB connector from being ripped off the PCB, while still maintaining the integrity of the ground isolation by keeping separation of the chassis ground and the USB connector shell.


By isolating the USB connection after the USB/UART bridge IC another source of noise is eliminated and the overall system noise problems will be simplified. The bonus? Only one low-cost IC is required.


More information on how Common Mode Currents are generated in power supplies is available in this article,

[1] Analog Devices ADuM3160 USB bus side isolator.

[2] Adafruit USB Isolator Product 2107

[3] FTDI Chip, USB to USART bridge chips.

[4] OnSemi FOD8012AHigh Speed Digital Opto-Isolator

Article By: Steve Hageman /

We design custom: Analog, RF and Embedded systems for a wide variety of industrial and commercial clients. Please feel free to contact us if we can help on your next project.

Note: This Blog does not use cookies (other than the edible ones).

Saturday, July 25, 2020

YATC - Yet Another Thermal Camera

Yes this is another one of those Thermal Cameras based on the Melexis MLX90640 32x24 Thermal Sensor Array or as I call it the: Yet Another Thermal Camera project (YATC).

Home Built Thermal IR Camera - Perhaps not as pretty as a commercial product, but well worth the effort and a useful learning project. Perfect for use in the Electronics Lab.

Why another one Thermal Camera?
Aren’t there enough designs out there already? Yes…but, for starters, I like to have a wintertime project to help the time go by when it is cold and dark outside here in Northern California. Then again there is always something fun in bringing a project to life and I always learn useful things that I can put to good use in commercial projects later and finally having a thermal camera in the Lab is just the ticket to finding all the hot spots on a PCB, looking at the heat generated by electrical appliances and even tracing electrical wiring and hot water pipes in the walls of my house.

I won’t describe in detail every step on how I designed and implemented this project, but I will list the issues that I found and that I have not seen addressed anywhere else and just to share how I went about bringing the project to life.

The processor that I chose for this project is the Microchip PIC32MZ2048EFH064. This processor is fast with a core frequency of up to 252 MHz, has a built in Floating Point Math Unit (FPU), lots of memory: 2048k bytes of ROM and 512k bytes of RAM, available in a small pin count, easy to solder TQFP-64 package and is well suited for this project.

I have for years used a hand optimized bit-bang I2C driver that I wrote and this allowed me to tune the speed as required and it was easy to get 1 MHz operation for the Melexis sensor. The SPI used for the display uses the PIC32 built in SPI Peripheral.

All in all the processor uses 10x less power, has more memory and 10x the processing power of an Intel 386 chip, all at 30x less cost.

Melexis MLX90640 Temperature Sensor
This IR sensor [1] is really quite something. It may only have 32 x 24 pixel resolution but at better than 0.1 Degree C resolution it is very, very sensitive which makes for a very detailed display. The sensor works by having a set of calibration constants stored in its EEPROM that can be read out and applied to the sensor ADC readings to get at a calibrated Deg C reading. This is easy to say but, the math involved takes some 20 pages of the data sheet to describe! Thankfully Melexis provides a very easy to use C based driver on GitHub [2]. The driver dropped right into my Microchip MPLAB-X / XC32 development environment and compiled straight away with only a few minor changes, mostly to the I2C interface as I needed to conform the Melexis driver model to the way my I2C driver operates.

The driver as written uses floating point math so a fairly powerful processor is required. Also of note is the driver itself uses some 17k bytes of memory minimum to store all the calibration constants and sensor data. With the processor running at 200 MHz the calculation time of the Melexis driver data to get the temperature array was measured at around 6 milliseconds.

The interface to the sensor is via I2C and it takes a lot of time to get the entire Sensor array data out as the protocol is not very efficient. The Sensor updates it’s full data buffer fully only on every other sampling cycle – that is it operates in ‘frames’ where each frame is one-half of the Sensor arrays data points, and it takes two updates to update the entire Sensor data array. You must read the entire Sensor array of data each time, so one half of the data read on each frame is old data, this is very inefficient. The I2C interface does run at a fast 1 MHz, but even at this fast rate it takes 15 milliseconds to transfer a frame out, and twice that to get the full data array of updated values.

The sensor data acquisition time is adjustable in software with the usual trade-off: Faster Data Acquisition yields a higher noise result. I found a good compromise by setting the sensor to update rate to 4 Hz or 0.25 Seconds. The complete sensor data array update takes twice this time or 0.5 Seconds. This was about as slow as I could go and still have a decent frame update rate on the display so that it would appear to be real time to the user.

Figure 1 – A small portion of the math required to calculate the temperature as seen by the Sensor – this goes on for some 20 pages! Writing a driver like this by hand would drive anyone insane! Fortunately for us, Melexis provides a very well written driver on GitHub which takes care of all this math.

I chose to use the Adafruit TFT displays with breakout boards since they are complete solutions and have very well thought out driver support which I had already used in previous projects. This led me to the Adafruit 2.8 inch display with Capacitive Touch [3].  This display has a native resolution of 320 x 280 pixels, which makes up-interpolating from the sensors 32 x 28 resolution easy, as it is an even number with the same aspect ratio as the sensor. The Adafruit driver is SPI based, and is written for Arduino and hence it is in C++, so this always requires some ‘flattening’ of the C++ classes to get it to be C compatible and to translate the SPI commands from Arduino to the PIC32 processor that I was going to use. Since the driver is intended for an Arduino type of device it is very heavily optimized for size and versatility, not speed. It is a wonderful driver however, as it is well thought out and very easy to use.

To draw a color point or color area on the display, first you need to define a window with four, 16 bit points, then fill the area with a 16 bit color number. This is simple for the user, but as will be seen, it takes some time to actually write large amounts of little color areas to the display.

I setup some test code to display various pixel resolutions on the display, starting with the Sensor pixel resolution of 32 x 24 blocks displayed, well that looks horrible as you might imagine and 320 x 240 pixels displayed looks a bit too fine and took forever to write to the display. I finally settled on a final resolution of each ‘Temperature Pixel’ being a block of 2 x 2 ‘Display Pixels’, so the final display resolution would be 160 x 120 ‘Temperature Pixels’.

I measured the display update speed on my breadboard and found that it takes a very long time to update even the 160 x 120 pixels in the display this way – over a second!

This was clearly not going to work very well as a reasonably fast update rate is needed for a handheld instrument.

The first lazy speed up thing I tried was to up the SPI clock rate from the specified 10 MHz maximum, first to 20 MHz with no issues, then 33 MHz and finally to 50 MHz also with no issues. The driver IC data sheet clearly indicates that 10 MHz is the maximum clock rate, but I found no issues at 50 MHz. I even tested this speed with other Adafruit LCD’s that I have here in the lab, specifically the Adafruit 1.8, 2.2 and 3.2 inch versions all with no issues. So I decided that this was OK, as this is a personal project and I am not going to be making more than a few of them.

Note however that it is a very, very, very, very bad practice to use any part beyond its specified maximum ratings in a commercial / production environment and I would never do that without first having a discussion with the parts manufacturer as to the ramifications of such out of specifications usage!

Now the display time for a complete update was around 226 milliseconds. Before this SPI speed improvement I was considering rewriting the SPI driver or even writing a parallel driver as the Adafruit 2.8 inch display also supports a parallel interface. However, the SPI speed improvement was enough, thus saving me a lot of development time.

Even at 226 milliseconds, the display update is still visible to the naked eye, so I decided to interlace the display update. That is, on one Sensor frame, I would update the ‘even’ rows on the display and on the next Sensor frame I would update ‘odd’ rows. This then makes the display look much more instantaneous and each display write is now on the order of 113 milliseconds and you can’t see any obvious flickering.

The Adafruit display has capacitive touch that uses a I2C interface with the well known FT6206 Touch Controller IC. This IC is easy to use and control and has an interrupt output to allow quick processor attention to any display touches.
Figure 2 – Basic Thermal Display. The Senors raw 32x24 pixels are Bilinear interpolated to 160 x 120 display pixels and color mapped to a 320 x 240 pixel display. The minimum, maximum and spot temperature value averages are displayed on the right hand side of the display.
One final note: In this application, a 2.2 inch display would have been plenty big enough, but those displays are not available with capacitive touch, so I was stuck with the bigger display as I really wanted a capacitive touch display as they always have much better image quality.

Sensor Data Processing
After all the Sensor reading and calculations, we end up with an array of 768 floats representing the temperature at each of the Sensors pixels is. The task now is to manipulate that temperature data into something useful for the display.

The first thing I did was to get the minimum and maximum temperature values of what the sensor saw in the current scene, then convert the rest of the values to fixed point values with 0.01 degree resolution. The fixed point notation easily fits into int16_t data types, doing this conversion makes all the subsequent math much faster and smaller.

For the min and max temperature values, I used a 4 frame moving average of the temperature reading, so that the display will appear more stable, and although the display will start to range immediately when pointing at a different temperature scene, the display will take about a second of looking at the same temperatures to fully stabilize on a new average. I also capture and average the center pixel so that I can display the center ‘spot’ temperature on the display.

The next processing step was to resample the data so that the final resolution is 160 x 120 temperature values for display purposes. There are many ways of doing this and many people have used Bicubic interpolation. Bicubic interpolation is the best way to up-sample a photographic picture, but I think Bicubic is not the right way to go for an application like this. The reason being that Bicubic interpolation actually overshoots the edges across areas of fast changing temperature, and while this makes a photographic picture look better, in a thermal camera it actually makes the edges of a hot object appear hotter than they are. So I chose to implement the simpler Bilinear interpolation method. You can find many fine tutorials on the web for how to do Bilinear interpolation, but basically you first interpolate the rows between the known Sensor data points, then once this data is found you can interpolate the columns between the now interpolated rows.

I chose to hard code the up-sampling algorithm to maximize speed and coding time. I know my input size is 32 x 24 and my output size is always 160 x 120. Since the interpolation is working with an array of int16_t values instead of 4 byte floats, the resulting routine is fast and small.

After up-sampling the data array the values are then mapped into a 0-255 uint8_t array. The basic step is a Histogram Expansion where all the temperature values from min to max are expanded or compacted to fit in a 0-255 value array of uint8_t’s.

At this point we no longer care about the absolute temperature value of any pixel because all the pixel temperature values have been forced into an an array of uint8_t’s between the min and max temperature  values of the current scene. This makes sure that the full range of color values will be used for any scene that is viewed. The expansion can be thought of as a display automatic gain control and since I averaged the min and max temperatures of the hottest and coldest pixel in any scene over an approximately 1 second time span, this then sets the attack and decay times of the AGC.

This is a good spot in the code to do any further contrast or brightness adjustments, these are user adjustments that the operator can make through interaction with the touch screen interface as will be described later.

The final step is to map the resulting array of unit8_t’s into a color map of 255, 16 bit color values. I found an excellent resource of constant luminance color maps [4] and chose three for this project, a ‘Hot Iron’ color map, because I like the way these look as they resemble the color of Iron as the temperature raises, the classic ‘Rainbow’ color map as this is just the classic style and a ‘Black and White’ color map, which looks like the IR images that you see on thermal surveillance cameras. Each color map can be selected and changed on the fly at runtime. These color maps were encoded into 256, RGB565 values and put into ENUM’s and then it is a simple matter to look up the color number from the ENUM when displaying the specific pixel color.

While displaying each pixels color temperature, on the right edge of the display I put the maximum, center point and minimum temperature average with a 1 decimal point resolution. Since these values are the average of 4 frames of data, the values don’t flicker much and are very readable.

To minimize the flicker of the text on the display, on each display interlace, when the row has just passed the now overwritten and cleared text, I go and rewrite the text in that position, then draw more rows and when just under the next text position, go and rewrite that value. This was accomplished with a row counter and values hardcoded to write the text back on the screen when that row is reached.

Some thermal cameras display a movable box or spot indicator that follows the hottest object in the scene. I find that this isn’t really the way I use a thermal camera, I don’t always want to measure the hottest thing, most of the time I want to selectively measure certain items in the scene that aren’t always the hottest or coolest objects. With the color display it is easy to pick out the object to measure and then to put the ‘spot’ over it for a temperature readout. I opted for a ‘spot temperature’ reading from the center of the scene, and I denote the spot by drawing a small white box at the location of the center pixel.

Touchscreen Interface
A few adjustments are useful in real time. Since there is an effective Automatic Gain Control happening in real time because I am constantly averaging the minimum and maximum temperature in a scene and expanding or compressing the rest of the data in this range this takes care of most scenes automatically, but there are times where the ‘Brightness’ needs to be increased or decreased. This is accomplished buy swiping up and down on the left side of the screen like a volume control, except instead of controlling the ‘volume’ the offset in values is changed effectively changing the displayed image brightness. This can sometimes help to bring out desired detail in really hot or cold scenes.

The brightness, if you get too far off in adjustment can be set back to ‘normal’ by tapping the center of the screen and it will revert to the no adjustment value.

The other adjustment is a ‘Contrast’ control, many scenes aren’t evenly distributed in temperature and sometimes you want extra detail in the hot or cold portion of the scene. As shown in Figure 3 the contrast is just a math mapping function that the data is run through. I found that three fixed contrasts were easy to implement and really do a good job of enhancing the lower or upper temperature ranges.

 Figure 3 – Contrast enhancement is accomplished by mapping the scene data to one of three simple curves to either have no effect or to boost either the lower or upper temperature ranges. Increasing the contrast in this way can help to separate objects that are close to the same temperature.

Figure 4 – The firmware runs in the familiar ‘Big Loop’ design pattern. All functions called work on a common set of data arrays that are defined global, this makes the addition of new processing at any step easy. All you have to do its to write a new function that uses the appropriate data at that step, and then to call this new function and have it manipulate the global data appropriately at that point.

Hardware Design Details
All of the main components run on 3.3 Volts, which was supplied by a Texas Instrruments TPS77301 Low Dropout Regulator, this regulator has the added feature of having a delayed ‘Power Good’ signal which is ideal for use as a Microprocessor Power On Reset. The Melexis Sensor has its own dedicated, low noise 3.3 Volt power regulator since it has almost no power supply rejection ratio and any low frequency noise can and will show up as ‘pattern noise’ on the sensor output data and subsequently the display. To reduce the chance of any pattern noise showing up, the Thermal Sensors I2C bus pullup resistors are tied to the Microprocessors +3.3 Volt supply as an extra precaution to keep any digital I2C bus noise from contaminating the sensor voltage rail.

Common practice is to power devices like this from a rechargeable Li-Ion battery, but I find that in instruments like this that I don’t use daily and perhaps not even every month, invariably when I do want to use the Camera it has been sitting around long enough so that the battery is dead and needs recharging. I want an ‘Instant On’ kind of a device for Lab use and if the battery is dead, I would rather change it to a fresh one right away so that I can keep working instead of waiting even 20 minutes to get the minimum charge back into the device.

The PCB is a simple two layer design. The wonderful thing about modern 32 Bit processors is that they need very little in the way of extra support circuitry. Altium Designer was used to layout the circuit and render the 3D model of the board. This model was then imported directly to Design Spark Mechanical so that the housing could be designed around it.

The simplest power approach then is to use a ubiquitous 9V Alkaline cell, they are readily available anywhere, have around 300 to 550 mAH of capacity and long shelf life. Running the 9 volts directly into the 3.3 volt regulators would be extremely power inefficient, so a small premade buck regulator PCB was purchased in a 10 pack off eBay for $5.00. These little boards work fine and have a trimpot adjustable output voltage. I set the Buck Regulator output to 3.7 Volts, then when the 9V battery is attached the current drain is much less and the overall efficiency of the design is markedly increased, lowering the generated heat and increasing the battery runtime immensely. A 9 Volt battery has a discharge curve over it’s life from 9 Volts down to 4 Volts and this works out well with the overall power system design. If the battery is drained to 4 Volts or below there won’t be enough ‘Oomph’ left to start the circuit and the camera will fail to start when the ON/OFF button is pressed. That is what I call: “Positive indication of a dead battery”, and no circuitry or software was required to implement this feature!

The actual current drain of the completed design was measured as,
    @9V Input = 90 mA
    @4V Input = 205 mA

This current draw gives about 2 to 4 hours life out of a good consumer 9V Alkaline battery and the efficiency keeps the PCB temperature rise very low.

The majority of the current drain is attributed to the LCD Display backlight first, and then the PIC32 second. The backlight could be PWM modulated for lower brightness but this isn’t a super bright display anyway, so this was deemed not worthwhile. The display is fine inside and outside in shade, but not bright enough to be used in direct sunlight.

Upstream of the power supplies I used one of those very clever Push Button / Power and Function IC’s made by Linear Technology as a main power switch. The LTC2955 Push Button Controller operates by watching the state of a push button. When the push button is pressed, the IC causes a small PMOS FET to turn on and supply power to the downstream circuits. The IC also has an adjustable power off timer, so that when the push button is held for a certain period of time the IC will switch the PMOS FET off. I set this delay to about 2.5 seconds. The operation is then: Quick Push on the power button and the camera turn on, hold the button for 2.5 Seconds and the Camera turns off. The IC also has a ‘KILL’ input that when pulled low will turn the power off. I tied this to an open drain output on the Microprocessor. The Microprocessor can then remember the last time the user interacted with any control input and if the unit has not been touched in sufficient time the Camera will turn itself off. This delay is adjustable in software and I set the delay to about 3 minutes.

While in operation, if the push button is pressed for a short time interval an ‘Interrupt’ pin will go low indicating to the Microprocessor that a ‘Push’ happened. I read this pin on the Microprocessor and use this interrupt to cycle through the various color maps that are programmed in the Camera, so that, when in operation then, pressing the power button for a short interval will cycle the color map on the display.

If you have ever used a Thermal Camera before you will have quickly learned that ‘Shinny’ objects don’t read the proper temperature and actually reflect the temperature of other objects around them like a mirror. Even objects at the same temperature with different surface finishes will read different temperatures. With Electronics work, most of the interesting parts on a PCB, like the IC’s have the same black matte finish, so they mostly at least read relative temperatures OK.

This apparent temperature reading difference due to surface finish is call the ‘Emissivity’ of the object and you can find a list of common calibration factors for different materials in many textbooks. Usually a Thermal Camera will have some menu arrangement to set the Emissivity of the object being measured and a calculation is done to correct for that, but in practice I have never used those functions. If I have ever wanted to get really good relative temperatures, I have just spray painted the entire assembly with flat black spray paint and be done with it. Hence I have not implemented any such Emissivity correction in this design.

It is good to remember that IR measurements are subject to a host of possible errors besides just the objects Emissivity and that the real power is to be able to see the relative temperatures of a ‘scene’ all at once with a picture like image. If more precise measurements are needed then thermocouples should be attached to the objects in question as this is much more accurate than any IR approach. It should also be noted that if you are in need of a higher resolution IR Camera that has NIST Calibration traceability, then a commercial unit is what you should buy. They aren't expensive and even cost less than a good Laptop now. Keysight makes a number of TrueIR cameras that are nice and small [5].

A 3D printed housing was designed for the Camera using Design Spark Mechanical [6]. The basis for the design was a simple handheld device and the whole thing was first designed around the chosen display and easy 9 Volt Battery access in the handle. The simple but functional final design resembled a big ‘T’ shape. The square shape and edges may not be very aesthetically pleasing, but they sure do 3D print well!

Once the housing was roughed out, a simple 2 layer PCB was designed to fit, and then the housing was re-iterated so that everything finally came together. The PCB and display are electrically attached together with a 1.5 inch long, premade flexible jumper cable. The Thermal Sensor is mounted on the backside of the PCB so that it faces out the backside of the unit on the opposite side of the display. The top panel was milled from 62 mil thick aluminum, then engraved with the lettering and ink wiped for contrast. The top panel has the screw mounts for the display, and is glued to the top of the housing with a thin layer of Silicone adhesive. The PCB screws to the main body and finally the housing bottom screws into the main housing body making the assembly complete.


Figure 5 – The component parts were modeled and designed with Design Spark Mechanical software and processed for final 3D printing. Four separate 3D printed parts go into the making of the plastic housing.

Figure 6 - Detailed interior view showing how the Display, PCB and Battery fit in the design.


Excellent dynamic range is achieved as this picture of measuring the Gas Flame from a Kitchen stove demonstrates. Here the display spans 28 to 285 Degrees C.


An IR Camera is useful around the lab too. Here the insides of my Keysight 34401 DMM are measured, showing two warm areas (left image). Getting a closer look at the warm area in the upper right of the DMM reveals the temperature of two voltage regulators in detail (right image).

The first thing I do after applying power to a new PCB is to look for smoke, when that test passes, the second thing I do is to reach for the IR Camera and look at the PCB for hot spots. Here an ordinary looking, and properly functioning PCB shows that the hottest item on the board is the voltage regulator at the lower center of the board between the two Tantalum Capacitors.The regulators temperature is approximately 46.8 Degrees.

The project files can be downloaded from GitHub at the following location,

[3] Adaftuit display 2.8" TFT LCD with Cap Touch, PRODUCT ID: 2090
[5] Keysight TrueIR product page,

Article By: Steve Hageman /

We design custom: Analog, RF and Embedded systems for a wide variety of industrial and commercial clients. Please feel free to contact us if we can help on your next project.

Note: This Blog does not use cookies (other than the edible ones).

Monday, June 1, 2020

Is a ‘Heroic’ Low Voltage Noise Amplifier Always Desirable?

(Random internet screen grab)

I recently ran across an “Ultra Low Noise Moving Magnet Phono Preamp” that was built with four paralleled LT1028 low noise OPAMP’s, and immediately thought: “That will make the noise worse” simply because I have built amplifiers like this before and I knew that to achieve a low total system noise that the source resistance would have to be extremely low, well below 1 ohm, which a Magnetic Phono Cartridge is not *.

Note: We are going to do a 'rough cut' analysis here, looking at the main 1st order effects only. For instance, we will ignore for the time being the resistance in the inverting input to the OPAMP(s), they add noise but are low enough to pale in comparison to the Phone Cartridge resistance. We will ignore for the time being that the Phono Cartridge impedance is not the same at DC and 1 kHz. Finally, we will not include the effects of the  RIAA filter that Phono Preamps always have. For a complete detailed analysis see the section: "Extra Bonus 2" below.

Parallel OPAMP’s For Lower Noise

You have probably seen this circuit before, it is even shown in the LT1028 Data Sheet [1]. It works on the principle: If you parallel uncorrelated noise sources, say: Four LT1028 OPAMPs, the combined RMS voltage noise will be reduced by the Sqrt(N), where N is the number of devices paralleled. This has been used successfully with OPAMP and Voltage References in ultra low noise circuits for decades. Figure 1 shows the basic configuration.


Figure 1 – Simplified schematic of the basic proposed “Ultra Low Noise Phono Preamp” using four LT1028 OPAMP’s in a parallel combination to get the lowest possible input voltage noise. But is this really the lowest noise in the actual application circuit?

What most people forget is that in the case of an OPAMP, the input current noise increases by the same Sqrt(N). We will see how this fits together a bit later on.

Source Resistance*

In the case of a moving Magnet Phono Cartridge the source resistance is the cartridge itself and these, while being variable between manufacturers, do have some common characteristics [2].

The stylus is attached to a magnet that moves in the record grooves. This magnet then moves next to a stationary coil and this interaction of the moving magnetic field produces a voltage in the magnetic coil, this voltage when amplified then produces the sound that we hear. Figure 2 shows a first order model for a typical Moving Magnet Phono Cartridge and the specified load of 250pF || 47 kOhms which produces a flat frequency response.


Figure 2 – Simplified model of a Moving Magnet Phono Cartridge including the connecting Coax Cable and the Specified Load: 250pF || 47 kOhms. 100pF of the load capacitance is usually included in the Preamp.

These coils are wound with many turns of very fine magnet wire as the inductance needs to be large to make enough voltage when playing a record to be useable. This long length of fine magnet wire has a resistance which is quite large, in fact, it can be upwards of 1500 Ohms as Table 1 shows.


Table 1 – Two representative Shure Moving Magnet Phono Cartridge types are presented. These seem to be representative of the typical spread in values of all commercial Phono Cartridges.

As can be seen, there is a quite large DC resistance in this type of design. If we use the lower number of 630 Ohms from Table 1 for the rest of our examples, we can see that this resistance has a noise voltage all its own which can be found by the familiar resistor thermal noise equation of,

Vnoise_rms = Sqrt(4 * Kb * T * R) Resistor noise in a 1 Hz Bandwidth [3].

At room temperature this equation simplifies to,

nVnoise_rms = 0.13 * Sqrt(R) Resistor noise at 27 Deg C (equation 1)

The units here are: “Nanovolts per Root Hertz”, where the Nanovolts are: “RMS” (Root Mean Squared). We will write these units like this for the remainder of this article: nV/rt-Hz

The “Root Hertz” Simply reminds us that the values are normalized to a 1 Hz bandwidth, which makes the subsequent math easy. If we want to know the total integrated noise in say a 20 kHz bandwidth, then we would just multiply the value by Sqrt(20,000) or 141, then we would get a cancellation of the rt-Hz term and just be left with the Nanovolts RMS value.

Applying Equation 1, to the Phono Cartridge DC resistances and you can see that the source itself, at low frequencies, produces a thermal noise voltage of,

0.13 * Sqrt(630) = 3.2 nV/rt-Hz
0.13 * Sqrt(1550) = 5.1 nV/rt-Hz

We clearly just found out that just the cartridge itself has a thermal noise of 3.2 to 5.1 nV/rt-Hz for these two, but representative cartridges.

Looking at the datasheet we can also see that the LT1028 has a typical noise voltage of just 0.85 nV/rt-Hz at mid band or 1 kHz.

Disconnect 1 -

Armed with only the knowledge of the equivalent circuit of the Phono Cartridge and with only one multiplication (equation 1), we can see that the circuit noise floor is going to be set by the DC resistance of the Phono Cartridge and not the LT1028 amplifier.

This is why the “First Audio OPAMP”, the NE5534A produced by Phillips / Signetics in the mid 1970s was so popular, it was designed to have an input noise equivalent to what the application circuit demanded, yes the NE5534 had an input voltage noise of typically 3.5 nV/rt-Hz. Look at that, it was designed that way for a purpose, as it matches the typical noise of a Magnetic Phono Cartridge.

The first disconnect is: Going to ‘Heroic’ lengths to lower the input amplifiers noise, in this case, is not going to improve the entire systems noise performance because the noise floor is set by the sensor itself and a single LT1028 is already 3 times lower than probably the best Phono Cartridge.

Disconnect 2 -

One might ask: “Well what does it matter if we parallel 4 preamps? It doesn’t make the noise worse does it?”, let’s see...

Remember when we discussed what paralleling OAPMP’s really does? It reduces the voltage noise by Sqrt(N) BUT it increases the current noise by the same Sqrt(N). In a normal OPAMP circuit, at low source resistances, the voltage noise will dominate and at high source resistances, the current noise will dominate. In between these extremes, there is an interaction with the source resistance itself.

An easy calculation to make is to divide the voltage noise by the current noise at a given frequency to come up with an equivalent noise resistance for the OPAMP, this is sometimes called Ropt and it will be the point where a source resistance of the same value will be equal to the total voltage and current noise of the OPAMP, producing a combined value that is 3 dB higher (or 1.41 times) than each separately.

For the LT1028 the data sheet the noise values at 1 kHz are,

Vn = 0.85 nV/rt-Hz
In = 1.0 pA/rt-Hz

Hence Ropt at 1 kHz is found to be,

Ropt = 0.85e-9 / 1.0e-12 = 850 Ohms

We can say that for the LT1028 at 1 kHz

A source resistance of << 850 Ohms and you will be limited by the voltage noise of the OPAMP
A source resistance of >> 850 Ohms and you will be limited by the current noise of the OPAMP

If we parallel 4 x LT1028’s we get the following Ropt,

Ropt_4x = (0.85e-9 / Sqrt(4)) / (1.0e-12 * Sqrt(4)) = 213 Ohms

Ropt has been lowered by N times the value of a single amplifier, in this example, N is equal to 4, and the new Ropt is: 850/4 = 213 Ohms.

In this particular case of four paralleled LT1028’s you can see that the current noise will always be dominate since the lowest Phono Cartridge resistance that I found was 630 Ohms.

Ropt is a quick and useful calculation to see where your OPAMP selection stands in relation to the source resistance.

Disconnect #2 is: “Just using more amplifiers will not lead to an improvement in total system voltage noise if Ropt is above the sensor resistance.”

A Closer Look

A closer examination of the system and all its various noise sources shows why,

Note: When adding voltage noise terms together, we use the Root Sum Square method (RSS) or,
Result = Sqrt(Val1*Val1 + Val2*Val2)


Table 2 – The voltage noises add in RSS fashion, the current noise is multiplied by the source resistance to get the equivalent voltage noise effect of the two. In the 1x preamp case: 1pA/rt-Hz * 630 = 0.63 nV/rt-Hz. The situation is even worst if we use the 1500 Ohm Phono Cartridge in the bottom example and the 4x configuration. Then the total system noise would be a whopping: 8.2 nV/rt-Hz.

As can be seen in Table 2, while the voltage noise of 4 X LT1028’s does indeed drop the voltage noise of the Preamp by 50%, but the additional current noise increases the of noise developed across the sensors resistance by 4 times and finally the total system noise is actually 17% higher with 4 paralleled amplifiers and this is for the low source resistance Phono Cartridge, the result gets even worse for the 1.5k Ohm version of the Phono Cartridge.

We could have predicted this by taking a quick look at Ropt at the design stage. Since the Ropt of a single LT1028 is some 850 Ohms, and this is smack in the middle of the range of our expected Phono Cartridges, we know that paralleling more of these amplifiers will not help in reducing the total voltage noise in the circuit as the current noise will take over and really a single LT1028 is going to be pretty optimum as it is.


Figure 3 – Total system input integrated noise, referred to the input, over a 10 Hz to 20 kHz bandwith as simulated for a 1x and 4x LT1028 Preamp when measuring the 630 Ohm Phono Cartridge and specified load of Figure 1. As can be seen, the 1 x LT1028 produces lower total integrated system noise (upper plot). Adding four paralleled LT1028’s in this example made the total integrated system noise worse (lower plot). This simulation includes the frequency effects of the Phono Cartridge source resistance.

Total integrated noise at 20 kHz – 1 x OPAMP’s - Upper Trace = 3.6 uV RMS
Total integrated noise at 20 kHz – 4 x OPAMP’s - Lower Trace = 4.2 uV RMS

Bottom Line – Four Amplifiers actually has 17% worst total system noise in a 20 kHz bandwidth, even for the lowest resistance Phono Cartridge. The situation is even worse if the 1550 Ohm cartridge is considered.

Side Note #1: These bipolar based low noise OPAMP’s, almost always have a higher 1/f frequency for the current noise than the voltage noise 1/f frequency. For the LT1028 the 1/f corner on the voltage noise is approximately 3.5 Hz, well below the start of the audio band. While the 1/f Corner for the current noise is around 850 Hz. This will mean that the low frequency noise will be increasing in the audio band if the OPAMP is operating where the current noise times source resistance is the dominant noise source of the circuit.

Side Note #2: On Bipolar OPAMP’s with input bias current compensation, a large portion of the bias current noise can be due to the compensation current, this compensation current is always generated by one transistor inside the OPAMP and then split to the two OPAMP inputs. Some of the input current noise is therefore correlated between the two inputs [4]. This means that at higher source resistances, the total system noise may be less with circuits that use balanced source resistances. The amount of correlation is never listed explicitly on the data sheet and only Linear Technology regularly puts this information in their performance curves on their data sheets. For all other OPAMP’s in the world, you will just have to measure this for yourself. For the LT1028 the amount of current noise correlation has proven to be around 25%.
[Edit] OK, so I was not entirely correct - I found an Analog Devices data sheet AD8597 that does list the correlated and un-correlated current noise. So +5 points for this, but -1 point for not providing a curve and -1 point for providing the current only at one very low frequency.

Conclusion -

Don’t forget that total system noise depends on not only the Voltage Noise Source Resistance, the OPAMP itself, and also the contribution of the OPAMP’s Current Noise times the Source Resistance.

Make sure that you know what the Source Resistance of the thing you are measuring before picking and trying to optimize the OPAMP Preamp.

Use the very simple to calculate value: “Ropt” to see where your perspective OPAMP fits in relation to the system source resistance. For most typical circuits where you are trying to minimize total voltage noise, you want the Ropt to be 2 to 10 times higher than the system source resistance. If possible.

For this example Phono Preamp with it’s 630 to 1500 Ohm source resistance, a single LT1028 is not the best choice with a Ropt of 850 Ohms, and you will pay a premium price for it’s ultra low noise performance. The more reasonably priced NE5534A is also a perfectly reasonable and lower cost choice with it’s Ropt of 8700 Ohms @ 1 kHz.

If you pick an OPAMP who’s total voltage and current noise contribution (Ropt) is exactly equal to the source resistance, the combined voltage noise will be 3 dB higher (1.414 higher or 40% in linear terms) than the source resistance alone.

Bonus Curve -

I presented a singe value for Ropt, the one we read off the data sheet from the given values at 1 kHz. However, Ropt is not a single value, it varies with frequency, just as the Voltage Noise and Current Noise do.

A complete Ropt curve versus frequency for the LT1028 is shown in Figure A. This curve is derived from the typical voltage noise and current noise figures from the LT1028 data sheet. A curve like this is useful to have for all your low noise OPAMP’s as it is a handy reminder of how Ropt changes with frequency for a particular OPAMP, because many circuits do not operate at single frequencies, some may operate at extremely low frequencies or at high frequencies exclusively. With a Ropt plot versus Frequency, you can make even better informed choices on your amplifiers interaction with your source resistance.


Figure A – Ropt is not a single number, but actually varies with frequency as the Voltage and Current Noise of the OPAMP vary. Her we can see that the midband value of 825 Ohms drops as low as 200 Ohms at 10 Hz to a high of 925 Ohms at 20 kHz. It is good to keep this in mind when designing for circuits with either very low or very high bandwidth centers, because not every circuit operates at 1 kHz which is where the typical voltage and current noise values are given. I make these curves with the help of a template that I have made for the LibreOffice Spreadsheet program [5].

* The term I use here as ‘Source Resistance’ means the real part of the source impedance, and it is a number that usually varies with frequency.

Extra Bonus 2 - 

Art Kay of Texas Instruments wrote a really excellent book and Magazine Article series on all things relating to: "OPAMP noise". The book even details how to simulate the noise with Spice. Art has kindly posted a zip file with all the articles at the link below,


[1] LT1028 Data Sheet

[2] Reference Shure Phono Cartridge Data Sheets:
M97xE User Guide, 2008
M91G Data Sheet, 1970

[4] Solomon, James - “The monolithic op amp: A tutorial study” IEEE Journal of Solid-State Circuits, vol. 9, pp. 314 – 332, December 1974(Also available as an application note at

[5] Open Source Office Software –

Article By: Steve Hageman /

We design custom: Analog, RF and Embedded systems for a wide variety of industrial and commercial clients. Please feel free to contact us if we can help on your next project.

Note: This Blog does not use cookies (other than the edible ones).