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

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?

UserRevisionLine numberNew 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 }