Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

DIY монитор уровня воды в коллекторе на Arduino Nano, MPXV5010DP и OLED

Компоненты и материалы

Arduino Nano R3×1
Датчик давления Freescale MPXV5010DP×1
OLED-дисплей 0.96"×1
DAC MCP4725×1
Реле×1
Конденсаторы 1 мкФ, 0.01 мкФ, 470 пФ (SMD)×1
Пластиковый короб 110×85 мм×1
Трубка Tygon 3/32"×1

О проекте

Монитор уровня для входа Ecobee RSM-01 или автономной работы. Давление от датчика MPXV5010DP (0–5 В на 0–10 кПа ≈ 1020 мм вод. ст.) передаётся через трубку к медной трубе в коллекторе. Это надежнее ультразвука и позволяет удалить электронику от воды.

DIY монитор уровня воды в коллекторе на Arduino Nano, MPXV5010DP и OLED
DIY монитор уровня воды в коллекторе на Arduino Nano, MPXV5010DP и OLED

Для локального индикатора использован двухцветный OLED. Добавлено реле для сухого контакта и DAC MCP4725 для усиленного 0–5 В выхода (защита датчика). Всё на I2C — легко адаптировать под другой Arduino.

DIY монитор уровня воды в коллекторе на Arduino Nano, MPXV5010DP и OLED

Исходный код (C/C++)

#include <SPI.h>
#include <Wire.h>
#include <Adafruit_SSD1306.h>
#include <Adafruit_GFX.h>
#include <Adafruit_MCP4725.h>
#include <math.h>

#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);
#if (SSD1306_LCDHEIGHT != 64)
#error("Height incorrect, please fix Adafruit_SSD1306.h!");
#endif

Adafruit_MCP4725 dac;
int relayPin = 5;
int analogPin = 0;
int v1 = 0, v2 = 0, v3 = 0, v4 = 0, v5 = 0, v6 = 0, v8 = 0;
float v7 = 0;
int offSet = 40;
int maxSet = 1015;
int maxHeight = 1020;
int ranging = (maxHeight * 0.8) + offSet;
int alarmHeight = 12; // дюймы
int analogPin2 = 1;
float divisor = 25.4;

void setup() {
  Serial.begin(9600);
  Serial.println("DAC test with DP sensor");
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  display.clearDisplay();
  dac.begin(0x60);
  pinMode(relayPin, OUTPUT);
  digitalWrite(relayPin, HIGH);
}

void loop() {
  v1 = analogRead(analogPin2);
  delay(1000);
  if (v1 < offSet) v1 = offSet;
  v2 = map(v1, offSet, maxSet, 0, 4095);
  dac.setVoltage(v2, false);
  v3 = (v1 - offSet) / 0.8;
  v7 = v3 / divisor;
  v8 = round(v7);
  v4 = map(v1, offSet, ranging, 0, 100);
  v5 = analogRead(analogPin);
  v6 = map(v5, 0, 1023, 0, 5000);
  printoled();
  serial();
}

void printoled() {
  display.clearDisplay();
  if (v8 > alarmHeight) {
    display.invertDisplay(true);
    digitalWrite(relayPin, LOW);
  } else {
    display.invertDisplay(false);
    digitalWrite(relayPin, HIGH);
  }
  display.setTextSize(2);
  display.setTextColor(WHITE);
  display.setCursor(0, 0);
  display.println("SUMP LEVEL");
  display.setTextSize(4);
  display.print(v8);
  display.setTextSize(2);
  display.println(" inches");
  display.display();
  delay(500);
}

void serial() {
  Serial.print(" PS analog input: "); Serial.print(v1);
  Serial.print(" Height: "); Serial.print(v3); Serial.print(" mm ");
  Serial.print(v4); Serial.print(" %");
  Serial.print(" Converted voltage: "); Serial.print(v6); Serial.println(" mV");
}

Схема (Eagle 6.5.0)

Файл схемы: sump%20level.sch

Производственный процесс

  1. Область видимости переменных в C#: класс, метод и блок
  2. Сборка станции качества воздуха и погоды на Raspberry Pi с InfluxDB и Grafana
  3. Установка Google Assistant на MATRIX Voice Raspberry Pi — пошаговое руководство
  4. Weather Monitor — DIY метеостанция на Raspberry Pi с загрузкой в Dropbox
  5. Система удалённого мониторинга сердечного ритма с алертами AWS IoT
  6. Построение ровера на Windows IoT Core с Raspberry Pi 2 — Руководство от новичка к профи
  7. Расширение GoPiGo v2 на Windows 10 IoT Core для Raspberry Pi 3
  8. Гейтовое моделирование в Verilog: от схем к коду
  9. JW Machine: услуги точного контрактного производства по чертежам ЧПУ
  10. Точная выверка токарного станка: профессиональное руководство