This version is outdated by a newer approved version.DiffThis version (22 Feb 2021 12:06) was approved by Mihai Ionut Suciu.The Previously approved version (18 Jul 2019 20:43) is available.Diff

This is an old revision of the document!



The ADALM1000 is a learning tool designed to make interacting with the world around you easier and more intuitive. Offering two analog channels, it allows you to source and measure waveforms in voltage or current, easily characterizing arbitrary systems in terms of voltage vs current, over time, and over frequency. To offer this functionality, it uses a number of building blocks to take the fixed supply and digital interface of USB and offer voltage and current operation from 0 to 5 Volts (V), from -200 to 200 milliamps (mA), with precision and accuracy better than 100µV, 100µA, and 10µS.


Universal Serial Bus (USB) is a high complexity, high speed digital interface designed for PC peripherals, offering a number of default device types and communication schemes. While tremendously useful for the “last inches” of interface between a host PC and the M1K, the pieces of the M1K responsible for converting between analog values and digital words (analog-digital converters (ADC) and digital-analog converters (DAC)) use simpler, less robust communication schemes necessitating “glue” between a computer and the analog systems for voltage/current measurement and control. On the M1K, this glue is a microcontroller using a CPU designed by ARM (Cortex M3).

In addition to the three serial peripheral interfaces (SPI busses) used for the two ADCs and one DAC, the microcontroller also offers:

  • timer-counters used for controlling when the data converters sample
  • pulse-width modulation, used to set the unique LED color of each M1K on the three-channel (RGB) LED
  • two-wire interface, (I2C, used as a low-speed communication network between the microcontroller controller and other “housekeeping” components
  • digital input-output pins used for both the user-accessible programmable IO pins and to control the internal switches used in the analog frontend
  • 32 kilobytes SRAM, allowing for local data buffering and the potential for loading user-supplied software directly on to the device
  • 128 kilobytes NAND flash memory, allowing for the storage of the firmware program and the potential for data logging without use of a PC.

The microcontroller is only one of the pieces sitting between the USB connector and the analog components used for the front-end interface. Besides mapping between digital protocols, there is one more big problem to solve before we can build the analog system: power.


The USB specification (available from the USB implementers forum) is a 600+ page document describing every aspect of the ideal operation of a USB2.0 device. It requires that attached devices consume less than 500mA from the provided voltage supply, which is allowed to range from as high as 5.25v to as low as 4.40v - a wide span clearly unacceptable for a precision tool! Additionally, the power available on USB ports can vary widely in terms of both electrical noise and electrical protection. An out-of-spec device attached to the shared USB bus can throw tens or even hundreds of millivolts of noise onto the voltage supply. A poorly crafted computer may not handle overcurrent conditions on a USB bus with anything more than an immediate and complete power-off, or worse, permanently disabling a USB port. It would be unfortunate if using the M1k on an old computer degraded the accuracy of measurements and unacceptable if making mistakes during the normal operation of the device put the attached computer at risk of damage or lost data. To address these issues and provide protected, low noise voltage supplies to the analog frontend, a sophisticated supply chain as designed to ensure that regardless of input, the full 0-5v range is available at the output, and regardless of shorting or over volting the device, the host PC is not exposed to unacceptable risk.

The M1K power chain consists of a grand total of three linear voltage regulators, two switching voltage regulators, a “hot-swap” controller, and a precision reference. The crude 5V supply from the USB bus is first used to supply a 3.3v to the microcontroller, which is generated using an ADP7118 fixed voltage linear regulator. This regulator, and the microcontroller it supplies, are always-on, as the microcontroller is responsible for requesting the full 500mA available from the host. After device enumeration, the analog frontend is enabled using the ADM1177 hot-swap controller, which allows for the well-behaved turn-on of the remainder of the power section, as well as overcurrent (short-circuit) protection. The ADM1177 monitors the drop across a 0.1 ohm current-sense shunt resistor and controls the gate of a N-FET power transistor. When the enable pin of the hot-swap controller is driven high, it pumps current into the gate of the switching transistor at a rate determined by an external capacitor, until the gate of the transistor is substantially above the input voltage, and the transistor acts as a series resistor with a fixed (small) resistance. The current shunt resistor is constantly monitored by the ADM1177, and when the voltage drop across the shunt resistor increases to more than 100mV (corresponding to 1A) for longer than the 270µS defined by the 100nF of C11, between the ADM1177 soft-start pin and ground, the power to the analog half of the board is disabled. This configuration allows for hardware overcurrent protection while leaving a healthy margin between the USB specified maximum current and the point at which a host computer is potentially at risk. The controller also serves to control the inrush current associated with the large energy storage capacitors that sit between the upstream power source and the analog section of the device. These components are important to allow for local demand current to exceed the capability of the upstream supply for short periods of time, but were they not slowly ramped up to their working voltage, they would draw potentially amps of current for a few microseconds when te device was first connected, potentially resulting in a fault condition on the host.

There are two switch-mode regulators which use energy storage in inductors to accomplish what is difficult (not quite impossible) to do with standard CMOS (complimentary metal-oxide transistor, resistor, capacitor) circuits - increase voltage and provide a negative voltage. An ADP1614 based boost-converter is used to generate a 6.5 volt power supply rail by fluxing up an inductor and causing a sudden change in current to generate a voltage above that which is used to store energy in the magnetic flux of the core of the inductor. This boosted power supply is relatively noisy, with frequency components from the switching frequency (fixed at 1.3MHz) to several times this, resulting from the inconsistent voltage and current output waveforms. A pi-topology filter and a large output capacitor serve to attenuate the high frequency noise components and average the output voltage. The result is a 6.5v supply with relatively little output noise with little current draw. As the current draw increases, the output noise does as well, and some broadband noise remains due to the inherently noisy topolyg of the boost converter. To reduce the noise further, and supply a clean “high” voltage rail to the analog frontend, which must be able to supply 5v at up to 200mA, the ADM7171 adjustable voltage regulator is used to convert the approximately 500mV of headroom voltage, along with the ~50mV of electrical noise, into heat. The resulting 6v output from the adjustable linear regulator is comparitively free of noise, across the entire spectrum. This 6.0v supply is used for the analog components in the output stage. This 6v0 supply provides more than the required headroom to allow the output amplifiers to supply 5v at the output, even after the additional voltage drops associated with the analog front end. The ADP2442 is the second switching regulator, AN-1269 used in an inverting buck-boost configuration to supply a voltage below the minimum supply (0v, ground) of USB. To provide output operation all the way down to ground (0v), a negative one volt rail (-1v0) is generated in a fashion similar to the 6v5 rail generation described above - energy is stored in an inductor, and a sudden change in current creates a potential less than that of ground. A similar pi filter topology is used to attenuate the out of band signals created by this process, resulting in an adequately clean -1v0 supply, which powers the output stage, as well as the servo amplifier.

Having generated the voltages required for the output stage, additional clean supplies are required for operating other aspects of the analog systems. The data converters (DAC and ADC) require that the analog output/input voltages are less than or equal to the supply voltage, and both require a supply voltage less than 5.5v. As such, a 5.0v rail is generated using the ADP7118 linear regulator from the 6.0v rail described above, offering a low noise, high precision voltage supply for the remainder of the mixed-signal components, afforementioned AD5663R digital-analog converter, the two AD7682 analog-digital converters, the AD8210 current-sense differential amplifier, and the ADG719 analog mode-switch. The even lower noise 5.0v supply is in turn used to power a precision voltage reference, the ADR381, which is used in conjunction with a 510 ohm load resistor to provide a high precision, low noise 2.5v supply capable of sourcing and sinking the few milliamps of current required by the analog frontend.

Analog Overview

Digital-Analog Conversion

To afford analog output from a digitally connected device, signal conversion from binary representations of a waveform to an analog approximation. This process is achieved using the two channel AD5663R digital to analog converter, offering 16b conversions, a fast settling time (high bandwidth), and a simple digital interface. The digital interface is accomplished using a clocked digital serial protocol closely related to the Serial Peripheral Interface (or SPI) standard. Twenty-four bit words containing sixteen bits of data and eight configuration bits are written to a digital line, starting with the high bit, proceeding to the last. A separate clock line is used to specify at what points in time the data is valid. A synchronisation line is strobbed to alternate subsequent 24b words. A latch line is strobbed to trigger the conversion of words stored in device memory to an analog voltage on the output lines. For each sample on the device, two 24b words are written, strobing the synchronization line between them, and then the latch line is toggled to simultaneously start the change in analog value. In order to reduce the high frequency components of the change in analog value, two series one-pole low-pass filters were placed on the analog output of the device, offering 6dB of attenuation per decade of frequency, reducing high order harmonics to negligible amplitude.

Analog-Digital Conversion

To measure analog signals from a digitally connected device, analog signals must be discretised, and with that, all the challenges of building a frequency-correct, high-precision representation of an analog signal. To sample the two analog channels, each with voltage and current measurements, two quad-channel AD7682 sixteen bit analog to digital converters were used, with each converter receiving both channels worth of analog signals, allowing for the simultaneous conversion of voltage and current across any combination of either channel.

Servo Loop

The analog frontend of the M1K is built around a single control loop per channel, with an analog switch to change between voltage and current control, and another analog switch to control the characteristics of the channel output. The analog control loop works to servo a measured parameter against an input signal from a digital to analog converter. The loop is built from several discrete components, each vital and carefully selected for the application at hand. The loop needs to offer at least one watt of electrical power supplied to or sourced by an external system, with high bandwidth in order to achieve the targetted output of signals up to a few hundred kilohertz. Moreover, the loop needs to offer low noise and high precision operation matching the selected 16b data converters. Balancing these parameters lead to the separation of the loop feedback control and power output stages. The power stage was built from a high ouptut current driver part - due to the limited input voltage range and nonzero voltage drop even at low control, the driver is configured as a noninverting amplifier with a gain of two, referenced to a high precision 2.5v supply. As, in this configuration, the power stage sinks current to the 2.5v rail, and precision references capable of symmetric performance, both sinking and sourcing current are expensive, the reference producing the 2.5v supply is biased with a small (500o) pulldown resistor to preserve correct performance of (the other components sharing) the reference.

This nonverting power amplifier stage uses a current feedback architecture to achieve the high bandwidth and power it offers. This topology mimics that of more traditional voltage-feedback parts, with a few additional caveats. The presence of even femto or picofarads of parasitic capacitance, combined with the high bandwidth required of an ideal power amplifier stage readily produces high frequency oscillations unless a series R-C feedback network is added as a highpass filter in feedback, reducing the overall high frequency gain of the amplifier, but preserving stability for all loads. A two ohm series resistor is added to the output of the power amplifier to set the minimum output impedance of the device, protecting both the m1000 and any attached system from overcurrent conditions.

The power amplifier is wrapped in a high precision rail-to-rail opamp with low voltage offset on both the input and output. The ADA4661 serves as alternatively a unity gain current amplifier against the output of the AD8210 current-sense amplifier described [elsewhere.] The ADG719 CMOS analog switch alternatively connects the current sense feedback or voltage sense feedback to the inverting input of the servo amp.

The servo amplifier is relatively painless in comparison, but careful consideration was dedicated to ensuring the system behavior while forcing a current on a load representing an extreme high or low of noise or impedance. An analog potentiometer functions as a programmable all-pass filter, offering a certain amount of control of the frequency response of the loop, with adjustable high frequency gain or attenuation. This allows a current to be sourced with increased precision even on high impedance devices like large inductors at t=0, where a small perturbance can easily result in high amplitude, high-rate-of-change sense signals.

Voltage Measurement

See this page covering the analog voltage inputs.

Current Measurement

The characteristics of any feedback control system, like the current force loop on the M1K, are limited by at least the properties of the sensor. Additionaly, the ability of the M1K to characterise the impedance of attached systems relies on the precise, high speed measurement of the actual output current. In the design of similar such devices, current measurement was a prime roadblock limiting the performance, with cost-effective measurement parts like the INA213, LT1999, or MAX9919F each suffering from a combination of common mode error, low speed, or nonlinearities over the common mode voltage range. This is not shocking. All of these amplifiers have a hard job - in a high side sense configuration, they monitor the voltage drop across a small precision resistor acting as a shunt. These parts must amplify microvolts of differential signal while rejecting volts of rapidly changing common mode potential. A triangle wave sweeping zero to five volts at ten kilohertz on an unloaded output represents a challenge for even the best of these amplifiers, as they work to reject harmonics many times the frequency of the fundamental, spanning the full rail-to-rail input range.

The standard topologies for amplifiers working to measure small signals in the presence of large common mode voltages do not fare substantially better when realised using discrete components or integrated solutions.

The cannonical four-resistor, one-opamp difference amplifiers offers a seemingly attractive solution. On first inspection, this system offers perfect common mode rejection at DC, extraordinarily high input impedance, easily adjustable gain, and a wide input voltage range. Unfortunately, these properties only exist when the topology is realised with ideal resistors and a perfect opamp, which happen to be unusually rare and expensive. A mismatch as small as 0.1% between any of the resistors will result in a common mode rejection no better than 66dB, equivalent to phantom milliamps of current showing up with full scale sweeps. Additional mismatches between opamp nodes, in bias current, input impedance, and parasitics make this topology very difficult to use for our purposes.

The three opamp instrumentation amplifier, the other often encountered solution for the measurement of small signals in the presence of large common mode voltages, fares no better. In this configuration, a difference amplifier like shown above is prefaced with two buffer/gain stages, offering higher input impedance and, by encorporating most of the matched resistors on the same die as the amplifiers, alleviates many of the issues which result in poor common mode rejection through factory precision adjustment. Unfortunately, as the inputs are followed immediatley by gain stages, this topology is unable to afford the measurement of signals with a common mode voltage within a factor of the gain from the voltage supplies. This means that a three opamp instrumentation amplifier with a gain of twenty, supplied by 0v and 5v rails like the amplifier on the M1K, is unable to measure current with an output voltage further than 2.5v/20 away from the 2.5v midsupply reference, clearly inappropriate for this application.

How, then, is this design challenge addressed on the M1K? ADI offers a family of high-performance bidirectional current sense amplifiers offered for automotive engine control applications. The AD8210, offering a small signal bandwidth of 450KHz and a common mode rejection between 80 and 95dB for common mode voltages between 0v and 5v at frequencies up to 100KHz appears to be an ideal fit for the high side shunt signal conversion. Unsuprisingly, given the previously enumerated challenges, getting acceptable performance out of this part was not without its challenges.

Let us first consider the topology of the AD82xx family by examining Figure 1 in the AD8210 datasheet. To paraphrase both the theory of operation section (pg X) and conversations with ADI personell familiar with the part… a current-mode difference amplifier comprised of R1, R2, A1, Q1, Q2 acts to convert a small voltage difference across the inputs into a current difference through the emitters of Q1 and Q2, which serve as preamplifiers and buffers from the input to the output gain stage. R3 and R4 convert these current differences back into ground-referenced voltage differences, where the instrumentation amplifier A2 has well-defined operation and subtracts and multiplies these voltages, offering a midpoint referenced output voltage with a net gain of 20x.

This topology offers many of the advantages of the previously described architectures, while using a level-shifting current-mode topology to work around the inherent limitations of the above. The incorporation of all the necessary well-matched components on the same piece of silicon as the main amplifier allows for factory trimming to maintain the high common mode rejection required, and the level shifting architecture prevents the saturation of the instrumentation amplifier across a wide range of common mode voltages. “Popping the hood” on this part and inspecting the SPICE netlist model offers additional insight into the operation of this component. The “input stage” section of AD8210 SPICE netliest can be represented as follows:

It was surprising to discover several facts as depicted in this representation of the device. First, a biasing diode, responsible for ensuring the currents, when operating with common mode voltages less than or equal to 5VDC, do not produce erroneous voltages further down the signal chain. Also surprising was the corresponding nature of the stated 1.5k common mode input impedance for this operating regime - the resistance described in the datasheet is not to ground, but to the high rail voltage supply. Moreover, this impedance does not apply continuously to 5v, but to input signals within approximately a diode drop (0.2v-0.7v) of the 5v rail.

The value of R1 and R2, as well as that of Rcm1 and Rcm2, were also not directly stated in the datasheet, but were necessary factors in achieving the desired performance. The ADALM1000 was designed with a 0.5o current sense resistor, mapping the full range of 200mA to a 2.5v-centered output, swinging from 0.5v to 4.5v. The topology on the M1K RevB resembled

The root cause of the issue was not immediately apparent, but initial tests of the hardware revealed substantial common mode signal leakage, on the order of phantom milliamps. Significant head-scratching and some tremendously helpful conversations later produced the following explanation and solution.

An equally valid representation of the circuit above shows the 0.5o sense resistor in series with the negative input. See the issue yet? The 0.5o sense resistor corresponds to a roughly 0.03% mismatch between the legs of the difference amplifier input stage, resulting in the observed ~70dB of attenuation of the common mode signal. Fortunately, the solution was simple - add an extra 0.5o resistor in series with the positive input of each amplifier, bringing balance to the -force- current paths.

Additional complexity resulted from mismatch in maximum voltage input of the analog-to-digital converter and the output range of the amplifier. A one-pole low pass filter with a DC gain of 4/5 and a corner frequency slightly higher than 100KHz was constructed from a 150o resistor, 600o resistor, and 10nf capacitor. This serves to reduce the dynamic range to one matching the 4.096v reference voltage of the ADC without adding an extra voltage reference. This also afforded the added benefit of reducing the effective impedance and out of band noise seen by the ADC, and served to keep ADC sampling from back-coupling into the analog signal path.

Output Stage

In the pursuit of an affordable device for use as a first pass when working with unknown powered or unpowered systems, careful consideration was given to the output stage of the device. A spurious voltage spike from a fluxed-up inductive coil or accidental connection to an external battery ought not to immediately cause damage to the device. It should be trivial to afford measurement of voltages and currents substantially outside of the native range. It should also be feasible to render the device in a state such that it is capable of measuring signals of very little current, like the potential produced by a pH probe, or that of a thermocouple. These seemingly conflicting requirements gave rise to a versatile output stage built around a four channel low-resistance switch, offering fifty ohm tie resistors to half-potential and zero potential, as well as independent connections to the output connection and the output of the power driver. This configuration allows for a single external resistor to divide voltages or currents down to levels within the range of the measurement stages. Diode clamps to the high rails

Revision F

university/tools/m1k/hw.1613991623.txt.gz · Last modified: 22 Feb 2021 12:00 by Mihai Ionut Suciu