Mayhew Labs. Extended ADC Shield User Manual

Similar documents
Arduino ADK Rev.3 Board A000069

Arduino Uno. Arduino Uno R3 Front. Arduino Uno R2 Front

ARDUINO MEGA 2560 REV3 Code: A000067

ARDUINO MEGA ADK REV3 Code: A000069

ARDUINO UNO REV3 Code: A000066

ARDUINO UNO REV3 SMD Code: A The board everybody gets started with, based on the ATmega328 (SMD).

ARDUINO LEONARDO ETH Code: A000022

Adafruit BME280 Humidity + Barometric Pressure + Temperature Sensor Breakout

ARDUINO MICRO WITHOUT HEADERS Code: A000093

NHD-4.3CTP-SHIELD 4.3 Arduino Shield User Guide

GRAVITECH GROUP

XNUCLEO-F030R8, Improved STM32 NUCLEO Board

ARDUINO LEONARDO WITH HEADERS Code: A000057

1.6inch SPI Module user manual

Categories. Archive. Meta. POSTS NEWS HARDWARE APPLICATIONS DOWNLOADS FORUM LINKS ABOUT

Adafruit BMP280 Barometric Pressure + Temperature Sensor Breakout

keyestudio Keyestudio MEGA 2560 R3 Board

Adafruit BME280 Humidity + Barometric Pressure + Temperature Sensor Breakout

QUICK START GUIDE FOR DEMONSTRATION CIRCUIT 1350 HIGH TEMP ADC

ROBOTLINKING THE POWER SUPPLY LEARNING KIT TUTORIAL

VL6180 Hookup Guide. Introduction. Board Overview - VL6180 Breakout. Covered in this Tutorial. Suggested Reading

EPT-200TMP-TS-U2 TMP102 Temperature Sensor Docking Board Data Sheet

Power Supply, Arduino MEGA 2560, and Stepper Motors Connections

Arduino Uno R3 INTRODUCTION

DEVBOARD3 DATASHEET. 10Mbits Ethernet & SD card Development Board PIC18F67J60 MICROCHIP

AK-DS2482S-100. Reference manual. Copyright 2016 Artekit Italy All rights reserved

Adafruit VL53L0X Time of Flight Micro-LIDAR Distance Sensor Breakout

ARDUINO YÚN Code: A000008

Atmel Microprocessor Programming With AVRISPmkii

ARDUINO M0 PRO Code: A000111

How to use the Zduino LEE Module with the Trainer Board

PN532 NFC RFID Module User Guide

Adafruit BME680. Created by lady ada. Last updated on :10:23 AM UTC

QUICK START GUIDE FOR DEMONSTRATION CIRCUIT DC BIT MICROPOWER NO LATENCY DELTA SIGMA ADC LTC2400 DESCRIPTION

IOX-16 User s Manual. Version 1.00 April Overview

ARDUINO PRIMO. Code: A000135

PIC Serial Peripheral Interface (SPI) to Digital Pot

± 2g Tri-axis Accelerometer Specifications

Sanguino TSB. Introduction: Features:

4X4 Driver Shield Manual

Low Voltage, 10-Bit Digital Temperature Sensor in 8-Lead MSOP AD7314

Adafruit CAP1188 Breakout

Grove - Multichannel Gas Sensor

ARDUINO BOARD LINE UP

WiFi Shield. User Guide

Parallel Data Transfer. Suppose you need to transfer data from one HCS12 to another. How can you do this?

Amarjeet Singh. January 30, 2012

Embedded Systems and Software. Serial Interconnect Buses I 2 C (SMB) and SPI

ARDUINO YÚN MINI Code: A000108

How to Use an Arduino

One Grove Base Shield board this allows you to connect various Grove units (below) to your Seeeduino board; Nine Grove Grove units, consisting of:

Freeduino USB 1.0. Arduino Compatible Development Board Starter Guide. 1. Overview

MAX197 Evaluation Kit. Evaluates: MAX197/MAX199. Features

HUB-ee BMD-S Arduino Proto Shield V1.0

PICado Alpha Development Board V1.0

GENERAL DESCRIPTION MC3635 FEATURES

ARDUINO MINI 05 Code: A000087

Analog Devices Welcomes Hittite Microwave Corporation NO CONTENT ON THE ATTACHED DOCUMENT HAS CHANGED

Omega MP. Multi-Programming Shield for Atmel Microcontrollers. User Manual

eip-24/100 Embedded TCP/IP 10/100-BaseT Network Module Features Description Applications

Adafruit MAX31865 RTD PT100 or PT1000 Amplifier

EasyMP3 Shield SHIELD-EZMP3

Pridgen Vermeer Robotics Xmega128 Manual

PIXI click PID: MIKROE Weight: 28 g

Features. High-Speed Analog Input Board for PCI AD12-16U(PCI)EH. High-Speed & Resolution Analog Input Board for PCI AD16-16U(PCI)EH

AT42QT1010 Capacitive Touch Breakout Hookup Guide

Pressure 4 click. PID: MIKROE 3020 Weight: 24 g

PART MAX5544CSA MAX5544ESA REF CS DIN SCLK. Maxim Integrated Products 1

S USB-PC Connection (Cable Not Included) S USB Powered (No External Power Supply Required) S Real-Time Data Acquisition Through the USB

Microcontrollers and Interfacing

MC3635 FEATURES GENERAL DESCRIPTION

CORTESIA ELECTRONICCA

Adafruit HMC5883L Breakout - Triple-Axis Magnetometer Compass Sensor

User-configurable Resolution. 9 to 12 bits (0.5 C to C)

QUICK START GUIDE FOR DEMONSTRATION CIRCUIT 740 TRACKER/SEQUENCER DEMO BOARD

Arduino Dock 2. The Hardware

Freescale Semiconductor, I

AD16-16(PCI)EV. Features. High-Resolution Analog Input Board for PCI AD16-16(PCI)EV 1. Ver.1.02

Signal Connections CHAPTER

AVDD AGND AGND A IN I.C. MSV I.C. I.C. I.C. I.C. I.C. I.C. Maxim Integrated Products 1

SPI (Serial & Peripheral Interface)

Adafruit SHT31-D Temperature & Humidity Sensor Breakout

Temperature Sensor TMP2 PMOD Part 1

PSIM Tutorial. How to Use SPI in F2833x Target. February Powersim Inc.

SX1509 I/O Expander Breakout Hookup Guide

AlphaBot2 robot building kit for Arduino

DEMO MANUAL DC806A LTC1867 Octal 16-Bit 200ksps ADC DESCRIPTION BOARD PHOTO

Pedometer 3 Click. PID: MIKROE 3259 Weight: 24 g

DS Wire Digital Thermometer and Thermostat

Adafruit HTU21D-F Temperature & Humidity Sensor

Color 7 click. PID: MIKROE 3062 Weight: 19 g

MOTENC Axis PCI Motion & I/O Control Board. Reference Manual Rev 1A, April Copyright 2004 VITAL Systems Inc

EV-VNQ7003SY. VNQ7003SY Evaluation Board. Data brief. Features. Applications. Description

Grove Digital Extender 0059-GRVDE-DSBT/SF

DS1306. Serial Alarm Real Time Clock (RTC)

AD12-16(PCI)EV. Features. Analog Input Board for PCI AD12-16(PCI)EV 1. Ver.1.02

Edge Power International (HK) Ltd. Product Specification

DS75 Digital Thermometer and Thermostat

Symphony SoundBite Reference Manual

WS2812B RGB LED Strip

Transcription:

Table of Contents: Introduction 1 Hardware Description 1 Pin Descriptions 2 Setting the SPI communication level 2 Setting User Defined pin usage 2 Freeing Up Pin 9 (BUSY) 2 Installing Input Filtering Capacitors 3 Schematic 3 ExtendedADCShield Library for Arduino 4 Introduction The gives your Arduino the ability to measure extended voltage ranges with higher resolution and faster speed than the built in analog-to-digital converters (ADCs). Each of the eight input channels can be configured as a single-ended (ground referenced) or differential input and can be set for an input range of 0V to 5V, 0V to 10V, ±5V and ±10V. Analog signals are connected to the shield using robust screw-terminal connections and are safe for input voltages up to ±25V. The shield is available in 12-bit, 14-bit, and 16-bit versions and has a maximum sample rate of 100ksps regardless of which version is used. The shield interfaces with any Arduino hardware platform over SPI along with a few additional control signals and has selectable pin usage for these signals. The shield can be set to communicate at 5V or 3.3V levels, making it safe for 3.3V tolerant Arduinos. This manual will help you get up and running and also explain how the shield works. If you want to skip the details and get down to business, install the library and run the demo examples (see the ExtendedADCShield Library for Arduino section). Hardware Description The uses the Linear Technology LTC185x series of 8-channel analog-to-digital converter ICs, which include the LTC1857 (12-bit), LTC1858 (14-bit), and LTC1859 (16-bit). These are unique ADCs because each channel may be software-configured for different input ranges, and be programmed for single-ended or differential inputs (and combinations of both), while being powered from a 5V supply. The IC s are also 5V and 3.3V communication level compatible, making them ideal ADCs for all Arduino hardware platforms. The shield is set up to have flexible configuration for what Arduino pins it occupies. It uses the Arduino s ICSP header for SPI communication so that it can communicate with all Arduino variants. The shield uses isolated analog and digital ground planes so that noise from switching communication lines can be kept to a minimum on the analog inputs. It also contains positions for 0603-sized capacitors that the user can populate to help filter out incoming noise both on single-ended and differential inputs. Contact: CustomerService@mayhewlabs.com 1

Pin Descriptions Name Pin Description CONVST IO8 or user Conversion start: Pull this pin high for at least 40ns to start an analog to digital defined conversion on the last configured channel. RD (SS) Read (Slave select): Pull this pin low when you want to communicate to the IO10 or user shield. This pin doesn t need to be low to initiate a conversion via the CONVST defined pin. SCK SDI SDO BUSY ICSP pin 3 or ICSP pin 4 or ICSP pin 1 or IO9 or user defined SPI clock: Data clock to the shield from the Arduino. Data is clocked in or out on the rising edge. On Uno or Duemilanove this is connected to IO13. On Mega1280 or Mega2560 this is connected to IO52. On Leonardo or Due it is not connected to any IO pins. SPI data input: Data input to the shield from the Arduino. On Uno or Duemilanove this is connected to IO11. On Mega1280 or Mega2560 this is connected to IO51. On Leonardo or Due it is not connected to any IO pins. SPI data output: Data output from the shield to the Arduino. On Uno or Duemilanove this is connected to IO12. On Mega1280 or Mega2560 this is connected to IO50. On Leonardo or Due it is not connected to any IO pins. Busy: Pulled low when an analog to digital conversion is in progress (immediately after the CONVST pin is pulled high). The maximum conversion time is 5us. This pin can be freed up so that the shield no longer uses it. See details below. Setting the SPI communication level The shield can communicate over SPI at both 5V and 3.3V levels. The input pins (CONVST, RD, SCK, SDI) have a high level input threshold of 2.4V and are therefore compatible with all Arduino variants. The SPI COM LEVEL solder jumper on the back of the shield sets the voltage swing of the shield s output pins SDO and BUSY. If you are using a 3.3V tolerant Arduino variant like the Due, set this solder jumper as shown on the back of the board using a small bead of solder that connects the center pad to the right pad. Please note that although SPI communication at 3.3V is possible, the shield must be powered from a 5V supply. Setting User Defined pin usage If you wish to use different pins than those listed above for SPI communication, for example a different digital pin for RD (slave select), you can do so using solder jumpers SJ1 through SJ6 and P5 on the shield. If you remove the solder bead from these solder jumpers, you can run wires from any Arduino pin or external control directly to the ADC IC s inputs using the connections at P5. This is useful if you have multiple devices communicating on the same SPI bus and you need to have a different slave select line controlling this shield. A special initialization function exists in the ExtendedADCShield library for changing which Arduino pin is used for CONVST, RD, and BUSY. The jumpers are also useful if you want to communicate with the shield using software SPI (bit banging). A helpful tutorial on SPI bit banging can be found here. Bit banging mode is not supported by the ExtendedADCShield library, so read the LTC175x datasheet for more information on manually sending commands to the shield. Freeing Up Pin 9 (BUSY) The BUSY output line from the shield is pulled low while the onboard ADC is performing a conversion, immediately after the CONVST pin is pulled high by the Arduino. The maximum conversion time for the ADC is 5us, which is shorter than the time it takes an Arduino Uno to toggle the CONVST line high and then back low. Therefore, when a Contact: CustomerService@mayhewlabs.com 2

conversion is triggered by the Arduino, the conversion is complete before the BUSY line can be checked to see whether the ADC conversion is finished. This means that the BUSY line is not needed, since the conversion result will always be ready by the time the Arduino asks for it. This is the case for 16 MHz Arduinos, but not true for those running at a faster clock speed, like the Due. Therefore you cannot free up this pin on Arduinos running faster than 16 MHz. The ExtendedADCShield library was written to cover all Arduinos and therefore has a wait loop to check when the BUSY line goes high. If you wish to free up Pin 9 so that is not used for the BUSY signal, you must do two things: 1) remove the solder jumper from SJ6 on the back of the shield and 2) comment out the following lines from the file ExtendedADCShield.cpp in the library: pinmode(_busy, INPUT); (in two places) while(digitalread(_busy)==low); Installing Input Filtering Capacitors If you need to smooth out noise on the incoming analog signals, you may populate capacitor positions C1 through C12 on the shield with 0603-sized capacitors. The LTC185x datasheet recommends a 3000pF NP0-type capacitor in order to minimize wideband noise. The capacitors that should be placed depend on whether you are using single-ended inputs or differential inputs. See the table below for which capacitor positions to use and the image for capacitor orientation: Single Ended Capacitor Input Channel Position 0 C1 1 C3 2 C4 3 C6 4 C7 5 C9 6 C10 7 C12 Differential Input Channel Capacitor Position 0-1 C2 2-3 C5 4-5 C8 6-7 C11 Schematic The schematic for the shield can be found here. Contact: CustomerService@mayhewlabs.com 3

ExtendedADCShield Library for Arduino The ExtendedADCShield library was created to make initializing and controlling the shield easier. It hides the SPI message setup and communication along with toggling of the extra control lines. How to install the library: 1. Quit the Arduino application if it s running 2. Download ExtendedADCShield.zip and unzip it. 3. Move the ExtendedADCShield folder to your Arduino libraries folder: a. Windows: My Documents\Arduino\libraries b. Mac: Documents/Arduino/libraries c. Linux: the libraries folder in your sketchbook 4. Restart the Arduino application How to Use the library: 1. Start the Arduino application 2. Begin with a demo: a. File > Examples > ExtendedADCShield > Examples > (choose one of the following demos) i. ExtendedADCShieldDemo: an example of how to use the shield for a variety of analog inputs, communicating with the shield over the Arduino s built in SPI ii. ExtendedADCShield100KHz: an example of how to achieve 100kHz sampling rate on a single input 3. Add the ExtendedADCShield library to an existing sketch: a. Sketch > Import Library > ExtendedADCShield b. See the function reference below ExtendedADCShield Library Function Reference: ExtendedADCShield(byte number_bits) Description: Use this to create an instance of the ExtendedADCShield library - number_bits: the number of bits that the analog to digital converter IC on the shield is capable of. Use 12 for the LTC1857, 14 for the LTC1858, or 16 for the LTC1859 Return Value: None ExtendedADCShield(byte CONVST, byte RD, byte BUSY, byte number_bits) Description: Create an instance of the ExtendedADCShield library with user-defined pins - CONVST: the Arduino pin number connected to the shield s CONVST input - RD: the Arduino pin number connected to the shield s RD input - BUSY: the Arduino pin number connected to the shield s BUSY output - number_bits: the number of bits that the analog to digital converter IC on the shield is capable of. Use 12 for the LTC1857, 14 for the LTC1858, or 16 for the LTC1859 Return Value: None Contact: CustomerService@mayhewlabs.com 4

float analogreadconfignext(byte channel, byte sgl_diff, byte uni_bipolar, byte range) Description: Reads the last configured analog input, sets up the configuration of the next analog input. Note that the inputs to this function are used to set up the next analog input to read, while the output is the value of the last configured analog input at the time this function is called. See the example below for reference. - channel: the channel (1 to 7) that you want to configure next. For differential analog inputs, set this to be the positive input channel of the differential pair. The differential pairs are 0-1, 2-3, 4-5, and 6-7. For example, if you want the value of input 7 minus input 6, set channel to be 7. - sgl_diff: set whether the next configured channel should be single ended (a single input pin) or differential (one input minus another input) using one of the following values: - SINGLE_ENDED - DIFFERENTIAL - uni_bipolar: set whether the next channel to configure should be unipolar (0 to 5V and 0 to 10V) or bipolar (-5 to 5V and -10 to 10V) using one the following values: - UNIPOLAR - BIPOLAR - range: set whether the next channel to configure should be 5V (and -5 to 5V) or 10V (and -10 to 10V) using one of the following values: - RANGE5V - RANGE10V Return Value: the voltage of the last configured analog input at the time this function is called. analogreadconfignext example: //Read input 0, set up input 1 as single-ended unipoloar 0 to 5V //Assumes that input 0 was configured previously ch0 = extendedadcshield.analogreadconfignext(1, SINGLE_ENDED, UNIPOLAR, RANGE5V); Contact: CustomerService@mayhewlabs.com 5