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

UltraV:een draagbare UV-indexmeter

Componenten en benodigdheden

Arduino Nano R3
× 1
Texas Instruments ML-8511
× 1
128x64 OLED-scherm
× 1
MT3608 DC-DC stup-up converter
× 1
CR2 (3v) batterij
× 1
CR2 batterijhouder
× 1

Over dit project

Omdat ik door een dermatologisch probleem mezelf niet aan de zon kon blootstellen, gebruikte ik de tijd die ik op het strand zou hebben doorgebracht om een ​​ultraviolette stralingsmeter te bouwen. UltraV.

Het is gebouwd op een Arduino Nano rev3, met een UV-sensor, een DC/DC-converter om de 3v-batterijspanning te verhogen en een klein OLED-display. Mijn belangrijkste doel was om het draagbaar te houden, zodat ik de UV-index op elk moment en op elke plaats gemakkelijk kon kennen.

Stap 1:Onderdelen en componenten

  • Microcontroller Arduino Nano rev.3
  • ML8511 UV-sensor
  • 128×64 OLED-display (SSD1306)
  • MT3608 DC-DC step-up
  • CR2-batterij
  • CR2 batterijhouder
  • Overschakelen
  • Behuizingskoffer

Stap 2:De sensor

De ML8511 (Lapis Semiconductors) is een UV-sensor, die geschikt is voor het meten van UV-intensiteit binnen of buiten. De ML8511 is uitgerust met een interne versterker, die fotostroom omzet in spanning afhankelijk van de UV-intensiteit. Deze unieke functie biedt een gemakkelijke interface naar externe circuits zoals ADC. In de uitschakelmodus is de typische stand-bystroom 0,1 µA, waardoor de batterij langer meegaat.

Kenmerken:

  • Fotodiode gevoelig voor UV-A en UV-B
  • Ingebouwde operationele versterker
  • Analoge spanningsuitgang
  • Lage voedingsstroom (300 µA typ.) en lage standby-stroom (0,1 µA typ.)
  • Klein en dun pakket voor opbouwmontage (4,0 mm x 3,7 mm x 0,73 mm, 12-pins keramische QFN)

Helaas heb ik geen UV-transparant materiaal kunnen vinden om de sensor te beschermen. Elke vorm van transparante hoes die ik heb getest (plastic, glas, enz.) verzwakte de UV-meting. De betere keuze lijkt kwarts-gesmolten silicaglas te zijn, maar ik heb er geen gevonden voor een redelijke prijs, dus besloot ik de sensor buiten de doos te laten, in de open lucht.

Stap 3:Operaties

Om een ​​meting te doen, zet u het apparaat aan en richt u het enkele seconden op de zon, waarbij u het in de richting van de zonnestralen houdt. Kijk dan op het display:de index aan de linkerkant toont altijd de instant-maat (één per 200 ms), terwijl de meting aan de rechterkant de maximale meting is die tijdens deze sessie is genomen:dat is degene die je nodig hebt.

In de linkerbenedenhoek van het display wordt ook de WHO-equivalente nomenclatuur (LAAG, GEMIDDELD, HOOG, ZEER HOOG, EXTREEM) voor de gemeten UV-index vermeld.

Stap 4:Batterijspanning en aflezen

Ik kies een CR2-batterij, vanwege zijn grootte en capaciteit (800 mAh). Ik heb de hele zomer UltraV gebruikt en de batterij geeft nog steeds 2,8 v aan, dus ik ben best tevreden met de keuze. Wanneer het in werking is, verbruikt het circuit ongeveer 100 mA, maar een uitleesmeting duurt niet langer dan enkele seconden. Omdat de nominale spanning van de batterij 3v is, heb ik een DC-DC step-up converter toegevoegd om de spanning op 9 volt te brengen en deze op de Vin-pin aangesloten.

Om de indicatie van de accuspanning op het display te krijgen heb ik een analoge ingang (A2) gebruikt. Arduino analoge ingangen kunnen worden gebruikt om gelijkspanning tussen 0 en 5V te meten, maar deze techniek vereist een kalibratie. Om de kalibratie uit te voeren, heeft u een multimeter nodig. Voed eerst het circuit met uw laatste batterij (de CR2) en gebruik niet de USB-stroom van de computer; meet de 5V op de Arduino vanaf de regelaar (te vinden op de Arduino 5V-pin):deze spanning wordt standaard gebruikt voor de Arduino ADC-referentiespanning. Zet nu de gemeten waarde als volgt in de schets (stel ik lees 5.023):

spanning =((long)sum / (long)NUM_SAMPLES * 5023) / 1024.0; 

In de schets neem ik de spanningsmeting als een gemiddelde van 10 monsters.

Stap 5:Schema en verbindingen

Stap 6:Software

Voor de weergave heb ik de U8g2lib gebruikt, die zeer flexibel en krachtig is voor dit soort OLED-schermen, waardoor een ruime keuze aan lettertypen en goede positioneringsfuncties mogelijk is.

Wat betreft de spanningsmeting van de ML8511, gebruikte ik de 3.3v Arduino-referentiepin (nauwkeurig binnen 1%) als basis voor de ADC-converter. Dus door een analoog-naar-digitaal conversie uit te voeren op de 3.3V pin (door deze aan te sluiten op A1) en deze waarde vervolgens te vergelijken met de waarde van de sensor, kunnen we een levensechte waarde extrapoleren, ongeacht wat VIN is ( zolang het maar boven de 3,4 V is).

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

Download de volledige code via de volgende link.

UltraV_OLED.ino.zip

Stap 7:Behuizingskoffer

Na verschillende (slechte) tests met het handmatig snijden van de rechthoekige etalage op een commerciële plastic doos, besloot ik er mijn eigen voor te ontwerpen. Dus met een CAD-applicatie heb ik een doos ontworpen en om deze zo klein mogelijk te houden, heb ik de CR2-batterij extern aan de achterkant gemonteerd (met een batterijhouder op de doos zelf gelijmd).

Download het STL-bestand voor de behuizing via de volgende link.

UltraV.stl.zip

Stap 8:Mogelijke toekomstige verbeteringen

  • Gebruik een UV-spectrometer om de werkelijke real-time UV-Index-waarden onder verschillende omstandigheden te meten (UV-spectrometers zijn erg duur);
  • Gelijktijdig de output van de ML8511 opnemen met de Arduino-microcontroller;
  • Schrijf een algoritme om de uitvoer van de ML8511 te relateren aan de werkelijke UVI-waarde in realtime onder een breed scala aan atmosferische omstandigheden.

Stap 10:Tegoeden

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

Code

  • UltraV
UltraVC/C++
Code
 /* Fabio Marzocca @ 2018 De conversies van analoog naar digitaal zijn volledig afhankelijk van VCC. We nemen aan dat dit 5V is, maar als het bord wordt gevoed via USB, kan dit oplopen tot 5.25V of zo laag als 4.75V:http://en.wikipedia.org/wiki/USB#Power Vanwege dit onbekende venster maakt het de ADC in de meeste gevallen tamelijk onnauwkeurig. Om dit op te lossen, gebruiken we de zeer nauwkeurige onboard 3,3V-referentie (nauwkeurig binnen 1%). Dus door een ADC te doen op de 3,3V-pin (A1) en deze vervolgens te vergelijken met de meetwaarde van de sensor, kunnen we een levensechte meetwaarde extrapoleren, ongeacht wat VIN is (zolang deze boven 3,4V is).v. 2.0.0 - juli 2018 - verplaatst van 16x2 LCD naar OLEDv. 2.0.1 - Sept 2018 - gewijzigde leesbatterijfunctie*/#include #include #include U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0, /* clock=*/ SCL, /* data =*/ SDA, /* reset=*/ U8X8_PIN_NONE); // Alle borden zonder reset van het display#define FIRST_ROW_Y 16#define FIRST_ROW_X 16#define BOX_H 38//Hardware pin definitionsconst int UVOUT =A0; //Uitvoer van de sensorconst int REF_3V3 =A1; //3.3V voeding op het Arduino-bordconst int VBATT =A2; // Batterijvoltagefloat maxUV =0; // Max UV-index readvoid setup () {pinMode (UVOUT, INPUT); pinMode (REF_3V3, INPUT); pinMode (VBATT, INPUT); u8g2.begin();}void loop(){ u8g2.firstPage(); do {int uvLevel =gemiddeldeAnalogRead(UVOUT); int refLevel =gemiddeldeAnalogRead(REF_3V3); // Gebruik de 3.3V-voedingspen als referentie om een ​​zeer nauwkeurige uitgangswaarde te krijgen van de sensor float outputVoltage =3.3 / refLevel * uvLevel; float uvIntensity =mapfloat(outputVoltage, 0.99, 2.6, 0.0, 15.0); // Converteer de spanning naar een UV-intensiteitsniveau 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, "ZEER HOOG!"); } else if (categ>=11) { strcpy(strCat, "EXTREME!"); } u8g2.setCursor(0,64); u8g2.print(strCat); }//Neemt een gemiddelde van de metingen op een bepaalde pin//Retourneert de averageint gemiddeldeAnalogRead(int pinToRead){ byte numberOfReadings =16; unsigned int runningValue =0; for(int x =0; x   

Productieproces

  1. Spanningsdeler
  2. Aardappelbatterij
  3. Wat is een meter?
  4. Multimeters
  5. Batterijconstructie
  6. Batterijclassificaties
  7. Wat is een draagbare puntlasmachine?
  8. Draagbare CMM-machine - vast of draagbaar?
  9. Inzicht in de batterij die in auto's wordt gebruikt
  10. Verschillende manieren om een ​​dynamo te testen
  11. 7 tekenen van slechte of defecte dynamo