ADC logging with demo drive board for calibration
Dependencies: mbed MODSERIAL FastPWM ADS8568_ADC
Diff: main.cpp
- Revision:
- 29:ef9e567bed5b
- Parent:
- 27:5dcd526d7598
- Child:
- 30:ab214b681d9b
diff -r 5dcd526d7598 -r ef9e567bed5b main.cpp --- 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]); }