test AnalogIn_Diff.lib for board K64F

Dependencies:   AnalogIn_Diff_ok mbed

Committer:
fblanc
Date:
Tue Jul 22 15:02:09 2014 +0000
Revision:
4:bcd2a4b5feaf
Parent:
3:f1ab02bc87f3
Child:
5:f994e394a7ec
AnalogIn_Diff

Who changed what in which revision?

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