Both sides previous revisionPrevious revisionNext revision | Previous revision |
resources:eval:user-guides:eval-adicup3029:reference_designs:demo_cn0415 [26 Feb 2019 20:53] – Brandon Bushey | resources:eval:user-guides:eval-adicup3029:reference_designs:demo_cn0415 [19 Aug 2021 07:12] (current) – title word spell edit erbe reyta |
---|
====== Solenoind Closed Loop Control Demo ====== | ====== Solenoid Closed Loop Control Demo ====== |
| |
The **ADuCM3029_demo_cn0415** provides a solution for controlling and monitoring solenoid actuator current, using an **EVAL-CN0415-ARDZ** shield installed on an **EVAL-ADICUP3029** base board. The user interface is implemented as a command line interface (CLI) through a serial UART connection. The project is created using **CrossCore Embedded Studio** and **GNU ARM compiler**. | The **ADuCM3029_demo_cn0415** provides a solution for controlling and monitoring solenoid actuator current, using an **EVAL-CN0415-ARDZ** shield installed on an **EVAL-ADICUP3029** base board. The user interface is implemented as a command line interface (CLI) through a serial UART connection. The project is created using **CrossCore Embedded Studio** and **GNU ARM compiler**. |
===== Setting up the Hardware ===== | ===== Setting up the Hardware ===== |
| |
- Connect **EVAL-CN0415-ARDZ** board to the **EVAL-ADICUP3029**. {{ :resources:eval:user-guides:eval-adicup3029:reference_designs:cn0415_stacked_adicup3029.jpg?nolink | CN0415 stacked on ADICUP3029}} | - Connect **EVAL-CN0415-ARDZ** board to the **EVAL-ADICUP3029**. {{ :resources:eval:user-guides:eval-adicup3029:reference_designs:cn0415_adicup3029_dock.jpeg | CN0415 docked on ADICUP3029 }} |
- Connect a micro-USB cable to **P10** connector of the **EVAL-ADICUP3029** and connect it to a computer. | - Connect a micro-USB cable to **P10** connector of the **EVAL-ADICUP3029** and connect it to a computer. |
- Connect a solenoid actuator to the **P8** connector with the positive wire on pin 1 and negative wire on pin 2. | - Connect a solenoid actuator to the **P8** connector with the positive wire on pin 1 and negative wire on pin 2. |
- Connect a 12V power supply to the **P1** connector with the positive wire on pin 1 and negative wire on pin 2.{{ :resources:eval:user-guides:eval-adicup3029:reference_designs:powered_cn0415.jpg?nolink | Powered CN0415 board with solenoid}} | - Connect a 12V power supply to the **P1** connector with the positive wire on pin 1 and negative wire on pin 2.{{ :resources:eval:user-guides:eval-adicup3029:reference_designs:cn0415_fully_connected.jpeg | CN0415 power up }} |
- Turn on power supply. | - Turn on power supply. |
===== Configuring the Software ===== | ===== Configuring the Software ===== |
===== Outputting Data ===== | ===== Outputting Data ===== |
| |
==== Serial Terminal Output ==== | {{page>/wiki/common#serial_terminal_setup&nofooter&noheader}} |
| |
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 ==== |
| |
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. Below is the short command list: |
| |
^Type ^ Command ^ Description ^ | ^Type ^ Command ^ Description ^ |
|PWM| //h// | Display available commands | | |System| //h// | Display available commands | |
| | //f// | Set frequency to the specified value\\ <//freq//> = value of the new frequency\\ 1Hz to 4MHz frequency is possible. | | | | //rst// | Reset controller, parameters and faults | |
| | //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// | Show application status and parameters | |
|Duty Cycle| //r// | Read and display the value of the ADC | | | | //clb// | Run calibration sequence | |
| |Control | //f//\\ ex: **f 5000<enter>**\\ (set frequency to 5kHz) | Set frequency to the specified value\\ <//freq//> = value of the new frequency\\ 1Hz to 4MHz frequency is possible.| |
| | | //d//\\ ex: **d 5234<enter>**\\ (set duty cycle to 52.34%.) | 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%. | |
| | | //r// | Read and display the value of the ADC | |
| | //ad// | Activate PWM dither functionality | | | | //ad// | Activate PWM dither functionality | |
| | //rd// | Deactivate PWM dither functionality | | | | //rd// | Deactivate PWM dither functionality | |
| | //df// | Set dither frequency to the given value\\ <//freq//> = value of the new frequency\\ Recommended to be maximum the PWM frequency divided by 10. | | | | //df//\\ ex: **df 50<enter>**\\ (set dither freq. to 50Hz) | Set dither frequency to the given value\\ <//freq//> = value of the new frequency\\ Recommended maximum value of the PWM frequency divided by 10. | |
| //da// | Set dither amplitude\\ <//duty//> = value of the amplitude in duty cycle variation\\ Any value between 0 and 10000, same as duty cycle. Recommended to be lower than the lowest value needed for the duty cycle to be 0 or full scale. | | | | //da//\\ ex: **da 200<enter>**\\ (set dither amplitude to 2%) | Set dither amplitude\\ <//duty//> = value of the amplitude in duty cycle variation\\ Any value between 0 and 10000, same as duty cycle.\\ Recommended to be lower than the lowest value needed\\ for the duty cycle to be 0 or full scale. | |
| //ap// | Activate PID controller | | |PID | //ap// | Activate PID controller | |
| //rp// | Deactivate PID controller | | | | //rp// | Deactivate PID controller | |
| //kp// | Set PID Kp constant\\ <//kp//> = value of the new Kp constant\\ From zero to maximum number represented by a 32 bit float value. | | | | //kp//\\ ex: **kp 5000.0<enter>**\\ (set kp to 5000) | Set PID Kp constant\\ <//kp//> = value of the new Kp constant\\ From zero to maximum number represented by a 32 bit float value. | |
| //ki// | Set PID Ki constant\\ <//ki//> = value of the new Ki constant\\ From zero to maximum number represented by a 32 bit float value. | | | | //ki//\\ ex: **ki 1.5<enter>**\\ (set ki to 1.5) | Set PID Ki constant\\ <//ki//> = value of the new Ki constant\\ From zero to maximum number represented by a 32 bit float value. | |
| //kd// | Set PID Kd constant\\ <//kd//> = value of the new Kd constant\\ From zero to maximum number represented by a 32 bit float value. | | | | //kd//\\ ex: **kd 0.25<enter>**\\ (set kd to 0.25) | Set PID Kd constant\\ <//kd//> = value of the new Kd constant\\ From zero to maximum number represented by a 32 bit float value. | |
| //spf// | Set PID sampling frequency\\ <//freq//> = value of the new frequency\\ Recommended to be at most equal with the dither frequency. | | | | //spf//\\ ex: **spf 100<enter>**\\ (set sample freq. to 100Hz) | Set PID sampling frequency\\ <//freq//> = value of the new frequency\\ Recommended to be at most equal with the dither frequency. | |
| //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. | | | | //sps//\\ ex: **sps 2500<enter>**\\ (setpoint to 25%) | 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. | |
| //dson// | Set digital solenoid high | | |Digital | //dson// | Set digital solenoid high | |
| //dsof// | Set digital solenoid low | | | | //dsof// | Set digital solenoid low | |
| //pss// | Set and activate proportional solenoid\\ <//val//> = value of the current or duty cycle\\ from 0 to 1 amperes. | | |Proportional | //pss//\\ ex: **pss 2500<enter>**\\ (setpoint to 25%) | Set and activate proportional solenoid\\ <//val//> = value of the current or duty cycle\\ from 0 to 1 amperes. | |
| //rst// | Reset controller, parameters and faults | | |
| //stts// | Show application status and parameters | | |
| //clb// | Run calibration sequence | | |
| |
{{ :resources:eval:user-guides:eval-adicup3029:reference_designs:wiki_pic.png?nolink | Terminal example}} | {{ :resources:eval:user-guides:eval-adicup3029:reference_designs:wiki_pic.png?nolink | Terminal example}} |
| |
===== Obtaining the Source Code ===== | ===== Obtaining the Software ===== |
| |
We recommend not opening the project directly, but rather import it into CrossCore Embedded Studios and make a local copy in your workspace. | There are two basic ways to program the ADICUP3029 with the software for the CN0415. |
| - Dragging and Dropping the .Hex to the Daplink drive |
| - Building, Compiling, and Debugging using CCES |
| |
The source code and include files of the **ADuCM3029_demo_cn0415** can be found here: | Using the drag and drop method, the software is going to be a version that Analog Devices creates for testing and evaluation purposes. This is the EASIEST way to get started with the reference design |
| |
<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 the CrossCore toolchain. |
| |
| The software for the **ADuCM3029_demo_cn0415** can be found here: |
| |
[[https://github.com/analogdevicesinc/EVAL-ADICUP3029/tree/master/projects/ADuCM3029_demo_cn0415 | AduCM3029_demo_cn0415 at Github]] | <WRAP round 80% download> |
| Prebuilt CN0415 Hex File |
| * [[https://github.com/analogdevicesinc/EVAL-ADICUP3029/releases/download/Latest/ADuCM3029_demo_cn0415.hex| AduCM3029_demo_cn0415.Hex]] |
| Complete CN0415 Source Files |
| * [[https://github.com/analogdevicesinc/EVAL-ADICUP3029/tree/master/projects/ADuCM3029_demo_cn0415| AduCM3029_demo_cn0415 Source Code]] |
| |
</WRAP> | </WRAP> |