Skip to main content

Xadow - UV センサー

note

この文書は AI によって翻訳されています。内容に不正確な点や改善すべき点がございましたら、文書下部のコメント欄または以下の Issue ページにてご報告ください。
https://github.com/Seeed-Studio/wiki-documents/issues

Xadow UV センサーは、日光中の紫外線放射を測定するのに適しています。このセンサーは 290 ~ 400 nm の紫外線波長を検出できます。UV センサーは、紫外線の強度に対応するデジタル電圧値を出力します。出力電圧と紫外線の関係図を使用することで、現在の UV 指数を簡単に知ることができます。Xadow UV センサーは 3.3V で動作し、Xadow システムと互換性があります。

仕様


  • UV-A および UV-B ブランドを検出可能
  • UV 波長検出範囲: 290 ~ 400nm
  • 最大感度波長: 330nm
  • 内蔵 ADC 回路、高精度変換
  • テスト精度: ±0.1 UV 指数
  • 動作温度: -25 ~ 70 ℃
  • 寸法: 25.43mm x 20.35mm

デモンストレーション


Xadow UV センサーは、UV 指数に対応する電圧値を出力します。出力電圧と UV 指数の間には線形関係があるため、数式を使用して直接 UV 指数を確認することもできます。次に、UV センサーを使用して UV 指数を取得し、それを OLED 画面に表示する方法を示します。

ハードウェアのインストール

note
Xadow UV センサーを Xadow メインボードに接続する際は、接続方向に注意してください。接続方法は、1 つの Xadow モジュールの未充填の角を、別のモジュールの直角に接続することです(各 Xadow モジュールの 4 つの角を参照してください)。

コードのダウンロード

  • 次に、以下のコードを Arduino IDE にコピーして貼り付け、Xadow メインボードにアップロードします。
#include <Wire.h>
#include <SeeedOLED.h>
#include <Streaming.h>

#define ADDR_ADC121 0x5A

#define V_REF 3.00

#define REG_ADDR_RESULT 0x00
#define REG_ADDR_ALERT 0x01
#define REG_ADDR_CONFIG 0x02
#define REG_ADDR_LIMITL 0x03
#define REG_ADDR_LIMITH 0x04
#define REG_ADDR_HYST 0x05
#define REG_ADDR_CONVL 0x06
#define REG_ADDR_CONVH 0x07

unsigned int getData;
float analogVal=0;
float UVIndex = 0;
void init_adc()
{
Wire.beginTransmission(ADDR_ADC121); // デバイスに送信
Wire.write(REG_ADDR_CONFIG); // 設定レジスタ
Wire.write(0x20);
Wire.endTransmission();
}
void setup()
{
Wire.begin();
Serial.begin(38400);
SeeedOled.init(); // SEEED OLED ディスプレイを初期化
SeeedOled.clearDisplay(); // 画面をクリアし、開始位置を左上隅に設定

init_adc();
}

void loop()
{
readVoltage();
//SeeedOled.clearDisplay();
SeeedOled.setTextXY(1,0);
SeeedOled.putString("Voltage: ");
SeeedOled.setTextXY(1,8);
SeeedOled.putFloat(analogVal);
SeeedOled.setTextXY(1,12);
SeeedOled.putString("mV");
SeeedOled.setTextXY(2,0);
SeeedOled.putString("UVIndex: ");
SeeedOled.setTextXY(2,8);
SeeedOled.putFloat(UVIndex);
delay(50);
}
void readVoltage() //unsigned int *data
{
Wire.beginTransmission(ADDR_ADC121); // デバイスに送信
Wire.write(REG_ADDR_RESULT); // 結果を取得
Wire.endTransmission();

Wire.requestFrom(ADDR_ADC121, 2); // デバイスから 2 バイトを要求
delay(1);
if(Wire.available()<=2)
{
getData = (Wire.read()&0x0f)<<8;
getData |= Wire.read();
}
delay(50);
analogVal = getData*V_REF/4096/2;
Serial.print("analogVal:");
Serial.print(analogVal);
Serial.println("mV");
UVIndex = analogVal/9.71;
Serial.print("UVIndex:");
Serial.println(UVIndex);

}
  • シリアルモニターを開くと、電圧値と UV 指数が表示されます。

  • OLED 画面にも表示されます。

  • 以下の図を参照することで、UV 指数を簡単に計算できます。

Xadow UV センサーについては、抵抗値が 3M の抵抗を使用しているため、RL=3M のラインを参照する必要があります。

電圧と UV の関係は線形で観察できます。コード内で使用されている計算式は次の通りです: UV 指数 = 電圧 / 9.71

参考


UVセンサー I2Cアドレス

Xadow UVセンサーには、スレーブアドレスと呼ばれる7ビットのハードウェアアドレスがあります。このスレーブアドレスは、ADR0およびADR1のアドレス選択入力によって設定されます。ADR0およびADR1は、低レベル、浮動状態、または高レベルに接続することができます。これらの入力の状態によって、I2Cバス上でモジュールが応答するハードウェアアドレスが設定されます(以下の表を参照してください)。

スレーブアドレス[A6 - A0] ADR0およびADR1入力の状態
ADR1 ADR0
1010000(0x50)浮動浮動
1010001(0x51) 浮動 L
1010010(0x52) 浮動 H
1010100(0x54) L 浮動
1010101(0x55)LL
1010110(0x56) L H
1011000(0x58) H 浮動
1011001(0x59) H L
1011010(デフォルト 0x5A) H H

デフォルトモードでは、ADR0およびADR1は"H"に接続されています(Xadow UVセンサーを参照)。

UVセンサーのスペクトル応答曲線

回路図オンラインビューア

リソース


Xadow UVセンサー Eagleファイル

技術サポート & 製品ディスカッション

弊社製品をお選びいただきありがとうございます!製品をご利用いただく際にスムーズな体験を提供するため、さまざまなサポートをご用意しています。異なる好みやニーズに対応するため、複数のコミュニケーションチャネルを提供しています。

Loading Comments...