Датчик давления воздуха в ресивер и ардуино

Clario
Offline
Зарегистрирован: 27.01.2019

Собственно возникла необходимости контролировать давления в ресивере с помощью ардуино.

Имеем: Ардуино Уно, дисплей 1602, датчик вот этот он до 12 атм, 3 контакта +5в, -, вых 0-5в.

В этом я новичек, почитав стать схожие по содержанию, пришел к такому решению, что надо построить функцию зависимости давления от напряжения, за основу взял код с форума

Уравнение получилось 

-4.5x+12y-6=0

x=2.67y-1.33

Где x - давление, y - напряжение

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

01 #include <Wire.h>
02 #include <LiquidCrystal_I2C.h>
03  
04 LiquidCrystal_I2C lcd(0x27,16,2); /
05  
06 #define SensorPin 0 //пин на котором датчик
07  
08 void setup()
09 {
10   lcd.init();
11   analogReference(DEFAULT);
12   lcd.setCursor (0,0);
13   lcd.print("Pressure is:");      
14 }
15  
16  
17 void loop()
18 {
19  
20  static int avgVadc = 0;
21  avgVadc = (avgVadc * 3 + analogRead(SensorPin))/4; //скользящее среднее
22  
23  
24   
25  float val = avgVadc * 5.0 / 1024.0;
26  float Pressuare  = 2.66 * val - 1.33 ;
27  
28  lcd.setCursor(0,1);
29  lcd.print("         ");
30  lcd.setCursor(0,1);
31  lcd.print (Pressure);
32  
33 }

 

b707
Offline
Зарегистрирован: 26.05.2017

Clario пишет:

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

я вас конечно не знаю, может вы Геркулес, но вообще давление, которое может создать типичный человек своими легкими - как правило не превышает 0.2 -0.3 атм

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

А еще есть такие полезные штуки, как автомобильный/велосипедный насосы.

Clario
Offline
Зарегистрирован: 27.01.2019

Кароч сносил все это богатство на случку к компрессору и все оказалось не очень, безбожно врет или как говорят у нас в РБ "Кажа Ху*ню"

фото 1 тут 4 атм

фото 2 тут 6 атм

ВН
Offline
Зарегистрирован: 25.02.2016

прокалибруйте свой датчик в попугаях ацп

т.е. просто выводите значения ацп в порт или на экран и запишите соответствие между значением и давлением.

Потом посмотрите на линейность и дальше будет понятно, как пересчитать данные.

Чем меньше шаг по давлению, тем достовернее пересчет можно получить. 

Clario
Offline
Зарегистрирован: 27.01.2019

ВН пишет:

прокалибруйте свой датчик в попугаях ацп

т.е. просто выводите значения ацп в порт или на экран и запишите соответствие между значением и давлением.

Потом посмотрите на линейность и дальше будет понятно, как пересчитать данные.

Чем меньше шаг по давлению, тем достовернее пересчет можно получить. 

Данные есть 

0атм - 0.5в

1атм- 0.84в

2атм- 1.17в

3атм- 1.5в

4атм- 1.85в

5атм- 2.20в

6атм- 2.52в

7атм- 2.85в

8атм- 3.17в

дальше компрессор сбрасывает.

sadman41
Offline
Зарегистрирован: 19.10.2016

Близко к V=0.5+P*0.33375

ВН
Offline
Зарегистрирован: 25.02.2016

т.е,  А - значение ацп, а Р - давление

 если А<100  Р=0

иначе  Р=(А-100)*13,5/923 

Гриша
Offline
Зарегистрирован: 27.04.2014

ИМХО на кой там float???? чисто МК нагрузить, чтобы жизнь сказкой не казалась ?!

Свойства равенств

Все равенства имеют два свойства, на которых основано преобразование и решение уравнений.

    Обе части равенства можно увеличить или уменьшить на одно и то же число 
или алгебраическое выражение, равенство от этого не нарушится, то есть

    если   a = b, то и   a + m = b + m   и   a - m = b - m.

    Обе части равенства можно умножить или разделить на одно и то же число 
или алгебраическое выражение (не равное нулю), равенство от этого не нарушится, то есть

    если   a = b, то и   am = bm   и   a/m = b/m

int - выше крыши и ошибок меньше, если с математикой лады.

UPD необходимо следить за переполнением переменной во время расчета и все будет хорошо.

Clario
Offline
Зарегистрирован: 27.01.2019

ВН пишет:

т.е,  А - значение ацп, а Р - давление

 если А<100  Р=0

иначе  Р=(А-100)*13,5/923 

немножко не врубаюсь по формуле, поясните 13.5/923 это что?

Пока рабочий вариант предложил sadman41 с уравнением  V=0.5+P*0.33375,

мое уравнение получилось исходя из этого P=(V-0.48)/0.33666, по вычислениям даже в сотки вписываюсь но это на бумаге.

Походу большую роль играет источник питания и запитка датчика через ардуино, отсюда вопрос стабилизирован ли выход 5в ардуино??? 

UPD: Кароч толком не могу подобрать коэффициент, поэтому завтра отдам датчик знакомому метрологу, он обещал откалибровать по эталонным приборам.

RG22EM
Offline
Зарегистрирован: 27.08.2016

Там обычно менее 5 вольт

ВН
Offline
Зарегистрирован: 25.02.2016

Clario пишет:
немножко не врубаюсь по формуле, поясните 13.5/923 это что?

это вес в атмосферах младшего разряда ацп

13,5 это интерполяция ваших данных по давлению до +5В по формуле от sadman41

на деле датчик по ДШ линеен только до 12 атм, и 4,5 В 

так что следовало бы  для корректности добавить условие,  если А> 923  Р > 12

 

вот так ваши вольты можно привести к значению ацп А=V*1023/5

считаете для каждого давления в таблице свое А, потом подставляете А в непонятную формулу и сравниваете Р 

 

b707
Offline
Зарегистрирован: 26.05.2017

У меня такой же датчик используется в проекте, моя калибровка

P = 15 * (A -96) - результат в миллибарах - чтобы значения были целыми и точность не терялась

на участке от 0 до 6 бар врет не более 0.1 бар, что вполне устраивает
А больше 6 бар у меня не бывает

ВН
Offline
Зарегистрирован: 25.02.2016

т.е. если персчитать грубо в миллибары  получим 13,5*1000/923 = 14,6    , что близко к 15 , учитывая еще измерения вольтов и давления на коленке

Clario
Offline
Зарегистрирован: 27.01.2019

ВН пишет:

т.е. если персчитать грубо в миллибары  получим 13,5*1000/923 = 14,6    , что близко к 15 , учитывая еще измерения вольтов и давления на коленке

Ваша формула отлично подходит. Вот значения полученые на эталонном оборудовании метрологом.

Не могли бы вы объяснить как вы посчтиталь линейную интерполяцию и у вас вышло 13.5 и я так понимаю вы взяли 923 как верхнее значение ацп при 12 атм???

P, МПа

U, В

0

0,4944

0,1

0,8286

0,2

1,1605

0,3

1,4950

0,4

1,8285

0,5

2,1625

0,6

2,4955

0,7

2,8295

0,8

3,1610

0,9

3,4961

1,0

3,8280

1,1

4,1599

1,2

4,4904

1,3

4,8277

 

Гриша
Offline
Зарегистрирован: 27.04.2014

Clario пишет:

Не могли бы вы объяснить как вы посчтиталь линейную интерполяцию и у вас вышло 13.5 и я так понимаю вы взяли 923 как верхнее значение ацп при 12 атм???

уравнение прямой по 2 точкам  (вариант 2 )- выбрать правильные 2 точки, преобразовать в нужный вид, проверить.   

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

 

ВН
Offline
Зарегистрирован: 25.02.2016

Clario пишет:
Не могли бы вы объяснить как вы посчтиталь линейную интерполяцию и у вас вышло 13.5

В формулу от sadman41 подставляете 5в и находите Р, получаете давление на верхнем краю диапазона ацп

Clario пишет:
я так понимаю вы взяли 923 как верхнее значение ацп при 12 атм???

нет, весь ваш рабочий диапазон укладывается в напряжения от 0,5 до 5В, 0,5в это примерно 100 в значениях ацп, а 5в - 1023, т.е. весь диапазон в значениях ацп  1023-100 =923, а вес мл. разряда 13,5/923 

Когда мы пишем в формуле  (А-100), то отбрасываем незначащий начальный участок в 0,5В и остается 923 значащих разряда.

значение 923 просто попадает на 12атм, т.к. оно находится на 4,5в = 5в-0,5в, т.е. тоже   1023-100 =923. но по сути это число с другим смыслом, просто примерное значение ацп на 4,5в

Гриша
Offline
Зарегистрирован: 27.04.2014

ВН пишет:

нет, весь ваш рабочий диапазон укладывается в напряжения от 0,5 до 5В, 0,5в это примерно 100 в значениях ацп, а 5в - 1023, т.е. весь диапазон в значениях ацп  1023-100 =923, а вес мл. разряда 13,5/923 

Когда мы пишем в формуле  (А-100), то отбрасываем незначащий начальный участок в 0,5В и остается 923 значащих разряда.

значение 923 просто попадает на 12атм, т.к. оно находится на 4,5в = 5в-0,5в, т.е. тоже   1023-100 =923. но по сути это число с другим смыслом, просто примерное значение ацп на 4,5в

и в чем смысл выводить уравнение прямой, когда есть готовая формула?

ВН
Offline
Зарегистрирован: 25.02.2016

пожалуй я бы и сам не отказался узнать, почему пошел именно тем путем