Read analog value from MCP3201 and send it to serial channel. A vector with 255 pos.
Dependencies: mbed
VoltageRead.h@0:4d02779757de, 2016-05-06 (annotated)
- Committer:
- skelter
- Date:
- Fri May 06 18:52:40 2016 +0000
- Revision:
- 0:4d02779757de
Commit start
Who changed what in which revision?
User | Revision | Line number | New 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 | } |