Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

DIY Putwater Niveaumonitor met Arduino Nano, MPXV5010DP & OLED Display

Onderdelen en Benodigdheden

Arduino Nano R3×1
Freescale MPXV5010DP Differentiële Druksensor×1
0.96" OLED Scherm×1
MCP4725 DAC (Digitaal-Analog Omzetter)×1
Relais (algemeen)×1
Condensators 1uF, 0.01uF, 470pF (SMD)×1
Kunststof Projectdoos 110x85mm×1
Tygon Buis 3/32"×1

Over dit Project

Deze putwater niveaumonitor is gebouwd om te werken met een Ecobee RSM-01 invoerbord of mijn Home Monitor project. Een relais maakt standalone gebruik mogelijk. Ik zocht iets betrouwbaarders en makkelijker te installeren dan een ultrasoon sensor, en kwam de MPXV5010DP tegen: 0-5V uitgang voor 0-10 kPa (~1020mm waterkolom).

Voor locale indicatie koos ik een OLED module (goedkoop, helder, twee kleuren). Een relais biedt droge-contact uitgang. De MCP4725 DAC geeft een 0-5V uitgang met meer vermogen dan de sensor direct, en beschermt de sensor tegen bedradingschade. I2C communicatie maakt softwarematige uitbreiding makkelijk.

Ik ontwierp een custom PCB voor nette aansluitingen. De sensor wordt via Tygon buis verbonden met een koperen pijp die in de put loopt, zodat de monitor discret gemonteerd kan worden, weg van het water.

Code

#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; // ADC van MPXV5010
int v2 = 0; // DAC schaling
int v3 = 0; // mm conversie
int v4 = 0; // percentage diepte
int v5 = 0; // DAC output teruggelezen
int v6 = 0; // mV conversie
float v7 = 0; // inch conversie
int v8 = 0; // inches zonder decimalen

int offSet = 40;      // 0 kPa ADC waarde
int maxSet = 1015;    // 10 kPa ADC waarde
int maxHeight = 1020; // putdiepte in mm
int ranging = (maxHeight * 0.8) + offSet;
int alarmHeight = 12; // alarm hoogte in inches

#define analogPin2 1
float divisor = 25.4; // mm naar inches

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;           // mm
  v7 = v3 / divisor;                  // inches
  v8 = round(v7);                     // gehele inches
  v4 = map(v1, offSet, ranging, 0, 100); // percentage
  v5 = analogRead(analogPin);         // DAC teruglezen
  v6 = map(v5, 0, 1023, 0, 5000);     // mV
  
  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("PUTWATER");
  display.setTextSize(4);
  display.print(v8);
  display.setTextSize(2);
  display.println(" inch");
  display.display();
  delay(500);
}

void serial() {
  Serial.print(" PS analog: "); Serial.print(v1);
  Serial.print(" Hoogte: "); Serial.print(v3); Serial.print(" mm ");
  Serial.print(v4); Serial.print(" % ");
  Serial.print(" DAC mV: "); Serial.println(v6);
}

Schema

Ontworpen in Eagle 6.5.0 – schema bestand beschikbaar.

Productieproces

  1. Bloeddrukmeter: Ontwerp, Productie en Toekomstige Trends
  2. Bouw Een Raspberry Pi Luchtkwaliteit & Weerstation Met InfluxDB & Grafana
  3. Google Assistant installeren op een MATRIX Voice Raspberry Pi – Stap-voor-stap gids
  4. Weerstation – DIY Raspberry Pi Weerstation met Dropbox-upload
  5. Remote Hartslagmonitoringssysteem met AWS IoT-waarschuwingen
  6. Bouw een Windows IoT Core Rover met Raspberry Pi 2 – Beginner tot Gevorderde Gids
  7. GoPiGo v2 Uitbreiden op Windows 10 IoT Core voor Raspberry Pi 3
  8. JW Machine: Precisie CNC Contractfabricagediensten
  9. Precieze Draaibank Niveleren: Een Professionele Gids
  10. Variabele Scope in C#: Klasse-, Methode- en Blokniveau
  11. Gate-Level Modeling: van hardware-schema's naar Verilog-code