Linduino  1.3.0
Linear Technology Arduino-Compatible Demonstration Board

Class Library Header File for EasySMU: I2C Address Translator Demonstration and a Simple Multi-Channel Source Measurement Unit. More...

Detailed Description

Class Library Header File for EasySMU: I2C Address Translator Demonstration and a Simple Multi-Channel Source Measurement Unit.

User Guide
Schematic
Top-Level Linduino Firmware for EasySMU
EasySMU Class Reference
EasySMU_IOpanel Class Reference
EasySMU Webpage

EasySMU: I2C Address Translator Demonstration and a Simple Multi-Channel Source Measurement Unit

LTC4316: Single I2C/SMBus Address Translator
LT1970A: Power Op Amp with Adjustable Precision Current Limit
LT5400:  Quad Matched Resistor Network
LTC2655: Quad I2C 16-/12-Bit Rail-to-Rail DACs with 10ppm/°C Max Reference
LTC3265: Low Noise Dual Supply with Boost and Inverting Charge Pumps
LTC2051: Dual Zero-Drift Operational Amplifier
LT3010:  50mA, 3V to 80V Low Dropout Micropower Linear Regulator
LT1991:  Precision, 100µA Gain Selectable Amplifier
LTC6655: 0.25ppm Noise, Low Drift Precision Reference
LTC2485: 24-Bit ΔΣ ADC with Easy Drive Input Current Cancellation and I2C Interface

EasySMU is a single-channel ±12V/40mA programmable-voltage/programmable-current
source with accurate voltage/current measurement capability. The LTC4316 I2C
Address Translator enables up to eight independent EasySMUs to be controlled
by a single I2C master.

In this demonstration, each EasySMU board contains four I2C slaves and the
associated components to implement a single-channel ±12V/40mA programmable-
voltage/programmable-current source. The LTC4316 translates the I2C addresses
of each EasySMU to a unique set of addresses, enabling up to eight EasySMU
boards to be stacked on a single Linduino (I2C master). In this form, it
resembles a multi-channel automated test system. Alternatively, an optional
touchscreen allows the user to interactively control up to four channels,
forming a compact multi-channel programmable-voltage/programmable-current
bench source for lab testing, powered from a single 12V AC wall adapter.

The primary purpose of the EasySMU is to demonstrate the LTC4316 I2C Address
Translator. The programmable-voltage/programmable-current source and meter
also provide a convenient demonstration of the associated components: LT1970A,
LT5400-3, LTC2655-H, LTC3265, LTC2051, LT3010, LT1991, LTC6655, and LTC2485.
While the EasySMU is not designed to demonstrate the ultimate performance that
can be obtained from each of those components, the EasySMU does provide
impressive results from a reasonably simple circuit.

Class Library Header File for EasySMU: I2C Address Translator Demonstration and a Simple Multi-Channel Source Measurement Unit

Definition in file EasySMU.h.

Go to the source code of this file.

Data Structures

class  EasySMU
 The EasySMU class contains functions for interacting with the EasySMU source measurement unit. More...
 
union  EasySMU::eeprom_data_union
 Union that defines the calibration data stored in the EasySMU EEPROM. More...
 
struct  EasySMU::eeprom_data_union::data_struct_type
 This struct holds all of the calibration data, i.e. offset integers, LSB floats, etc. The eeprom_data_union contains a byte_array that is used to write and read this data to/from the EEPROM. More...
 

Macros

#define _EASYSMU_ID_STRING   "Linear Technology, EasySMU-1.01 DC2591A"
 ID string written to EasySMU EEPROM. Value that will be returned by *IDN? serial command. More...
 
#define EEPROM_FACTORY_CAL_STATUS_ADDRESS   EEPROM_CAL_STATUS_ADDRESS+sizeof(eeprom_data_union)
 A backup version of the factory calibration is stored at this address. Factory calibration may be recovered from here to override a user calibration. More...
 
#define EEPROM_FACTORY_CAL_INFO_ADDRESS   EEPROM_FACTORY_CAL_STATUS_ADDRESS+sizeof(eeprom_data_union)
 Channel ID information returned by *IDN? command. More...
 
#define CAL_INFO_STRLEN   32
 Defines length of the calibartion info string (serial number) which is stored in the EEPROM. More...
 
Channel name used as index in EasySMU array
#define _CH0   0
 
#define _CH1   1
 
#define _CH2   2
 
#define _CH3   3
 
#define _CH4   4
 
#define _CH5   5
 
#define _CH6   6
 
#define _CH7   7
 
DAC channel name (LTC2655 is a four channel DAC).

Channel A of the DAC is configures the output voltage.

#define _EASYSMU_VOLTAGE_DAC   LTC2655_DAC_A
 
#define _EASYSMU_CURRENT_PULLUP_DAC   LTC2655_DAC_B
 Channel B of the DAC configures the maximum pullup current. More...
 
#define _EASYSMU_CURRENT_PULLDOWN_DAC   LTC2655_DAC_C
 Channel C of the DAC configures the maximum pulldown current. More...
 
#define _EASYSMU_ENABLE_OUTPUT_DAC   LTC2655_DAC_D
 Channel D of the DAC is used to enable or disable the LTC1970's output. It is essentially used as a binary output here. More...
 
ADC conversion times.

LTC2485 ADC conversion time in milliseconds (1X mode)

#define _LTC2485_CONVERSION_TIME_1X   150
 
#define _LTC2485_CONVERSION_TIME_2X   75
 LTC2485 ADC conversion time in milliseconds (2X mode) More...
 
#define _LTC2485_CONVERSION_TIME   _LTC2485_CONVERSION_TIME_1X
 Use 1X mode conversion time for EasySMU conversions. More...
 
Used as a parameter to functions where source, sink, or both is specified.
#define _SOURCE_ONLY   1
 
#define _SOURCE_AND_SINK   0
 
#define _SINK_ONLY   -1
 

Macro Definition Documentation

◆ _CH0

#define _CH0   0

Definition at line 72 of file EasySMU.h.

◆ _CH1

#define _CH1   1

Definition at line 73 of file EasySMU.h.

◆ _CH2

#define _CH2   2

Definition at line 74 of file EasySMU.h.

◆ _CH3

#define _CH3   3

Definition at line 75 of file EasySMU.h.

◆ _CH4

#define _CH4   4

Definition at line 76 of file EasySMU.h.

◆ _CH5

#define _CH5   5

Definition at line 77 of file EasySMU.h.

◆ _CH6

#define _CH6   6

Definition at line 78 of file EasySMU.h.

◆ _CH7

#define _CH7   7

Definition at line 79 of file EasySMU.h.

◆ _EASYSMU_CURRENT_PULLDOWN_DAC

#define _EASYSMU_CURRENT_PULLDOWN_DAC   LTC2655_DAC_C

Channel C of the DAC configures the maximum pulldown current.

Definition at line 89 of file EasySMU.h.

◆ _EASYSMU_CURRENT_PULLUP_DAC

#define _EASYSMU_CURRENT_PULLUP_DAC   LTC2655_DAC_B

Channel B of the DAC configures the maximum pullup current.

Definition at line 87 of file EasySMU.h.

◆ _EASYSMU_ENABLE_OUTPUT_DAC

#define _EASYSMU_ENABLE_OUTPUT_DAC   LTC2655_DAC_D

Channel D of the DAC is used to enable or disable the LTC1970's output. It is essentially used as a binary output here.

Definition at line 91 of file EasySMU.h.

◆ _EASYSMU_ID_STRING

#define _EASYSMU_ID_STRING   "Linear Technology, EasySMU-1.01 DC2591A"

ID string written to EasySMU EEPROM. Value that will be returned by *IDN? serial command.

Definition at line 67 of file EasySMU.h.

◆ _EASYSMU_VOLTAGE_DAC

#define _EASYSMU_VOLTAGE_DAC   LTC2655_DAC_A

Definition at line 85 of file EasySMU.h.

◆ _LTC2485_CONVERSION_TIME

#define _LTC2485_CONVERSION_TIME   _LTC2485_CONVERSION_TIME_1X

Use 1X mode conversion time for EasySMU conversions.

Definition at line 101 of file EasySMU.h.

◆ _LTC2485_CONVERSION_TIME_1X

#define _LTC2485_CONVERSION_TIME_1X   150

Definition at line 97 of file EasySMU.h.

◆ _LTC2485_CONVERSION_TIME_2X

#define _LTC2485_CONVERSION_TIME_2X   75

LTC2485 ADC conversion time in milliseconds (2X mode)

Definition at line 99 of file EasySMU.h.

◆ _SINK_ONLY

#define _SINK_ONLY   -1

Definition at line 113 of file EasySMU.h.

◆ _SOURCE_AND_SINK

#define _SOURCE_AND_SINK   0

Definition at line 112 of file EasySMU.h.

◆ _SOURCE_ONLY

#define _SOURCE_ONLY   1

Definition at line 111 of file EasySMU.h.

◆ CAL_INFO_STRLEN

#define CAL_INFO_STRLEN   32

Defines length of the calibartion info string (serial number) which is stored in the EEPROM.

Definition at line 117 of file EasySMU.h.

◆ EEPROM_FACTORY_CAL_INFO_ADDRESS

#define EEPROM_FACTORY_CAL_INFO_ADDRESS   EEPROM_FACTORY_CAL_STATUS_ADDRESS+sizeof(eeprom_data_union)

Channel ID information returned by *IDN? command.

Definition at line 107 of file EasySMU.h.

◆ EEPROM_FACTORY_CAL_STATUS_ADDRESS

#define EEPROM_FACTORY_CAL_STATUS_ADDRESS   EEPROM_CAL_STATUS_ADDRESS+sizeof(eeprom_data_union)

A backup version of the factory calibration is stored at this address. Factory calibration may be recovered from here to override a user calibration.

Definition at line 105 of file EasySMU.h.