安定して GPS 信号を受けたいなあとう漠然とした考えからTOPGNSS の GN-GGB0710 というのを買ってみた。いわゆる2波対応アンテナではあるけど、手元には1波対応の受信機しかない。

設置

アマチュア無線用のアンテナを取り付けている基台に相乗りする形で設置した。

これ系の穴は測量向けのポールと同じネジピッチ (5/8 x11 UNCネジ) を採用しているらしい。アルミニウムの測量用のポールの15cmぐらいをねじこみ、これを固定している。

ケーブル

エアコンの貫通穴に同軸ケーブル (5D-FB) を通している。エアコン穴部分は室内とベランダを繋ぐ最小限の長さの SMA 延長ケーブルにしている。

アンテナの出力は TNC メス。ここに TNC オス・SMAメスケーブルでエアコン穴のケーブルに繋ぎ、エアコン穴ケーブルから室内でさらに SMA を延長している。

受信してスカイビューをプロット

前につくったGPSDOで受信させつつ、出力される NMEA メッセージをパースしてみる。

前回やったときは室内かつ車載用と思われる安価な GPS アンテナだったので段違いにゲインが高い。

グラフの見方

上下左右が方角。右まわりに上から北・東・南・西

中心からの距離が仰角。中心が真上(90°)で、円周上が水平線(0°)

SNR によって色がついている。

北極・南極の上空は衛星の軌道がない。北半球に住んでいる場合、このプロットのように北極上空にあたる部分に空白ができる。

前回のもの(参考)

  1. トップ
  2. tech
  3. GNSS アンテナの設置

磁束密度 (テスラまたはガウス) を計測したくなったので探してみると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 を買ってみた

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

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

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