LTC1859CG Evaluation board with an Arduino

arduino_ltc1859

I’ve been playing with a LTC1859 Evaluation board. Linear supply code for their Linduino platform (which costs a lot) and a cable to connect to it. However the Linduino is really just a standard Arduino with a special connector. I wired up the SPI interface to the board as shown above and it works fine (a couple of the ground connections are not connected above, I needed to connect them all before the board was stable). The code adapted from the Linduino library and their LTC1859 example is in the tarball below:

DC682A.tar

DC682A.ino can be simplified to the following to give a continuous single channel voltage reading:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <Arduino.h>
#include "Linduino.h"
#include "LT_SPI.h"
#include "LT_I2C.h"
#include "LTC1859.h"
#include <SPI.h>
#include <Wire.h>                        
 
void setup()
{
  uint16_t adc_code;
   
  quikeval_SPI_init();           // Configure the spi port for 4MHz SCK
  quikeval_SPI_connect();        // Connect SPI to main data port
  Serial.begin(115200);          // Initialize the serial port to the PC
}
 
//! Repeats Linduino loop
void loop()
{
  uint16_t user_command;
  uint16_t adc_command;         // The LTC1859 command byte   
  uint16_t adc_code = 0;    // The LTC1859 code
  float adc_voltage;
  uint8_t x, y, startcount, endcount;
 
  uint8_t uni_bipolar = LTC1859_BIPOLAR_MODE;
  uint8_t single_ended_differential = LTC1859_SINGLE_ENDED_MODE;
  uint8_t range_low_high = LTC1859_HIGH_RANGE_MODE;
 
  startcount=0;
  endcount=0;
   
  float LTC1859_vref = 10;
 
  adc_command = LTC1859_CH0 | uni_bipolar | range_low_high;
  LTC1859_read(LTC1859_CS, adc_command, &adc_code);     // Throws out last reading and starts CH0 conversion
  adc_command = LTC1859_CH0 | uni_bipolar | range_low_high; // Send channel config for the NEXT conversion to take place
  LTC1859_read(LTC1859_CS, adc_command, &adc_code);   // Read previous channel conversion (x-1) and start next one (x)
  LTC1859_read(LTC1859_CS, adc_command, &adc_code);   // Read previous channel conversion (x-1) and start next one (x)
            
  adc_voltage = LTC1859_code_to_voltage(adc_code, LTC1859_vref, range_low_high, uni_bipolar);
  
  //Serial.println(adc_code, BIN);
  Serial.print(adc_voltage, 4);
  Serial.println();
   
}

Leave a Reply