Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

UltraV:Ein tragbares UV-Index-Messgerät

Komponenten und Verbrauchsmaterialien

Arduino Nano R3
× 1
Texas Instruments ML-8511
× 1
128x64 OLED-Display
× 1
MT3608 DC-DC Überbrückungswandler
× 1
CR2 (3V) Batterie
× 1
CR2-Batteriehalter
× 1

Über dieses Projekt

Da ich mich aufgrund eines Hautproblems nicht der Sonne aussetzen konnte, nutzte ich die Zeit, die ich am Strand verbracht hätte, um ein UV-Messgerät zu bauen. UltraV.

Es basiert auf einem Arduino Nano rev3, mit einem UV-Sensor, einem DC/DC-Wandler zur Erhöhung der 3-V-Batteriespannung und einem kleinen OLED-Display. Mein Hauptziel war es, es tragbar zu halten, damit ich den UV-Index jederzeit und an jedem Ort leicht erkennen kann.

Schritt 1:Teile und Komponenten

  • Mikrocontroller Arduino Nano rev.3
  • ML8511 UV-Sensor
  • 128×64 OLED-Display (SSD1306)
  • MT3608 DC-DC-Aufwärtswandler
  • CR2-Batterie
  • CR2-Batteriehalter
  • Wechsel
  • Gehäuse

Schritt 2:Der Sensor

Der ML8511 (Lapis Semiconductors) ist ein UV-Sensor, der sich zur Erfassung der UV-Intensität im Innen- oder Außenbereich eignet. Der ML8511 ist mit einem internen Verstärker ausgestattet, der je nach UV-Intensität Fotostrom in Spannung umwandelt. Diese einzigartige Funktion bietet eine einfache Schnittstelle zu externen Schaltungen wie ADC. Im Power-Down-Modus beträgt der typische Standby-Strom 0,1 µA, was eine längere Batterielebensdauer ermöglicht.

Funktionen:

  • Photodiode empfindlich gegenüber UV-A und UV-B
  • Eingebetteter Operationsverstärker
  • Analoger Spannungsausgang
  • Niedriger Versorgungsstrom (300µA typ.) und niedriger Standby-Strom (0.1µA typ.)
  • Kleines und dünnes SMD-Gehäuse (4,0 mm x 3,7 mm x 0,73 mm, 12-Pin-Keramik-QFN)

Leider hatte ich keine Chance ein UV-transparentes Material zum Schutz des Sensors zu finden. Jede Art von transparenter Abdeckung, die ich getestet habe (Kunststoff, Glas usw.) dämpfte die UV-Messung. Die bessere Wahl scheint Quarzglas zu sein, aber ich habe keins zu einem vernünftigen Preis gefunden, also habe ich mich entschieden, den Sensor außerhalb der Box im Freien zu lassen.

Schritt 3:Operationen

Um eine Messung durchzuführen, schalten Sie das Gerät einfach ein und richten Sie es einige Sekunden lang auf die Sonne aus, wobei Sie es auf die Richtung der Sonnenstrahlen ausrichten. Dann schauen Sie auf das Display:Der Index auf der linken Seite zeigt immer den Momentanwert (einer alle 200 ms), während der Messwert auf der rechten Seite den maximalen Messwert während dieser Sitzung darstellt:den brauchen Sie.

Im unteren linken Teil des Displays wird auch die WHO-äquivalente Nomenklatur (NIEDRIG, MODERATE, HOCH, SEHR HOCH, EXTREM) für den gemessenen UV-Index angezeigt.

Schritt 4:Batteriespannung und Messwert

Ich wähle eine CR2-Batterie aufgrund ihrer Größe und Kapazität (800 mAh). Ich habe UltraV den ganzen Sommer über verwendet und die Batterie liest immer noch 2,8 V, daher bin ich mit der Wahl recht zufrieden. Im Betrieb verbraucht der Stromkreis etwa 100 mA, aber eine Messwertmessung dauert nicht länger als einige Sekunden. Da die Nennspannung der Batterie 3 V beträgt, habe ich einen DC-DC-Aufwärtswandler hinzugefügt, um die Spannung auf 9 Volt zu bringen, und ihn an den Vin-Pin angeschlossen.

Um die Batteriespannungsanzeige auf dem Display zu haben, habe ich einen Analogeingang (A2) verwendet. Arduino-Analogeingänge können verwendet werden, um eine Gleichspannung zwischen 0 und 5 V zu messen, aber diese Technik erfordert eine Kalibrierung. Um die Kalibrierung durchzuführen, benötigen Sie ein Multimeter. Versorgen Sie den Stromkreis zuerst mit Ihrer letzten Batterie (dem CR2) und verwenden Sie nicht die USB-Stromversorgung des Computers; Messen Sie die 5V auf dem Arduino vom Regler (auf dem Arduino 5V-Pin):Diese Spannung wird standardmäßig für die Arduino-ADC-Referenzspannung verwendet. Tragen Sie nun den gemessenen Wert wie folgt in die Skizze ein (angenommen, ich lese 5.023):

Spannung =((Long)Summe / (Long)NUM_SAMPLES * 5023) / 1024.0; 

In der Skizze nehme ich die Spannungsmessung als Durchschnitt über 10 Abtastungen.

Schritt 5:Schaltplan und Anschlüsse

Schritt 6:Software

Für das Display habe ich die U8g2lib verwendet, die für diese Art von OLED-Displays sehr flexibel und leistungsstark ist und eine große Auswahl an Schriftarten und gute Positionierungsfunktionen ermöglicht.

In Bezug auf die Spannungsmessung vom ML8511 habe ich den 3,3-V-Arduino-Referenzpin (genau innerhalb von 1%) als Basis für den ADC-Wandler verwendet. Durch eine Analog-Digital-Wandlung am 3,3-V-Pin (indem Sie ihn an A1 anschließen) und dann diesen Messwert mit dem Messwert vom Sensor vergleichen, können wir einen lebensechten Messwert extrapolieren, unabhängig von der VIN ( solange es über 3,4 V liegt).

int uvLevel =meanAnalogRead(UVOUT);int refLevel =meanAnalogRead(REF_3V3);float outputVoltage =3.3 / refLevel * uvLevel; 

Laden Sie den vollständigen Code unter dem folgenden Link herunter.

UltraV_OLED.ino.zip

Schritt 7:Gehäuse

Nach mehreren (schlechten) Tests zum manuellen Schneiden des rechteckigen Schaufensters an einer handelsüblichen Kunststoffbox entschied ich mich, meine eigene dafür zu entwerfen. Also habe ich mit einer CAD-Anwendung eine Box entworfen und um diese so klein wie möglich zu halten, habe ich die CR2-Batterie außen auf der Rückseite montiert (mit einem auf die Box selbst geklebten Batteriehalter).

Laden Sie die STL-Datei für den Gehäusekoffer über den folgenden Link herunter.

UltraV.stl.zip

Schritt 8:Mögliche zukünftige Verbesserungen

  • Verwenden Sie ein UV-Spektrometer, um die tatsächlichen UV-Index-Werte in Echtzeit unter verschiedenen Bedingungen zu messen (UV-Spektrometer sind sehr teuer);
  • Gleichzeitig die Ausgabe des ML8511 mit dem Arduino-Mikrocontroller aufzeichnen;
  • Schreiben Sie einen Algorithmus, um die Ausgabe des ML8511 mit dem tatsächlichen UVI-Wert in Echtzeit unter einer Vielzahl von atmosphärischen Bedingungen in Beziehung zu setzen.

Schritt 10:Credits

  • Carlos Orts:https://create.arduino.cc/projecthub/McOrts/mobil...
  • Arduino-Forum:http://forum.arduino.cc/index.php?topic=3922.0
  • Elektronik starten:https://startingelectronics.org/articles/arduino/...
  • U8g2lib:https://github.com/olikraus/u8g2/wiki/u8g2referen...
  • Weltgesundheitsorganisation, UV-Index:http://www.who.int/uv/intersunprogramme/activitie...
https://github.com/olikraus/u8g2/wiki/u8g2reference

Code

  • UltraV
UltraVC/C++
Code
 /* Fabio Marzocca @ 2018 Analog-Digital-Wandlungen basieren vollständig auf VCC. Wir gehen davon aus, dass dies 5 V sind, aber wenn das Board über USB mit Strom versorgt wird, kann dies bis zu 5,25 V oder bis zu 4,75 V betragen:http://en.wikipedia.org/wiki/USB#Power Wegen dieses unbekannten Fensters, das es macht der ADC in den meisten Fällen ziemlich ungenau. Um dies zu beheben, verwenden wir die sehr genaue Onboard-3,3-V-Referenz (genau innerhalb von 1%). Indem wir also einen ADC am 3,3-V-Pin (A1) durchführen und diesen dann mit dem Messwert des Sensors vergleichen, können wir einen lebensechten Messwert extrapolieren, unabhängig von der VIN (solange er über 3,4 V liegt). v. 2.0.0 - Juli 2018 - von 16x2 LCD auf OLEDv umgezogen. 2.0.1 - Sept. 2018 - Batterie lesen Funktion geändert*/#include #include #include U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0, /* clock=*/ SCL, /* data =*/ SDA, /* zurücksetzen=*/ U8X8_PIN_NONE); // Alle Boards ohne Reset des Displays#define FIRST_ROW_Y 16#define FIRST_ROW_X 16#define BOX_H 38//Hardware Pindefinitionenconst int UVOUT =A0; //Ausgabe vom Sensorconst int REF_3V3 =A1; // 3,3 V Strom auf dem Arduino Boardconst int VBATT =A2; // Batteriespannungfloat maxUV =0; // Max UV-Index readvoid setup () {pinMode (UVOUT, INPUT); pinMode (REF_3V3, EINGANG); pinMode (VBATT, EINGANG); u8g2.begin();}void loop(){ u8g2.firstPage(); do { int uvLevel =AverageAnalogRead (UVOUT); int refLevel =AverageAnalogRead(REF_3V3); // Verwenden Sie den 3,3-V-Power-Pin als Referenz, um einen sehr genauen Ausgangswert vom Sensor Float zu erhalten outputVoltage =3,3 / refLevel * uvLevel; float uvIntensity =mapfloat(outputVoltage, 0.99, 2.6, 0.0, 15.0); // Konvertieren Sie die Spannung in ein UV-Intensitätsniveau readBattery (); if (maxUV =0) &&(categ <3)) { strcpy (strCat, "LOW"); } else if ((categ>=3) &&(categ <6)) { strcpy(strCat, "MODERATE"); } else if ((categ>=6) &&(categ <8)) { strcpy(strCat, "HIGH!"); } else if ((categ>=8) &&(categ <10)) { strcpy(strCat, "SEHR HOCH!"); } else if (categ>=11) { strcpy(strCat, "EXTREM!"); } u8g2.setCursor(0,64); u8g2.print(strCat); } // Ermittelt einen Durchschnitt der Messwerte an einem bestimmten Pin // Gibt den Durchschnitt zurück. unsigned int runningValue =0; for(int x =0; x  

Herstellungsprozess

  1. Spannungsteiler
  2. Kartoffelbatterie
  3. Was ist ein Messgerät?
  4. Multimeter
  5. Batterieaufbau
  6. Was ist ein tragbares Punktschweißgerät?
  7. Tragbare KMG-Maschine – stationär oder tragbar?
  8. Batterie in Autos verwendet verstehen
  9. Verschiedene Möglichkeiten zum Testen einer Lichtmaschine
  10. 7 Anzeichen für eine schlechte oder defekte Lichtmaschine