Serial Program Downloading (spi) Enable

Posted By admin On 24.08.19

This paper is about the amateur electronics person and non-electronics professionals and their quest to actually analyze and display a 24 bit presentation of analog data. This web paper discusses and offers a number of methods to apply a 24 bit ADC (Analog to Digital Converter) to the real world of analog data. This paper explains the conversion of the analog information into very high resolution digital data. The paper below includes methods of moving the real world analog data into a standard digital computer.

  1. Serial Program Downloading (spi) Enabled Spien=0

The computer can be a Windows 7 operating system PC, a Linux OS PC, a Mac OS PC or a single board Android or Raspberry Pi system. The point of this paper is to show the relative simplicity of each of these steps meaning that it is fairly simple, with todays incredible technology, to read analog information into a standard computer in digital form to extreme resolution and to read analog signals down to billionths of a volt - that is billionths with a B - also known as nanovolts!

Below is an example of bit-banging the SPI protocol as an SPI master with CPOL=0, CPHA=0, and eight bits per transfer. The example is written in the C programming language. Because this is CPOL=0 the clock must be pulled low before the chip select is activated. The chip select line must be activated, which normally. Programming on all Atmel AVR 8- and 32-bit microcontrollers and processors with On-Chip Debug. RS-232 serial cable. DC power supply cable. 10-pin (JTAG) to 6-pin (SPI) probe adapter cable. 10-wire multicolor custom connector cable ('squid'). If both the debugWIRE enable fuse (DWEN) and lockbits are set. SSPOV must be cleared in software in either mode. 0 = No overflow bit 5. SSPEN: Synchronous Serial Port Enable bit. In both modes, when enabled, these pins must be properly configured as input or output. In SPI mode: 1 = Enables serial port and configures SCK, SDO, SDI, and SS as the source of the serial port pins.

By the way, Pico amperes and femtoamperes (quadrillionths of an amp - 800 electrons/sec) are possible to measure but with extreme care in high gain circuit design, component selection, EMI shielding, temperature control, and board trace layout. This paper uses the LTC2440 as a specific example of the use of a 24 bit ADC but this discussion below applies to any high resolution ADC, provided that the investigator can develop the code to drive the ADC.

I have also used the Arduino Uno as an example of a microprocessor but any microprocessor can be used with the same considerations mentioned with the LTC2440, - the user must have the ability to code the microprocessor control lines to be used. Although I mention the Linear Technologies products often, I am in no way associated with Linear technologies. But they are the only commercial technology group of which I am aware, that has specifically developed an Arduino/microprocessor language link (Linduino) to help amateurs work with the LTC ADCs - thank you LTC! LTC also has an excellent and well documented product line. I have chosen to task a dedicated microprocessor with the busy work of collecting the analog information and controlling the ADC timing and then sending the ADC digital data to a serial out Com/USB port on the microprocessor.

All of this work can be done inside a high performance, high cost PC but it seems to be a waist of computer power to control complex and high speed menial tasks when a $25 processor can manage most of the data collection and analog to digital control processes - it becomes a kind of delegation issue. The task of managing the analog data collection also protects the expensive, high performance computer from potentially dangerous analog data collection wiring errors. Imagine reading analog data coming from a 200 volt device and making a wiring error, sending 200 volts into an expensive PC comport! Steve I found an amazing lack of specific information, at the amateur level, in both LTC2440 coding and LTC2440 schematics available on the net (this applies to all other high performance ADCs manufacturers) until the much needed Linduino language aid was developed by LTC. Even getting the LTC2440 started was a challenge.

My purpose with this website is to create a general open source page with no hidden agendas - just free information. This website is here to help and promote the amateur and professional knowledge of the application and use of the 24 bit ADC. For those of you who think as I do - visually - here is a greatly simplified block diagram of the analog to digital conversion process discussed in this paper - remember this is a 24 bit ADC system capable of nanovolt measurements and resolution of data to one part in one million allowing for 4 bits of noise.

See the below for specifics on limitations of background noise. The 'preprocess' or ADC data-in preparation area of the diagram (left of the blue vertical line) is, most importantly, a buffer/amplifier between the analog sensor and the ADC input.

Much of my information is greatly simplified and intended to both teach and to encourage the use of 24 bit ADCs. This discussion is intended for people from age 12 new to electronics and science in general to senior scientists not quite sure of the detailed 'state of the art' electronics available in the process of placing real world data in a computer for analysis. The 'preprocess of analog data' shown as the second step from the right depends on the data device. But it has been my experience that some kind of buffer wired op amp is critical for most analog sensors - most sensors do not do well if fed directly into a 24 bit ADC. Much of this paper's content can be duplicated, built, and coded in a matter of days as you will see later.

The basic cost was another goal of mine and it is my belief that this project parts cost, as illustrated in this diagram, can be built for less than $100 US including the Arduino Uno processor and not including the PC and monitor. A number of very knowledgeable professionals have helped in the assembly of this page including John Beale, Ted Channel, and Mark of Australia. Mark is working on the use of the LTC2440 in the analysis and health of the human eye with the goal of improving modern medical systems usable in non-medical and remote environments.

Ted is working on low cost seismographs used worldwide as teaching tools. I have also received guidance from a very helpful senior satellite design engineer especially on the 24 bit volt meter design. Basic opening information and explanations of the purpose of this site, simple applications and uses of the LTC2440, and other ideas on how this site could be helpful if you are interested in the 24 bit ADC and the coding that goes with a 24 bit ADC.

It has been my experience that coding in particular, is hard to find on the net, so I have made a point of providing good reliable working code and accurate and simple schematics. This is an essential block diagram that provides a visual summary of the basic LTC2440 application. This section has a series of very simple startup schematics. Most people with some experience building electronic breadboard circuits can use these schematics to construct a working 24 bit ADC system in an afternoon. This is a simple single end 3 wire sensor schematic - very easy to construct. This is a discussion of the differential amplifier and its use with the 24 bit ADC. It is my opinion that the differential amplifier is the best possible way to achieve nanovolt range measurements.

This is a full schematic of a working 24 bit volt meter. The point of this schematic is that the 24 bit ADC and preamp can measure ANY voltage to extreme resolution. 24 bits enables the measurement of a voltage to 5 and 6 places depending on the source stability. It was my experience that 24 bits is much like using a microscope when all I had ever used was a magnifying glass. The extreme detail of an analog signal can be fully realized at 24 bits. The present noise level of this design is about 50 nanovolts and getting lower by the week. This design is a cooperative effort, I could not have attained the low noise levels on my own - this is the point of open source shared efforts.

This is a 24 volt meter schematic using an LT1007 buffer/high gain op amp and an LTC2440 ADC with code. I have completely abandoned any form of switcher circuitry in my system. Low quality 'switcher/buck-boost' circuits are very dirty with high frewuency noise. And this high frequency noise is not easily supressed with capcitors. I also need to show more detail on the linear power supply I am now using. I have borrowed from the high performance audio people who were the first to understand the importance of ultra low noise DC power supplies in high gain circuits. This circuitry will be shown on a separate page because of the complexity of the circuits and the need for several different approaches.

ANY suggestions here would be greatly appreciated. This is a quick example of the measurement of a microvolt signal and the amazing detail of 24 bits! There are only two elements of a high resolution view of analog data.

The first is the signal size, and the second is the noise of the analog signal environment. I have spent quite a lot of time lowering the noise of the circuits shown on this website. I am now confident the LTC24XX family of ADCs can measure into the low nanovolt region with extreme care in building the low noise circuits to keep circuit noise at a minimum. Signals as low as 80 nanovolts can be resolved - that is 80 billionths of a volt - billion with a B! It is critical that a microprocessor control the ADC. Yes, a general computer can do the work but it seems much more efficient to let a microprocessor do the 'busy work' and let the main computer simply process and display the data. I selected the Arduino simply because is small, cheap, and fairly well documented.

Any good processor can be used. This is the heart of the successful operation of an LTC 24 bit ADC - ADC control code. This is the code that operates the processor and lets the processor output serial data to a main computer. This code will work with Windows based systems, Mac OS, and LINUX.

The Arduino processor is commanded by this code to control all ADC timing and output controls and ultimately delivers a serial data string and a line return. It then becomes the job of the main computer to process the serial data and to display the information as data and/or a graphic display. This is a working code listing for the LTC2440 developed by John Beale but limited to sample rates of 7 or 880 samples per second. This is the process of downloading the LTC Linduino library language set and installing it as an Arduino Library. This is a description of the process of selecting a sample rate by controlling the SDI line (Pin 7) of the LTC2440.

This section also gives a brief description on the process of downloading and installing Linduino (the LTC to Arduino connection library elements) in your Arduino code. This is a working code listing for the LTC2440 which uses the Linear Technologies Arduino interface code to, among other things, to control the sample per second rate.

This code has full control of the sample per second rate from 7 samples per second to 4000 samples per second. The Windows OS is a choice I have made so I have used a 'shell' program called 'processing.org' to access a serial device output such as the Arduino Uno board.

I can read the serial data into my PC, hold it in my PC, send it to disk, process the data, and display the data on my PC. Python is another well known method to display data on a UNIX based computer. It is also very possible to use the new single board processors such as the android family of boards, or the Raspberry Pi. This section is on the process of really doing something significant in a computer, with serial device generated data. This is about bridging the gap (chasm) between real world analog data and pure digital computers. This is code using 'Processing.org' operating inside the main computer, that will read serial data from a serial-out device or Arduino board, move the data through a PC USB Com Port, and into the PC/Linux/Mac system for further processing and display the serial data in a small new window.

This code stub can be adapted to process the data, store the data, and chart the data in a main computer multiple window display. This is the point where you can finally do something with your serial data!

I have experimented with both wireless and multiplexing (multiple sensor measurements). Multiplexing is simply a matter of adding a 8 or 16 channel multiplex board and controlling the 'data out' stream with the Arduino board. It is also possible to multiplex with some of the LTC multi-channel ADCs. But I have found the LTC 8 channel ADCs a bit complex to work with - I have enough trouble dealing with the data stream from a single sensor. We all face the issue of where to buy a critical component and how to find authentic top quality quality at the best possible price. This is my opinion with a few suggestions - a list of places I buy parts and why this list is necessary. This is also my thinking on quality vs.

Price in the construction of high performance prototype circuits. (Direct to new window, 'contact me' page) If you have questions or corrections to suggest, please contact me at this link.

This is a list of papers on op amps, ADCs, etc., and technical data sheets from various component manufacturers. INTRODUCTION BACKGROUND. Over past three years I have been studying the application of a microprocessor controlled 24 bit ADC to ultra stable high gain op amps. I have had an interest in the development of a general amplifier for application in any study that requires extremely high gain combined with low noise and temperature stability. The Microprocessor used in this application is the Arduino Uno but any reasonable processor can be used. The ADC is an LTC2440. The op amps are a matter of choice - the amps used here are the LTC1052 which are chopper stabilized, ultra temperature stable ('zero drift'), and very low noise.

The purpose of this paper is to allow a person to start with a few basic components of modest cost and build a high performace 24 bit resolution readout of an analog voltage. With a basic circuit built, a person can input an analog or sensor voltage, such as temperature, at one end of the circuit and see a 24 bit (high resolution) digital readout on a computer screen. It is easier than it sounds but it does take a while - this is not an over night project but still possible with electronic and coding knowledge or a friend willing to help with such thngs.

Since an Arduino processor is used to process the data, there is almost no risk to the main computer. The most important point I hope to make on this website is the versatility of such a circuit and the amazing range of applications. In my general review, I would like to emphasize the following system specifications, each point being significant in itself. The simplest example use of this circuit is a 6 to 7 place AC or DC volt meter. The circuit is especially well suited to analog sensors of any type that output some voltage proportional to a natural event such as air temperature, environment humidity, vibration, light levels, etc. There are numerous, low cost, devices which will measure such variables but this system can show measurable, repeatable changes of one part in 100,000 and better. The amplifier can be AC or DC with the addition of a single capacitor.

The sample rate can be any rate from 6 samples per second to 880 samples per second. The sample rate is set in the microprocessor coding and is very simple to adjust. The total cost of the ADC/amplifier is less than $75 (US) including the processor depending on the components and component grades selected.

The maximum gain I have been able to use that will produce data readable over ambient noise (data 10x over noise) has been 20 bits or a gain of about one million. Gains of 21 and even 22 bits are possible but become increasingly difficult with respect to sample rate, cost, shielding complexity, temperature, and general component generated noise. Reading voltages in the high nanovolt range requires extreme component selection, special shielding, detailed attention to component layout, and high quality components at all stages. I have made extensive noise measurements which are of interest to some and not to others. But the essential point is the system is capable of measuring one part in one million with the one part ten times the noise level. I will show noise measurements later in this site.

I will include examples of Arduino code I have developed on this site. Most of the code is experimental and not developed for good efficiency. Moderate speeds can be used but for anyone looking for extreme speeds, I would suggest a careful look at the code for items such as library calls, unnecessary loops, the total lack of error checking, etc. I would be very interested in hearing from anyone concerning code and especially methods to improve the code. FROM THE BEGINNING Before we start the next section on analog to digital convrsion - Two very important definitions Formal definition of an analog signal.

An analog or analogue signal is any continuous signal for which the time varying feature (variable) of the signal is a representation of some other time varying quantity, i.e., analogous to another time varying signal. For example, in an analog audio signal, the instantaneous voltage of the signal varies continuously with the pressure of the sound waves. It differs from a digital signal, in which a continuous quantity is represented by a discrete function which can only take on one of a finite number of values. The term analog signal usually refers to electrical signals; however, mechanical, pneumatic, hydraulic, and other systems may also convey analog signals. Formal definition of a digital signal. A digital signal is a physical signal that is a representation of a sequence of discrete values (a quantified discrete-time signal), for example of an arbitrary bit stream, or of a digitized (sampled and analog-to-digital converted) analog signal. The term digital signal can refer to either of the following:.

any continuous-time waveform signal used in digital communication, representing a bit stream or other sequence of discrete values. a pulse train signal that switches between a discrete number of voltage levels or levels of light intensity, also known as a line coded signal or baseband transmission, for example a signal found in digital electronics or in serial communications, or a pulse code modulation (PCM) representation of a digitized analog signal. Translation.an analog signal varies in value in no set step or change. Example: Temperature Translation.a digital signal is a defined, strict, group of pulses.

Example: Morse Code. IN FACT - WHAT IS AN ADC? Describing an ADC can be so complex the actual use and value of an ADC can be lost in the detail. If you want to read about the detail of the ADC please read these pages which go into extreme detail.

This description is nicely done and fairly easy to follow for a person new to ADCs - these links will open as a new window - you will not lose this MAIN ADC site if you take a quick look - just close the new window and you will be right back here. This is the way all hyper links work on this website: This is a very nice and very technical description of an ADC: The essential understanding of an ADC is more with the purpose than the internal workings. An ADC converts analog signals to digital. We live in an analog world - except for computers, there is nothing in our life and our world that is digital. Our vision, for example, is an analog process of sensing photons, understanding their structure, and then processing the information in our brains. Now what happens inside the working brain is extremely complex and could possibly be a digital process.

Weather is all analog - temperature, humidity, wind speed, etc. The human mind simply works hard to interpret an analog world to survive. BLIND COMPUTERS Computers are ALL digital.

Every circuit in a PC is digital. A computer can not, in any way, read analog information by itself.

For the detailed computer people out there, I do understand that the sound card has an very limited analog input. But the analog sound input is very quickly converted to digital information using a small, modest, ADC inside the PC! A computer can not know what color its case is, it can not measure its height off a table, it simply is sensually blind to the world. Even data input into the computer from a disk or modem is in an all digital format. A computer is really just a dumb box inputting and processing digital alphanumeric characters very quickly, and displaying information on a screen in digital pixels. It may be a good thing computers can not tell us what they think of us.

Serial Program Downloading (spi) Enabled Spien=0

So how do we get along with our digital friends? - with the ADC - of course! Actually we do not always get along with our digital friends but that is a different subject. The ADC is the bridge - the link - between the real world and the computer. An ADC is the single most important electronic component in or connected to the computer today if, the computer needs to understand or monitor the real world! The ADC creates the eyes, ears, nose, and even the sense of touch of the computer.

All environmental sensors go through an ADC to let the computer to know what is happening in the real world. Yes, a computer can ask another computer what the temperature is in San Francisco but someplace in the chain of computers, there is an ADC at the beginning of the chain reading, and converting to digital-speak, the real world temperature in San Francisco.

Even sub systems such as a robotic device must have ADCs on board to enable the robot to sense the world. Most smart phones have motion detector sensors and ADCs inside. THE 24 BIT ADC This website discusses a 24 bit ADC.

A 24 bit ADC is a common 12 or 16 bit ADC on steroids. As an example, a 24 bit ADC can see or sense, a 1000 times more clearly than a 12 bit ADC can sense. If a science experiment measures temperature with a 12 bit ADC it can measure temperature to 3 places - 23.5 degrees C as an example where a 24 bit ADC can measure to 6 places or 23.4894 degrees C. So it is obvious both devices are important - you do not need to know your outside air temperature to 5 places but you might want to see minute location changes to measure the exact movement of a volcano about to erupt. It seems probable that reading the GPS location to 6 places of accuracy on Mount St.

Helens could have saved lives. If 24 bit ADC sensor and location systems (which did not exist at the time) were used in early 1980, they would have seen the flank develop a large bulge and then explode. Knowing this bulge was developing, the side directed eruption probably would have been predicted and the down stream area would have been cleared. The good news is that his is how high performance ADC/GPS systems are being used today on many volcanoes around the world!

THE LTC2440 This website discusses a particular 24 bit ADC made by Linear Technologies called the LTC2440 and the general family of LTC ADCs which are all very similar and generally interchangeable as far as general code to control the LTCxxxx family is concerned. I think the essential point to make about a 24 bit ADC, after working with the LTC2400 and LTC2440 for three years, is the amazing voltage resolution or accuracy of a 24 bit measurement. A 24 bit ADC converts a analog voltage to a digital voltage and the 'detail' - or the resolution is what makes the 24 bit ADC special. 24 bits is capable of resolving a voltage to one part in 2^24 or one part in 16777216 parts. This, said a different way, means a voltage can be accurate to.0000006 volts or 7 places or 600 nanovolts. But most noise in modern electronics is well above 600 nanovolts.

In fact most typical quality circuits have about 5 microvolts of noise or 10 times the voltage resolution of a 24 bit ADC. The reality then says that 24 bits is really usable to 21 bits and more likely to 20 bits. This means that good data can be measured at 20 bits or one part in one million or to 6 places. Most of this website is based on 20 bits of usable resolution from a 24 bit ADC. There are a few very carefully designed 24 bit systems which can measure to Picoamps (trillionths of an amp) but the engineering is very complex because of environmental noise. Even Femtoamp measurements may be possible but difficult - a quadrillionth of an amp! The good news is that there are many modern requirements for voltage measurements to 6 places or to a millionth of a volt.

And there are many new applications where 10 millionths of a volt is the analog voltage of the source and this resolution allows us to see nature with a much stronger analog voltage microscope than ever before!!! As an example, today's astronomy can detect planets in other solar systems (in deep space) with the ability to measure and track data variations in the 5 microvolt range. Another example is the ability of modern medical systems to measure eye health when the electrical data of the measurement is to 5 to 10 millionths of a volt.

Science is demanding accurate measurements to smaller and smaller voltages and the 24 bit ADC is part of the answer. The fluent and precision use of a 24 bit ADC is critical to modern science and to new discoveries including amateur contributions. The 24 bit ADC is now easily available to amateurs.

This is the reason for the numerous referrals to 6 place voltage accuracy in this website. BLOCK DIAGRAM ADC - PROCESSOR SCHEMATIC BLOCK DIAGRAM. I have repeated this diagram above because it is so important to move onto more complex application of the 24 bit ADC. In this diagram above, you can see the analog signal is sensed by the green device which can be a temperature sensor, or humidity sensor, or motion sensor, etc. The orange analog data is represented by the number 12940328 but this could be any analog number such as 39.8093 Degrees C. The signal is then adjusted and, amplified in some cases, and then the analog signal enters the ADC.

Inside the ADC, the signal is converted to a digital value represented by the orange zeros and ones in the diagram on the right. In this case, the Arduino does a little more work on the signal and sends it to the PC which also processes the signal, including converting the number to the original analog value that entered the system and then displays the original analog value on the screen.

A SPECIAL NOTE ABOUT LTC2440 SSOP (SMT) SOLDERING! If you have never worked with SSOP chip sizes you are in for a rude awakening. SSOP is a tiny surface mounted technology (SMT) IC and can be extremely difficult to solder if you do not have the right soldering iron and some experience soldering micro circuit components. The best way to start is to look at a few videos on 'SSOP soldering'. In the image to the right is a 16 pin chip very much like the LTC2440. Try this address for a start, some of the videos are quite good but soldering can be a tense and scary process the first time.

Here is a place to start on YouTube: I generally solder to an adapter board which has pins on both sides and allows you to plug the soldered ADC/board assembly into a breadboard type of circuit test bed. THIS IS A GREAT GENERAL SOLDER TECHNIQUE VIDEO below - the whole video is excellent: This is the best video I have seen on soldering very small surface mount components such as the SSOP/narrow pad types.The only problem is the person is very good at this stuff!

I have probably watched this 10 times so far. Watch lots of the demos - they are mostly, very good. One detail with which you should take care. Technically the LTC2440 size is called a 16-Lead Plastic SSOP ( Narrow.150 Inch). Most, but not all, standard SSOP board patterns will take this ' Narrow' class.

This address downloads the.PDF data sheet with exact pad dimensions: on page 27. In soldering SSOP, the most important issue I found was to have a sharp soldering tip at 40 to 50 watts and good magnification of the chip pads to be soldered and iron temperature control if possible. I find it is important to have a fairly hot tip which melts very fine solder quickly and avoids over heating the chip waiting for the solder to melt. This sounds backwards to the pro assemblers but speed, very fine solder, and pre-rosin pasted surfaces are important. Excessive application of rosin paste can cause the solder to bridge the pins. These points (so to speak) are critical in order to avoid over heating the IC.

Also important for me - have some 'desolder' woven copper braid ready - you will need it to clean up your solder overflow unless you are very good with an iron especially if you have an unwanted solder bridge between chip legs. This is a very good video but be careful with the pad dimensions of the LTC2440 ( SSOP/Narrow) - this company may not sell a pre-soldered board of the right dimensions. Practice with your iron on very tiny wire joints BEFORE you try to solder the 2440 and get a feeling for the melting point of the solder and the flow characteristics of the rosin paste you are using. If the solder is just not melting, quit and try soldering again.

PRACTICE - just a few seconds of heat applied to long to a pin on the chip will destroy the chip! But it is better to study a few videos - some of the people making the videos are very good.

Always keep the tip of the iron clean - I keep a small bit of fine cloth sandpaper near. Cleaning the tip on a wet sponge is even better. When you are done, use some kind of continuity checker to check each pin for a connection to the pad and check that each pin is independent - no soldered to a pin next to the intended pin. I do use a high power ocular but the ultimate check is continuity where it should be and none where it should not be. But be careful with the continuity checker voltage applied.

Please keep in mind that this soldering is easier than it first seemsand is extremely useful once you develop confidence and some experience working with it. You can place entire circuits in a tenth the space you took with wired components especially if you are making your own circuit boards.

The entire LTC2440 block diagram shown above, as a printed circuit, can placed on a one inch square (2 cm x 2 cm) board if you break at the input senor and the Arduino control wires but only if space is critical! CODE SOFTWARE - CODE A large amount of the signal pre-processing and ADC control is done with code. Code in the Arduino board and code in the PC.

This code, for both systems, is listed below on this website. This is a simplified block diagram of the ADC - op amp schematics shown below. The essential concept here is that the LTC2440 is a complex device that needs computer control. Rather than have a central PC doing a lot of busy work controlling the ADC timing, a processor is assigned the work and hands off a serial sequence of measurements of some input voltage to the PC. Since this is a 24 bit ADC, there is some very intricate and complex timing in the conversion of data from analog to 24 bits of digital data. This is an ideal place for a separate processor. I have chosen the Arduino Uno but any reasonable processor can do this kind of work.

All that the PC needs to do is receive, convert, and report a series of serial values on the PC monitor. An additional program is necessary in the PC to input and display the serial data.

Any computer including some of the new high performance bare board, LINUX based systems, can be used. This particular use of the ADC uses one op amp as preamplifier. The op amp has a differential input allowing noise on both input lines but the noise is canceled in the differential amplifier design.

The gain of the op amp depends on the source voltage. The differential input design is extremely effective at ignoring common mode events - events that occur on both input wires such as electromagnetic events in and around the input lines. In this design, the input lines are shielded but the shield is only grounded at the amplifier ground point. This ground point, is by the way, a single common ground buss to which ALL grounds are connected. This process greatly reduces ground loops which are far more common than most people think. NOISE ISSUES Based on my work and others who have written to me it is now possible to reduce noise with good components and careful wiring, and sensors in the high nanovolt output region can be read with reasonable signal to noise ratios (See the ' section below).

I have gotten hints from others that they are in the high nanovolt region and approaching 50 nanovolts for analog signals read by systems much like this block diagram above. The region shown in a red tint box is the area where all possible care must be taken for both EMI and thermal issues. If possible, the preamp and ADC should be fully enclosed in a grounded pure copper housing. I suspect it will be necessary to cool the copper housing using Peltier cooling hardware to get to the lower nanovolt regions! But cooling can be risky because of condensation issues so it is not as easy as it might sound. Remember that the gain of this system can reach one million. And the goal of the design is to keep noise in the low microvolt and even high nanovolt range.

With good grounding and shielding techniques nanovolt noise is possible. An additional benefit of the enclosed components is less thermal drift from air movement over the components. This air movement over the electronics including resistors and capacitors is significant and can easily degrade an input signal by doubling the drift, especially with the ADC and resistors if 'zero drift' op amps are used.

In the 'quick start' examples below, a high quality 'Bourns' (or equivalent) 10 turn pot is critical for a good stable zero at the ADC input stage - beware of cheap imports!!! A cheap pot can actually introduce noise to a circuit and the hysteresis is huge. High quality metal film resistors are critical and the better the matching on the differential amp the better. I typically will match resistor pairs to better than 0.1% using measured selection with my ohm meter. For the few caps used find the best quality your budget can afford - it is money well spent! The next step up for reduced noise is circuit board ground plane design including ground surrounds for critical points. Linear Technologies has some very good documentation on low noise practices even in the LTC2440 and LTC1052 data sheets.

Highly recommended reading: LTC2440: 24 bit ADC LTC1052: Zero drift op amp Linduino: This is the new coding system created by Linear Technologies (LTC) and Arduino The best results I have seen documented using the LTC2440 is 20 bits or one part in one million. If anyone out there gets to 21 bits, please send me an email and let mew know how you got there. If your work is that good, I would like to share some of your methods in this paper with or without your name depending on your preferences. I do recommend meticulous power supply quality.

I typically will use a supply with 3 levels of regulation and the last regulation stage includes a relatively high current, five volt reference voltage chip made by Maxim. QUICK START SCHEMATICS A VERY BASIC WAY TO TRY THE LTC2440 An absolute minimum circuit But be very careful. This circuit is very primitive and a single error could damage the ADC. The basic idea here is to simplify the ADC startup and coding to an absolute minimum. The problem with this circuit is that it uses the five volts from the Arduino board which is from the PC. This source of voltage to drive the ADC is extremely noisy. The absolute maximum voltage at the LTC2440, pin 2,3, and 5 is 5 volts.

It is best to input less than 5 volts at pin five because 5 volts is so close to damaging the chip. LTC2440 ADC Input Voltage Limits. In the diagram below the ADC (LTC2440) input voltage must be limited to +/- 0.250 volts. This limit is not a serious limit because most applications of this system are working with microvolt and even nanovolt source voltages. When the overall system gain is considered, ADC output voltages of +/- 0.250 volts would be welcome.

Serial program downloading (spi) enabled spien=0

And in most cases, a simple gain increase in the ADC code will produce any number needed within reason. The limit is from the requirement of the ADC to process a signal from -0.3 to + 5.3 volts.

Any one needing to work with data in the one to five volt region should divide the ADC input voltage by 10 with precision resistors, and correct the division in their ADC processing code using 10x in the gain. It is possible to offset the input voltage by adding +2.5 volts to the signal but this +2.5 volts 'offset' can be a major source of new noise. I have tried both solutions - working with a voltage under +/- 0.250 volts and the +2.5 volt offset, and I found it is far easier and cleaner to simply work at less than +/- 0.250 volts as an input voltage. If the ADC does not show a voltage in the Arduino serial monitor, try a higher voltage source impedance - switch the 10K fixed resistor to 100K. A better circuit would use a pot output from a 1.5 volt or 3.2 volt battery.

It would also be safer to place a buffer op amp between the input voltage ( the source) and the input of the ADC. I strongly recommend a buffer amp of some kind even if it is a voltage follower made from any quality op amp to start - even a 741 will work initially. As soon as possible, a voltage reference source should be used for the ADC.

The reference voltage is critical to high performance ADC output. The ADC accuracy and stability depend on the quality of the reference source. I use the Maxim 6250 as a 5 volt reference source. It is a precision source, extremely stable, and can handle a higher current draw than most reference sources.

The Maxim 6250 is strong enough to drive two (low current) op amps, and power the LTC2440 ADC as well as act as a reference for the ADC. But the maxim reference requires an input of 7 volts or higher as most references do. The system readout can be as simple as the Arduino serial monitor window. This kind of basic start will give you an idea of the ADC operation and will also let you work with, and maybe develop better, Arduino code than I will supply below. Using this Circuit: The LTC2440 will fit on most SOIC circuit adaptors. Soldering a chip to an SOIC board is difficult.please read what you can find on soldering methods with SOIC components.

When soldering a chip to an SOIC board, it is extremely important to check for continuity of each pad to the chip and to also check for solder bridges between pins. Either error can cause an error and worse can cause chip destruction!!! Use any op amp available as a buffer to help protect the ADC chip. If you have high performance low noise op amps available use them in this circuit as soon as you have tested the circuit and it is working.

Serial Program Downloading (spi) Enable

I use the LT1028 in later examples of low noise circuits. But I would suggest that you use a modest op amp until you are sure your circuit is working and will not damage the op amp or the ADC. A high quality pot will give you better results than a cheap pot but either will work. Do NOT ever use a voltage over 5 volts in this circuit - it will burn out the LTC2440 instantly. CODE TO GO WITH THE CIRCUIT ABOVE for a copy of the actual code go to the For a copy of the. The differences between the code is explained on the coding section NOTE: To adapt this circuit to the Schafer code, wire the LCT2440 ADC, Pin 7 from hard wired to + 5 volts, to Pin 7 of the ADC hard wired to the Arduino Uno board Pin 11 as the blue line in the schematic belows shows.

A BETTER WAY TO START - but a little more complicated. A better power supply. Although the circuit above is quick and simple, it lacks any kind of reference voltage for the ADC. The circuit below is almost as simple to construct but has a very high quality regulator chip combined with a fairly well regulated source, the common 9 volt battery.

The Maxim regulator chip series is excellent for low noise and will provide a higher current limit than most precision voltage sources. But any high quality five volt reference voltage regulator chip will work. The data sheet for the Maxim chip is here: I would also suggest the use of noise suppression caps (2.2 uF) as shown in the Maxim sample circuits. Here is an even better circuit where an op amp acts as a buffer between the source voltage and the ADC and offers a better impedance match with the ADC.

I have found that there are a number of sensors, such as the LM34 temperature sensor, that perform far better if the sensor output is fed directly to high impedance input such as an op amp. This is especially useful if you need to adjust the output voltage of the sensor for calibration to your system. This can be done with a simple voltage divider on the output stage of the op amp.

The op amp can also act as a pre-amp for very low level sensor outputs where the gain can be set to 1000 or even 10,000. Higher gains can be obtained with low noise, low temperature drift op amps such as the LTC1052.

A second op amp can be added to act as an output zero to the ADC by using a summing op amp circuit configuration on the 2nd op amp input. The op amp +5 volt power can be drawn from the Maxim voltage regulator as long as total 5 VDC circuit current draw is within the limits of the Maxim regulator chip specs. SPECIAL NOTE: The reference source voltage for the LTC2440 Many people have asked what to use as a reference voltage source. The first point to make is that you can use any ultra-stable 5 volt DC source - even a battery. Just keep in mind that batteries tend to drift with temperature. If you prefer to use a separate source from the ADC power supply - do it. The diagrams on this page are written to give you a quick start, not a final design.

These circuits are seeds not final designs. I have always found that publications of complex circuits are so carefully drawn to account for all possible situations, that the final circuit can be two or even three times as complex as the basic idea of the circuit. Another example of complexity not directly related to function is coding input error checks. You are free to enhance the code in anyway that will work for you. As for reference voltage sources, the only limitation I would take great care with, is the current capacity of the reference source.

I have had voltage reference chips bog down when the current draw is two high. In this circuit, finding a variable reference voltage source failing because of heat or excessive current draw is a VERY difficult problem to find. You are free to use a separate current source for each critical voltage need if you feel the added circuit complexity is worth it. As for specfic reference voltage chips I do like the Maxim MAX62xx series such as the MAX6250, 5.000 volt reference for a well controlled 5 volt output at up to 15mA found here: If you are going for 21 bits or higher, I would suggest the best possible voltage reference sources available. By the way - reference voltage sources are changing almost daily so be careful to find state of the art chip designs.

LTC (Linear Technologies) and TI also make a selection of good reference sources. Thermal stability, current output, and noise are important considerations. T HREE WIRE SENSOR SCHEMATIC TYPICAL 3 WIRE ANALOG SENSORS. Here, in the circuit below, is an example of a typical analog sensor on a remote cable connected to an op amp used as a buffer and then fed to the ADC. It is true that reading an LM34 to 6 places does not make much sense but other more precise analog sensors output and wiring look very much like this. Devices such as the Honeywell humidity sensors and other more precise temperature measurement sensors require this circuit. Thermocouples require a differential input op amp pre amp design but would feed into this circuit very well.

This circuit is also much like a typical MEMs accelerometer for G force measurements and for compass sensors. A good magnetic field sensor could measure direction using the earth's magnetic field to a tenth of a degree. Keep in mind that an analog measurement should be reliably measured to one or even two places more than the measurement readout to assure good accuracy. And LM34 is a Fahrenheit device and an LM35 is a centigrade device. The LM34 shown here will output a voltage one one-hundredth 1/100 of the actual temperature reading.

So if the LM34 outputs a voltage of.75344 volts the temperature will be 75.344 Fahrenheit once the LM34 is properly calibrated. Gain and offset can be set in the Arduino code. A high quality (1%) LM34 would have a gain very close to 100 and an offset very close to zero. Please Note: The op amp in the circuit below must be very temperature stable or the voltage output will be proportional to both the changes in the LM34 and the changes in the op amp. I recommend the use of the op amp series called 'Zero Drift' because they are extremely stable over an environmental change of 100 degrees C.

IMPORTANT NOTE ABOUT THIS LM34/LM35 SCHEMATIC. There is a critical configuration of the LTC2440 that must be understood before a voltage is applied to the ADC and its surrounding circuit.

Will the LTC2440 be wired in an absolute/common mode device configuration or will it be wired as a full differential device? It is extremely important to know the difference and design the circuit accordingly before a voltage is applied to the circuit! ABSOLUTE/COMMON MODE (upper circuit to the right, grounded Pin 6 of the ADC) In the absolute/common mode, the voltage applied to the ADC from the sensor is limited to a range from -0.3 volts to Vcc + 0.3 Volts.

Any voltage more negative than - 0.3 volts can damage or destroy the LTC2440. Any voltage over Vcc +0.3 volts can also damage the ADC.

The reality of this circuit is that the source voltage is effectively limited to 0 to + 5 volts in most applications of the ADC. FULL DIFFERENTIAL MODE (lower circuit to the right, floating Pin 6 of the ADC) In the full differential mode, any voltage from the source ranging from +2.5 volts to - 2.5 volts can be applied to the ADC. There is no reference to ground at any point from the source to the input and this includes all components between including op amps.

Nothing can be referenced to ground on the input side of the ADC in the full differential mode. The exception here is the use of a 'fully differential' op amp used as a buffer between your source the final input to the ADC. But you must be meticulous with this buffer to be sure there is no ground reference after the buffer.

'WORK-AROUNDS' USING THE ABSOLUTE/COMMON MODE CIRCUIT LIMITATIONS There are several ways to use the upper right 'Absolute/Common mode' circuit and work around the input voltages limitations mentioned above. The first is that the 'Absolute/Common mode' circuit does allow up to a -0.3 volts as an input. This then would allow a ± 0.250 volt input allowing a small voltage (± 0.07 volts) excess as protection for the ADC.

The problem with this idea is the huge waist of the voltage range lost in limiting a ± 0.250 voltage from the source. A second 'work-around' is to add a 2.5 volt offset to the source voltage which will place the input voltage halfway between the lower limit of zero volts and the upper limit of 5 volts. The coding can then subtract the 2.5 volt offset and send a ± 2.5 volts max output from the ADC. This idea would allow a full ± 2.5 volts to be applied to the ADC. Any errors from the source or in the offset voltage would destroy the ADC in seconds. This is a possible solution and places the input zero point at 2.5 volts allowing a full ± 2.5 volt variation in the grounded source (and preamp) voltage.

This gives me a ± 30,000 count range in AmaSeis. Since I am on the the inverted input of this summing amp, I needed to use -2.5 volts as an offset in this schematic. There is a preamp set to a gain of 1000 not shown before this op amp. I am recommending a Bourns quality pot because this pot is directly in the data path and a high quality pot will not add new noise to the data. Cheap (blue) board level pots can be quite noisy and thermally unstable.

I am using this solution and I recommend this to others as a quick and simple solution to the risk of an out of range voltage getting to the ADC and damaging the chip but the noise contribution in a high performance low noise circuit is to high a price to pay. This voltage problem was brought to my attention by an engineer in Indonesia who had experimented with a negative 1 volt to the ADC and discovered a potential chip damage problem and wrote to me asking for clarification. Thank you Dave for bringing this issue to my attention! I very nearly destroyed my ADC testing his findings! The diagram to the right labeled Common Mode ADC Block Diagram is a simple method to add 2.5 volts to the ADC input and to extend the ADC output to a full ± 2.5 volts.

This means the ADC, if wired as it is shown to the right will accept up to minus 2.5 volts without damage to the ADC. Remember that the entire ADC is using the 2.5 volts offset so any noise or variation from the reference source will translate directly 1:1 into ADC voltage variations. The higher the quality of the reference and five volt source the cleaner the signal! I have tried this 2.5 volt offset solution and it does work - but with extremely high gain applications (one million or more), any variation in the offset voltage will cause shifts in the output data from the ADC, probably caused by temperature variations affecting circuit components. I believe the 2.5 volt offset reference source must be of the highest stability possible. A SECOND SOLUTION - A 'FULLY DIFFERENTIAL OP AMP' What is a 'Fully Differential' Op Amp? For those of you not familiar with a 'fully differential op amp' the image to the right is a diagram of the device.

Serial Program Downloading (spi) Enable

The essential difference is in the dual outputs (4 and 5) 'plus' and 'minus' which are not referenced to ground - the outputs float with respect to ground. These amps are very commonly used to drive differential ADCs. I am presently studying the. Standard differential op amps will not work because their output is usually referenced to ground. The 6409 is one of many amps of this type.

I am simply thinking in terms of the 6409 as a possibility. The 'fully differential op amp' can be used as a buffer between a ground referenced source or a source and preamp which are both ground re.