Измерване на атмосферното налягане - Меандър - забавна електроника

В тази статия ще създадем устройство за измерване на атмосферното налягане с помощта на ADC на микроконтролера ATmega8.

На първо място, за да измервате налягането, имате нужда от някакъв сензор. Избрах сензора за абсолютно налягане MPX4115A от Motorola. В зависимост от налягането той извежда напрежение от 0,2 до 4,8V, което съответства на налягане от 15kPa до 115kPa. Вероятно основният недостатък е цената на сензора. Взех го за честни очи, но цената му е някъде около 15-18 долара. Появата му може да се види на снимката, номерирането на краката започва от маркировката (вляво на снимката, чип на крака).

1 - Изходно напрежение (което е свързано с налягането)

3 - Захранващо напрежение (4.85 ... 5.35V)

4, 5, 6 - Не се използва

меандър

атмосферното
Но дори да измерваме напрежението на изхода на сензора, сме свикнали да виждаме налягането в mm Hg. или в Паскали. За да се получи налягане от най-малко Pa в листа с данни има графика и формула за преобразуване на изходното напрежение в налягане.

атмосферното
Преобразуваме формулата във форма, която ще ни бъде по-полезна.

Грешката на измерване е 1% (при околна температура в диапазона от 0 ... 85 0 С) и 3% (при температури в диапазона от -40 ... 0 0 С, 85 ... 125 0 С).

Като цяло със сензора мисля, че е горе-долу ясен. Сега нека да пристъпим към изпълнението. Нека започнем с диаграмата. Ще нарисуваме веригата в Proteus, така че по-късно ще можем да симулираме работата на веригата и програмата. Свържете дисплей с символи към MK, за да покажете резултата от измерването

Налягане в mm Hg = (Налягане в kPa * 1000) /133.322;

И вече този резултат ще бъде показан на екрана.

Изходният код на програмата е даден в края на статията. Кодът на програмата в WinAVR изглежда така:

#define ADC_VREF_TYPE 0x00

#define VS 5 // захранващо напрежение

// Функцията връща резултата от преобразуването ADC

неподписан int read_adc (неподписан знак adc_input)

// Стартиране на ADC преобразуване

// Изчакайте преобразуването да приключи

// декларираме глобални променливи

char lcd_buffer [16];

неподписан int ptemp;

неподписан int adc_res;

неподписан дълъг int p0 = 101325;

// Честота: 125 000 kHz

// Референтно напрежение: AREF

// Налягане. Vout = adc_res * VS/1023 = adc_res * 0.00488, което сме заместили във формулата за p

p = (adc_res * 0,00488 + 0,095 * VS)/(0,009 * VS);

ptemp = (1000 * p)/133.322;

// Показване на резултата на екрана

sprintf (lcd_buffer, "P =% i", ptemp);

Не изброявам кода в CodeVision, защото там цялата програма може да бъде получена (с изключение на формули) с помощта на автоматично кодиране. Ако искате да го направите като независима задача и да проверите програмата в Proteus, като съберете схемата, която е дадена по-горе.

Разбира се, поне не е рационално да се използва MK mega8 за измерване само на налягане, но имам допълнителни планове за подобряване на това устройство. И в този случай мисля, че няма да е трудно да се преработи програмата за друг MK.

Може да се интересувате от това: