ADC logging with demo drive board for calibration ADC read synchronised with heater on time
Dependencies: mbed MODSERIAL FastPWM ADS8568_ADC
Diff: main.cpp
- Revision:
- 26:323238949f9d
- Parent:
- 25:f507cfd50fcc
- Child:
- 27:505c1565c076
diff -r f507cfd50fcc -r 323238949f9d main.cpp --- a/main.cpp Wed Oct 09 17:36:51 2019 +0000 +++ b/main.cpp Thu Oct 10 13:03:16 2019 +0000 @@ -7,7 +7,7 @@ #define LOG_INTERVAL 1000 // log file interval (ms) #define START_DELAY 1000 // pause for startup (ms) #define N_STEPS 100 -#define N_READ 10 +#define N_READ 4 #define BUFFER_SIZE 4096 //UID lookup address and pointer @@ -72,30 +72,16 @@ pc.baud(115200); adc.init(); - // External LED off - led_ext = 0; // Initialsation - all heaters off drive_1 = 0; drive_2 = 0; guard_1 = 0; guard_2 = 0; -// drive_1.prescaler(1); -// drive_1.period_ticks(1000); -// drive_1.pulsewidth_ticks(0); - -// guard_1.prescaler(1); -// guard_1.period_ticks(1000); -// guard_1.pulsewidth_ticks(0); + + // External LED off + led_ext = 0; -// drive_2.prescaler(1); -// drive_2.period_ticks(1000); -// drive_2.pulsewidth_ticks(0); - -// guard_2.prescaler(1); -// guard_2.period_ticks(1000); -// guard_2.pulsewidth_ticks(0); - pc.printf("\r\nUnique ID: %08X %08X %08X \r\n", uid[0], uid[1], uid[2]); int i_board = -1; for (int i = 0; i < UID_TABLE_LENGTH; i++) @@ -110,34 +96,32 @@ 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"); + pc.printf("MEAS_DELAY: %d\n",MEAS_DELAY); + pc.printf("N_READ: %d\n",N_READ); + + pc.printf("iStep, eTime, I1, V1, R1_adc, R1_ohm, I2, V2, R2_adc, R2_ohm\n"); wait_ms(START_DELAY); timer.start(); - for (int iDelay = 1; iDelay < 3; iDelay++) { - for (int iStep=0; iStep<N_STEPS; iStep++) { eTime = timer.read_ms(); - pc.printf("%5d, %10d,", iDelay, eTime); for (int iHeater=0; iHeater <2; iHeater++) { // measure heater if (iHeater==0) { -// drive_1.pulsewidth_ticks(1000); drive_1 = 1; led_0 = 1; led_1 = 0; } else { -// drive_2.pulsewidth_ticks(1000); drive_2 = 1; led_0 = 0; led_1 = 1; } - wait_us(MEAS_DELAY*iDelay); + wait_us(MEAS_DELAY); //Average N_READ ADC cycles curr[iHeater] = 0; @@ -159,14 +143,12 @@ //Turn off heater if (iHeater==0) -// drive_1.pulsewidth_ticks(0); drive_1 = 0; else -// drive_2.pulsewidth_ticks(0); drive_2 = 0; - wait_us(MEAS_DELAY*iDelay); + wait_us(MEAS_DELAY); //Calculate resistance r_adc[iHeater] = (float)v[iHeater]/(float)curr[iHeater]; @@ -175,17 +157,11 @@ else r_ohm[iHeater] = 0.0; - - //Write output for iHeater - pc.printf("%10d, %10d, %10.6f, %10.6f,", curr[iHeater], v[iHeater], r_adc[iHeater], r_ohm[iHeater]); - - //Wait before drivinng other heater + //Wait before driving other heater wait_ms(LOG_INTERVAL/2); } - pc.printf("\n"); - } - + 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]); } // turn everything off