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

IoT-gebaseerde waterkwaliteitssensor

Componenten en benodigdheden

Arduino UNO
× 1
Mannelijke/Vrouwelijke doorverbindingsdraden
× 1
HC-05 Bluetooth-module
× 1
RGB diffuse gemeenschappelijke kathode
× 1
Weerstand 330 ohm
× 3
Draaipotentiometer (generiek)
× 1
RGB LCD Shield Kit, 16x2 Character Display
× 1
Weerstand 1k ohm
× 1

Benodigde gereedschappen en machines

Draadstripper en snijder, 26-14 AWG massieve en gevlochten draden

Apps en online services

Arduino IDE
Ardutooth

Over dit project

Water is een essentiële hulpbron in ons dagelijks leven. We moeten er dus voor zorgen dat het van goede kwaliteit is voor gebruik.

Wat is TDS?

TDS staat voor Total Dissolved Solids. Zoals de naam al doet vermoeden, geeft het ons het aantal vaste stoffen opgelost in een bepaalde hoeveelheid water, in ppm (parts per million). TDS wordt berekend op basis van elektrische geleidbaarheid [S/m]. Hoe hoger de elektrische geleidbaarheid, hoe hoger de TDS-waarde. Hier is een lijst met de TDS-waarden van verschillende soorten water:

  • Zuiver water:80-150
  • Kraanwater:250-350
  • Grondwater:500-1000
  • Zeewater:ongeveer 30000

Zoals aanbevolen door de WHO (Wereldgezondheidsorganisatie), is de geschikte TDS van drinkwater lager dan 300. Het water van TDS lager dan 100 kan echter niet worden geconsumeerd, omdat het de essentiële mineralen zou missen. Water boven de 300 wordt als te "hard" beschouwd, omdat het meer mineralen bevat dan nodig is.

Normaal gesproken gebruiken we een TDS-pen om de TDS van water te meten. We kunnen de pen echter niet integreren met de Arduino. Er zijn dus speciale TDS-meters beschikbaar die kunnen worden geïntegreerd met de Arduino. Ik heb echter besloten om dit project te doen zonder het gebruik van de TDS-pen.

Het circuit

Arduino

  • Sluit 5V van Arduino aan op één stroomrail van het breadboard
  • Verbind de aarde van Arduino met de andere stroomrail van het breadboard
  • Sluit het ene uiteinde van een weerstand van 1k-ohm aan op aarde en het andere uiteinde op het breadboard. Verbind de analoge pin A0 op de Arduino met de weerstand. Sluit tot slot een draad aan op de weerstand en een andere draad op 5V. Verbind de vrije uiteinden van deze draden met de krokodillenklemmen.

LCD Weergave

  • Verbind de VSS-pin met de grondrail
  • Sluit de VDD-pin aan op de 5V-rail
  • Sluit V0 aan op de middelste pin van de potentiometer
  • Sluit de uiteinden van de potentiometer aan op 5V en aarde
  • Verbind RS-pin met Arduino-pin 7
  • Verbind de R/W-pin met de grondrail
  • Verbind de E-pin met Arduino-pin 8
  • Sluit D4 aan op Arduino pin 10
  • Sluit D5 aan op Arduino pin 11
  • Sluit D6 aan op Arduino pin 12
  • Sluit D7 aan op Arduino pin 13

HC-05 Bluetooth-module

  • Sluit de VCC-pin aan op de 5V-rail
  • Verbind GND-pin met aarde
  • Verbind de TX-pin met Arduino-pin 3 (dient als RX)
  • Verbind RX-pin met Arduino-pin 2 (dient als TX)

RGB-LED

  • Sluit de gemeenschappelijke kathode (langste pin) aan op aarde
  • Sluit de rode pin (rechts van kathodepin) aan op PWM-pin 9 op Arduino via een weerstand van 330 ohm
  • Verbind de groene pin (links van de kathodepin) met PWM-pin 6 op Arduino via een weerstand van 330 ohm
  • Verbind de blauwe pin (uiterst links) met PWM pin 5 op Arduino via een weerstand van 330 ohm

Afleiding voor het berekenen van weerstand tussen vrije draden

We zullen de wet van Ohm gebruiken, die stelt dat de spanning [V] door een weerstand met weerstand R recht evenredig is met de stroom [I] die door de weerstand vloeit. Met andere woorden, V =IR

Hoewel er een draad is aangesloten tussen de 2 weerstanden [R₁ - 1000-ohm, en R₂ - tussen de vrije draden] naar de analoge pin A0 op de Arduino, kan de weerstand van die draad worden verwaarloosd, en daarom kunnen we zeggen dat minimale stroom vloeit door de draad. Dus R₁ en R₂ zijn in serie geschakeld.

We kunnen dus zeggen dat V₁ =IR₁ en V₂ =IR₂ .

Daarom kunnen we zeggen V₂/V₁=IR₂/IR₁ =R₂/R₁

. We kennen V₂ echter niet.

We weten dat in een seriecombinatie van weerstanden, V₁+V₂ =V , waarbij V =5 Volt. Hieruit kunnen we V₂ =5-V₁ . krijgen

Ten slotte, de waarde die we hebben vervangen door V₂ in V₂/V₁ =R₂/R₁ , kunnen we een variabele buffer definiëren als 5-V₁/V₁ , in plaats van V₂/V₁ .

Ten slotte kunnen we zeggen dat R₂ =buffer * R₁ .

De werkende

We zullen de weerstand van het te testen water berekenen en daaruit zullen we de soortelijke weerstand verkrijgen. Hiervoor moeten we rekening houden met de lengte en het dwarsdoorsnede-oppervlak van onze container.

R =r L/A=> r =R A/L 

Uit de soortelijke weerstand kunnen we de geleidbaarheid verkrijgen

c =1/r 

Ten slotte verkrijgen we de TDS van de geleidbaarheid

TDS =c*7000 

Bibliotheken

  • Liquid crystal bibliotheek:https://www.arduinolibraries.info/libraries/liquid-crystal
  • Seriële softwarebibliotheek:https://pdfpunk.weebly.com/softwareserial-library-download.html

U kunt deze bibliotheken downloaden en toevoegen aan uw Arduino IDE, of u kunt naar Extra -> bibliotheken beheren -> zoeken naar de bibliotheek die u wilt downloaden

Code

  • Bewakingscode waterkwaliteit
Bewakingscode waterkwaliteitArduino
//include libraries#include #include //for bluetooth - maak een object met de naam BTserial, met RX-pin op 3 en TX-pin op 2SoftwareSerial BTserial(3,2); // RX | TX//decraratie van al onze variabelenfloat reads;int pin =A0;float vOut =0;//voltage drop over 2 pointsfloat vIn =5;float R1 =1000;float R2 =0;float buffer =0;float TDS;float R =0;//weerstand tussen de 2 draden vlotter r =0;//weerstand vlotter L =0,06;//afstand tussen de draden in mdubbel A =0,000154;//oppervlakte van de doorsnede van de draad in m^2float C =0;//geleiding in S/mfloat Cm =0;//geleiding in mS/cmint rPin =9;int bPin =5;int gPin =6;int rVal =255;int bVal =255;int gVal =255;// we zullen deze formule gebruiken om de soortelijke weerstand te krijgen na gebruik van de wet van ohm -> R =r L/A => r =RA/L// lcd-object maken van Liquid Crystal-bibliotheekLiquidCrystal lcd (7,8,10,11,12,13 ); void setup () {// initialiseer BT seriële en seriële monitor Serial.begin (9600); BTserial.begin(9600); // initialiseer lcd lcd.begin (16, 2); // stel rgb led-pinnen in (allemaal als pwm-pinnen op Arduino) als output pinMode (rPin, OUTPUT); pinMode (bPin, UITGANG); pinMode (gPin, UITGANG); pinMode(pin,INPUT); // Druk stilstaand bericht af op LCD lcd.print("Geleidbaarheid:");}void loop() { reads =analogRead(A0); vOut =leest*5/1023; Serial.println (leest);// Serial.println (vOut); buffer =(vIn/vOut)-1; R2 =R1*buffer; Seriële.println(R2); vertraging (500); //converteer spanning naar weerstand //Breng bovenstaande formule aan r =R2*A/L;//R=rL/A //converteer weerstand naar condictiviteit C =1/r; Cm =C*10; //converteer geleidbaarheid in mS/cm naar TDS TDS =Cm *700; // Zet de cursor van het LCD-scherm op de volgende rij lcd.setCursor (0,1); lcd.println(C); // toon corresponderende kleuren op rgb led volgens de analoge read if (leest <600) {if (leest <=300){ setColor (255, 0, 255); } if (leest> 200){ setColor( 200, 0, 255 ); } } else{ if (leest <=900) { setColor (0, 0, 255); } if (leest> 700) { setColor (0, 255, 255); } }//stuur gegevens naar de Ardutooth-app op de mobiele telefoon via bluetoothBTserial.print(C);BTserial.print(",");BTserial.print(TDS);BTserial.print(";");delay(500); }void setColor(int rood, int groen, int blauw){ analogWrite(rPin, 255 - rood); analogWrite(gPin, 255 - groen); analogWrite( bPin, 255 - blauw); }

Aangepaste onderdelen en behuizingen

Ik gebruikte een oude reageerbuis die ik moest maken om dit te maken. Ik prikte gaten aan beide uiteinden van de buis en stak draden van beide uiteinden in. Ten slotte, om de draden op hun plaats te houden, heb ik wat stopverf bevestigd.

Schema's


Productieproces

  1. Basis IoT – RaspberryPI HDC2010 hoe
  2. Raspberry PI-gebaseerd IoT-project dat DHT11-sensor verbindt
  3. Cellular IoT:Smart Garbage Can
  4. Helium luchtkwaliteitssensor
  5. Watersensor met hoge gevoeligheid op MCP3008
  6. Windows 10 IoT Core en SHT15
  7. Multitemperatuursensor
  8. Arduino-aangedreven waterfles
  9. Bewegingssensor-waterpistool
  10. Lokaal weerstation
  11. Op koolstof gebaseerde luchtkwaliteitssensor