Как найти плотность газа при нормальных условиях

Density is referred to as the ratio of the mass per unit of volume of a substance under specific conditions of pressure and temperature. Mathematically, it can be defined as mass divided by volume. It is generally represented by “ρ” or “D”. The density of a substance varies depending on its pressure and temperature. For example, the density of an ideal gas can be doubled as the pressure doubles or by halving its absolute temperature. That means the density of gas always increases as the pressure increases and decreases as the temperature increases. We can determine the molar mass of a substance if we know its density. Generally, the density of a substance is different for different materials. At standard conditions for temperature and pressure, osmium and iridium are the densest known elements.

Density (ρ) = m/V

Where “m” is the mass, and “V” is the volume.

The SI unit of density of a substance is kilogram per cubic meter (kg/m3). Some other units of measurement of density are kilogram per liter (kg/L), gram per milliliter (g/mL), tonne per cubic meter (t/m3), etc.

Density of Gas Formula

The formula to determine the density of a gas is given as follows:

Density of a gas (ρ) = PM/RT

Where,

“P” is the pressure of the gas,

“M” is the molar mass (g/mol),

“R” is the universal gas constant (R = 0.082 L⋅ atm⋅ K−1⋅ mol−1), and

“T” is the temperature of the gas (K)

Derivation For the Density of Gas formula 

The density of a gas is equal to the total mass of the gas to the total volume of the gas. To determine the molar mass of a gas, we have to consider the ideal gas equation.

From the ideal gas equation, we have

PV = nRT …………(1)

where,
“P” is the pressure of the gas,
“V” is the volume of the gas
“n” is the number of moles
“R” is the universal gas constant (R = 0.082 L⋅ atm⋅ K−1⋅ mol−1), and
“T” is the temperature of the gas

We know that, number of moles (n) = m/M 

where, 
“m” is the mass of the gas,
“M” is the molecular mass of the gas.

Now, substitute n = m/M in equation (1).

Thus, PV = mRT/M

P = mRT/MV ……….(2)

we know that density (ρ) = m/V. So, substitute the value of ρ in equation (2).

Thus, we get

P = ρ RT/M

ρ = PM/RT 

Thus, the ideal gas density formula is ρ = PM/RT.

Solved Examples on Gas Density

Example 1: What will be the density of a gas at 37 °C and a pressure of 5 atm and a molar mass of 84 g/mol?

Solution:

Given data:

Molar mass (M) = 84 g/mol

The pressure of the gas (P) =5 atm

The temperature of the gas (T) = 37 °C = 310 K

Universal gas constant (R) = 0.082 L⋅atm⋅K−1⋅mol−1

From the ideal gas density formula, we have

ρ = MP/RT

ρ = (84 × 5)/ (0.082 × 310)

ρ = 420/25.42 g/L

ρ = 16.522 g/L

Hence, the density of a gas is 16.522 g/L.

Example 2: Determine the density of a gas at 27 °C at a pressure of 7 atm and a molar mass of 54 g/mol. (R = 0.082 L⋅atm⋅K−1⋅mol−1)

Solution:

Given data:

Molar mass (M) = 54 g/mol

The pressure of the gas (P) =7 atm

The temperature of the gas (T) = 27 °C = 300 K

Universal gas constant (R) = 0.082 L⋅atm⋅K−1⋅mol−1

From the ideal gas density formula, we have

ρ= MP/RT

ρ= (54 × 7)/ (0.082 × 300)

ρ= 378/24.6 g/L

ρ= 15.37 g/L

Hence, the density of a gas is 15.37 g/L.

Example 3: Determine the density of carbon monoxide at 40 °C and a pressure of 730 Torr. (R = 0.082 L⋅atm⋅K−1⋅mol−1)

Solution:

Given data:

Molar mass of carbon monoxide (M) = 28 g/mol

Pressure (P) =730 Torr = 730/760 atm = 0.9605 atm

Temperature (T) = 40 °C = 313 K

Universal gas constant (R) = 0.082 L⋅atm⋅K−1⋅mol−1

From the ideal gas density formula, we have

ρ= MP/RT

ρ= (28 × 0.9605)/ (0.082 × 313)

ρ= 26.894/25.666 g/L

ρ= 1.0478 g/L

Hence, the density of carbon monoxide at 40 °C and a pressure of 730 Torr is 1.0478 g/L.

Example 4: If the density of a gas is 9.35 g/L at STP, then determine its density at 30 °C and a pressure of 700 mmHg.

Solution: 

Given data:

The density of a gas (ρ1) = 9.35 g/L

We know that at STP pressure is equal to 0.987 atm and temperature is equal to 273.15 K.

So, P1 = 0.987 atm

T1 = 273.15 K

Let the density of the gas at 30 °C and pressure of 700mmHg be ρ2.

P2 = 700mmHg = 700 × 0.00131579 atm = 0.9210 atm

T2 = 30 °C = 303K

From the ideal gas density formula, we have

ρ= MP/RT

As we are calculating the density of the same gas at different conditions, the mass of the gas remains the same.

ρ ∝ P/T

ρ12 = (P1/T1)/ (P2/T2)

9.35/ρ2 = (0.987/273.15)/ (0.9210/303)

9.35/ρ2 = (0.987 × 303)/ (0.9210 × 273.15)

9.35/ρ2 = (299.061/251.57)

ρ2 = (9.35 × 251.57)/299.061

ρ2 = 7.865 g/L

Hence, the density of the gas at 30 °C and pressure of 700mmHg is 7.865 g/L.

Example 5: What is the density of nitric oxide (NO) at a temperature of 51 °C and a pressure of 6 bar? (R = 0.082 L⋅atm⋅K−1⋅mol−1)

Solution:

Given data:

Density (ρ) = 3.42 g/L

Temperature (T) = 51 + 273 = 324 K

Pressure (P)= 6 bar = 6 × 0.9869 atm = 5.9215 atm

The molar mass of nitric oxide = 30 g/mol

Universal gas constant (R) = 0.082 L⋅atm⋅K−1⋅mol−1

From the ideal gas density formula, we have

ρ= MP/RT

ρ= (30 × 5.9215)/ (0.082 × 324)

ρ= 177.645/26.568 g/L

ρ= 6.686 g/L

Hence, the density of nitric oxide at 51 °C and a pressure of 6 bar is 6.686 g/L.

FAQs on Gas Density

Question 1: Define the density of the gas.

Answer:

Density is referred to as the ratio of the mass per unit of volume of a substance under specific conditions of pressure and temperature. Mathematically, it can be defined as mass divided by volume. It is generally represented by “ρ” or “D”. 

Density (ρ) = m/V

Where “m” is the mass, and “V” is the volume.

Question 2: What is the effect of pressure and temperature on the density of gas?

Answer:

The density of a substance varies depending on its pressure and temperature. For example, the density of an ideal gas can be doubled as the pressure doubles or by halving its absolute temperature. That means the density of gas always increases as the pressure increases and decreases as the temperature increases.

Question 3: What is meant by an ideal gas? Write down the ideal gas density formula.

Answer: 

The gas that strictly follows Boyle’s law, Charles’ law, and Avogadro’s law is known as an ideal gas. It is a hypothetical gas that is proposed to simplify the calculations. Many real gases behave qualitatively like an ideal gas under various conditions of temperature and pressure, where the gas molecules act as the ideal particles.

Ideal gas density formula

ρ = PM/RT

Where “P” is the pressure of the gas,

“M” is the molar mass (g/mol),

“R” is the universal gas constant (R = 0.082 L⋅ atm⋅ K−1⋅ mol−1), and

“T” is the temperature of the gas (K)

Question 4: What are units of measurement of density?

Answer: 

The SI unit of density of a substance is kilogram per cubic meter (kg/m3). Some other units of measurement of density are kilogram per liter (kg/L), gram per milliliter (g/mL), tonne per cubic meter (t/m3), etc.

Плотность — физическое свойство газа

Плотность газа

Плотность газа r вычисляют по формуле ( по ГОСТ 30319.1-96)
r = т/V.  
Плотность определяют с помощью плотномеров любого типа (пикнометрических, ареометрических, вибрационных, акустических, радиационных и др.) или косвенным методом (измерением параметров состояния среды, определения ее состава и проведения расчета).
В зависимости от технико-экономической целесообразности плотность контролируемых сред допускается рассчитывать:

  • вручную, 
  • с помощью таблиц и графиков, 
  • с применением вычислительных машин;
  • частично или полностью автоматизированных устройств.

Плотность газа в идеально газовом состоянии определяют по известным значениям давления р и температуры Т по формуле
rи = 103 × M × p/(R × T).       
За молярную массу М принимают массу одного киломоля вещества в килограммах.
Молярную массу определяют по формуле
,                                                          
где    Аj — масса килограмм-атома j-го элемента, входящего в состав молекулы;
пj — количество атомов j-го элемента молекулы.
3.2.2 Плотность реального газа (далее — газ) определяют с учетом фактора сжимаемости газа z по формуле
.  
Плотность газа при стандартных условиях определяется при р = рc и Т = Тc т.е. по соотношению

.   

Под плотностью
или объемной массой тела понимают
отно­шение массы тела в состоянии
покоя к его объему.

Плотность газа в
нормальных физических условиях может
быть определена по его молекулярной
массе


,
кг/м3 (1)

Если плотность
газа задана при нормальном давлении,
то пересчет ее на другое давление р
(при той же температуре) для идеального
газа проводится по формуле

(Ш.2)
.

Часто для
характеристики газа применяют
относительную плотность его по воздуху
при нормальных условиях 0=0:1,293.
|

Коммерческие
расчеты в газовой промышленности
произво­дятся при стандартных
физических условиях: давлении 0,1013 МПа
и температуре 20 °С.

Состав газовой смеси

Газовые смеси (как
и смеси жидкостей и паров) характери­зуются
массовыми или молярными концентрациями
компонен­тов. Объемный состав газовой
смеси примерно совпадает с молярным,
так как объем 1 кмоля идеального газа
при одинаковых физических условиях, по
закону Авогадро, имеет одно и то же
численное значение, в частности при О
°С и 760 мм рт. ст. равен 22,41 м3.

Для характеристики
газовой смеси надо знать ее среднюю
молекулярную массу, среднюю плотность
в кг/м3
или относи­тельную плотность по
воздуху.

Если известен
молярный состав смеси в процентах, то
сред­няя молекулярная масса


.
(3)

где у1,
у2,…,
уn
— молярные (объемные) доли компонентов,
%;

M1,
М2,
…, Мn
— молекулярные массы компонентов.

Если задан массовый
состав смеси в процентах, то ее сред­няя
молекулярная масса вычисляется по
формуле

(4)

где g1,
g2,
…, gn
— массовые доли компонентов, %.

Плотность смеси
см
определяют по вычисленному значению
средней молекулярной массы Мсм по
формуле, аналогич­ной (1):


.
(5)

Относительную
плотность определяют по формуле

(6)

где рcм
и рв
— плотность смеси и воздуха при
температуре О °С и нормальном давлении.

Содержание тяжелых углеводородов в газе

Для полной
характеристики природного газа необходимо
также знать содержание в нем тяжелых
углеводородов. При­нято считать, что
в газе три фракции: пропановая, бутановая
и газовый бензин, причем последний, для
подсчета ресурсов, при­нимается
состоящим из 1/3 бутана и 2/3 пентана (по
массе).

Если дан массовый
или молярный состав газа, то содержа­ние
тяжелых углеводородов определяется по
формуле

Gi
= 10giсм
= 10уii,
(7)

где gi
— массовая доля данного тяжелого
углеводорода в газе, %; cм
— средняя плотность природного газа,
кг/м3;
yi
— молярная доля данного тяжелого
углеводорода в газе, %; i—плотность
данного тяжелого углеводорода, кг/м3.

После определения
содержания в газе каждого отдельного
углеводорода (пропана, бутана, пентана
и высших) делают пе­ресчет на содержание
пропана, бутана, газового бензина. Для
этого прибавляют к пентану требуемое
количество бутана, чтобы получить
газовый бензин

Пример. По данному
массовому составу газа требуется
определить содержание в нем пропана,
бутана и газового бензина (в г/м3).
Массовый состав газа (в %): метан—19,50;
этан—11,80; пропан — 37,95; изобутан — 3,25;
н-бутан—12,05; пентан и высшие — 8,15; азот
—7,30.

Решение. Для
определения средней плотности газа
найдем среднюю молекулярную массу газа
по формуле (4)

Средняя плотность
газа по формуле (5)

кг/м3

Состав газа
определим по формуле (7)

пропана 1037,951,43
= 542 г/м3

изобутана
103,251,43
= 46,5 г/м3

н-бутана
1012,051,43=172
г/м3

пентана и высших
108,151,43
= 117 г/м3

Итого:
877,5 г/м3

Газового бензина
(пентана две части и н-бутана одна часть)
будет 117 +117/2 = 175,5 г/м3

н-бутана 172 —58,5=
113,5 г/м3

изобутана
46,5 г/м3

пропана 542,0 г/м3

Всего тяжелых
углеводородов 877,5 г/м3

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]

  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #

Как найти плотность газа

Одной из важнейших характеристик газа является его плотность. Когда упоминают плотность газа, как правило, говорят о плотности в нормальных условиях, а именно когда она измеряется при температуре 0 °С и при давлении 760 мм рт. ст. Кроме обычной или абсолютной плотности также требуется иногда относительная плотность газа. Под относительной плотностью газа имеют ввиду не саму плотность данного газа, а ее отношение к плотности воздуха, которое рассматривается при тех же самых условиях.

Как найти плотность газа

Инструкция

Итак, относительная плотность газа совсем не зависит от внешних условий. Это обусловлено всеобщими законами состояния газов, согласно которым, при изменениях температуры и давления изменения объема газов происходят совершенно одинаково.

Чтобы определить плотность газа, вам понадобится колба, в которую легко будет закачать нужный газ, а также и откачать без каких-либо препятствий. Для определения плотности газа, приготовьте колбу с газом. Взвесьте эту колбу дважды. Перед тем, как взвесить ее в первый раз, откачайте из колбы, если получится, полностью весь содержащийся в ней воздух. Перед вторым взвешиванием наполните колбу газом, плотность которого вы планируете измерить. Наполняя колбу, следите, чтобы газ дошел до отметки заданного давления.

Теперь приступайте к работе с цифрами, формулами, которые необходимы для получения необходимых результатов. Для начала найдите разность масс. Затем разделите эту разность на значение объема колбы V. Для этого определите объем колбы, с которой будете производить измерения, заранее. И в результате этих вычислений вы получите плотность газа при заданных конкретных условиях. После того, как вы вычислите плотность газа при заданных условиях, обратитесь к уравнению состояния. При помощи этого уравнения вы сможете найти плотность газа при нормальных или идеальных условиях. Примите следующие значения для постановки в формулу состояния: p2=pн, V2=Vн, Т2=Тн. Затем умножайте числитель и знаменатель из левой части вашей формулы на собственно массу измеряемого газа m. В итоге у вас получится: p1/p2=m1/m2 , обратите внимание, что в этой формуле m/V1=r1, а также m/Vн=rн.
Используя информацию, полученную из формул и других обозначений, получаете: N1m1/N2m2=p1/p2.

Плотность некоторых газов вы можете найти в сводной таблице. Так что, если газ, плотность которого вам необходимо узнать относится к газам, занесенным в таблицу, нужную информацию вы сможете найти без вычисления и использования формул.

Войти на сайт

или

Забыли пароль?
Еще не зарегистрированы?

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Введение

Задача измерения параметров газовой смеси широко распространена в промышленности и торговле. Проблема получения достоверной информации при измерении параметров состояния газовой среды и её характеристик с помощью технических средств разрешается принятыми в стандартах методиками выполнения измерений (МВИ), например, при измерении расхода и количества газов с помощью стандартных сужающих устройств [1], или с помощью турбинных, ротационных и вихревых расходомеров и счётчиков [2].

Периодический газовый анализ позволяет установить соответствие между реальной анализируемой смесью и её моделью, по которой в МВИ учитываются физико-химические параметры газа: состав газовой смеси и плотность газа при стандартных условиях.
Также в МВИ учитываются теплофизические характеристики газа: плотность при рабочих условиях (давление и температура газа, при которых выполняют измерение его расхода или объёма), вязкость, фактор и коэффициент сжимаемости.

К измеряемым в реальном режиме времени параметрам состояния газа относятся: давление (перепад давлений), температура, плотность. Для измерения этих параметров применяются соответственно средства измерительной техники: манометры (дифманометры), термометры, плотномеры. Измерение плотности газовой среды допускается измерять прямым или косвенным методами измерения. Результаты как прямых, так и косвенных методов измерения зависят от погрешности средств измерения и методической погрешности. В рабочих условиях, сигналы измерительной информации могут быть подвержены влиянию значительного шума, среднее квадратичное отклонение которого может превышать инструментальную погрешность. В этом случае, актуальной задачей является эффективная фильтрация сигналов измерительной информации.

В данной статье рассматривается методика косвенного измерения плотности газа при рабочих и стандартных условиях c применением фильтра Калмана.

Математическая модель определения плотности газа

Обратимся к классике и вспомним уравнение состояния идеального газа [3]. Имеем:

1. Уравнение Менделеева-Клапейрона:

(1),

где:

— давление газа;

— молярный объём;

R — универсальная газовая постоянная,

;

T — абсолютная температура, T=273.16 К.

2. Два измеряемых параметра:

p – давление газа, Па
t – температура газа, °С.

Известно, что молярный объём зависит от объёма газа V и количества молей газа в этом объёме:

(2)

Также известно, что

(3),

где: m – масса газа, M – молярная масса газа.

Учитывая (2) и (3) перепишем (1) в виде:

(4).

Как известно, плотность вещества

равна:

(5).

Из (4) и (5) выведем уравнение для плотности газа

:

(6)

и введём обозначение параметра

, который зависит от молярной массы газовой смеси:

(7).

Если состав газовой смеси не меняется, то параметр k является константой.
Итак, для расчёта плотности газа необходимо рассчитать молярную массу газовой смеси.

Молярную массу смеси веществ определяем, как среднее арифметическое взвешенное молярной массы массовых долей, входящих в смесь индивидуальных веществ.

Примем известным состав веществ в газовой смеси – в воздухе, который состоит из:

Молярные массы этих веществ воздуха будут соответственно равны:

, г/моль.

Вычисляем молярную массу воздуха, как среднее арифметическое взвешенное:

Теперь, зная значение константы

, мы можем вычислить плотность воздуха по формуле (7) с учетом измеряемых значений

и t:

Приведение плотности газа к нормальным, стандартным условиям

Практически, измерения свойств газов проводят в различных физических условиях, и для обеспечения сопоставления между различными наборами данных должны быть установлены стандартные наборы условий [4].

Стандартные условия для температуры и давления – это установленные стандартом физические условия, с которыми соотносят свойства веществ, зависящие от этих условий.

Различные организации устанавливают свои стандартные условия, например: Международный союз чистой и прикладной химии (IUPAC), установил в области химии определение стандартной температуры и давления (STP): температура 0 °C (273.15 K), абсолютное давление 1 бар ( Па); Национальный институт стандартов и технологий (NIST) устанавливает температуру 20 °C (293,15 K) и абсолютное давление 1 атм (101.325 кПа), и этот стандарт называют нормальной температурой и давлением (NTP); Международная организация по стандартизации (ISO) устанавливает стандартные условия для природного газа (ISO 13443: 1996, подтверждённый в 2013 году): температура 15.00 °С и абсолютное давление 101.325 кПа.

Поэтому, в промышленности и торговле необходимо указывать стандартные условия для температуры и давления, относительно которых и проводить необходимые расчёты.

Плотность воздуха мы рассчитываем по уравнению (8) в рабочих условиях температуры и давления. В соответствии с (6) запишем уравнение для плотности воздуха в стандартных условиях: температура и абсолютное давление :

(9).

Делаем расчёт плотности воздуха, приведенной к стандартным условиям. Разделим уравнение (9) на уравнение (6) и запишем это отношение для :

(10).

Подобным образом, получим уравнение для расчёта плотности воздуха, приведенной к нормальным условиям: температура и абсолютное давление

:

(11).

В уравнениях (10) и (11) используем значения параметров воздуха , T и P из уравнения (8), полученные в рабочих условиях.

Реализация измерительного канала давления и температуры

Для решения многих задач получения информации, в зависимости от их сложности, удобно создавать прототип будущей системы на базе одной из микроконтроллерных платформ типа Arduino, Nucleo, Teensy, и др.

Что может быть проще? Давайте сделаем микроконтроллерную платформу для решения конкретной задачи – создание системы измерения давления и температуры, затрачивая меньше, возможно, средств, и используя все преимущества разработки программного обеспечения в среде Arduino Software (IDE).

Для этого, на аппаратном уровне, нам понадобятся компоненты:

  1. Arduino (Uno, …) – используем как программатор;
  2. микроконтроллер ATmega328P-PU – микроконтроллер будущей платформы;
  3. кварцевый резонатор на 16 МГц и пара керамических конденсаторов на 12-22 пФ каждый (по рекомендациям фирмы-изготовителя);
  4. тактовая кнопка на перезагрузку микроконтроллера и подтягивающий плюс питания к выводу RESET микроконтроллера резистор на 1 кОм;
  5. BMP180 — измерительный преобразователь температуры и давления с интерфейсом I2C;
  6. преобразователь интерфейсов TTL/USB;
  7. расходные материалы – провода, припой, монтажная плата, и др.

Принципиальная схема платформы, с учетом необходимых интерфейсов: стандартного последовательного интерфейса, I2C, и ничего более, представлена на рис. 1.


Рис. 1 — Принципиальная схема микроконтроллерной платформы для реализации системы измерения давления и температуры

Теперь рассмотрим этапы осуществления нашей задачи.

1. Прежде, нам нужен программатор. Подключаем Arduino (Uno, …) к компьютеру. В среде Arduno Software из меню по пути Файл->Примеры->11. ArdunoISP добираемся до программы программатора ArduinoISP, которую зашиваем в Arduino. Предварительно из меню Инструменты выбираем соответственно Плату, Процессор, Загрузчик, Порт. После Загрузки программы ArduinoISP в плату, наша Arduino превращается в программатор и готова к использованию по назначению. Для этого в среде Arduno Software в меню Инструменты выбираем пункт Программатор: “Arduino as ISP”.

2. Подключаем по интерфейсу SPI ведомый микроконтроллер ATmega328P к ведущему программатору Arduino (Uno, …), рис. 2. Следует заметить, что предварительно биты регистра Low Fuse Byte микроконтроллера ATmega328P были установлены в незапрограммированное состояние. Переходим в среду Arduno Software и из меню Инструменты выбираем пункт Записать Загрузчик. Прошиваем микроконтроллер ATmega328P.


Рис. 2 – Схема подключения микроконтроллера к программатору

3. После успешной прошивки, микроконтроллер ATmega328P готов к установке на разработанную микроконтроллерную платформу (рис. 3), которую программируем также, как и полноценную Arduino (Uno, …). Программа опроса измерительного преобразователя давления и температуры представлена на листинге 1.


Рис. 3 Система измерения давления и температуры

Листинг 1 — Программа опроса измерительного преобразователя давления и температуры

#include <SFE_BMP180.h>
SFE_BMP180 pressure;
double T,P;
void setup()

{

  Serial.begin(9600);

  pressure.begin();

}

 

void loop()

{

    P = getPressure();

    Serial.println(P+0.5, 2);

    Serial.println(T+0.54, 2);

    delay(1000);

}

 

double getPressure(){

    char status;

    status = pressure.startTemperature();

    if (status != 0){

        delay(status); // ожидание замера температуры

        status = pressure.getTemperature(T);

        if (status != 0){

            status = pressure.startPressure(3);

            if (status != 0){

                delay(status); // ожидание замера давления

                status = pressure.getPressure(P,T);

                if (status != 0){

                    return(P);

                }

            }

        }

    }

}

Программа Python для фильтрации по каналам температуры и давления, и получение результатов

Программа Python методики определения плотности газа по результатам измерений давления и температуры представлена на листинге 2. Информация из измерительной системы выводится в реальном режиме времени.

Листинг 2 – Определение плотности газа по результатам измерения давления и температуры


import numpy as np

import matplotlib.pyplot as plt

import serial

from drawnow import drawnow

import datetime, time

from pykalman import KalmanFilter

 

#вводим матрицу перехода и матрицу наблюдений

transition_matrix = [[1, 1, 0, 0],

                     [0, 1, 0, 0],

                     [0, 0, 1, 1],

                     [0, 0, 0, 1]]

observation_matrix = [[1, 0, 0, 0],

                      [0, 0, 1, 0]]

#вводим и инициируем матрицу измерений

initial_state_mean = [101000,

                      0,

                      28,

                      0]

#параметры уравнения состояния идеального газа:

#универсальная газовая постоянная R, [Дж/(моль*К)]

R = 8.314459848

#молярная масса воздуха M, [г/моль]

M = 29.04

#коэффициент k = M/R, [г/(Дж*К)]

k = M / R

#абсолютная температура, [K]

K = 273.16

#стандартное (нормальное) давление, [Па]

Pn = 101325

 
#определяем количество измерений

# общее количество измерений

str_m   = input("введите количество измерений: ")

m = eval(str_m)

# количество элементов выборки

mw  = 16

#настроить параметры последовательного порта

ser = serial.Serial()

ser.baudrate = 9600

port_num = input("введите номер последовательного порта: ")

ser.port = 'COM' + port_num

ser

#открыть последовательный порт

try:

    ser.open()

    ser.is_open

    print("соединились с: " + ser.portstr)

except serial.SerialException:

    print("нет соединения с портом: " + ser.portstr)

    raise SystemExit(1)

#определяем списки

l1  = [] # для значений 1-го параметра

l2  = [] # для значений 2-го параметра

t1  = [] # для моментов времени

lw1 = [] # для значений выборки 1-го параметра

lw2 = [] # для значений выборки 2-го параметра

n   = [] # для значений моментов времени

nw  = [] # для значений выборки моментов времени

l1K = [] # для фильтрованных значений 1-го параметра

l2K = [] # для фильтрованных значений 2-го параметра

ro  = [] # для плотности газовой среды

 

#подготовить файлы на диске для записи

filename = 'count.txt'

in_file = open(filename,"r")

count = in_file.read()

count_v = eval(count) + 1

in_file.close()

in_file = open(filename,"w")

count = str(count_v)

in_file.write(count)

in_file.close()

filename = count + '_' + filename

out_file = open(filename,"w")

#вывод информации для оператора на консоль

print("nпараметры:n")

print("n  - момент времени, с;")

print("P  - давление, Па;")

print("Pf - отфильтрованное значение P, Па;")

print("T  - температура, град. С;")

print("Tf - отфильтрованное значение T, град. С;")

print("ro - плотность воздуха, г/м^3;")

print("nизмеряемые значения величин параметровn")

print('{0}{1}{2}{3}{4}{5}n'.format('n'.rjust(3),'P'.rjust(10),'Pf'.rjust(10),

                                    'T'.rjust(10),'Tf'.rjust(10),'ro'.rjust(10)))

#считываение данных из последовательного порта

#накопление списков

#формирование текущей выборки

i = 0

while i < m:

    n.append(i)

    nw.append(n[i])

    if i >= mw:

        nw.pop(0)

    ser.flushInput() #flush input buffer, discarding all its contents

    line1 = ser.readline().decode('utf-8')[:-1]

    line2 = ser.readline().decode('utf-8')[:-1]

    t1.append(time.time())

    if line1:

        l = eval(line1)

        #l = np.random.normal(l,100.0)

        l1.append(l)

        lw1.append(l1[i])

        if i >= mw:

            lw1.pop(0)

    if line2:

        l = eval(line2)

        #l = np.random.normal(l,1.5)

        l2.append(l)

        lw2.append(l2[i])

        if i >= mw:

            lw2.pop(0)

    #-------------------------

    initial_state_mean = [l1[i],0,l2[i],0]

    kf1 = KalmanFilter(transition_matrices = transition_matrix,

                  observation_matrices = observation_matrix,

                  initial_state_mean = initial_state_mean)

    if i == 0:

        measurements = np.array( [ [l1[i], l2[i]],

                                   [initial_state_mean[0], initial_state_mean[2]] ] )

    measurements = np.array( [ [l1[i], l2[i]],

                               [l1[i-1], l2[i-1]] ] )

    kf1 = kf1.em(measurements, n_iter=2)

    (smoothed_state_means, smoothed_state_covariances) = kf1.smooth(measurements)

    l1K.append(smoothed_state_means[0, 0])

    l2K.append(smoothed_state_means[0, 2])

    #плотность воздуха в рабочих условиях

    #ro.append( k * l1K[i]/( l2K[i] + K) )

    #плотность воздуха, приведенная к стандартным условиям

    ro.append( (k * l1K[i]/( l2K[i] + K)) * (Pn*(l2K[i]+K)/K/l1K[i]) )

    #плотность воздуха, приведенная к нормальным условиям

    #ro.append( (k * l1K[i]/( l2K[i] + K)) * (Pn*(l2K[i]+K)/(K+20)/l1K[i]) )

    print('{0:3d} {1:10.3f} {2:10.3f} {3:10.3f} {4:10.3f} {5:10.3f}'.

          format(n[i],l1[i],l1K[i],l2[i],l2K[i],ro[i]))

    i += 1

 

ser.close()

time_tm = t1[m - 1] - t1[0]

print("nпродолжительность времени измерений: {0:.3f}, c".format(time_tm))

Ts = time_tm / (m - 1)

print("nпериод опроса датчика: {0:.6f}, c".format(Ts))

#запись таблицы в файл

print("nтаблица находится в файле {}n".format(filename))

for i in np.arange(0,len(n),1):

    out_file.write('{0:3d} {1:10.3f} {2:10.3f} {3:10.3f} {4:10.3f} {5:10.3f}n'.

                   format(n[i],l1[i],l1K[i],l2[i],l2K[i],ro[i]))

#закрыть файл с таблицей

out_file.close()

now = datetime.datetime.now() #получаем дату и время

#выводим графики

plt.figure('давление')

plt.plot( n, l1, "b-", n, l1K, "r-")

plt.ylabel(r'$давление, Па$')

plt.xlabel(r'$номер  измерения$' +

            '; (период опроса датчика: {:.6f}, c)'.format(Ts))

plt.title("BMP180n(" +

           now.strftime("%d-%m-%Y %H:%M") + ")")

plt.grid(True)

plt.figure('температура')

plt.plot( n, l2, "b-", n, l2K, "r-")

plt.ylabel(r'$температура, degree С$')

plt.xlabel(r'$номер  измерения$' +

               '; (период опроса датчика: {:.6f}, c)'.format(Ts))

plt.title("BMP180n(" +

              now.strftime("%d-%m-%Y %H:%M") + ")")

plt.grid(True)

plt.figure('плотность воздуха')

plt.plot( n, ro, "r-")

plt.ylabel(r'$плотность воздуха, г/м^3$')

plt.xlabel(r'$номер  измерения$' +

               '; (период опроса датчика: {:.6f}, c)'.format(Ts))

plt.title("BMP180n(" +

              now.strftime("%d-%m-%Y %H:%M") + ")")

plt.grid(True)

plt.show()

Результаты расчёта представлены листингом и рис. 4, 5, 6.

Интерфейс пользователя и таблица результатов расчёта

введите количество измерений: 33

введите номер последовательного порта: 6

соединились с: COM6

 

параметры:

 

n  - момент времени, с;

P  - давление, Па;

Pf - отфильтрованное значение P, Па;

T  - температура, град. С;

Tf - отфильтрованное значение T, град. С;

ro - плотность воздуха, г/м^3;

 

измеряемые значения величин параметров

 

  n         P        Pf         T        Tf        ro

 

  0 101141.000 101141.000     28.120     28.120   1295.574

  1 101140.000 101140.099     28.190     28.183   1295.574

  2 101140.000 101140.000     28.130     28.136   1295.574

  3 101141.000 101140.901     28.100     28.103   1295.574

  4 101140.000 101140.099     28.100     28.100   1295.574

  5 101141.000 101140.901     28.110     28.109   1295.574

  6 101141.000 101141.000     28.100     28.101   1295.574

  7 101139.000 101139.217     28.100     28.100   1295.574

  8 101138.000 101138.099     28.090     28.091   1295.574

  9 101137.000 101137.099     28.100     28.099   1295.574

 10 101151.000 101149.028     28.100     28.100   1295.574

 11 101136.000 101138.117     28.110     28.109   1295.574

 12 101143.000 101142.052     28.110     28.110   1295.574

 13 101139.000 101139.500     28.100     28.101   1295.574

 14 101150.000 101148.463     28.110     28.109   1295.574

 15 101154.000 101153.500     28.120     28.119   1295.574

 16 101151.000 101151.354     28.110     28.111   1295.574

 17 101141.000 101142.391     28.130     28.127   1295.574

 18 101141.000 101141.000     28.120     28.121   1295.574

 19 101142.000 101141.901     28.110     28.111   1295.574

 20 101141.000 101141.099     28.120     28.119   1295.574

 21 101142.000 101141.901     28.110     28.111   1295.574

 22 101146.000 101145.500     28.120     28.119   1295.574

 23 101144.000 101144.217     28.130     28.129   1295.574

 24 101142.000 101142.217     28.130     28.130   1295.574

 25 101142.000 101142.000     28.140     28.139   1295.574

 26 101142.000 101142.000     28.130     28.131   1295.574

 27 101146.000 101145.500     28.150     28.147   1295.574

 28 101142.000 101142.500     28.190     28.185   1295.574

 29 101146.000 101145.500     28.230     28.225   1295.574

 30 101146.000 101146.000     28.230     28.230   1295.574

 31 101146.000 101146.000     28.220     28.221   1295.574

 32 101150.000 101149.500     28.210     28.211   1295.574

 

продолжительность времени измерений: 6.464, c

 

период опроса датчика: 0.201998, c

 

таблица находится в файле 68_count.txt


Рис. 4 – результаты измерения (красный) и фильтрации (синий) давления


Рис. 5 – результаты измерения (красный) и фильтрации (синий) температуры


Рис. 6 – результаты расчёта плотности воздуха, приведенной к стандартным условиям (температура 273.15 К; абсолютное давление 101.325 кПа)

Выводы

Разработана методика определения плотности газа по результатам измерения давления и температуры с применением датчиков Arduino и программных средств Python.

Ссылки на источники информации

  1. ГОСТ 8.586.5-2005. URL
  2. ГОСТ Р 8.740 – 2011. URL
  3. Ideal gas law. URL
  4. Standard conditions for temperature and pressure. URL

Понравилась статья? Поделить с друзьями:
  • Как найти приложения для анимации
  • Как найти отрезок медианы в правильном треугольнике
  • Как найти пароль в яндекс музыке
  • Как найти на резине год выпуска
  • Как составить звуковую схему слова машина