Съдържание:

Научете тук за изключително важен сензор!: 11 стъпки
Научете тук за изключително важен сензор!: 11 стъпки

Видео: Научете тук за изключително важен сензор!: 11 стъпки

Видео: Научете тук за изключително важен сензор!: 11 стъпки
Видео: Beelink GK Mini часть 2 - Autoboot, Debian 11, Supervised Home Assistant 2024, Ноември
Anonim
Научете тук за изключително важен сензор!
Научете тук за изключително важен сензор!

Как можете да разберете за нивото на водата в резервоара за вода? За да наблюдавате този тип неща, можете да използвате сензор за налягане. Това е много полезно оборудване за индустриална автоматизация като цяло. Днес ще говорим за това точно семейство сензори за налягане MPX, специално за измерване на налягането. Ще ви запозная със сензора за налягане MPX5700 и ще извърша пробен монтаж, използвайки ESP WiFi LoRa 32.

Няма да използвам LoRa комуникация във веригата днес, нито WiFi, нито Bluetooth. Избрах обаче този ESP32, защото вече съм учил в други видеоклипове как да използвам всички функции, които обсъждам днес.

Стъпка 1: Демонстрация

Демонстрация
Демонстрация
Демонстрация
Демонстрация

Стъпка 2: Използвани ресурси

Използвани ресурси
Използвани ресурси

• MPX5700DP Сензор за диференциално налягане

• 10k потенциометър (или тримпот)

• Protoboard

• Свързващи проводници

• USB кабел

• ESP WiFi LoRa 32

• Въздушен компресор (по избор)

Стъпка 3: Защо да измервате налягането?

Защо да измерваме налягането?
Защо да измерваме налягането?

• Има много приложения, където налягането е важна контролна променлива.

• Можем да включим пневматични или хидравлични системи за управление.

• Медицински инструменти.

• Роботика.

• Контрол на промишлени или екологични процеси.

• Измерване на нивото в резервоари за течност или газ.

Стъпка 4: Семейство сензори за налягане MPX

Семейството на сензорите за налягане MPX
Семейството на сензорите за налягане MPX

• Те са преобразуватели на налягане в електрическо напрежение.

• Те се основават на пиезо резистивен сензор, при който компресията се преобразува във вариация на електрическото съпротивление.

• Има версии, способни да измерват малки разлики в налягането (от 0 до 0,04 атм) или големи вариации (от 0 до 10 атм).

• Те се появяват в множество пакети.

• Те могат да измерват абсолютно налягане (спрямо вакуума), диференциално налягане (разликата между две налягания, р1 и р2) или манометър (спрямо атмосферното налягане).

Стъпка 5: MPX5700DP

MPX5700DP
MPX5700DP
MPX5700DP
MPX5700DP

• Серията 5700 разполага с абсолютни, диференциални и манометрични сензори.

• MPX5700DP може да измерва диференциално налягане от 0 до 700kPa (приблизително 7atm).

• Изходното напрежение варира от 0.2V до 4.7V.

• Мощността му е от 4.75V до 5.25V

Стъпка 6: За демонстрацията

За демонстрацията
За демонстрацията

• Този път няма да правим практическо приложение с този сензор; ние само ще го монтираме и ще извършим някои измервания като демонстрация.

• За това ще използваме директен въздушен компресор, за да приложим налягане на входа на високо налягане (p1) и да получим разликата спрямо местното атмосферно налягане (p2).

• MPX5700DP е еднопосочен сензор, което означава, че измерва положителните разлики, когато p1 винаги трябва да бъде по -голямо или равно на p2.

• p1> p2 и разликата ще бъде p1 - p2

• Има двупосочни диференциални сензори, които могат да оценят отрицателните и положителните разлики.

• Въпреки че това е само демонстрация, можем лесно да използваме принципите тук, за да контролираме например налягането във въздушен резервоар, захранван от този компресор.

Стъпка 7: Калибриране на ESP ADC

Калибриране на ESP ADC
Калибриране на ESP ADC
Калибриране на ESP ADC
Калибриране на ESP ADC
Калибриране на ESP ADC
Калибриране на ESP ADC

• Тъй като знаем, че аналогово-цифровото преобразуване на ESP не е напълно линейно и може да варира от един до друг SoC, нека започнем с просто определяне на поведението му.

• С помощта на потенциометър и мултицет ще измерим напрежението, приложено към AD, и ще го свържем с посочената стойност.

• С проста програма за четене на AD и събиране на информацията в таблица, успяхме да определим кривата на нейното поведение.

Стъпка 8: Изчисляване на налягането

Изчисляване на налягането
Изчисляване на налягането
Изчисляване на налягането
Изчисляване на налягането

• Въпреки че производителят ни предоставя функцията с поведението на компонента, винаги е препоръчително да се извърши калибриране, когато говорим за извършване на измервания.

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

* Не забравяйте, че частта от напрежението, приложено към ADC от референтното напрежение, трябва да има същата стойност като ADC, отчетена от общия ADC. (Без да се взема предвид корекцията)

Стъпка 9: Монтаж

Монтаж
Монтаж
Монтаж
Монтаж

• За да свържете сензора, потърсете прореза в един от неговите изводи, който показва щифт 1.

• Отброяване от там:

Пин 1 осигурява изходен сигнал (от 0V до 4.7V)

Пин 2 е препратката. (GND)

Пин 3 за захранване. (Срещу)

• Тъй като изходният сигнал е 4.7V, ще използваме делител на напрежение, така че максималната стойност да е еквивалентна на 3V3. За целта направихме настройката с потенциометъра.

Стъпка 10: Изходен код

Изходен код
Изходен код
Изходен код
Изходен код

Изходен код: #Включва и #определя

// Bibliotecas para utilização do display oLED #include // Necessário apenas para o Arduino 1.6.5 e posterior #include "SSD1306.h" // o mesmo que #include "SSD1306Wire.h" // Os pinos do OLED estão conectados ao ESP32 pelos определя GPIO's: // OLED_SDA - GPIO4 // OLED_SCL - GPIO15 // OLED_RST - GPIO16 #define SDA 4 #define SCL 15 #define RST 16 // RST deve ser ajustado por software

Източник: Глобални променливи и константи

SSD1306 дисплей (0x3c, SDA, SCL, RST); // Instanciando e ajustando os pinos do objeto "display" const int amostras = 10000; // número de amostras coletadas para a média const int pin = 13; // pino de leitura const float fator_atm = 0.0098692327; // fator de converão para atmosferas const float fator_bar = 0.01; // fator de converão para bar const float fator_kgf_cm2 = 0.0101971621; // фактор за разговори kgf/cm2

Изходен код: Настройка ()

void setup () {pinMode (pin, INPUT); // pino de leitura analógica Serial.begin (115200); // iniciando сериен // Inicia o display display.init (); display.flipScreenVertical (); // Vira a tela verticalmente}

Изходен код: Loop ()

void loop () {float medidas = 0.0; // variável para manipular като medidas float pressao = 0.0; // variável para armazenar o valor da pressão // inicia a coleta de amostras do ADC for (int i = 0; i (5000)) // се показва за 5 секунди {// Limpa или буфер за дисплей display.clear (); // ajusta o alinhamento за esquerda display.setTextAlignment (TEXT_ALIGN_LEFT); // добавяне на фон за Arial 10 display.setFont (ArialMT_Plain_16); // Escreve no buffer do display a pressao display.drawString (0, 0, String (int (pressao)) + "kPa"); display.drawString (0, 16, String (pressao * fator_atm) + "atm"); display.drawString (0, 32, String (pressao * fator_kgf_cm2) + "kgf/cm2"); // не извиквам буфер за доблест до ADC display.drawString (0, 48, "adc:" + String (int (medidas))); } else // се показва за 5 секунди, излагане на тела в инцидент {// ограничаване на буфер до display display.clear (); // Ajusta o alinhamento para centralizado display.setTextAlignment (TEXT_ALIGN_CENTER); // добавяне на фон за Arial 16 display.setFont (ArialMT_Plain_16); // изкривяване без буфер display.drawString (64, 0, "Sensor Pressão"); // escreve няма буфер display.drawString (64, 18, "Diferencial"); // добавяне на фон за Arial 10 display.setFont (ArialMT_Plain_10); // изкривяване без буфер display.drawString (64, 44, "ESP-WiFi-Lora"); } display.display (); // прехвърляне на буфер пара или забавяне на дисплея (50); }

Изходен код: Функция, която изчислява налягането в kPa

float calculaPressao (float medida) {// Calcula a pressão com o // valor do AD corrigido pela função corrigeMedida () // Esta função foi escrita de acordo com dados do fabricante // e NÃO LEVA EM CONSIDERAÇÃO OS POSSÍVEIS DOS грешка) return ((corrigeMedida (medida) / 3.3) - 0.04) / 0.0012858; }

- ИЗОБРАЖЕНИЯ

Изходен код: Функция, която коригира стойността на AD

float corrigeMedida (float x) { / * Esta função foi obtida através da relação entre a tensão aplicada no AD e valor lido * / return 4.821224180510e-02 + 1.180826610901e-03 * x + -6.640183463236e-07 * x * 5.235532597676e-10 * x * x * x + -2.020362975028e-13 * x * x * x * x + 3.809807883001e-17 * x * x * x * x * x + -2.896158699016e-21 * x * x * x * x * x * x; }

Стъпка 11: Файлове

Изтеглете файловете:

PDF

АЗ НЕ

Препоръчано: