Category tech.

使ったことなかったけど読んでいておもしろかったので要点だけメモ

デバイスツリーファイルの仕様

https://www.devicetree.org/specifications/

.dts あるいは .dtsi はデバイスツリーソースファイルで、この記法はデバイスツリーの仕様の最後らへんに書いてある。

デバイスツリーの仕様上、プロパティ名には , # @ などが有効で、特に意味のある記号ではないので読むとき注意。例えば # が行頭についていてもコメントという意味ではなく、名前の一部として numbet of の意味で使われている。

あくまで設定ファイルなのでこれをどう扱うかは実装による。

Zepher のデバイスツリー

例:BlackPill F401 の dts https://github.com/zephyrproject-rtos/zephyr/blob/master/boards/arm/blackpill_f401ce/blackpill_f401ce.dts

ボードごとにデバイスツリーがある。ボードのデバイスツリーファイルは使っている mcu のデバイスツリーファイルを include するような形でソースファイルが共通化されている。

https://docs.zephyrproject.org/2.3.0/guides/dts/howtos.html あたりがざっくりわかりやすい。

デバイスツリーファイルはビルド時に特定の規則でヘッダファイルに変換される。単純は値は DT_PROP() というマクロでとれる。

struct device

struct device* device_get_binding(char*) という関数で指定した名前の struct device* を取得できる。

device_get_binding() は DEVICE_DEFINE() で宣言されたデバイスを取得する。全ての struct device* は配列として RAM に配置されているが、これはリンカで解決される。

DEVICE_DEFINE() は

__attribute__((__section__(".device_" #level STRINGIFY(prio))))

をつけて struct device を宣言しており、これをリンカスクリプトで集めて配置している。

感想

特殊なセクション名を使ってリンカで配列を構成しておくというのが(もしかしてこの手のやつでは当たり前なのかもしれないけど)、はじめて見たし発想がなかったのでおもしろポイントだった。

  1. トップ
  2. tech
  3. Zepher のデバイスツリーまわりの実装の覚書

基準電圧源

Aliexpress でいくつか買ったやつで考える。

AD584JK


Aliexpress で売っている AD584JH 基準電圧源

これはデータシートのスペックだけ考える

  • 温度係数 30ppm/℃ (0〜70℃)
  • 長期安定性 25ppm/1kH (1000時間)

10V であれば

  • ±0.3mV/℃
  • 0.25mV/1kH

LM399H


Aliexpress で売っている LM399 基準電圧源の回路

LM399 自体のスペック

  • 温度係数 2ppm/℃ (0〜70℃) (typically 0.3ppm/℃)
  • 長期安定性 8ppm/√kH

この実装の非反転増幅回路の抵抗のスペックは不明なので、ここでは ±10ppm/℃として考える。オペアンプの非反転増幅回路の温度ドリフト で求めたように

  • 約6.2ppm/℃

非反転増幅に使われている LT1001 のスペック

  • 入力オフセット電圧の温度係数 1.0μV/℃
  • 増幅率が約1.45倍なので 1.45μV/℃

で、単純に合計すると

  • 温度係数 8.2ppm/℃ ±1.45μV/℃

10V であれば

  • ±0.08345mV/℃
  • 0.08mV/√1kH

マルチメータ

上の基準電圧源をいくつかのマルチメータで測ってみる。といってもあまり確度が高いのは持ってない

一般的なハンドヘルドデジタルマルチメータ(1000円〜8000円)の電圧レンジの測定確度はよくて4桁±0.5%ぐらい。中級機 (9000円〜数万円)で 5.5桁±0.05% ぐらい。非常に高精度のもの (10万円〜) で6.5桁±0.004%

温度係数は安いものだと規定されてないものがほとんど (あんまり意味ないんだろう)。

TR6846

アドバンテストの古いDMM。4.5桁 (32999)。300mV〜1000V の範囲の測定確度は ±0.04%±5d (400ppm)、温度係数は ±0.004±0.2d (40ppm)

基準電圧源と温度ドリフト・経年ドリフト

基準電圧源に書いてある数字は信用するとして (つまり基準電圧源のトレランスは無視する)、この結果に対しどの程度の温度ドリフトと経年ドリフトがあるかを考える。

CD771

SANWA デジタルマルチメータ バックライト搭載 CD771 - 三和電気計器

三和電気計器

3.0 / 5.0

サンワの安めのDMM、3999カウント ±0.9%±2d

UT210E

KKmoon UNI-T UT210Eクランプメータ 真の実効値 / AC / DC電流 / w/キャパシタンス測定 - KKmoon

KKmoon

3.0 / 5.0

安いクランプ型のマルチメータ。直流電圧は普通にテストリードで測れる。2000カウント ±0.7%±3d

DT10B

秋月で売ってる手帳型のマルメータ。3999カウント ±0.8%±3d


ref.

  1. トップ
  2. tech
  3. 基準電圧源とマルチメータの精度

オペアンプの増幅率は抵抗比なので、2つの抵抗が同じ温度係数を持っていれば比は変化せず、温度によるドリフトはない。実際は個体によってTCRの傾向は変わり ±10ppm の抵抗であれば最悪のケースでは +10ppm と -10ppm の抵抗を組合せた場合になる。

非反転増幅回路のゲインは、接地抵抗を 負帰還抵抗を とすると

それぞれの抵抗の相対誤差を とすると最悪のゲイン差は

出力の相対誤差は

が 20k、 が 9k でTCR が ±10ppm/℃なら、出力の温度ドリフトの最悪値は約±6.2ppm/℃ということになる。

  1. トップ
  2. tech
  3. オペアンプの非反転増幅回路の温度ドリフト