Treehouse Mbed Team / Mbed 2 deprecated APS_DCM1SL

Dependencies:   mbed

Committer:
mfwic
Date:
Thu Dec 06 16:22:11 2018 +0000
Revision:
8:d3d7dca419b3
Parent:
7:860b3a8275cb
Child:
9:816b9a4e4f21
Added CAL and UNCAL commands.; Added correction factors for voltage and current inputs.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mfwic 1:9f8583ba2431 1 //-------------------------------------------------------------------------------
mfwic 1:9f8583ba2431 2 //
mfwic 1:9f8583ba2431 3 // Treehouse Inc.
mfwic 1:9f8583ba2431 4 // Colorado Springs, Colorado
mfwic 1:9f8583ba2431 5 //
mfwic 1:9f8583ba2431 6 // Copyright (c) 2016 by Treehouse Designs Inc.
mfwic 1:9f8583ba2431 7 //
mfwic 1:9f8583ba2431 8 // This code is the property of Treehouse, Inc. (Treehouse) and may not be redistributed
mfwic 1:9f8583ba2431 9 // in any form without prior written permission from the copyright holder, Treehouse.
mfwic 1:9f8583ba2431 10 //
mfwic 1:9f8583ba2431 11 // The above copyright notice and this permission notice shall be included in
mfwic 1:9f8583ba2431 12 // all copies or substantial portions of the Software.
mfwic 1:9f8583ba2431 13 //
mfwic 1:9f8583ba2431 14 //-------------------------------------------------------------------------------
mfwic 1:9f8583ba2431 15 //
mfwic 1:9f8583ba2431 16 // REVISION HISTORY:
mfwic 1:9f8583ba2431 17 //
mfwic 1:9f8583ba2431 18 // $Author: $
mfwic 1:9f8583ba2431 19 // $Rev: $
mfwic 1:9f8583ba2431 20 // $Date: $
mfwic 1:9f8583ba2431 21 // $URL: $
mfwic 1:9f8583ba2431 22 //
mfwic 1:9f8583ba2431 23 //-------------------------------------------------------------------------------
mfwic 1:9f8583ba2431 24
mfwic 1:9f8583ba2431 25 #include "mbed.h"
mfwic 6:39442d493098 26 #include "globals.h"
mfwic 1:9f8583ba2431 27 #include "serial.h"
mfwic 1:9f8583ba2431 28 #include "menu.h"
mfwic 6:39442d493098 29 #include "Ticker.h"
mfwic 1:9f8583ba2431 30
mfwic 6:39442d493098 31 Ticker drt;
mfwic 7:860b3a8275cb 32 unsigned int oldTime=0;
mfwic 6:39442d493098 33
mfwic 6:39442d493098 34 /*******************************************************************************
mfwic 6:39442d493098 35 drtInt - Display Refresh Timer interrupt handler
mfwic 6:39442d493098 36 *******************************************************************************/
mfwic 6:39442d493098 37 // real time clock interrupt to flash the LED
mfwic 6:39442d493098 38 void drtInt(void)
mfwic 6:39442d493098 39 {
mfwic 6:39442d493098 40 updateReady = TRUE;
mfwic 6:39442d493098 41 }
mfwic 6:39442d493098 42
mfwic 6:39442d493098 43 /*******************************************************************************
mfwic 6:39442d493098 44 initDRT - Create Display Refresh Timer interrupt
mfwic 6:39442d493098 45 *******************************************************************************/
mfwic 6:39442d493098 46 // initialize display refresh timer (DRT)
mfwic 6:39442d493098 47 void initDRT(void)
mfwic 6:39442d493098 48 {
mfwic 6:39442d493098 49 drt.attach_us(&drtInt, UPDATE_REFRESH_DELAY_US);
mfwic 6:39442d493098 50 }
mfwic 6:39442d493098 51
mfwic 6:39442d493098 52 /*******************************************************************************
mfwic 6:39442d493098 53 refreshData - Refresh voltage and current readings to the terminal
mfwic 6:39442d493098 54 *******************************************************************************/
mfwic 6:39442d493098 55 void refreshData(void){
mfwic 8:d3d7dca419b3 56 //loopTime = masterTimer.read_ms() - oldTime;
mfwic 8:d3d7dca419b3 57 //oldTime = masterTimer.read_ms();
mfwic 8:d3d7dca419b3 58
mfwic 8:d3d7dca419b3 59 double v48f = 0.0;
mfwic 8:d3d7dca419b3 60 double v24f = 0.0;
mfwic 8:d3d7dca419b3 61 double v12f = 0.0;
mfwic 8:d3d7dca419b3 62 double i48f = 0.0;
mfwic 8:d3d7dca419b3 63 double i24f = 0.0;
mfwic 8:d3d7dca419b3 64 double i12f = 0.0;
mfwic 7:860b3a8275cb 65
mfwic 8:d3d7dca419b3 66 if(!raw){
mfwic 8:d3d7dca419b3 67 v48f = VOLTAGE_48_FACTOR*v48;
mfwic 8:d3d7dca419b3 68 v24f = VOLTAGE_24_FACTOR*v24;
mfwic 8:d3d7dca419b3 69 v12f = VOLTAGE_12_FACTOR*v12;
mfwic 8:d3d7dca419b3 70 i48f = (i48-CURRENT_48_OFFSET)/CURRENT_48_DIV_FACTOR;
mfwic 8:d3d7dca419b3 71 i24f = (i24-CURRENT_24_OFFSET)/CURRENT_24_DIV_FACTOR;
mfwic 8:d3d7dca419b3 72 i12f = (i12-CURRENT_12_OFFSET)/CURRENT_12_DIV_FACTOR;
mfwic 8:d3d7dca419b3 73 }else{
mfwic 8:d3d7dca419b3 74 v48f = 1.0*v48;
mfwic 8:d3d7dca419b3 75 v24f = 1.0*v24;
mfwic 8:d3d7dca419b3 76 v12f = 1.0*v12;
mfwic 8:d3d7dca419b3 77 i48f = 1.0*i48;
mfwic 8:d3d7dca419b3 78 i24f = 1.0*i24;
mfwic 8:d3d7dca419b3 79 i12f = 1.0*i12;
mfwic 8:d3d7dca419b3 80 }
mfwic 7:860b3a8275cb 81 double pwr_out=v12f*i12f;
mfwic 8:d3d7dca419b3 82 double pwr_in=v48f*(i48f-CURRENT_CONTROL_OFFSET);
mfwic 7:860b3a8275cb 83 double pwr_eff=100*pwr_out/pwr_in;
mfwic 7:860b3a8275cb 84
mfwic 8:d3d7dca419b3 85 sprintf(strbuf, "V48=%2.1f, I48=%3.1f | V24=%2.1f, I24=%3.1f | V12=%2.1f, I12=%3.1f \r\n", v48f, i48f, v24f, i24f, v12f, i12f);
mfwic 8:d3d7dca419b3 86 //sprintf(strbuf, "V48=%2.1f, I48=%2.2f | V24=%2.1f, I24=%2.2f | V12=%2.1f, I12=%2.2f || loop=%d \r\n", v48f, i48f, v24f, i24f, v12f, i12f, loopTime);
mfwic 7:860b3a8275cb 87 sendSerial(strbuf);
mfwic 8:d3d7dca419b3 88 sprintf(strbuf, "Power Out = %4.1f W, Power In = %4.1f W \r\n", pwr_out, pwr_in);
mfwic 7:860b3a8275cb 89 sendSerial(strbuf);
mfwic 7:860b3a8275cb 90 sprintf( strbuf, "%c[34m", 27 ); // ESC=27, Blue Text
mfwic 7:860b3a8275cb 91 sendSerial(strbuf);
mfwic 8:d3d7dca419b3 92 sprintf(strbuf, "Power Efficiency = %2.2f percent \r\n\r\n", pwr_eff);
mfwic 7:860b3a8275cb 93 sendSerial(strbuf);
mfwic 7:860b3a8275cb 94 sprintf( strbuf, "%c[30m", 27 ); // ESC=27, White Text
mfwic 6:39442d493098 95 sendSerial(strbuf);
mfwic 6:39442d493098 96 //sprintf(strbuf, "thermCode=%d, binCode=%d", thermCode[17], binCode[6]);
mfwic 8:d3d7dca419b3 97 sprintf(strbuf, "wr_out_code=%d, en_out_code=%d ", wr_out_code, en_out_code);
mfwic 6:39442d493098 98 sendSerial(strbuf);
mfwic 6:39442d493098 99 }
mfwic 6:39442d493098 100
mfwic 6:39442d493098 101 /*******************************************************************************
mfwic 6:39442d493098 102 updateTerminal - Save cursor, write data, restore cursor.
mfwic 6:39442d493098 103 *******************************************************************************/
mfwic 6:39442d493098 104 void updateTerminal(void){
mfwic 6:39442d493098 105 //get cursor pos, store in CUR_POS
mfwic 6:39442d493098 106 sprintf( strbuf, "%c7", 27 ); // ESC=27, Save cursor position = [s
mfwic 6:39442d493098 107 sendSerial(strbuf);
mfwic 6:39442d493098 108 //move cursor to DATA_ROW
mfwic 8:d3d7dca419b3 109 sprintf( strbuf, "%c[3;0f", 27 ); // ESC=27, Move cursor position = [line;columnf
mfwic 6:39442d493098 110 sendSerial(strbuf);
mfwic 6:39442d493098 111 //write data
mfwic 6:39442d493098 112 refreshData();
mfwic 6:39442d493098 113 //move cursor to CUR_POS
mfwic 6:39442d493098 114 sprintf( strbuf, "%c8", 27 ); // ESC=27, Save cursor position = [s
mfwic 6:39442d493098 115 sendSerial(strbuf);
mfwic 6:39442d493098 116 }
mfwic 6:39442d493098 117
mfwic 6:39442d493098 118 /*******************************************************************************
mfwic 6:39442d493098 119 clrScrn - clears terminal and moves cursor to upper-left corner
mfwic 6:39442d493098 120 *******************************************************************************/
mfwic 1:9f8583ba2431 121 // clears terminal
mfwic 1:9f8583ba2431 122 void clrScrn(void){
mfwic 1:9f8583ba2431 123 sprintf( strbuf, "%c[2J", 27 ); // ESC=27, Clear screen = [2J
mfwic 1:9f8583ba2431 124 sendSerial(strbuf);
mfwic 1:9f8583ba2431 125 sprintf( strbuf, "%c[f", 27 ); // ESC=27, Move cursor to upper-left corner = [f
mfwic 1:9f8583ba2431 126 sendSerial(strbuf);
mfwic 1:9f8583ba2431 127 }
mfwic 1:9f8583ba2431 128
mfwic 6:39442d493098 129 /*******************************************************************************
mfwic 6:39442d493098 130 menuRedraw - Write menu to terminal
mfwic 6:39442d493098 131 *******************************************************************************/
mfwic 1:9f8583ba2431 132 // clears terminal and re-draws main menu
mfwic 8:d3d7dca419b3 133 void menuRedraw(bool prompt){
mfwic 1:9f8583ba2431 134 clrScrn();
mfwic 7:860b3a8275cb 135
mfwic 7:860b3a8275cb 136 sprintf( strbuf, "%c[34m", 27 ); // ESC=27, Blue Text
mfwic 7:860b3a8275cb 137 sendSerial(strbuf);
mfwic 7:860b3a8275cb 138
mfwic 8:d3d7dca419b3 139 sprintf(strbuf, " Agility Power Systems DCM1 0.4\r\n\r\n");
mfwic 7:860b3a8275cb 140 sendSerial(strbuf);
mfwic 7:860b3a8275cb 141
mfwic 7:860b3a8275cb 142 sprintf( strbuf, "%c[0m", 27 ); // ESC=27, Normal
mfwic 7:860b3a8275cb 143 sendSerial(strbuf);
mfwic 7:860b3a8275cb 144 sprintf( strbuf, "%c[30m", 27 ); // ESC=27, White Text
mfwic 1:9f8583ba2431 145 sendSerial(strbuf);
mfwic 6:39442d493098 146
mfwic 6:39442d493098 147 refreshData();
mfwic 6:39442d493098 148
mfwic 8:d3d7dca419b3 149 sprintf(strbuf, "\r\n MULT");
mfwic 1:9f8583ba2431 150 sendSerial(strbuf);
mfwic 8:d3d7dca419b3 151 sprintf(strbuf, "\r\n BRDS");
mfwic 1:9f8583ba2431 152 sendSerial(strbuf);
mfwic 8:d3d7dca419b3 153 sprintf(strbuf, "\r\n ALLOFF");
mfwic 1:9f8583ba2431 154 sendSerial(strbuf);
mfwic 8:d3d7dca419b3 155 sprintf(strbuf, "\r\n RUN [xx]");
mfwic 1:9f8583ba2431 156 sendSerial(strbuf);
mfwic 8:d3d7dca419b3 157 sprintf(strbuf, "\r\n STOP");
mfwic 1:9f8583ba2431 158 sendSerial(strbuf);
mfwic 3:d8948c5b2951 159
mfwic 8:d3d7dca419b3 160 if(prompt){
mfwic 8:d3d7dca419b3 161 menuPrompt(MENU_DCM1);
mfwic 8:d3d7dca419b3 162 }
mfwic 3:d8948c5b2951 163 }
mfwic 3:d8948c5b2951 164
mfwic 6:39442d493098 165 /*******************************************************************************
mfwic 6:39442d493098 166 menuPrompt - Write menu prompt to terminal
mfwic 6:39442d493098 167 *******************************************************************************/
mfwic 3:d8948c5b2951 168 // sends carriage return and linefeed and prompt character
mfwic 3:d8948c5b2951 169 void menuPrompt(int menuType)
mfwic 3:d8948c5b2951 170 {
mfwic 3:d8948c5b2951 171 char strMenu[30] ={0};
mfwic 3:d8948c5b2951 172
mfwic 3:d8948c5b2951 173 switch(menuType)
mfwic 3:d8948c5b2951 174 {
mfwic 3:d8948c5b2951 175 case MENU_DCM1: strcpy(strMenu,"DCM1"); break;
mfwic 3:d8948c5b2951 176 //case MENU_DIFFERENTIAL: strcpy(strMenu,"DIFF"); break;
mfwic 3:d8948c5b2951 177 //case MENU_SINGLE: strcpy(strMenu,"SINGLE"); break;
mfwic 3:d8948c5b2951 178 //case MENU_DUAL: strcpy(strMenu,"DUAL"); break;
mfwic 3:d8948c5b2951 179 //case MENU_INVERT: strcpy(strMenu,"INVERT"); break;
mfwic 3:d8948c5b2951 180 //case MENU_SETTINGS: strcpy(strMenu,"SET"); break;
mfwic 3:d8948c5b2951 181 //case MENU_SETTINGS_CHAN1: strcpy(strMenu,"SET CHAN1"); break;
mfwic 3:d8948c5b2951 182 //case MENU_SETTINGS_CHAN2: strcpy(strMenu,"SET CHAN2"); break;
mfwic 3:d8948c5b2951 183 //case MENU_SETTINGS_CLOCK: strcpy(strMenu,"SET CLOCK"); break;
mfwic 3:d8948c5b2951 184 case MENU_CALIBRATE: strcpy(strMenu,"CAL"); break;
mfwic 3:d8948c5b2951 185 case MENU_TEST: strcpy(strMenu,"TEST"); break;
mfwic 3:d8948c5b2951 186 case MENU_MAIN: strcpy(strMenu,"MAIN"); break;
mfwic 3:d8948c5b2951 187 default: strcpy(strMenu,"UNDF"); break;
mfwic 3:d8948c5b2951 188 }
mfwic 3:d8948c5b2951 189
mfwic 3:d8948c5b2951 190 // append the CR,LF and the ready character
mfwic 3:d8948c5b2951 191 if(serialStatus.computer)
mfwic 3:d8948c5b2951 192 {
mfwic 3:d8948c5b2951 193 sendSerial("\r");
mfwic 3:d8948c5b2951 194 }
mfwic 3:d8948c5b2951 195 else
mfwic 3:d8948c5b2951 196 {
mfwic 3:d8948c5b2951 197 // adds a carrot so you know you are talking in terminal
mfwic 3:d8948c5b2951 198 sprintf(strbuf,"\n\r%s>",strMenu);
mfwic 3:d8948c5b2951 199 sendSerial(strbuf);
mfwic 3:d8948c5b2951 200 // sendSerial("\n\r>");
mfwic 3:d8948c5b2951 201 }
mfwic 8:d3d7dca419b3 202 }
mfwic 8:d3d7dca419b3 203
mfwic 8:d3d7dca419b3 204 void splash_screen(void)
mfwic 8:d3d7dca419b3 205 {
mfwic 8:d3d7dca419b3 206 clrScrn();
mfwic 8:d3d7dca419b3 207 sprintf(strbuf," ___ _ ___ __ ____ _____ __ \r\n");sendSerial(strbuf);
mfwic 8:d3d7dca419b3 208 sprintf(strbuf," / | ____ _(_) (_) /___ __ / __ \\____ _ _____ _____ / ___/__ _______/ /____ ____ ___ _____\r\n");sendSerial(strbuf);
mfwic 8:d3d7dca419b3 209 sprintf(strbuf," / /| |/ __ `/ / / / __/ / / / / /_/ / __ \\ | /| / / _ \\/ ___/ \\__ \\/ / / / ___/ __/ _ \\/ __ `__ \\/ ___/\r\n");sendSerial(strbuf);
mfwic 8:d3d7dca419b3 210 sprintf(strbuf," / ___ / /_/ / / / / /_/ /_/ / / ____/ /_/ / |/ |/ / __/ / ___/ / /_/ (__ ) /_/ __/ / / / / (__ ) \r\n");sendSerial(strbuf);
mfwic 8:d3d7dca419b3 211 sprintf(strbuf,"/_/ |_\\__, /_/_/_/\\__/\\__, / /_/ \\____/|__/|__/\\___/_/ /____/\\__, /____/\\__/\\___/_/ /_/ /_/____/ \r\n");sendSerial(strbuf);
mfwic 8:d3d7dca419b3 212 sprintf(strbuf," /____/ /____/ /____/ \r\n");sendSerial(strbuf);
mfwic 8:d3d7dca419b3 213 }
mfwic 8:d3d7dca419b3 214 /*
mfwic 8:d3d7dca419b3 215 sprintf(strbuf," ___ _ ___ __ ____ _____ __ \r\n");
mfwic 8:d3d7dca419b3 216 sprintf(strbuf," / | ____ _(_) (_) /___ __ / __ \____ _ _____ _____ / ___/__ _______/ /____ ____ ___ _____\r\n");
mfwic 8:d3d7dca419b3 217 sprintf(strbuf," / /| |/ __ `/ / / / __/ / / / / /_/ / __ \ | /| / / _ \/ ___/ \__ \/ / / / ___/ __/ _ \/ __ `__ \/ ___/\r\n");
mfwic 8:d3d7dca419b3 218 sprintf(strbuf," / ___ / /_/ / / / / /_/ /_/ / / ____/ /_/ / |/ |/ / __/ / ___/ / /_/ (__ ) /_/ __/ / / / / (__ ) \r\n");
mfwic 8:d3d7dca419b3 219 sprintf(strbuf,"/_/ |_\__, /_/_/_/\__/\__, / /_/ \____/|__/|__/\___/_/ /____/\__, /____/\__/\___/_/ /_/ /_/____/ \r\n");
mfwic 8:d3d7dca419b3 220 sprintf(strbuf," /____/ /____/ /____/ \r\n");
mfwic 8:d3d7dca419b3 221 */