#include #include #include #define NDATA 100000 int main( ) { FILE *fp; double r1, r2, ra, rb, vout_full, vout_dark, vref, voff, vadc_full, vadc_dark, ocm ; double a, ap, app, b, bp, bpp ; int i ; r1 = 1.0 ; r2 = 0.3 ; ra = 1.0 ; rb = 6.4 ; vout_dark = 2.6 ; vout_full = 2.2 ; vref = 2.0 ; ocm = 1.5 ; printf("########################################\n"); printf("R1 = %.3lf; R2 = %.3lf; Ra = %.3lf; Rb = %.3lf \n", r1, r2, ra, rb); printf("Vout_full = %.3lf; Vout_dark= %.3lf; Vref = %.3lf \n", vout_full, vout_dark, vref); printf("OCM = %.3lf \n", ocm) ; printf("########################################\n"); voff = (1+r2/r1)*(vout_full + vout_dark - 2*vref) / (2*r2/r1) ; vadc_dark = rb/ra * ((1+r2/r1)*(vout_dark - vref) - r2/r1*voff) ; vadc_full = rb/ra * ((1+r2/r1)*(vout_full - vref) - r2/r1*voff) ; printf("Voff = %.3lf \n", voff); printf("########################################\n"); ap = (1+r2/r1) * vout_dark - r2/r1 * voff ; bp = (1+r2/r1) * vref ; app = -0.5 * rb/ra * ((1+r2/r1)*(vout_dark - vref) - r2/r1*voff) + ocm ; bpp = 0.5 * rb/ra * ((1+r2/r1)*(vout_dark - vref) - r2/r1*voff) + ocm ; printf("A' = %5.3lf; B' = %5.3lf; A'' = %5.3lf; B'' = %5.3lf; Vadc(dark) = %.3lf; \n", ap, bp, app, bpp, vadc_dark); ap = (1+r2/r1) * vout_full - r2/r1 * voff ; bp = (1+r2/r1) * vref ; app = -0.5 * rb/ra * ((1+r2/r1)*(vout_full - vref) - r2/r1*voff) + ocm ; bpp = 0.5 * rb/ra * ((1+r2/r1)*(vout_full - vref) - r2/r1*voff) + ocm ; printf("A' = %5.3lf; B' = %5.3lf; A'' = %5.3lf; B'' = %5.3lf; Vadc(full) = %.3lf; \n", ap, bp, app, bpp, vadc_full); printf("########################################\n"); }