環境光センサー
このドキュメントでは、環境光センサーを統合したデバイスの設計と開発に関する推奨事項を示します。 適切な環境光センサー (ALS) デバイスを選択することが重要です。
次の概要チェックリストは、センサー ハードウェアをデバイスに統合する開発者向けです。 このドキュメントの残りの部分では、プロセスと背景情報について詳しく説明します。
- 適切なバックライト ソースを選択します。
- 適切な光センサーを選択します。
- デバイス筐体内の光センサーに最適な配置を選択します。
- コーティング、ライト パイプ、センサー構成、配置など、すべての要因を考慮してモデルごとに調整します。 これは、プロ仕様の事前調整済みの照度計を使用して実行する必要があります。
- サポートされているいずれかの方法で、センサーをデバイスに統合します。
- 受信トレイ HID センサー クラス ドライバーを活用します。 USB、SPI、または I2C HID のトランスポート経由でデバイスを接続します。
- 完全なデバイスを光測定装置としてテストします。 さまざまな種類のテスト照明 (白熱灯、蛍光灯、LED) をさまざまな強度で使用し、センサー プラットフォームから報告される値を高品質の照度計と比較します。 照度計では、デバイスのディスプレイへの入射光を測定する必要があります。
- Windows Hardware Lab Kit (HLK) のデバイス要件と関連テストを使用して、デバイスとサード パーティ ドライバーをテストします。 正しく実行され、すべてのテスト ケースに合格していることを確認します。
- OEM、ODM、IHV が、デバイス ハードウェアのメジャー リビジョンごとに機械設計レビューに参加するようにします。
- センサーの実装が機械的および光学的に、ならびに電気工学の観点から最適化されていることを確認します。
- 自動輝度調整テスト ケースに記載されている手順で光センサーと自動輝度調整をテストします。
光センサーとデバイス ハードウェアの統合
光センサーが提供する情報を使用して実行できる内容に大きく影響する可能性のある事柄がいくつかあります。 このような考慮事項には次のようなものがあります。
- センサーの種類としては、デジタル光センサーが好ましい
- センサーの精度、解像度、視野
- センサーのダイナミック レンジ
- 赤外線 (IR) および紫外線 (UV) の拒絶 (人間の目の反応)
- サポートされているバス テクノロジ (デジタルのみ)
- デジタル サンプリング レート
- 電力消費
- パッケージと配置のオプション
次の要素は、特に考慮する必要があります。
- 精度と解像度: アプリケーションの自動輝度調整と光認識 UI に最適なユーザー エクスペリエンスを提供するには、入力として正確なセンサー データが必要です。 一般に、センサーの精度が高いほど、対応するユーザー エクスペリエンスは向上します。 実際の環境光センサー (ALS) の調整値として十分な目標は、実際の照明条件の精度が一貫して 4% 以内に収まることです。
- 動的範囲: 光センサーのダイナミック レンジとは、センサーが報告できる最大値と最小値の比率のことをいい、センサーが有効な照明環境の範囲を定義します。 ダイナミックレンジの低い光センサーは、使用できる環境が制限されます。 携帯電話など、屋外で使用するために設計されたデバイスに取り付けられた環境光センサーは、屋外の照明条件をサポートする必要があります。 日光の範囲は 0 から 10,000 lux 以上です。 屋内で使用するように設計されたデバイスの ALS ダイナミック レンジは、それよりも狭い可能性があります。 屋内光の範囲は通常、0 から 1000 lux です。
- 粒度: 最適なエクスペリエンスを確保するために、ALS の粒度を、環境光が 25 lux 未満の場合は 1 lux、環境光が 25 lux を超える場合は環境光の 4% に設定する必要があります。 これにより、アルゴ自動輝度調整アルゴリズムで画面の輝度の遷移をスムーズに実行できます。
参照する一般的な照明条件を次に示します。
照明条件 | 照度 (lux) |
---|---|
真っ黒 | 1 |
非常に暗い | 10 |
暗い屋内 | 50 |
薄暗い屋内 | 100 |
通常の屋内 | 300 |
明るい屋内 | 700 |
薄暗い屋外 (曇り) | 1,000 |
日光の当たる屋外 | 15,000 |
直射日光 | 100,000 |
環境光センサーの種類
環境光センサーには、次の 2 つの基本的な種類があります。
- アナログ光センサーは、アナログ デジタル (A/D) コンバータを備えた埋め込みコントローラに接続されており、光センサー データを正確に解釈でき、測定値に影響を与えるさまざまな条件や現象を補正できるファームウェアを必要とします。 これらの現象の例としては、赤外線 (IR) の光の拒絶や光周波数補正などがあります。 たとえば、蛍光灯は、設備に供給される AC 電力の周波数によって強度が変わります。 アナログ センサーは一般的にとても安価です。
- デジタル光センサーはアナログ センサーよりも高価ですが、利点があります。 デジタル光センサーは、さまざまな条件や現象を自動的に補正することができます。 デジタル センサーは非常にコンパクトでもあります。 一部のデジタル光センサーは、精密ではない離散型の lux 測定値を示す場合があります。 照度の低い条件下における測定値の粒度は、慎重に考慮する必要があります。 低照度の条件下で精密ではない、離散型の測定を行うと、明るさに関わるユーザー エクスペリエンスが不快なものになる可能性があります。
選択する光センサーの種類に関係なく、正確な測定値を取得して、システムに公開する必要があります。
光センサーの数
照明条件の測定に使用できる環境光センサーが多いほど、実際の照度の推定値の精度が上がります。 ただし、光センサーごとにコストが追加され、デバイス上の領域を使用します。
重要なのは、製造元が最も正確な環境光検出機能をシステムに提供するソリューションを目指すことです。 安価なソリューションは単一のセンサーに依存する場合がありますが、高性能なハードウェアは、可能な限り最良の測定を行うためにセンサー アレイに依存することができます。 OEM が (ALS を遮る手や影などの問題に対処するために) 複数の環境光センサーを実装することを選択した場合、OEM は 1 つの論理 (統合) ALS を Windows に公開し、最も正確なデータを報告する必要があります。
複数のセンサーがシステムに公開されている場合、自動輝度に使用される 1 つのセンサーで、DEVPKEY_SensorData_LightLevel_AutoBrightnessPreferred プロパティを公開する必要があります。 同様に、OEM は複数の環境光センサーを融合し、その結果を仮想光センサー ("純粋なソフトウェア センサー" とも呼ばれます) として公開することを決定する場合もあります。 物理光センサーと仮想光センサーの両方がセンサー デバイス ドライバー インターフェイスを介して公開されている場合、融合センサーで DEVPKEY_SensorData_LightLevel_AutoBrightnessPreferred プロパティを公開する必要があります。
光センサーの配置
光センサーの正しい配置は、優れたシステム設計のもう 1 つの重要な側面です。 ALS の目的は、ユーザーが感知する環境の明るさを測定することです。 理論上の最適なセンサーの位置は、ユーザーの目の間です。 現実世界において光センサーの最適な配置は、たいていディスプレイと同じ平面上にあって、ユーザーの方を向いています。 ディスプレイに配置されたセンサーには、画面で発生する可能性のあるグレアを検出できるという利点があります。
通常の使用中に、影、またはユーザーの手、指、腕によって光源が遮られる可能性の高いコンピューターの領域には、光センサーを配置しないでください。 次の図は、直接光の光源がユーザーの背後にあるユーザー シナリオの例を示しています。 画面の下半分とコンピューターのベースに影が落ちています。 このシナリオでは、画面上部付近に光センサーを配置し、ユーザーの方に向けるのが最適だということが提案されています。
デバイスで可能なさまざまな構成 (タブレット モードとノート PC モードでのキーボードの位置など) がレンズの口径を遮ったり、センサーの視野と交差したりしないことを確認してください。
最後に、センサーの視野がノイズの多い光源 (カメラ フラッシュ、キーボード バックライトなど) と交差しないようにします。これは、追加のノイズや不適切な読み取りをもたらす可能性があるためです。 ノイズの多い光源と交差する視野を検討する際は、デバイスで可能なすべての異なる構成を考慮してください。
無効な光センサー データの処理
特定の条件下では、環境光センサーの視野が物体やユーザーによって遮られ、センサーが正確な測定値を取得できなくなることがあります。 このような状態が発生する可能性があるのは、たとえば、ユーザーの手が環境光センサーの口径を覆ったときです。 他にも多くの事例があります。
環境光センサーは、PKEY_SensorData_IsValid データ フィールドが FALSE に設定されている新しいセンサー サンプルを送信して、オペレーティング システムにこの状況を示すことができます。 このようなシナリオではシステムが明るさを適切に制御できなくなるため、適切なハードウェア設計で、この値を FALSE に設定するのに必要な時間とシナリオの数を最小限に抑える必要があります。 理想的なシステムでは、環境光センサーは常に環境光を測定でき、この値は TRUE に設定されます。
光センサーのフィルター、レンズ、筐体、調整
ALS を含むデバイスを設計するときは、ALS に関連する機械的、光学的、電気的コンポーネントからなるシステム全体を慎重に検討する必要があります。 次の図は、環境光センサー ハードウェアと Windows を統合して調整する際に、考慮および理解する必要がある主な機械的コンポーネントを示しています。
この図には、次のものが表示されています。
- ガラス - 画面の外面
- インク コーティング - 画面の周りの黒い枠
- 遮光 - 光漏れを防止する
- ライト パイプ - 光を集めてセンサーに導く
- 環境光センサー
- マザーボード
Note
通常、ライト パイプは必要ありません。多くの場合、ALS のパフォーマンスが低下する可能性があります。 これらの種類の光学コンポーネントに関するガイダンスについては、光センサーの製造元にお問い合わせください。
この図では、次の 2 つの光レベルを参考として引用しています。
$LUX_{1}$: ディスプレイの表面におけるデバイスの周囲の入射光レベル。 このレベルは、センサー プラットフォームを介して環境光センサーで測定、報告されます。
$LUX_{2}$: ALS の表面の入射光レベル。 これは、光学の減衰係数を考慮していないため、センサー プラットフォームを介して報告するには適切ではない光レベルです。
減衰係数は、デバイスの外面 (通常はガラス) と ALS の計測面との間にあるさまざまなコンポーネントでブロックされる光の量に対応します。 減衰は、次のように算出されます。A = (1 - transmittance)
重要
環境光センサーは、検出した環境光の強度を報告します。 光学の伝達性により、ALS の生の測定値は減衰された lux 値を報告するものであるため、補正なしで使用しないでください。 伝達性は、環境光の強度を低下させ、赤外線 (IR) の光も拒絶する光学の特性です。 光学的特性にインクを塗布して可視化する場合は、減衰係数を使用して、それに関連して生じる環境光の強度の低下を補正する必要があります。
$LUX_{2}$ は常に $LUX_{1}$ よりも小さくする
これら 2 つの lux 値の差は、"減衰係数" と呼ばれます。 減衰係数は、ガラスの上面 ($LUX_{1}$) と環境光センサーの裸面 ($LUX_{2}$) の間の光透過率の合計割合を表します。 これが最も顕著になるのが、塗装されたガラス表面を使用した場合です。 OEM はセンサー IHV のサポートを受けて、減衰係数を測定し、オペレーティング システムに lux 値を公開する前にハードウェアで修正する必要があります。
Note
透過率は、ALS の表面における光レベルの比率を、デバイスを取り囲む環境光レベルで割った値です。
次の例では、ガラスの上面と環境光センサーの裸面との間の光透過率の合計割合が 5% であると仮定します。 必要な lux 範囲をサポートするために、選択した光センサーが裸センサーで次の範囲をサポートする必要があります。
- $Minimum = 1 lux × 0.05 = 0.05 lux$
- $Maximum = 100,000 lux × 0.05 = 5000 lux$
ファームウェアまたはドライバーでは、ハードウェアまたはソフトウェアの ALS ソリューションが実装されているかどうかに応じて、次の換算式を使って減衰係数を明らかにします。
$Output LUX = LUX_{1} = LUX_{2} / (total % _{light _transmittance})$
裸の環境光センサーの測定値が 100 lux の場合、結果として生じる出力 lux は次のとおりです。
$Output LUX = 100 / 0.05 = 2000 LUX$
システム全体も適切な光測定装置で調整する必要があります。 この例は、正式な調整前の、部品の選択と初期調整に関する一般的な考慮事項のみを示すものです。 最も一貫性のある最高のユーザー エクスペリエンスを実現するために、ユニットごとの工場調整を強くお勧めします。 多くの場合、センサーの精度範囲はユニットごとに +/- 20% であり、それについてはユニットごとの工場調整で明らかにできます。
また、視野は、環境光センサーの配置と設計で考慮すべき重要な要素です。 視野が狭いほど、センサーのパフォーマンスが悪くなります。 原則として、55 度の半角視野 (合計 110 度) は適正な目標です。 視野が広いほど、センサーが単一点の光源や、真の光環境を正確に反映しない可能性のある影の領域を取得する傾向が低くなります。
HID および SPB を使用したセンサー接続
次の図は、HID プロトコルを使用し、SPB 用の IHV 固有のドライバーを使用して ALS を統合する方法を示しています。
ヒント
HID プロトコルは ALS を統合するために推奨されるパスであり、Windows の受信トレイ HID ドライバーを活用します。
HID センサーのハードウェア、ドライバー、およびソフトウェアのスタックを以下に示します。
ボックス (上から): センサー アプリケーション、センサー API、センサー クラス拡張機能、ユーザーモード HID ドライバー、HID-I2C ドライバー、I2C コントローラー、ファームウェアの HID インターフェイス、および ALS ハードウェア
SPB センサーのハードウェア、ドライバー、およびソフトウェアのスタックを以下に示します。
ボックス (上から): センサー アプリケーション、センサー API、センサー クラス拡張機能、UMDF ユーザーモードのセンサー ドライバー、SPB インターフェイス、I2C コントローラー ドライバー、ALS センサー
HID と I2C を含む HID プロトコルを介したセンサー ハードウェアの統合の詳細については、「センサー HID クラス ドライバー」を参照してください。
SPB バスを介したセンサーの統合の詳細については、「GitHub のセンサー コンボ サンプル ドライバーのソース コード」を参照してください。
環境光センサーの調整
プロフェッショナル調整 (推奨)
制御された照明環境でプロ仕様の事前調整済みセンサーを使用して統合システムで ALS 調整を行うことを強くお勧めします。 これらの事前調整済みセンサーは、"照度計" と呼ばれることが多く、電子機器ベンダーやオンライン小売業者から購入できます。
その他の調整手法
その他の ALS の監視ツールと調整ツールの詳細については、「Microsoft 環境光ツール」の記事をご覧ください。
光センサーの検証
最初の手順として、センサー (入力) の Hardware Lab Kit テストを必ず実行して、環境光センサーを検証する必要があります。 最小ハードウェア要件と Windows ハードウェア互換性プログラムののすべてのテストに合格していることを確認してください。
環境光センサーが適切に機能していることを検証するには:
- DisplayEnhancementService が開始されていることを確認します。
- 自動輝度を有効にし、スライダーを 50% に設定します。
- 照明が変わるとディスプレイの明るさが変わることを確認します。
- 調光器を使用して、環境光をゆっくりと明るくしたり暗くしたりして、lux 値をスムーズに増減できることを確認します。 光の変化が粗くて離散的な場合、画面の明るさの応答が最適ではなくなるため、避ける必要があります。
- ALS の測定値が正確であることを確認するために、プロ仕様の lux メーターを使用します。 少なくとも、0、10、100、500、1000 lux の各ポイントを確認します。
- ALR 曲線のみをカスタマイズしたシステムでは、ユーザーと動作をテストして、ALR データがユーザーの期待に応えるものであることを検証します。
ハードウェアの最小要件と Windows ハードウェア互換性プログラム
最小ハードウェア要件と Windows ハードウェア互換性プログラムの要件は、Windows と互換性のあるセンサー エクスペリエンスを作成するための基本です。 プログラムはオプションですが、基本的なオーディオ品質を確保するために、オーディオ製品について両方の要件を満たすことをお勧めします。
詳細については、「Windows ハードウェア互換性プログラム」を参照してください。
この後のセクションでは、センサーの推奨事項について説明します。 質の高いエクスペリエンスを確保するには、これらのパフォーマンス要件に照らして、すべてのデバイスをテストする必要があります。
面グラフ | ガイダンスの種類 | テストするデバイス |
---|---|---|
Device.Input.Sensor.AmbientLightSensor | ソフトウェア インターフェース、通信プロトコル、データ形式の観点から、ホスト OS で最適に機能するように、コンポーネントレベルのガイドラインを提供します。 | 統合された環境光センサーはすべて、これらのパフォーマンス要件に照らしてテストする必要があります。 |
System.Client.Sensor.AmbientLightSensor | ソフトウェア インターフェース、通信プロトコル、データ形式の観点から、ホスト OS で最適に機能するように、システムレベルのガイドラインを提供します。 | 統合された環境光センサーはすべて、これらのパフォーマンス要件に照らしてテストする必要があります。 |
環境応答曲線
環境光センサーから環境光応答曲線が報告される場合は、次の手順に沿って対応する必要があります。
データ フィールド | データ型 | 定義 |
---|---|---|
PKEY_LightSensor_ResponseCurve | VT_VECTOR | VT_UI4 |
センサーの応答曲線には少なくとも 2 つのポイントが必要で、勾配曲線は必ずプラスまたは横ばいになります。 詳細については、「応答曲線」を参照してください。
カラー対応
環境光センサーは色を検出する必要はありません。 環境光センサーが色をサポートしている場合は、色関連のプロパティ、しきい値、データ フィールドを報告する必要があります。 カラー対応の光センサーは、次の列挙型プロパティを報告する必要があります。
データ フィールド | データ型 | 定義 |
---|---|---|
DEVPKEY_LightSensor_ColorCapable | VT_BOOL | この光センサーがカラー対応かどうかを指定します。 |
カラー対応の光センサーは、次に挙げるデータ フィールドの組み合わせのどちらかを報告する必要があります。
- lux、kelvins、色度 x、色度 y
- lux、色度 x、色度 y
詳細については、「光センサーのデータ フィールド」を参照してください。
光センサーが報告する色のデータ フィールドでは、しきい値もサポートされている必要があります。 少なくとも 1 つのしきい値が満たされている場合は、サンプルを報告する必要があります。 詳細については、「光センサーのしきい値」を参照してください。
データ フィールドのプロパティ
環境光センサーは、必須のデータ フィールド プロパティを報告する必要があります。 詳細については、「光センサーのデータ フィールド」を参照してください。
データ型
環境光センサーは、光データを報告する必要があります。 詳細については、「光センサーのデータ フィールド」を参照してください。
レポートの最小間隔
Windows の非色対応の環境光センサーは、250 ミリ秒以下のレポート間隔をサポートする必要があります。 Windows の色対応の環境光センサーは、1,000 ミリ秒以下のレポート間隔をサポートする必要があります。
しきい値
光センサーは、lux のしきい値をサポートする必要があります。 絶対しきい値がサポートされている場合、報告するデータ サンプルについて、比率と 絶対 lux のしきい値の両方を満たす必要があります。
絶対しきい値が 1 lux で、比率のしきい値が 25% であると仮定します。
前回のサンプル | 次のサンプル | 結果 |
---|---|---|
4 lux | 3 lux | 前回報告されたサンプルからの変化が 1 lux 以上であり、その変化が前回報告されたサンプルの 25% 以上の場合、次のサンプルは報告されます。 |
1 lux | 0.5 lux | 前回報告されたサンプルからの変化が 1 lux 未満のため、次のサンプルは報告されません。 |
100 lux | 90 lux | 変化が前回報告されたサンプルの 25% 未満のため、次のサンプルは報告されません。 |
詳細については、「光センサーのしきい値」を参照してください
自動輝度優先
環境光センサーで自動輝度機能を併用する場合は、次の列挙型プロパティを報告する必要があります。
データ型 | 定義 | |
---|---|---|
DEVPKEY_LightSensor_AutoBrightnessPreferred | VT_BOOL | この光センサーを Windows の自動輝度サービスに使用する優先光センサーにする必要があるかどうかを指定します。 |
このプロパティを報告する環境光センサーは、システム上に 1 つのみにしてください。
色の調整
環境光センサーは色をサポートする必要はありません。 環境光センサーが色をサポートしている場合は、適切に調整する必要があります。
光源が直接センサーに向けられている間:
- 検出された環境 lux は、実際の入射光の 10% または 1 lux 以内のどちらかになります
- 検出された色度 x と y は、実際の入射光の 0.025 以内になります
列挙プロパティ
環境光センサーは、DEVPKEY_Sensor_ConnectionType (他の一部のセンサーでは必須の列挙プロパティではない) を報告する必要があります
有効
環境光センサーは、光センサーのサンプルが有効かどうかを報告する必要はありません。 環境光センサーがこれをサポートしている場合は、次のデータ フィールドを報告する必要があります。
データ フィールド | データ型 | 定義 |
---|---|---|
PKEY_SensorData_IsValid | VT_BOOL | 現在のデータ サンプルが有効かどうかを示します。 |
PKEY_SensorData_IsValid の値が変更された場合は、しきい値が満たされているかどうかに関係なく、サンプルを報告する必要があります。
lux しきい値が 1 lux であると仮定した場合:
前回のサンプル | 次のサンプル | 結果 |
---|---|---|
100 lux | 100 lux ですが、センサーがブロックされました (以前のサンプルの PKEY_SensorData_IsValid は true でした) | 現在のサンプルは 100 lux で報告され、PKEY_SensorData_IsValid は false に設定されます。 |
100 lux なのでブロックされました (以前のサンプルの PKEY_SensorData_IsValid は false でした) | 100,000 lux なのでセンサーはブロックされたままです (PKEY_SensorData_IsValid は false です) | サンプルは報告されていません。 |
0 lux なのでセンサーはブロックされました (以前のサンプルの PKEY_SensorData_IsValid は false でした) | 0 lux ですが、センサーのブロックが解除されました (PKEY_SensorData_IsValid は true です) | 現在のサンプルは 0 lux として報告されますが、PKEY_SensorData_IsValid は true に設定されます。 |
光の調整
Windows の自動輝度サービスでは、環境内の光レベルの正確な測定値を報告するために光センサーが必要です。 光源が、色をサポートしていない光センサーに直接向けられている場合、報告される光レベルは、実際の入射光レベルの 4% 以内、または少なくとも 1 lux 以内である必要があります
光の範囲
Windows の自動輝度サービスでは、1 から 10,000 lux までの妥当な範囲の光レベルを検出できる必要があります。 範囲がこれよりも狭いと、調整された自動輝度が環境の実際の明るさと一致しない場合があります。