ADC logging with demo drive board for calibration ADC read synchronised with heater on time

Dependencies:   mbed MODSERIAL FastPWM ADS8568_ADC

Revision:
21:4833e7fbcec7
Parent:
19:ab2d7aa17a20
Child:
22:aba3ee6df08e
--- a/main.cpp	Fri Sep 20 09:26:43 2019 +0000
+++ b/main.cpp	Fri Sep 20 10:38:53 2019 +0000
@@ -24,17 +24,16 @@
 
 unsigned long drive_board_uid[UID_TABLE_LENGTH][3] =
  {{0x005B0060, 0x32375101, 0x32363531},
-  {0x00000000, 0x00000000, 0x00000000},
-  {0x00000000, 0x00000000, 0x00000000},
-  {0x00000000, 0x00000000, 0x00000000}};
+  {0x0051003D, 0x32375114, 0x30333732},
+  {0x00520060, 0x32375101, 0x32363531},
+  {0x00570060, 0x32375101, 0x32363531}};
 
 float drive_board_cal[UID_TABLE_LENGTH][2][2] = 
- {{{0.0, 1.0}, {0.0, 1.0}},
-  {{0.0, 1.0}, {0.0, 1.0}},
-  {{0.0, 1.0}, {0.0, 1.0}},
-  {{0.0, 1.0}, {0.0, 1.0}}}; 
+ {{{0.096724353, 10.1817431}, {0.056098807, 10.19962849}},
+  {{0.059473025, 10.14814327}, {0.03200058, 10.25073923}},
+  {{0.01887149,  10.39360225}, {0.03115874, 10.28199855}},
+  {{0.052545339, 10.06008621}, {0.094239471, 10.11983777}}}; 
   
-
 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);
 I2C i2c(PB_7, PB_8);            //SDA, SCL
@@ -87,7 +86,7 @@
     guard_2.pulsewidth_ticks(0);
    
     pc.printf("\r\nUnique ID: %08X %08X %08X \r\n", uid[0], uid[1], uid[2]);   
-    int i_board = 0;  
+    int i_board = -1;  
     for (int i = 0; i < UID_TABLE_LENGTH; i++)
     {
       if (uid[0]==drive_board_uid[i][0] && uid[1]==drive_board_uid[i][1] && uid[2]==drive_board_uid[i][2])
@@ -97,7 +96,7 @@
         }
     }
     
-    if (i_board > 0) pc.printf("Drive board: BRD%d\n",i_board);
+    if (i_board != -1) pc.printf("Drive board: Board %d\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");
@@ -138,7 +137,7 @@
             curr[iHeater] = adc.read_channel_result(i_port[iHeater]);
             v[iHeater] = adc.read_channel_result(v_port[iHeater]);
             r_adc[iHeater] = (float)v[iHeater]/(float)curr[iHeater];
-            if (i_board > 0)
+            if (i_board != -1)
                 r_ohm[iHeater] = drive_board_cal[i_board][iHeater][0] + r_adc[iHeater]*drive_board_cal[i_board][iHeater][1];
             else
                 r_ohm[iHeater] = 0.0;