Read analog value from MCP3201 and send it to serial channel. A vector with 255 pos.

Dependencies:   mbed

Committer:
skelter
Date:
Fri May 06 18:52:40 2016 +0000
Revision:
0:4d02779757de
Commit start

Who changed what in which revision?

UserRevisionLine numberNew contents of line
skelter 0:4d02779757de 1
skelter 0:4d02779757de 2 #include <math.h>
skelter 0:4d02779757de 3
skelter 0:4d02779757de 4 #define VOLTAGE_SCALE_FACTOR 3.3/4096
skelter 0:4d02779757de 5 #define CHANNEL_OFFSET 1.72*(4096/3.3)//2048
skelter 0:4d02779757de 6
skelter 0:4d02779757de 7
skelter 0:4d02779757de 8 DigitalOut flag(p9);
skelter 0:4d02779757de 9
skelter 0:4d02779757de 10 float get_voltage_rms(void)
skelter 0:4d02779757de 11 {
skelter 0:4d02779757de 12
skelter 0:4d02779757de 13 int sum=0;
skelter 0:4d02779757de 14 int voltage[VOLTAGE_SAMPLES];
skelter 0:4d02779757de 15
skelter 0:4d02779757de 16
skelter 0:4d02779757de 17 // loop takes 7.3ms
skelter 0:4d02779757de 18 // with wait_us(1) loop takes 7.65ms. diff = 0.35ms
skelter 0:4d02779757de 19 // with wait_us(2) loop takes 7.91ms. diff = 0,61ms
skelter 0:4d02779757de 20 // with wait_us(3) loop takes 8.15ms. diff = 0,85ms
skelter 0:4d02779757de 21 flag=1;
skelter 0:4d02779757de 22 for(int i=0;i<VOLTAGE_SAMPLES;i++)
skelter 0:4d02779757de 23 {
skelter 0:4d02779757de 24 voltage[i]=(float)ReadAnalogMCP3201() - CHANNEL_OFFSET;
skelter 0:4d02779757de 25 sum+=(voltage[i]*voltage[i]);
skelter 0:4d02779757de 26 wait_us(36);
skelter 0:4d02779757de 27 }
skelter 0:4d02779757de 28 flag=0;
skelter 0:4d02779757de 29
skelter 0:4d02779757de 30 //dump the AD samples to global variable "samples"
skelter 0:4d02779757de 31 for(int i=0;i<VOLTAGE_SAMPLES;i++) samples[i]=voltage[i];
skelter 0:4d02779757de 32
skelter 0:4d02779757de 33 //calculate RMS
skelter 0:4d02779757de 34 return (float)sqrt((double)(((float)sum / VOLTAGE_SAMPLES)))*VOLTAGE_SCALE_FACTOR;
skelter 0:4d02779757de 35
skelter 0:4d02779757de 36 }