ADC logging for temperature calibration
Dependencies: mbed MODSERIAL FastPWM ADS8568_ADC
Diff: main.cpp
- Revision:
- 11:8e6c8e654004
- Parent:
- 10:a64434365090
- Child:
- 12:3f1df385d781
--- a/main.cpp Fri Jun 28 08:23:36 2019 +0000 +++ b/main.cpp Fri Jun 28 08:45:27 2019 +0000 @@ -7,6 +7,7 @@ #define MEAS_DELAY 1000 // measurement delay after turning on FET (us) (themocycling control programme uses 50 us) #define LOG_INTERVAL 5000 // log file interval (ms) +#define N_STEPS = 250 #define CAM_TRIG 20 // camera trigger pulse width (us) Serial pc(USBTX, USBRX); // tx, rx @@ -22,18 +23,22 @@ AnalogIn auxVolt(p20); BusOut convt(p11, p12, p13, p14); -SPI spi(p5, p6, p7); // mosi, miso, sclk -DigitalOut cs(p8); //chip select +SPI spi(p5, p6, p7); // mosi, miso, sclk +DigitalOut cs(p8); // chip select DigitalIn busy(p9); DigitalOut reset(p10); +DigitalIn userButton(p16); +Timer timer; +LocalFileSystem local("local"); +FILE *fp = fopen("/local/TEST_LOG.csv", "w"); // Open "test_log" on the local file system for writing + +char outString[100]; char buffer16[16]; int val_array[8]; const char dummy = 0; int drivetime_ms = 1; -char outString[100]; - int readChannels (char buffer[16], int values[8]){ //simultaneously samples and reads into buffer short int val_array[8]; @@ -59,7 +64,8 @@ int main() { - int n_samples = 20; + int eTime; + int iCycle; double r1; double r2; double r1_max = 0; @@ -103,10 +109,16 @@ yLED = 0; gLED = 1; - sprintf(outString, "I1SIG, IREF, V1POS, V1NEG, R1, I2SIG, IREF, V2POS, V2NEG, R2\r\n"); - pc.printf("%s", outString); + sprintf(outString, "iCycle, eTime, R1, R2 \n"); + //sprintf(outString, "I1SIG, IREF, V1POS, V1NEG, R1, I2SIG, IREF, V2POS, V2NEG, R2\r\n"); + //pc.printf("%s", outString); + fprintf(fp, outString); - for (int x=0; x<n_samples; x++) { + while ( x < N_STEPS ); + + eTime = timer.read_ms(); + iCycle = x; + // trigger measurement drive = 1; yLED = 1; @@ -131,21 +143,23 @@ r2_sum = r2_sum + r2; r2_sum2 = r2_sum2 + (r2*r2); - sprintf(outString, "%5d\t %5d\t %5d\t %5d\t %f %5d\t %5d\t %5d\t %5d\t %f\r\n", val_array[0], val_array[1], val_array[4], val_array[5], r1, val_array[2], val_array[1], val_array[6], val_array[7], r2); - pc.printf("%s", outString); + sprintf(outString, "%10d,%10d,%10f,%10f\n", iCycle, eTime, r1, r2); // log data + //sprintf(outString, "%5d\t %5d\t %5d\t %5d\t %f %5d\t %5d\t %5d\t %5d\t %f\r\n", val_array[0], val_array[1], val_array[4], val_array[5], r1, val_array[2], val_array[1], val_array[6], val_array[7], r2); + //pc.printf("%s", outString); + fprintf(fp, outString); wait_ms(LOG_INTERVAL); - + x++; } - r1_mean = r1_sum/n_samples; - r1_mean2 = r1_sum2/n_samples; - r1_sd = sqrt(r1_mean2-(r1_mean*r1_mean)); - r1_cv = r1_sd/r1_mean; + //r1_mean = r1_sum/n_samples; + //r1_mean2 = r1_sum2/n_samples; + //r1_sd = sqrt(r1_mean2-(r1_mean*r1_mean)); + //r1_cv = r1_sd/r1_mean; - r2_mean = r2_sum/n_samples; - r2_mean2 = r2_sum2/n_samples; - r2_sd = sqrt(r2_mean2-(r2_mean*r2_mean)); - r2_cv = r2_sd/r1_mean; + //r2_mean = r2_sum/n_samples; + //r2_mean2 = r2_sum2/n_samples; + //r2_sd = sqrt(r2_mean2-(r2_mean*r2_mean)); + //r2_cv = r2_sd/r1_mean; //pc.printf("Statistics:\r\n"); //pc.printf("n_samples : %d\r\n", n_samples); @@ -162,5 +176,6 @@ //.printf("r2_cv : %f\r\n", r2_cv); rLED = 0; + fclose(fp); }