ADC measurement in four analog channel

Dependencies:   mbed

Committer:
cspista
Date:
Tue Nov 02 06:23:06 2021 +0000
Revision:
0:0c9a329e40f2
Final version

Who changed what in which revision?

UserRevisionLine numberNew contents of line
cspista 0:0c9a329e40f2 1 #include "mbed.h"
cspista 0:0c9a329e40f2 2 /* Lab03_ adc_scan
cspista 0:0c9a329e40f2 3 *
cspista 0:0c9a329e40f2 4 * Pásztázó mérés az ADC-vel: több csatornát pásztázunk
cspista 0:0c9a329e40f2 5 * - az A0 bemeneten egy potméterrel leosztott feszültséget mérünk
cspista 0:0c9a329e40f2 6 * - az A1 bemeneten egy MCP9700 analóg hőmérő jelét mérjük
cspista 0:0c9a329e40f2 7 * - az A2 bemeneten egy LDR segítségével a fényt mérjük
cspista 0:0c9a329e40f2 8 * - az A3 bemeneten pedig egy 2,50 V-os referencia feszültséget mérünk
cspista 0:0c9a329e40f2 9 * Az eredményeket feszültségre átszámítva a soros porton kiíratjuk.
cspista 0:0c9a329e40f2 10 */
cspista 0:0c9a329e40f2 11 const float VREFH = 3.3; // VrefH referencia feszültség [V]
cspista 0:0c9a329e40f2 12 int data[4] = {0, 0, 0, 0}; // A mérési adatok tárolója
cspista 0:0c9a329e40f2 13 float v[4]; // Feszültség mV-okban
cspista 0:0c9a329e40f2 14 AnalogIn potm(A0); // Analog input at PA_0
cspista 0:0c9a329e40f2 15 AnalogIn homero(A1); // Analog input at PA_1
cspista 0:0c9a329e40f2 16 AnalogIn ldr(A2); // Analog input at PA_4
cspista 0:0c9a329e40f2 17 AnalogIn vref(A3); // Analog input at PB_0
cspista 0:0c9a329e40f2 18
cspista 0:0c9a329e40f2 19 int main()
cspista 0:0c9a329e40f2 20 {
cspista 0:0c9a329e40f2 21 printf(" Lab03_adc_scan: Pásztázó mérés ADC-vel\r\n");
cspista 0:0c9a329e40f2 22 printf(" - az A0 bemeneten egy potméterrel leosztott feszültségét mérjük\r\n");
cspista 0:0c9a329e40f2 23 printf(" - az A1 bemeneten egy MCP9700 analóg hőmérő jelét mérjük\r\n");
cspista 0:0c9a329e40f2 24 printf(" - az A2 bemeneten egy LDR segítségével a fényt mérjük\r\n");
cspista 0:0c9a329e40f2 25 printf(" - az A3 bemeneten pedig egy referencia feszültséget mérünk\r\n");
cspista 0:0c9a329e40f2 26 while(1) {
cspista 0:0c9a329e40f2 27 for(int i=0; i<4; i++) data[i]=0;
cspista 0:0c9a329e40f2 28 for(int i=0; i<1000; i++) {
cspista 0:0c9a329e40f2 29 data[0] += potm.read_u16();
cspista 0:0c9a329e40f2 30 data[1] += homero.read_u16();
cspista 0:0c9a329e40f2 31 data[2] += ldr.read_u16();
cspista 0:0c9a329e40f2 32 data[3] += vref.read_u16();
cspista 0:0c9a329e40f2 33 }
cspista 0:0c9a329e40f2 34 for(int i=0; i<4; i++) {
cspista 0:0c9a329e40f2 35 v[i] = VREFH*(data[i]>>16); // V = NADC * VREFH / 2^16
cspista 0:0c9a329e40f2 36 printf(" A%d = %5.0f mV\r\n",i,v[i]);
cspista 0:0c9a329e40f2 37 }
cspista 0:0c9a329e40f2 38 printf("----------------------------------\r\n");
cspista 0:0c9a329e40f2 39 wait(2);
cspista 0:0c9a329e40f2 40 }
cspista 0:0c9a329e40f2 41 }