This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
resources:eval:user-guides:eval-adicup3029:reference_designs:demo_cn0414 [09 Nov 2018 11:52] – [Available commands] Andrei Drimbarean | resources:eval:user-guides:eval-adicup3029:reference_designs:demo_cn0414 [03 Mar 2021 02:55] (current) – [Obtaining the Source Code] adding in .Hex files Brandon Bushey | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== PLC Arduino Shield Input Demo ====== | ====== PLC Arduino Shield Input Demo ====== | ||
- | The **ADuCM_demo_cn0414** project provides a solution to control a **PLC** or **DCS** input system using the **EVAL-CN0414-ARDZ** and the **EVAL-ADICUP3029**. It uses an **ADC** with 4 differential voltage channels and 4 current channels and boasts low power **Open-Wire Detection** capabilities and **HART** communication. It has a 32kb EEPROM memory that can also be used to identify the board and is controlled via a command line interface (**CLI**). | + | The **ADuCM3029_demo_cn0414** project provides a solution to control a **PLC** or **DCS** input system using the **EVAL-CN0414-ARDZ** and the **EVAL-ADICUP3029**. It uses an **ADC** with 4 differential voltage channels and 4 current channels and boasts low power **Open-Wire Detection** capabilities and **HART** communication. It has a 32kb EEPROM memory that can also be used to identify the board and is controlled via a command line interface (**CLI**). |
===== General Description/ | ===== General Description/ | ||
Line 7: | Line 7: | ||
The **ADuCM_demo_cn0414** project uses **EVAL-CN0414-ARDZ** to provide a complete, fully isolated and highly flexible, four channel analog input system. The **EVAL-CN0414-ARDZ** is suitable for programmable logic controllers (**PLC**) and distributed control system (**DCS**) applications that require multiple voltage inputs. It boasts **open wire detection** and has **HART**-compatible, | The **ADuCM_demo_cn0414** project uses **EVAL-CN0414-ARDZ** to provide a complete, fully isolated and highly flexible, four channel analog input system. The **EVAL-CN0414-ARDZ** is suitable for programmable logic controllers (**PLC**) and distributed control system (**DCS**) applications that require multiple voltage inputs. It boasts **open wire detection** and has **HART**-compatible, | ||
- | The circuit can be divided into the following parts: the ADC, the input channels, the HART modem and the memory. | + | The circuit can be divided into the following parts: the ADC, the input channels, the HART modem and the memory. |
- | FIXME! MAYBE LINK TO APP NOTE | + | |
The **ADC** is the core of the **EVAL-CN0414-ARDZ** shield. It is an [[adi> | The **ADC** is the core of the **EVAL-CN0414-ARDZ** shield. It is an [[adi> | ||
- | FIXME! MARKS DIAGRAM | + | {{ : |
Alternatively the user can request a burst read of up to 2000 samples returned at the ADC output data rate. | Alternatively the user can request a burst read of up to 2000 samples returned at the ADC output data rate. | ||
The application uses the **ADCs Open-Wire Detection** capabilities for the voltage channels. When activated this option also tracks the state of the channel connection on every read and gives a warning when a channel is disconnected. | The application uses the **ADCs Open-Wire Detection** capabilities for the voltage channels. When activated this option also tracks the state of the channel connection on every read and gives a warning when a channel is disconnected. | ||
Line 29: | Line 28: | ||
* 24V and 1A limited power supply (**optional**) | * 24V and 1A limited power supply (**optional**) | ||
* Software | * Software | ||
- | * [[https://gitlab.analog.com/Platformation/ | + | * [[https://github.com/analogdevicesinc/ |
* CrossCore Embedded Studio (2.8.0 or higher) | * CrossCore Embedded Studio (2.8.0 or higher) | ||
* ADuCM302x DFP (3.2.0 or higher) | * ADuCM302x DFP (3.2.0 or higher) | ||
Line 38: | Line 37: | ||
===== Setting up the Hardware ===== | ===== Setting up the Hardware ===== | ||
- | - Connect **EVAL-CN0414-ARDZ** board to the **EVAL-ADICUP3029**.{{ : | + | - Connect **EVAL-CN0414-ARDZ** board to the **EVAL-ADICUP3029**. |
- | - Connect a micro-USB cable to P10 connector of the EVAL-ADICUP3029 and connect it to a computer.{{ : | + | - Set the jumpers into the position shown below. This is the standard position and only works for one board systems.{{ : |
+ | - Connect a micro-USB cable to P10 connector of the EVAL-ADICUP3029 and connect it to a computer. The final setup should look similar to the picture below.{{ : | ||
===== Configuring the Software ===== | ===== Configuring the Software ===== | ||
Line 57: | Line 57: | ||
===== Outputting Data ===== | ===== Outputting Data ===== | ||
- | ==== Serial Terminal Output ==== | + | {{page>/ |
- | + | ||
- | The program outputs data and **CLI** interface to a serial terminal through **UART**. | + | |
- | + | ||
- | - In order to view the data, you must flash the program to the EVAL-ADICUP3029. | + | |
- | - Then follow the UART settings below with the serial terminal program. | + | |
- | + | ||
- | Following is the UART configuration. | + | |
- | Select COM Port | + | |
- | Baud rate: 115200 | + | |
- | Data: 8 bit | + | |
- | Parity: none | + | |
- | Stop: 1 bit | + | |
- | Flow Control: none | + | |
- | \\ | + | |
- | The terminal program must interpret new line as **LF** and **local echo** must be enabled. | + | |
==== Available commands ==== | ==== Available commands ==== | ||
Line 78: | Line 63: | ||
Typing **help** or **h** after initial calibration sequence will display the list of commands and their short versions. Bellow is the short command list: | Typing **help** or **h** after initial calibration sequence will display the list of commands and their short versions. Bellow is the short command list: | ||
- | ^ Command | + | ^ Command |
- | | //h// | Display available commands | | + | ^ General commands |
- | | //f// | Set frequency to the specified value\\ <//freq//> = value of the new frequency\\ 1Hz to 4MHz frequency is possible. | + | | //h// | Display available commands. | |
- | | //d// | Set duty cycle to the specified value\\ <//duty//> = value of the new duty cycle\\ The duty cycle is from 0 representing 0% and 10000 representing 100%. Example: 5234 = 52.34%. | | + | | //stts// |
- | | //r// | Read and display the value of the ADC | | + | ^ Internal register commands ^ |
- | | //ad// | + | | //r// | Display voltage or current on the selected channel.\\ <//chan//> = channel |
- | | //rd// | + | | //sur// | Change channel update rate.\\ <rate> = new channel update rate in Hz.\\ If it is bigger than output data rate divided by 80 can cause unpredictable behaviour. | |
- | | //df// | + | ^ HART commands ^ |
- | | //da// | + | | //he// |
- | | //ap// | + | | //hd// |
- | | //rp// | + | | //hcc// | Select wanted channel.\\ <//chan//> = Channel |
- | | //kp// | + | | //ht// |
- | | //ki// | + | | //hg// |
- | | //kd// | + | | //hcz// | Send command zero with the specified number of FFs in the preambule.\\ <// |
- | | //spf// | Set PID sampling frequency\\ <//freq//> = value of the new frequency\\ Recommended to be at most equal with the dither frequency. | | + | | //hpt// | Send command zero with the specified number of FFs in the preambule.\\ <//byte//> = byte to send in loop. | |
- | | //sps// | Set PID set point(hold value)\\ <//sp//> = new hold value in A or 0.01%(duty cycle)\\ From 0 to 1 amperes or from 1 to 10000 as duty cycle. | | + | ^ ADC commands ^ |
- | | //dson// | + | | //arr// | Display value of ADC register of the given address.\\ <//reg//> = address |
- | | //dsof// | + | | //awr// | Change value of the ADC register of the given address.\\ <//reg//> = address |
- | | //pss// | Set and activate proportional solenoid\\ <//val//> = value of the current or duty cycle\\ from 0 to 1 amperes. | | + | | //ags// | Get a specific number of samples from the given channel.\\ <//ch//> = selected chanel.\\ <// |
- | | //rst// | Reset controller, parameters and faults | | + | | //aso// | Set sample rate.\\ <//sps//> = selected sample rate option.\\ If it is smaller than channel update rate multiplied by 80 can cause unpredictable behaviour. | |
- | | //stts// | + | | //asf// | Set filter option.\\ <// |
- | | //clb// | Run calibration sequence | + | | //aep// | Enable post filter. |
+ | | //adp// | Select postfilter.\\ <//opt//> = selected postfilter option. | | ||
+ | | //asp// | Reset controller, parameters and faults | | ||
+ | | //aowe// | ||
+ | | //aowd// | ||
+ | ^ EEPROM commands ^ | ||
+ | | // | ||
- | {{ : | + | {{ : |
- | ===== Obtaining the Source Code ===== | + | ===== Obtaining the Software |
- | We recommend not opening | + | There are two basic ways to program |
+ | - Dragging | ||
+ | - Building, Compiling, and Debugging using CCES | ||
- | The source code and include files of the FIXME!**file_name_of_demo** can be found here: | + | Using the drag and drop method, |
- | <WRAP round 80% download> | + | Importing the project into CrossCore is going to allow you to change parameters and customize the software to fit your needs, but will be a bit more advanced and will require you to download |
- | FIXME! | + | The software for the **ADuCM3029_demo_cn0414** can be found here: |
- | [[https:// | + | <WRAP round 80% download> |
+ | Prebuilt CN0414 Hex File | ||
+ | * [[https:// | ||
+ | Complete CN0414 Source Files | ||
+ | * [[https:// | ||
</ | </ | ||
- | |||
- | |||
===== How to use the Tools ===== | ===== How to use the Tools ===== | ||
Line 134: | Line 129: | ||
==== Project Structure ==== | ==== Project Structure ==== | ||
- | FIXME! | + | The program is composed of two main parts: |
+ | | ||
+ | - Main process. | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Board setup initializes **UART**, **SPI** and **I2C** communication and verifies if there is an active **EVAL-CN0414-ARDZ** board connected by reading the AD4111 ID register. Here is also initialized the update timer for the internal channel registers. | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | The main process routine implements the **CLI** and calls the commands input by the user. This routine also checks the flags asserted in the asynchronous events (the update channel register flag, the HART received flag and the floating channel flags) and calls the appropriate handler methods. There is also a flag asserted by the channel register update rate and the **ADC** output data rate. If the update rate would be too close to the output data rate, the actual update rate might slow down to be possible for the program to maintain all functionality. The update rate may never be bigger or equal to the **ADC** output data rate divided by 8 (for 8 channels). | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | The flow chart below represents the way the channel registers | ||
+ | |||
+ | {{ : | ||
// End of Document // | // End of Document // | ||