91 void set_gain(uint8_t a_pin, uint8_t b_pin, uint8_t gain);
116 uint8_t
read_gain_seq[] = {
unity,
unity,
unity ,
g8,
g16,
g32,
channel_gain[0], channel_gain[1], channel_gain[2], channel_gain[3],
117 channel_gain[4], channel_gain[5]
136 Serial.begin(115200);
146 Serial.println(F(
"EEPROM not detected, will attempt to proceed"));
157 if (Serial.available())
160 if (user_command !=
'm')
161 Serial.println(user_command);
163 switch (user_command)
175 Serial.println(F(
"Incorrect Option"));
178 Serial.println(F(
"\n******SPI ERROR******\n"));
179 Serial.print(F(
"\n*************************\n"));
189 Serial.print(F(
"\n*****************************************************************\n"));
190 Serial.print(F(
"* DC1410A-A Demonstration Program *\n"));
191 Serial.print(F(
"* *\n"));
192 Serial.print(F(
"* This program demonstrates how to measure strain gauge or *\n"));
193 Serial.print(F(
"* other form of a Wheatstone bridge sensors with the LTC2498 *\n"));
194 Serial.print(F(
"* *\n"));
195 Serial.print(F(
"* *\n"));
196 Serial.print(F(
"* Set the baud rate to 115200 and select the newline terminator.*\n"));
197 Serial.print(F(
"* *\n"));
198 Serial.print(F(
"*****************************************************************\n"));
204 Serial.print(F(
"\n1-Read Differential\n"));
205 Serial.print(F(
"2-2X Mode Settings\n"));
206 Serial.print(F(
"3-Set Channel Gain\n"));
207 Serial.print(F(
"Enter a Command: "));
215 uint8_t adc_command_high;
216 uint8_t adc_command_low;
220 static float offset = 0.0;
221 static float gain_unity = 0.0;
222 static float gain_8 = 0.0;
223 static float gain_16 = 0.0;
224 static float gain_32 = 0.0;
225 static float gain_value[4];
230 for (int8_t
i = 0;
i <= 11;
i++)
244 offset = adc_code[1] - 536870912;
245 gain_unity = ((float)adc_code[2]) - 536870912;
246 gain_8 = ((float)adc_code[3] - 536870912) / gain_unity;
247 gain_16 = ((float)adc_code[4] - 536870912) / gain_unity;
248 gain_32 = ((float)adc_code[5] - 536870912) / gain_unity;
257 gain_unity = ((float)adc_code[2]) - offset - 536870912;
258 gain_value[1] = ((float)adc_code[3] - offset - 536870912) / gain_unity;
259 gain_16 = ((float)adc_code[4] - offset - 536870912) / gain_unity;
260 gain_32 = ((float)adc_code[5] - offset - 536870912) / gain_unity;
264 gain_unity = ((float)adc_code[2]) - 536870912;
272 gain_value[1] = gain_8;
273 gain_value[2] = gain_16;
274 gain_value[3] = gain_32;
276 Serial.println(F(
"\n**********"));
277 Serial.print(F(
" Offset: "));
278 Serial.print(offset, 6);
279 Serial.print(F(
" "));
281 Serial.println(F(
" mV"));
282 Serial.print(F(
" G8: "));
283 Serial.println(gain_8, 6);
284 Serial.print(F(
" G16: "));
285 Serial.println(gain_16, 6);
286 Serial.print(F(
" G32: "));
287 Serial.println(gain_32, 6);
290 Serial.println(F(
"CH ADC Code Gain Comp Voltage (mV)"));
291 Serial.print(F(
"P0-N1: 0x"));
292 Serial.print(adc_code[6], HEX);
295 Serial.print(F(
" "));
298 Serial.print(F(
"P2-N3: 0x"));
299 Serial.print(adc_code[7], HEX);
300 Serial.print(F(
" "));
301 Serial.print(gain_value[channel_gain[1]], 6);
305 Serial.print(F(
"P4-N5: 0x"));
306 Serial.print(adc_code[8], HEX);
307 Serial.print(F(
" "));
308 Serial.print(gain_value[channel_gain[2]], 6);
312 Serial.print(F(
"P6-N7: 0x"));
313 Serial.print(adc_code[9], HEX);
314 Serial.print(F(
" "));
315 Serial.print(gain_value[channel_gain[3]], 6);
319 Serial.print(F(
"P8-N9: 0x"));
320 Serial.print(adc_code[10], HEX);
321 Serial.print(F(
" "));
322 Serial.print(gain_value[channel_gain[4]], 6);
326 Serial.print(F(
"P10-N11: 0x"));
327 Serial.print(adc_code[11], HEX);
328 Serial.print(F(
" "));
329 Serial.print(gain_value[channel_gain[5]], 6);
334 Serial.println(F(
"Enter any character to exit"));
337 while (Serial.available() == 0);
338 while (Serial.available())
345 void set_gain(uint8_t a_pin, uint8_t b_pin, uint8_t gain)
347 digitalWrite(a_pin, gain & 0b01);
348 digitalWrite(b_pin, gain & 0b10);
354 pinMode(a_pin, OUTPUT);
355 pinMode(b_pin, OUTPUT);
356 digitalWrite(a_pin, LOW);
357 digitalWrite(b_pin, LOW);
367 Serial.print(F(
"\nCurrent Gain Settings:\n"));
368 Serial.print(F(
" CH 0P-1N gain: "));
370 Serial.print(F(
" CH 2P-3N gain: "));
372 Serial.print(F(
" CH 4P-5N gain: "));
374 Serial.print(F(
" CH 6P-7N gain: "));
376 Serial.print(F(
" CH 8P-9N gain: "));
378 Serial.print(F(
" CH 10P-11N gain: "));
381 Serial.print(F(
"\n\n"));
382 Serial.print(F(
"Channel Select\n"));
383 Serial.print(F(
" 0-0P-1N 3-6P-7N\n"));
384 Serial.print(F(
" 1-2P-3N 4-8P-9N\n"));
385 Serial.print(F(
" 2-4P-5N 5-10P-11N\n"));
386 Serial.print(F(
" 6-ALL\n"));
387 Serial.print(F(
"m-Main Menu\n"));
388 Serial.print(F(
"Enter a Command: "));
392 if (user_command ==
'm')
394 Serial.println(F(
"m"));
397 Serial.println(user_command);
398 if (user_command > 6)
399 Serial.println(F(
"Incorrect Option"));
402 if (user_command == 6)
404 Serial.print(F(
"\nGain Options\n"));
405 Serial.print(F(
" 0-Unity Gain\n"));
406 Serial.print(F(
" 1-Gain of 8\n"));
407 Serial.print(F(
" 2-Gain of 16\n"));
408 Serial.print(F(
" 3-Gain of 32\n"));
409 Serial.print(F(
"Enter a Command: "));
411 Serial.println(user_command);
412 if (user_command < 0 || user_command > 3)
413 Serial.print(F(
"Incorrect Gain Option"));
416 for (uint8_t
i = 0;
i <= 5;
i++)
424 Serial.print(F(
"\nGain Options\n"));
425 Serial.print(F(
" 0-Unity Gain\n"));
426 Serial.print(F(
" 1-Gain of 8\n"));
427 Serial.print(F(
" 2-Gain of 16\n"));
428 Serial.print(F(
" 3-Gain of 32\n"));
429 Serial.print(F(
"Enter a Command: "));
431 Serial.println(user_command);
432 if (user_command < 0 || user_command > 3)
433 Serial.print(F(
"Incorrect Gain Option"));
439 for (int8_t
i = 0;
i <= 5;
i++)
450 Serial.print(F(
"Unity\n"));
453 Serial.print(F(
"8\n"));
456 Serial.print(F(
"16\n"));
459 Serial.print(F(
"32\n"));
470 Serial.print(F(
"2X Mode Settings\n\n"));
471 Serial.print(F(
"0-Disable\n"));
472 Serial.print(F(
"1-Enable\n"));
473 Serial.print(F(
"Enter a Command: "));
475 Serial.println(user_command);
477 if (user_command == 0)
480 Serial.print(F(
"2X Mode Disabled\n"));
485 Serial.print(F(
"2X Mode Enabled\n"));
static void print_prompt()
Prints main menu.
unsigned char user_command
Header File for Linduino Libraries and Demo Code.
LTC2498: 24-Bit, 16-Channel Delta Sigma ADCs with Easy Drive Input Current Cancellation.
static uint8_t filt_flag
Keeps track when the filter needs to be rest.
int8_t LTC2498_EOC_timeout(uint8_t cs, uint16_t miso_timeout)
Checks for EOC with a specified timeout.
static uint8_t channel
LTC2305 Channel selection.
static uint8_t menu_1_read_differential()
Read channels in differential mode.
static uint8_t channel_gain[6]
default is gain 32
static float LTC2498_vref
The LTC2498 ideal reference voltage.
float LTC24XX_diff_code_to_calibrated_voltage(int32_t adc_code, float LTC2449_lsb, int32_t LTC2449_offset_code)
Calculates the voltage corresponding to an ADC code, given lsb weight (in volts) and the calibrated A...
static uint8_t rejection_mode
The LTC2498 rejection mode settings.
static void print_title()
Prints the title block when program first starts.
const float smoothing_const
Exponential filter smothing constant.
LTC24XX General Library: Functions and defines for all SINC4 Delta Sigma ADCs.
const uint8_t A_PIN
Gain MUX pins.
static void menu_3_set_channel_gain()
Allows the user to sets the desired gain.
static void loop()
Repeats Linduino loop.
static void menu_2_set_1X2X()
Set 1X or 2X mode.
static uint8_t read_gain_seq[]
lookup table for gain setting reads
void LTC2498_read(uint8_t cs, uint8_t adc_command_high, uint8_t adc_command_low, int32_t *adc_code)
Reads from LTC2498.
void quikeval_SPI_init(void)
Configure the SPI port for 4Mhz SCK.
int8_t discover_demo_board(char *demo_name)
Read the ID string from the EEPROM and determine if the correct board is connected.
static uint16_t eoc_timeout
Timeout in ms.
static uint8_t demo_board_connected
Set to 1 if the board is connected.
LT_SPI: Routines to communicate with ATmega328P's hardware SPI port.
const uint8_t read_command_seq[]
Lookup table for reads.
LT_I2C: Routines to communicate with ATmega328P's hardware I2C port.
static void print_user_command(uint8_t menu)
static void setup()
Initialize Linduino.
char demo_name[]
Demo Board Name stored in QuikEval EEPROM.
void quikeval_SPI_connect()
Connect SPI pins to QuikEval connector through the Linduino MUX. This will disconnect I2C...
static void print_gain(uint8_t gain)
Utility function to display the gain.
float LTC2498_code_to_voltage(int32_t adc_code, float vref)
Calculates the voltage corresponding to an adc code, given the reference (in volts) ...
#define LTC2498_CS
Define the SPI CS pin.
void quikeval_I2C_init(void)
Initializes Linduino I2C port.
static uint8_t two_x_mode
The LTC2498 2X Mode settings.
static void init_gain_pins(uint8_t a_pin, uint8_t b_pin)
initialize the MUX select pins
static void set_gain(uint8_t a_pin, uint8_t b_pin, uint8_t gain)
Set the Mux select pins to the desired gain.