Close

Konverze výstupu jednotek

Úvodní stránka Fórum Hardware Senzory Konverze výstupu jednotek

Označeno štítky: 

Aktuálně je na stránce zobrazeno 8 příspěvků - 1. až 8. (celkem z 8)
  • Autor
    Příspěvky
  • #5041
    azmaluk
    Účastník

    zdravím,

    potřeboval bych poradit / nakopnout správným směrem, jak převést výstupnou veličinu z mW/cm^2 na W//m^2.

    int UVOUT = A0; //Output from the sensor
    int REF_3V3 = A1; //3.3V power on the Arduino board
    
    void setup()
    {
      Serial.begin(9600);
    
      pinMode(UVOUT, INPUT);
      pinMode(REF_3V3, INPUT);
    
      Serial.println("ML8511 example");
    }
    
    void loop()
    {
      int uvLevel = averageAnalogRead(UVOUT);
      int refLevel = averageAnalogRead(REF_3V3);
      
      //Use the 3.3V power pin as a reference to get a very accurate output value from sensor
      float outputVoltage = 3.32 / refLevel * uvLevel;
      
      float uvIntensity = mapfloat(outputVoltage, 0.99, 2.8, 0.0, 15.0); //Convert the voltage to a UV intensity level
    
      Serial.print("output: ");
      Serial.print(refLevel);
    
      Serial.print("ML8511 output: ");
      Serial.print(uvLevel);
    
      Serial.print(" / ML8511 voltage: ");
      Serial.print(outputVoltage);
    
      Serial.print(" / UV Intensity (mW/cm^2): ");
      Serial.print(uvIntensity);
      
      Serial.println();
      
      delay(3000);
    }
    
    //Takes an average of readings on a given pin
    //Returns the average
    int averageAnalogRead(int pinToRead)
    {
      byte numberOfReadings = 8;
      unsigned int runningValue = 0; 
    
      for(int x = 0 ; x < numberOfReadings ; x++)
        runningValue += analogRead(pinToRead);
      runningValue /= numberOfReadings;
    
      return(runningValue);  
    }
    
    //The Arduino Map function but for floats
    //From: https://forum.arduino.cc/index.php?topic=3922.0
    float mapfloat(float x, float in_min, float in_max, float out_min, float out_max)
    //int value = analogRead(pin);
    //Serial.print( map(value, 0,1023,0,1000) / 100.0);
    {
      return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
    }

    děkuji

    #5045
    Zbyšek Voda
    Správce

    Dobrý den,

    přijímáte-li data v mW/cm^2 a chcete je převést na na W/m^2, je přepočet následující:

    W = 1000 mW
    m^2 = 10 000 cm^2
    
    W/m^2 = (1000 mW) / (10 000 cm^2)
    
    W/m^2 = mW / (10 cm^2)

    Dá přepočet se dá tedy vyjádřit funkcí

    float mWcm2toWm2(float mWcm2){ //uznávám, že název funkce je opravdu ošklivý :)
         float Wm2 = mWcm2 / 10;
         return Wm2;
    }

    Snad jsem se nikde nesekl 🙂

    #5046
    Aleš
    Účastník

    „Začátek máte dobře Kroupo. Ale ten výsledek, ten výsledek“ 🙂
    W/m^2 = (1000 mW) / (10 000 cm^2)
    1000 / 10 000 = 0.1
    W/m^2 = mW/cm^2 / 0.1

    takže:
    float Wm2 = mWcm2 / 0.1;
    nebo
    float Wm2 = mWcm2 * 10;

    🙂

    #5050
    Zbyšek Voda
    Správce

    Nesouhlasím s vámi. Vaše úvaha je chybná.

    Rovnice

    #5059
    Aleš
    Účastník

    Zkuste si to zadat třeba sem:
    http://www.endmemo.com/sconvert/w_m2mw_cm2.php

    #5073
    Zbyšek Voda
    Správce

    Dobrý den, každý jsme měl pravdu v něčem.
    Váš převod jednotek je zapsán chybně, můj je dobře, jen jsem si výsledek špatně interpretoval (bral jsem jednotky v posledním vzorci úpravy jako proměnné, což nelze). Vaše převodní funkce je správná, moje byla špatná.

    Tedy přiznávám svoji chybu. Řešení:

    float mWcm2toWm2(float vstup){
         float vystup = vstup * 10;
         return vystup;
    }

    Shodneme se?

    #5101
    Aleš
    Účastník

    Já nejsem programátor, vyznám se spíš v hardware. Takže to byla spíš náhoda, že jsem si té chyby všiml. Praštilo mě do očí, že když je plocha větší, tak by měla být i energie která dopadá na tuto plochu větší 🙂

    #7775
    cingelroman
    Účastník

    Dobry den, myslim si ze graf pro ml8511 ma chybne popisky. Hodnota od 0 do 15 neni intenzita v mW/cm^2 ale UV index a to neni to same. 1 mW/cm^2 se nerovna 1 UV index. Podle ruznych servru je 1 UV index = 25mW/m^2 coz je vlastne 0.0025 mW/cm^2

Aktuálně je na stránce zobrazeno 8 příspěvků - 1. až 8. (celkem z 8)
  • Pro reakci na toto téma se musíte přihlásit.