Измерване на атмосферното налягане - Меандър - забавна електроника
В тази статия ще създадем устройство за измерване на атмосферното налягане с помощта на ADC на микроконтролера ATmega8.
На първо място, за да измервате налягането, имате нужда от някакъв сензор. Избрах сензора за абсолютно налягане MPX4115A от Motorola. В зависимост от налягането той извежда напрежение от 0,2 до 4,8V, което съответства на налягане от 15kPa до 115kPa. Вероятно основният недостатък е цената на сензора. Взех го за честни очи, но цената му е някъде около 15-18 долара. Появата му може да се види на снимката, номерирането на краката започва от маркировката (вляво на снимката, чип на крака).
1 - Изходно напрежение (което е свързано с налягането)
3 - Захранващо напрежение (4.85 ... 5.35V)
4, 5, 6 - Не се използва



Грешката на измерване е 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.