Linduino  1.3.0
Linear Technology Arduino-Compatible Demonstration Board
DC2197.ino File Reference

Linear Technology DC2197 Demonstration Board. More...

Detailed Description

Linear Technology DC2197 Demonstration Board.

LTC2645 Quad 12-/10-/8-Bit PWM to VOUT DACs with 10ppm/C Reference

NOTES
  Setup:
   Set the terminal baud rate to 115200 and select the newline terminator.
   Equipment required is a precision voltage source (null box) and a precision voltmeter (to monitor voltage source).
   No external power supply is required.
   Ensure JP1 is installed in the default position from the factory.

USER INPUT DATA FORMAT:
 decimal : 1024
 hex     : 0x400
 octal   : 02000  (leading 0 "zero")
 binary  : B10000000000
 float   : 1024.0

http://www.linear.com/product/LTC2645

http://www.linear.com/product/LTC2645

Copyright 2018(c) Analog Devices, Inc.

All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

  • Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
  • Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
  • Neither the name of Analog Devices, Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
  • The use of this software may or may not infringe the patent rights of one or more patent holders. This license does not release you from the requirement that you obtain separate licenses from these patent holders to use this software.
  • Use of the software either in source or binary form, must be run on or directly connected to an Analog Devices Inc. component.

THIS SOFTWARE IS PROVIDED BY ANALOG DEVICES "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ANALOG DEVICES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, INTELLECTUAL PROPERTY RIGHTS, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Definition in file DC2197.ino.

Go to the source code of this file.

Functions

static void print_title ()
 Prints the title block when program first starts. More...
 
static void print_prompt ()
 
static void init_16_bit_PWM ()
 Initializes Pin 9 and 10 for 16-bit PWM. More...
 
static void pwm_16_bit (uint8_t pin, uint16_t duty)
 Sets duty cycle for 16-bit PWM. More...
 
static void menu_1_select_dac (int16_t *selected_dac)
 
static void menu_2_set_duty (int8_t selected_dac)
 Sets the duty cycle for the DAC. More...
 
static uint16_t LTC2645_voltage_to_pwm_code (float dac_voltage, float fullScaleVoltage, int8_t pwmBitResolution)
 Calculate a LTC2645 duty code given the desired output voltage. More...
 
static void python_program ()
 Used to interact with the corresponding python program. More...
 
static int16_t prompt_voltage_or_code ()
 Prompt user to enter a voltage or digital code to send to DAC. More...
 
static uint16_t get_voltage (float fullScaleVoltage, int8_t pwmBitResolution)
 Get voltage from user input, calculate DAC code based on full scale voltage and PWM bit resolution. More...
 
static uint16_t get_code ()
 Get code to send to DAC directly, in decimal, hex, or binary. More...
 
static void test ()
 
static void setup ()
 Initialize Linduino. More...
 
static void loop ()
 Repeats Linduino loop. More...
 
static void print_prompt (int16_t selected_dac)
 Prints main menu. More...
 
static void menu_1_select_dac (int8_t *selected_dac)
 Select which DAC to operate on. More...
 

Enumerations

enum  { PROMPT_VOLTAGE = 0, PROMPT_CODE = 1 }
 Used to keep track to print voltage or print code. More...
 

Variables

const uint8_t DAC_A = 9
 
const uint8_t DAC_B = 10
 
const uint8_t DAC_C = 5
 
const uint8_t DAC_D = 6
 
static float fullScale = 2.5
 
static float percentDutyCycle [4] = {0.0,0.0,0.0,0.0}
 Full Scale Voltage. More...
 

Function Documentation

◆ get_code()

static uint16_t get_code ( )
static

Get code to send to DAC directly, in decimal, hex, or binary.

Returns
DAC code

Definition at line 374 of file DC2197.ino.

◆ get_voltage()

static uint16_t get_voltage ( float  fullScaleVoltage,
int8_t  pwmBitResolution 
)
static

Get voltage from user input, calculate DAC code based on full scale voltage and PWM bit resolution.

Returns
voltage

Definition at line 360 of file DC2197.ino.

◆ init_16_bit_PWM()

static void init_16_bit_PWM ( )
static

Initializes Pin 9 and 10 for 16-bit PWM.

Definition at line 202 of file DC2197.ino.

◆ loop()

static void loop ( void  )
static

Repeats Linduino loop.

Definition at line 136 of file DC2197.ino.

◆ LTC2645_voltage_to_pwm_code()

static uint16_t LTC2645_voltage_to_pwm_code ( float  dac_voltage,
float  fullScaleVoltage,
int8_t  pwmBitResolution 
)
static

Calculate a LTC2645 duty code given the desired output voltage.

Returns
PWM Code

Definition at line 327 of file DC2197.ino.

◆ menu_1_select_dac() [1/2]

static void menu_1_select_dac ( int16_t *  selected_dac)
static

◆ menu_1_select_dac() [2/2]

static void menu_1_select_dac ( int8_t *  selected_dac)
static

Select which DAC to operate on.

Definition at line 243 of file DC2197.ino.

◆ menu_2_set_duty()

static void menu_2_set_duty ( int8_t  selected_dac)
static

Sets the duty cycle for the DAC.

Definition at line 254 of file DC2197.ino.

◆ print_prompt() [1/2]

static void print_prompt ( )
static

◆ print_prompt() [2/2]

static void print_prompt ( int16_t  selected_dac)
static

Prints main menu.

Definition at line 186 of file DC2197.ino.

◆ print_title()

static void print_title ( void  )
static

Prints the title block when program first starts.

Definition at line 170 of file DC2197.ino.

◆ prompt_voltage_or_code()

static int16_t prompt_voltage_or_code ( )
static

Prompt user to enter a voltage or digital code to send to DAC.

Returns
prompt type

Definition at line 343 of file DC2197.ino.

◆ pwm_16_bit()

static void pwm_16_bit ( uint8_t  pin,
uint16_t  duty 
)
static

Sets duty cycle for 16-bit PWM.

Definition at line 234 of file DC2197.ino.

◆ python_program()

static void python_program ( )
static

Used to interact with the corresponding python program.

Accepts Serial strings to control the DAC output i.e.: Set DAC A (16 bit pwm) to 50% duty cycle -> 32767A

Definition at line 290 of file DC2197.ino.

◆ setup()

static void setup ( void  )
static

Initialize Linduino.

Definition at line 106 of file DC2197.ino.

◆ test()

static void test ( )
static

Definition at line 387 of file DC2197.ino.

Enumeration Type Documentation

◆ anonymous enum

anonymous enum

Used to keep track to print voltage or print code.

Enumerator
PROMPT_VOLTAGE 

0

PROMPT_CODE 

1

Definition at line 98 of file DC2197.ino.

Variable Documentation

◆ DAC_A

const uint8_t DAC_A = 9

Definition at line 73 of file DC2197.ino.

◆ DAC_B

const uint8_t DAC_B = 10

Definition at line 74 of file DC2197.ino.

◆ DAC_C

const uint8_t DAC_C = 5

Definition at line 75 of file DC2197.ino.

◆ DAC_D

const uint8_t DAC_D = 6

Definition at line 76 of file DC2197.ino.

◆ fullScale

float fullScale = 2.5
static

Definition at line 94 of file DC2197.ino.

◆ percentDutyCycle

float percentDutyCycle[4] = {0.0,0.0,0.0,0.0}
static

Full Scale Voltage.

Definition at line 95 of file DC2197.ino.