ADC MEASUREMENT USING MBED & STM NUCLEO This program is about ADC MEASUREMENT,SMOOTHING THE ADC VALUE I used INA225 TEXAS INSTRUMENT BOARD FOR MEASURING LOW mA range DC current using ADC features of board. Created by : Jaydeep Shah -- radhey04ec@gmail.com
main.cpp@0:1bf58c6ad114, 2020-07-17 (annotated)
- Committer:
- radhey04ec
- Date:
- Fri Jul 17 10:37:19 2020 +0000
- Revision:
- 0:1bf58c6ad114
FINAL COMMIT : ADC CURRENT MEASUREMENT
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
radhey04ec | 0:1bf58c6ad114 | 1 | /* ADC TUTORIAL BASIC PART-1 |
radhey04ec | 0:1bf58c6ad114 | 2 | NOTE : CLASS --> AnalogIn |
radhey04ec | 0:1bf58c6ad114 | 3 | Object return value between 0 to 1 |
radhey04ec | 0:1bf58c6ad114 | 4 | If 5 V system and you try to read 2.5 V from ADC PIN than OP = 0.5 |
radhey04ec | 0:1bf58c6ad114 | 5 | PLEASE NOTE : MBED USE 3.3 Vref |
radhey04ec | 0:1bf58c6ad114 | 6 | */ |
radhey04ec | 0:1bf58c6ad114 | 7 | |
radhey04ec | 0:1bf58c6ad114 | 8 | //PROGRAM_CREATED BY : -- radhey04ec@gmail.com |
radhey04ec | 0:1bf58c6ad114 | 9 | //Hardware : STM32-NUCLEO-64 |
radhey04ec | 0:1bf58c6ad114 | 10 | //MBED : OS PLATFORM |
radhey04ec | 0:1bf58c6ad114 | 11 | |
radhey04ec | 0:1bf58c6ad114 | 12 | |
radhey04ec | 0:1bf58c6ad114 | 13 | //This program is dedicated to |
radhey04ec | 0:1bf58c6ad114 | 14 | // INA-225 TEXAS INSTRUMENT BOARDS TO AMPLIFY LOW VOLTAGE SIGNAL WITH GAIN 200 |
radhey04ec | 0:1bf58c6ad114 | 15 | //SHUNT RESISTOR = 0.6 Ohm |
radhey04ec | 0:1bf58c6ad114 | 16 | //Vref : 3.3 |
radhey04ec | 0:1bf58c6ad114 | 17 | // I (current) = ((((ADC O/P - Offset)) * 3.3) *200 ) / 0.6) * 1000 mA |
radhey04ec | 0:1bf58c6ad114 | 18 | |
radhey04ec | 0:1bf58c6ad114 | 19 | |
radhey04ec | 0:1bf58c6ad114 | 20 | #include "mbed.h" |
radhey04ec | 0:1bf58c6ad114 | 21 | |
radhey04ec | 0:1bf58c6ad114 | 22 | AnalogIn ANG(PC_3); //Port pin PC_3 last pin for ADC -- Create object |
radhey04ec | 0:1bf58c6ad114 | 23 | |
radhey04ec | 0:1bf58c6ad114 | 24 | int main() |
radhey04ec | 0:1bf58c6ad114 | 25 | { |
radhey04ec | 0:1bf58c6ad114 | 26 | float AARAY[10],SUM=0; |
radhey04ec | 0:1bf58c6ad114 | 27 | |
radhey04ec | 0:1bf58c6ad114 | 28 | while(1) |
radhey04ec | 0:1bf58c6ad114 | 29 | { |
radhey04ec | 0:1bf58c6ad114 | 30 | for(int i =0;i <10 ; i++) //Array to make result smoother |
radhey04ec | 0:1bf58c6ad114 | 31 | { |
radhey04ec | 0:1bf58c6ad114 | 32 | AARAY[i] = ANG.read(); //Read the data |
radhey04ec | 0:1bf58c6ad114 | 33 | ThisThread::sleep_for(20); //Thread sleep for make ADC ready for next result |
radhey04ec | 0:1bf58c6ad114 | 34 | SUM = SUM + AARAY[i]; //Store result |
radhey04ec | 0:1bf58c6ad114 | 35 | } |
radhey04ec | 0:1bf58c6ad114 | 36 | float value = (SUM /10); //Finding Average value |
radhey04ec | 0:1bf58c6ad114 | 37 | |
radhey04ec | 0:1bf58c6ad114 | 38 | float current = (((((((value)) * 3.3)-0.28)/200)/0.6)*1000); //Finding current |
radhey04ec | 0:1bf58c6ad114 | 39 | |
radhey04ec | 0:1bf58c6ad114 | 40 | printf("\n Current (mA) = %f",current); //Print data on Serial console -- I used CoolTerm |
radhey04ec | 0:1bf58c6ad114 | 41 | |
radhey04ec | 0:1bf58c6ad114 | 42 | ThisThread::sleep_for(250); //Thread sleep |
radhey04ec | 0:1bf58c6ad114 | 43 | |
radhey04ec | 0:1bf58c6ad114 | 44 | SUM = 0; //At the end sum must be zero |
radhey04ec | 0:1bf58c6ad114 | 45 | } |
radhey04ec | 0:1bf58c6ad114 | 46 | } |