Оглавление:
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-13 06:58
Как узнать уровень воды в резервуаре для воды? Чтобы контролировать такие вещи, вы можете использовать датчик давления. В целом это очень полезное оборудование для промышленной автоматизации. Сегодня мы поговорим об этом семействе датчиков давления MPX специально для измерения давления. Я познакомлю вас с датчиком давления MPX5700 и выполню сборку образца с помощью ESP WiFi LoRa 32.
Я не буду использовать сегодня в цепи связь LoRa, ни WiFi, ни Bluetooth. Однако я выбрал этот ESP32, потому что в других видео я уже учил, как использовать все функции, которые обсуждаю сегодня.
Шаг 1: демонстрация
Шаг 2. Используемые ресурсы
• Датчик перепада давления MPX5700DP
• Потенциометр 10 кОм (или подстроечный резистор)
• Протоборд
• Соединительные провода
• USB-кабель
• ESP WiFi LoRa 32
• Воздушный компрессор (опция)
Шаг 3. Зачем измерять давление?
• Существует множество приложений, в которых давление является важной регулирующей переменной.
• Мы можем задействовать пневматические или гидравлические системы управления.
• Медицинское оборудование.
• Робототехника.
• Контроль производственных или экологических процессов.
• Измерение уровня в резервуарах с жидкостью или газом.
Шаг 4: Семейство датчиков давления MPX
• Они являются датчиками давления в электрическом напряжении.
• Они основаны на пьезорезистивном датчике, в котором сжатие преобразуется в изменение электрического сопротивления.
• Существуют версии, способные измерять небольшие перепады давления (от 0 до 0,04 атм) или большие колебания (от 0 до 10 атм).
• Они появляются в нескольких пакетах.
• Они могут измерять абсолютное давление (относительно вакуума), дифференциальное давление (разницу между двумя давлениями, p1 и p2) или манометрическое (относительно атмосферного давления).
Шаг 5: MPX5700DP
• Серия 5700 оснащена датчиками абсолютного, дифференциального и избыточного давления.
• MPX5700DP может измерять перепад давления от 0 до 700 кПа (приблизительно 7 атм).
• Выходное напряжение варьируется от 0,2 В до 4,7 В.
• Его мощность от 4,75 В до 5,25 В
Шаг 6: для демонстрации
• На этот раз мы не будем использовать этот датчик на практике; мы только смонтируем его и проведем некоторые измерения в качестве демонстрации.
• Для этого мы будем использовать прямой воздушный компрессор для создания давления на входе высокого давления (p1) и получения разницы по отношению к местному атмосферному давлению (p2).
• MPX5700DP - однонаправленный датчик, что означает, что он измеряет положительные разности, где p1 всегда должен быть больше или равен p2.
• p1> p2 и разница будет p1 - p2
• Существуют двусторонние дифференциальные датчики, которые могут оценивать отрицательную и положительную разницу.
• Хотя это всего лишь демонстрация, мы могли бы легко использовать приведенные здесь принципы для управления, например, давлением в воздушном резервуаре, питаемом от этого компрессора.
Шаг 7: Калибровка АЦП ESP
• Поскольку мы знаем, что аналого-цифровое преобразование ESP не является полностью линейным и может варьироваться от одной SoC к другой, давайте начнем с простого определения его поведения.
• Используя потенциометр и мультиметр, мы измерим напряжение, приложенное к AD, и свяжем его с указанным значением.
• С помощью простой программы для чтения AD и сбора информации в таблице мы смогли определить кривую его поведения.
Шаг 8: Расчет давления
• Хотя производитель предоставляет нам функцию с поведением компонента, всегда рекомендуется проводить калибровку, когда мы говорим о проведении измерений.
• Однако, поскольку это всего лишь демонстрация, мы будем напрямую использовать функцию из таблицы. Для этого мы будем манипулировать им таким образом, чтобы получить давление как функцию от значения АЦП.
* Помните, что доля напряжения, приложенного к АЦП опорным напряжением, должна иметь то же значение, что и значение АЦП, считываемое общим АЦП. (Без учета поправки)
Шаг 9: Сборка
• Чтобы подключить датчик, найдите выемку в одной из его клемм, которая указывает на контакт 1.
• Отсчет оттуда:
Контакт 1 обеспечивает выходной сигнал (от 0 В до 4,7 В)
Контакт 2 является опорным. (GND)
Контакт 3 для питания. (Против)
• Поскольку выходной сигнал составляет 4,7 В, мы будем использовать делитель напряжения, чтобы максимальное значение было эквивалентно 3 В 3. Для этого мы сделали регулировку с помощью потенциометра.
Шаг 10: Исходный код
Исходный код: #Includes и #defines
// Библиотеки для использования для отображения oLED # include // Необязательно для Arduino 1.6.5 и последующего #include "SSD1306.h" // или сообщения #include "SSD1306Wire.h" // Остальные выводы для OLED-подключений и других ESP32 pelos seguintes 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); // Установка и настройка изображения для объекта "display" const int amostras = 10000; // число колетадных амостов для средств массовой информации const int pin = 13; // название символа const float fator_atm = 0.0098692327; // преобразователь атмосферы const float fator_bar = 0.01; // преобразователь для бара const float fator_kgf_cm2 = 0.0101971621; // преобразователь кгс / см2
Исходный код: Setup ()
void setup () {pinMode (контакт, ВХОД); // аналоговая лейтмотив Serial.begin (115200); // начальный серийный номер // начальный дисплей display.init (); display.flipScreenVertical (); // Vira a tela verticalmente}
Исходный код: Loop ()
void loop () {float medidas = 0.0; // переменная для манипуляций как medidas float pressao = 0.0; // varável para armazenar o valor da pressão // inicia a coleta de amostras do ADC for (int i = 0; i
Исходный код: функция для расчета давления в кПа.
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 DESVIOS (DO erro) 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 tenão aplicada no AD e valor lido * / return 4.821224180510e-02 + 1.180826610901e-03 * x + -6.640183463236e + -07 * x * 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 * х * х * х * х; }
Шаг 11: файлы
Загрузите файлы:
Я НЕТ