マイクの逆相が耳でわかるという人がいて、人間の耳的にモノラル音を位相だけ聞きわけるというのはありえないので、どういうことなのだろうかとしばらく考えていたが、モニタ音をヘッドフォンで聞きながら自分の声でテストしているようだったので、自分の声(空間伝導+骨伝導)+モニタ音のミックスを聞いたとき逆相がわかるということなのだろうと理解した。

マイク1本の録音で位相が問題になることはないはず。別々のマイク複数本で録音する場合は問題になるが、そもそも音は遅いので音源とマイクの距離によってかなり位相ずれが起こる。

空気中の音速は気温20℃だと約344m/s。0.1m(10cm)進むと291μs遅れる。

波長は位相速度/周波数。1kHz なら波長は344mm。2kHzで172mm、5kHz で 68.8mm というぐらいになる。半波長ずれれば逆位相となるので、2本のマイクの音源からの距離が多少ずれただけでも大きな影響があることがわかる。

  1. トップ
  2. tech
  3. マイクの位相

汎用トランジスタで使いやすいやつ。ブレッドボードでリードタイプを使いつつ、実際に作るときは表面実装品を使いたいので、同等品があってメジャーなトランジスタをセットで持っておくと便利。

THT 品しかないものは原則としては使わない (電力部品は除く)。SMD 品しかない場合は変換基板を使ってブレッドボード用を何個か作ると便利

(TO-236 == SOT-23)

NPN MMBT3904 (TO-236) 2N3904 (TO-92)

https://akizukidenshi.com/catalog/g/gI-05969/
https://akizukidenshi.com/catalog/g/gI-05962/

下の3906 とコンプリメンタリ

PNP MMBT3906 (TO-236) 2N3906 (TO-92)

https://akizukidenshi.com/catalog/g/gI-05967/
https://akizukidenshi.com/catalog/g/gI-05963/

上の 3904 とコンプリメンタリ

Nch MOS-FET 2N7002 (TO-236) 2N7000 (TO-92)

https://akizukidenshi.com/catalog/g/gI-03919/
https://akizukidenshi.com/catalog/g/gI-13045/
エンハンスメント型 Vth = 2.5 (max)

オン抵抗が違うので厳密には入れかえられない

  1. トップ
  2. tech
  3. SMD と THT 両方ある汎用トランジスタ


こういうやつ、2000円ぐらい。シールドケースに入っているが、シールドケースの上側はすぐ外すことができる。シールドケース内に精度部品が配置されるようになっているので、ノイズ低減と温度変化低減を狙っているのかもしれない。

LM399H と LTC1001 が使われている、LM399 のデータシートに書いてあるリファレンスデザインっぽい。

ジャンパで出力電圧を変更できるようになっており、以下の通り設定する。ややこしい

気になったので回路図を起こしてみた。基本的には LM399 のリファレンスデザインと同じ。オペアンプのゲインは 1.45 で固定、入力の 6.95V の基準電圧を分圧することでそれぞれの設定電圧を出せるようになっている。

最初、計算があわないなーと思ってたら 1802 と書いてある抵抗のところ、2段重ねになっていた。下の抵抗の表記は見えないが 1802 らしく、合成で 9kΩ にしているっぽい。なんでややこしいことしてるかは謎

一応、出力電圧に関係ある部分には4桁表示の高精度抵抗が使われている雰囲気がある。精度に関係ない 7.5kΩ は普通の抵抗。

ちなみにヒーターのせいか結構消費電力が激しい。最大200mA、温まってくると20mAぐらいまで下がる。データシートから読むと安定するまで10秒ぐらいは最低でも待ったほうがよさそう。

  1. トップ
  2. tech
  3. Aliexpress で売っている LM399 基準電圧源の回路

1200円ぐらい

https://www.analog.com/media/en/technical-documentation/data-sheets/AD584.pdf

AD584JH は 30ppm/℃ (0〜70℃) 25ppm/1000時間。AD584 の良いところは特に外付け部品がいらず、AD584内部にトリミングされた分圧抵抗が含まれるところ。スペックを以下の通りで、そのまま外部出力となっている。

  • 2.5V ±7.5mV 0.3%
  • 5.0V ±15mV 0.3%
  • 7.5V ±20mV 0.27%
  • 10V ±30mV 0.3%

このボードは校正済みらしい測定器の測定結果が4桁書いてあり、今回はそれぞれ以下の通り (括弧は呼び電圧に対する絶対誤差と相対誤差)

  • 2.498V (-2mV -0.08%)
  • 5.001V (+1mV +0.02%)
  • 7.498V (-2mV -0.027%)
  • 10.001V (+0.1mV +0.001%)

この測定値は何度で測ったか不明。30ppm つまり 30e-6/℃ なので、±10℃ぐらいの誤差を見込むと0.03%、10Vで±3mV程度。このぐらいの誤差は観測されてもしょうがない。

基板に載っている電池ホルダは 23A という単5サイズの積層12V電池用。ヨドバシだとパナソニック LRV08/1BP、秋月だとゴールデンパワー製 A23 というのが買える。50mAh ぐらいしか容量がない。

AD584 自体は 1mA、基板上に LED があり 5.1kΩを介して電流が流れ、これが 2.4mA。電圧が下がってくることも考えると、電池1本で10時間程度使えたらいいほうか。といっても普通に外部入力することもできる。

ただ、電池が使えるといっても 12V だと仕様上若干電圧が足りない。出力電圧 +2V 以上加える必要がある。

  1. トップ
  2. tech
  3. Aliexpress で売っている AD584JH 基準電圧源

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

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

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

出力の相対誤差は

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

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

基準電圧源

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

 -

3.0 / 5.0

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

DT10B

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


ref.

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

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

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

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 のデバイスツリーまわりの実装の覚書

磁束密度 (テスラまたはガウス) を計測したくなったので探してみると8000円弱ぐらいで買えるものがあったので買ってみた。5級品 (5%ランク) のもので、スペックは

  • レンジ: 200mT 2000mT
  • 分解能: 10μT
  • 精度
    • 0〜1000mT ±2%
    • 1000mT〜2400mT ±5%

磁石・電磁石の磁束密度を見るには十分と思われる。

使いかた

  • プローブ(ホールセンサ)を本体に接続する
  • ON/OFF キーで電源を入れる
  • プローブのキャップをとる
  • 可能なら磁力がないところ(磁性シールドされたところ)で Null キーを押してゼロセットする
    • 地磁気は東京付近だと 46000nT つまり 46μT なので 200mT レンジでは下一桁の表示に影響する
      • プローブを回転させると S0.00〜N5.00ぐらいまでの動きがあるオフセットが乗ってるかも?

プローブの向きはたぶん「T」が書いてあるほうが表で、表から裏方向への磁力線に対して正 (N) の表示をするらしい。磁力線は N から出て S に入る。つまり、プローブの裏 (距離が書いてある面) を見ながら磁石のある面に対してプローブの表をあてたとき、表示される極性が N なら、あててる磁石の面は N 極になる。

赤い線が N 極を示していて、このようにプローブをあてると表示も N となる。

ちょっと遊んでみる

磁石の種類

直方体形状のものをいくつか買ってみたので測ってみる。この形状の場合、磁束密度は面の端が大きくなり、中心で最低になる。

異方性フェライト 30×10×5 N40 (二六製作所)

https://www.26magnet.co.jp/webshop/cart.php?FORM_mode=view_goods_detail&FORM_goods_id=FK082

公称110mT 実測最大 115.26mT

実測最大はマックスホールドして測ってる。

ネオジム 30×10×5 N40 (二六製作所)

https://www.26magnet.co.jp/webshop/cart.php?FORM_mode=view_goods_detail&FORM_goods_id=NK137

公称380mT 実測最大 378.0mT

二六製作所のネオジム磁石は極性がわかるようになっている。赤い帯がついてて、これがついてるほうがN。はじめて利用してみたが、上のフェライト含め小さい磁石4つなのにしっかりした厳重な梱包で送ってきてくれてすごい。

ネオジム 40x10x4mm 自称N52 (Aliexpress)

実測最大 175.46mT

厚さが上記のものから1mm薄いとはいえ、N52 とは思えない。二六製作所の N40 のほうが強い。

磁力回路

機械工作で使われるマグネットベースには磁力回路によるON/OFF機能がある。このON/OFFによって外部に出てくる磁束密度がどの程度変化するかみてみる。

磁石を重ねた場合

磁石は重ねると磁束密度が上昇する。100円均一で売っている小さいネオジム磁石を重ねて計測してグラフ化してみた

見ての通り比例するわけではなく、ある程度で頭打ちする。

ref

  1. トップ
  2. tech
  3. 安価なテスラメータ(磁束密度計) TD8620 を買ってみた