test AnalogIn_Diff.lib for board K64F

Dependencies:   AnalogIn_Diff_ok mbed

Committer:
fblanc
Date:
Wed Jul 16 14:39:09 2014 +0000
Revision:
3:f1ab02bc87f3
Parent:
2:bf4f474ff746
Child:
4:bcd2a4b5feaf
timer

Who changed what in which revision?

UserRevisionLine numberNew contents of line
fblanc 0:9eeda5b17b5b 1 #include "mbed.h"
fblanc 0:9eeda5b17b5b 2 #include "math.h"
fblanc 0:9eeda5b17b5b 3 #include "MovingAverage.h"
fblanc 3:f1ab02bc87f3 4 #define VERSION "15_07_2014"
fblanc 2:bf4f474ff746 5 #define CIBLE "K64F"
fblanc 0:9eeda5b17b5b 6 //USBSerial pc;
fblanc 1:c340607e4661 7 #define max(a,b) (a>=b?a:b)
fblanc 1:c340607e4661 8 #define min(a,b) (a<=b?a:b)
fblanc 3:f1ab02bc87f3 9 #define UAC_NON 230.0
fblanc 3:f1ab02bc87f3 10 #define UAC_MAX UAC_NON*1.1
fblanc 3:f1ab02bc87f3 11 #define UAC_MIN UAC_NON*0.9
fblanc 3:f1ab02bc87f3 12 #define UAC_NON2 UAC_NON*UAC_NON
fblanc 3:f1ab02bc87f3 13 #define UAC_MAX2 UAC_MAX*UAC_MAX
fblanc 3:f1ab02bc87f3 14 #define UAC_MIN2 UAC_MIN*UAC_MIN
fblanc 1:c340607e4661 15 struct {
fblanc 2:bf4f474ff746 16 float gain;
fblanc 2:bf4f474ff746 17 float offset;
fblanc 0:9eeda5b17b5b 18 //AnalogIn adc;
fblanc 1:c340607e4661 19 } adc_volt,adc_curr;
fblanc 3:f1ab02bc87f3 20 Timer timer_min;
fblanc 3:f1ab02bc87f3 21 bool F_timer_min=false;
fblanc 3:f1ab02bc87f3 22 Timer timer_max;
fblanc 3:f1ab02bc87f3 23 bool F_timer_max=false;
fblanc 0:9eeda5b17b5b 24 Serial pc(USBTX, USBRX);
fblanc 0:9eeda5b17b5b 25 AnalogIn adc_1(PTB2);
fblanc 0:9eeda5b17b5b 26 AnalogIn adc_2(PTB3);
fblanc 0:9eeda5b17b5b 27 Ticker flipperADC;
fblanc 0:9eeda5b17b5b 28 DigitalOut led1(LED_RED);
fblanc 0:9eeda5b17b5b 29 DigitalOut led2(LED_GREEN);
fblanc 0:9eeda5b17b5b 30 DigitalOut led3(LED_BLUE);
fblanc 3:f1ab02bc87f3 31 MovingAverage<float> Trms(20,UAC_NON);
fblanc 3:f1ab02bc87f3 32 MovingAverage<float> moy(20,0);
fblanc 1:c340607e4661 33 float min=250000;
fblanc 1:c340607e4661 34 float max=0;
fblanc 1:c340607e4661 35 bool min_OK=false;
fblanc 1:c340607e4661 36 void flipADC()
fblanc 1:c340607e4661 37 {
fblanc 1:c340607e4661 38 float val;
fblanc 0:9eeda5b17b5b 39 led1=1;
fblanc 0:9eeda5b17b5b 40 int val_i32=adc_2.read_u16()-adc_1.read_u16(); //read ADC
fblanc 0:9eeda5b17b5b 41
fblanc 2:bf4f474ff746 42 val=(float)val_i32*adc_volt.gain-adc_volt.offset;
fblanc 2:bf4f474ff746 43 moy.Insert(val);
fblanc 2:bf4f474ff746 44 Trms.Insert(val*val);
fblanc 2:bf4f474ff746 45 val=Trms.GetAverage();
fblanc 1:c340607e4661 46 max=max(val,max);
fblanc 1:c340607e4661 47 if(min_OK==true)
fblanc 1:c340607e4661 48 min=min(val,min);
fblanc 3:f1ab02bc87f3 49 if(val<UAC_MIN2 && F_timer_min ==false)
fblanc 3:f1ab02bc87f3 50 {
fblanc 3:f1ab02bc87f3 51 timer_min.reset();
fblanc 3:f1ab02bc87f3 52 timer_min.start();
fblanc 3:f1ab02bc87f3 53 F_timer_min = true;
fblanc 3:f1ab02bc87f3 54 }
fblanc 3:f1ab02bc87f3 55 if(val>UAC_MIN2 && F_timer_min ==true)
fblanc 3:f1ab02bc87f3 56 {
fblanc 3:f1ab02bc87f3 57 timer_min.stop();
fblanc 3:f1ab02bc87f3 58 F_timer_min = false;
fblanc 3:f1ab02bc87f3 59 }
fblanc 3:f1ab02bc87f3 60 if(val>UAC_MAX2 && F_timer_max ==false)
fblanc 3:f1ab02bc87f3 61 {
fblanc 3:f1ab02bc87f3 62 timer_max.reset();
fblanc 3:f1ab02bc87f3 63 timer_max.start();
fblanc 3:f1ab02bc87f3 64 F_timer_max = true;
fblanc 3:f1ab02bc87f3 65 }
fblanc 3:f1ab02bc87f3 66 if(val<UAC_MAX2 && F_timer_max ==true)
fblanc 3:f1ab02bc87f3 67 {
fblanc 3:f1ab02bc87f3 68 timer_max.stop();
fblanc 3:f1ab02bc87f3 69
fblanc 3:f1ab02bc87f3 70 F_timer_max = false;
fblanc 3:f1ab02bc87f3 71 }
fblanc 1:c340607e4661 72 led1=0;
fblanc 1:c340607e4661 73 }
fblanc 0:9eeda5b17b5b 74
fblanc 1:c340607e4661 75 int main()
fblanc 1:c340607e4661 76 {
fblanc 0:9eeda5b17b5b 77 led1=1;
fblanc 0:9eeda5b17b5b 78 led2=0;
fblanc 0:9eeda5b17b5b 79 led3=1;
fblanc 1:c340607e4661 80 pc.baud(115200);
fblanc 3:f1ab02bc87f3 81 pc.printf("LAAS-CNRS ,TRMS ,%s ,%s\r",CIBLE,VERSION);
fblanc 2:bf4f474ff746 82 adc_volt.gain=(1960.0*3.3)/65535.0;
fblanc 2:bf4f474ff746 83 adc_volt.offset=-17.0;
fblanc 1:c340607e4661 84
fblanc 3:f1ab02bc87f3 85 flipperADC.attach_us(&flipADC, 1000); //200µs
fblanc 2:bf4f474ff746 86 wait (5);
fblanc 1:c340607e4661 87 min_OK=true;
fblanc 0:9eeda5b17b5b 88 while (true) {
fblanc 1:c340607e4661 89
fblanc 0:9eeda5b17b5b 90
fblanc 0:9eeda5b17b5b 91 led3=1;
fblanc 0:9eeda5b17b5b 92
fblanc 2:bf4f474ff746 93 pc.printf("RMS=%f \r\n",sqrt(Trms.GetAverage()));
fblanc 3:f1ab02bc87f3 94 pc.printf("min=%0.0f t=%f max=%0.0f t=%f\r\n",sqrt(min),timer_min.read(),sqrt(max),timer_max.read());
fblanc 2:bf4f474ff746 95 pc.printf("moy=%f \r\n",moy.GetAverage());
fblanc 0:9eeda5b17b5b 96 led3=0;
fblanc 1:c340607e4661 97 wait (1);
fblanc 0:9eeda5b17b5b 98 }
fblanc 0:9eeda5b17b5b 99 }