ADC logging with demo drive board for calibration

Dependencies:   mbed MODSERIAL FastPWM ADS8568_ADC

Revision:
29:ef9e567bed5b
Parent:
27:5dcd526d7598
Child:
30:ab214b681d9b
--- a/main.cpp	Fri Oct 11 14:06:30 2019 +0000
+++ b/main.cpp	Tue Mar 17 14:59:03 2020 +0000
@@ -4,8 +4,8 @@
 #include "MODSERIAL.h"
 
 #define MEAS_DELAY       60  // measurement delay after turning on FET (us)
-#define LOG_INTERVAL   1000  // log file interval (ms)
-#define START_DELAY    1000  // pause for startup (ms)
+#define LOG_INTERVAL    200  // log file interval (ms)
+#define START_DELAY     100  // pause for startup (ms)
 #define N_STEPS         100
 #define BUFFER_SIZE    4096
 
@@ -24,15 +24,15 @@
 
 unsigned long drive_board_uid[UID_TABLE_LENGTH][3] =
  {{0x005B0060, 0x32375101, 0x32363531},
-  {0x0051003D, 0x32375114, 0x30333732},
+  {0x00530028, 0x32375116, 0x30333732},
   {0x00520060, 0x32375101, 0x32363531},
   {0x00570060, 0x32375101, 0x32363531}};
 
 float drive_board_cal[UID_TABLE_LENGTH][2][2] = 
- {{{0.0908347476278717, 10.1921343711427}, {0.0497613470164513, 10.2109327517567}},
-  {{0.0596907336847412, 10.1550084867437}, {0.0320376283698263, 10.2580153464834}},
-  {{0.0119648730956925, 10.4065902688349}, {0.0256785142683800, 10.2921134395920}},
-  {{0.0482969653247984, 10.0688110602909}, {0.0882102280729402, 10.1322703041679}}};
+ {{{0.098846, 10.190057},  {0.060713, 10.208784}},
+  {{0.060987, 10.154840},  {0.033058, 10.239591}},
+  {{0.014312, 10.405662},  {0.000000, 1.0000000}},
+  {{0.055152, 10.062970},  {0.114355, 10.123188}}};
   
 MODSERIAL pc(PA_9, PA_10, BUFFER_SIZE); //mcu TX, RX, BUFFER_SIZE byte TX and RX buffers
 ADS8568_ADC adc(PB_15, PB_14, PB_13, PB_12, PC_15, PC_0, PC_1, PC_2, PC_3);
@@ -96,10 +96,10 @@
         }
     }
     
-    if (i_board != -1) pc.printf("Drive board: Board %d   ADC measurement: PWM heater pulse, 60us delay\n",drive_board_serial_number[i_board]);
+    if (i_board != -1) pc.printf("Drive board: %d   ADC measurement: PWM heater pulse. 60us delay\n",drive_board_serial_number[i_board]);
     else pc.printf("Drive board UID match not found\n");
 
-    pc.printf("iStep,      eTime,        I1,         V1,     R1_adc,     R1_ohm,       I2,         V2,     R2_adc,     R2_ohm\n");
+    pc.printf("eTime,        I1,         V1,     R1_adc,     R1_ohm,       I2,         V2,     R2_adc,     R2_ohm\n");
     
     wait_ms(START_DELAY);
     timer.start();
@@ -108,8 +108,8 @@
     led_0 = 0;
     led_1 = 1;
     
-    for (int iStep=0; iStep<N_STEPS; iStep++) {
-
+    while(!user_1) {
+        while (pc.getcNb()!='p' && !user_0);
         eTime = timer.read_ms();
     
         for (int iHeater=0; iHeater <2; iHeater++) {
@@ -148,10 +148,11 @@
                 
             //Wait before drivinng other heater
             wait_ms(LOG_INTERVAL/2);
+            wait_us(MEAS_DELAY);
 
         }
         //Write output for iHeater
-        pc.printf("%5d, %10d, %10d, %10d, %10.6f, %10.6f, %10d, %10d, %10.6f, %10.6f \n", iStep, eTime, curr[0], v[0], r_adc[0], r_ohm[0], curr[1], v[1], r_adc[1], r_ohm[1]);
+        pc.printf("%10d, %10d, %10.6f, %10.6f, %10d, %10d, %10.6f, %10.6f \n", curr[0], v[0], r_adc[0], r_ohm[0], curr[1], v[1], r_adc[1], r_ohm[1]);
         
     }