From ab11999ef2d766743d5204d80800c3e8d0000a71 Mon Sep 17 00:00:00 2001 From: jim Date: Wed, 1 Jul 2009 21:11:34 +0000 Subject: [PATCH] New scaling values etc. git-svn-id: https://bucket.mit.edu/svn/nilm/zoom@7591 ddd99763-3ecb-0310-9145-efcb8ce7c51f --- firmware/led.c | 2 +- firmware/scaling.c | 7 ++++--- firmware/zoom.c | 15 +++++++++++++-- firmware/zoom.mcw | Bin 41472 -> 41472 bytes 4 files changed, 18 insertions(+), 6 deletions(-) diff --git a/firmware/led.c b/firmware/led.c index 5468538..4ea1e0d 100644 --- a/firmware/led.c +++ b/firmware/led.c @@ -5,4 +5,4 @@ void led_init(void) { TRISBbits.TRISB13 = 0; PORTBbits.RB13 = 1; -} \ No newline at end of file +} diff --git a/firmware/scaling.c b/firmware/scaling.c index c397657..7510ae9 100644 --- a/firmware/scaling.c +++ b/firmware/scaling.c @@ -7,7 +7,7 @@ uint16_t current_to_dac(float amps) float tmp; uint16_t dacc; - tmp = 32768 * (1 + amps / 20); + tmp = 536.0 / 1.0 * amps + 32524; if (tmp < 0) tmp = 0; if (tmp > 65535) @@ -17,10 +17,11 @@ uint16_t current_to_dac(float amps) return dacc; } +/* Convert the DAC output value to an effective current in the measuring loop */ float dac_to_current(uint16_t dacv) { float amps; - amps = dacv * (20.0 / 32768.0) - 20.0; + amps = ((float)dacv - 32524.0) * 1.0 / 536.0; return amps; } @@ -33,6 +34,6 @@ float adc12_to_current(int16_t picv) if (picv > 2047) picv = 2047; - amps = (1024.0 - picv) / 3522.6; + amps = (picv - 1024.0) / 404.0; return amps; } diff --git a/firmware/zoom.c b/firmware/zoom.c index add3eb2..37b5672 100644 --- a/firmware/zoom.c +++ b/firmware/zoom.c @@ -55,8 +55,14 @@ void TISR_HANDLER(5) /* Convert ADC value to current */ i = adc12_to_current(v); +#if 0 /* Adjust DAC to null this current to 0 */ dac_current -= i; +#else + /* If this current exceeds +-1A, cancel it out at the DAC */ + if (i < -1.0 || i > 1.0) + dac_current -= i; +#endif if (dac_current < dac_current_min) dac_current = dac_current_min; @@ -85,12 +91,15 @@ void send_to_pc(uint16_t adc, uint16_t dac) void degauss(void) { + return; +#if 0 dac_write(65535); /* max */ msleep(25); dac_write(0); /* min */ msleep(25); dac_write(32768); /* middle */ msleep(25); +#endif } void run_debug(void) @@ -214,6 +223,8 @@ int main(void) led_init(); led_on(); + /* debug */ + TRISAbits.TRISA9 = 0; /* Detect jumper on B10/B11 */ //TRISCbits.TRISC13 = 1; //CNPU1bits.CN1PUE = 1; @@ -232,9 +243,9 @@ int main(void) /* If PGD is externally tied to ground, use MODE_1 (Short ICD pins 3 and 4) */ // if (PORTCbits.RC13 == 0) - MODE_1(); +// MODE_1(); // else -// MODE_2(); + MODE_2(); for (;;) continue; diff --git a/firmware/zoom.mcw b/firmware/zoom.mcw index fe7ca1c3c71d5ef1d2627b4c290dea327dfc7006..09254d60234281a0780450b0c63f06507ec83a42 100644 GIT binary patch literal 41472 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