« 2021年4月 | トップページ | 2021年6月 »
M1を搭載したiMacがiFixitに分解されていた。
https://www.ifixit.com/Teardown/iMac+M1+24-Inch+Teardown/142850
かなり詳しく解説されてますが、アンテナについてはアップルロゴ(リンゴマーク)の1つしか記載されてないので、、、
3つがどこにあるかについて。
どうやったらわかるかというと、WiFiのSiPの裏側に同軸コネクタが3つあって、そのX線写真で同軸ケーブルがどう伸びているかを見ればわかる。
実際のアンテナはこれ。
先日たまたま聞かれたのだが、これくらい知っといてよ、、、と思いながら答えた。
ついでなんで自動で計算してくれる自作式を作った。こういう回路の相互変換ができる。
画面:
リンクはこちら:
説明:
SパラメータとZパラメータの変換で、
S=(Z+Zo)⁻¹(Z-Zo)
と書いてあるケースと、
S=(Z-Zo)(Z+Zo)⁻¹
がある。ただしZoは特性インピーダンスZoが対角成分にある行列(ZoI, I=単位行列)行列なので一般には積の順番を変えると成り立たないが、この場合は成り立つ。
Sympyで見てみる。まずは2行2列の成分表示から。
S1==S2がTrueなので成り立ってる。ただ、、、simplify入れないとFalseになってしまうのでそこだけ注意が必要。
次はMatrixSympolを使ったN行N列の一般の場合。
これも成り立っている。
証明も付けておきます。
まずZoZ = ZZoなので
(Z + Zo)(Z - Zo) = (Z - Zo)(Z + Zo)
が成り立つ。この式に左側も右側も(Z+Zo)⁻¹をかけてみる。
(Z+Zo)⁻¹(Z + Zo)(Z - Zo)(Z+Zo)⁻¹ = (Z+Zo)⁻¹(Z - Zo)(Z + Zo)(Z+Zo)⁻¹
もちろん、 (Z+Zo)⁻¹(Z +Zo) = (Z + Zo)(Z+Zo)⁻¹ = Iなので
S = (Z - Zo)(Z+Zo)⁻¹ = (Z+Zo)⁻¹(Z - Zo)
が成り立つということ。
昨日は行列とベクトルを成分に直して計算した。イマイチかっこわるい、、、ということで行列とベクトルのまま計算する方法。
Sympyで行列はMatrixSymbolで定義できるが、実はこれではどうやら今回のものは計算できないっぽい。
それは、solveがMatrixSymbolに対応してないから。
じゃあどうするか?というと、非可換の変数として定義する。
https://docs.sympy.org/latest/tutorial/manipulation.html
例えば
A=Symbol('A', commutative=False)とすると非可換になる。これならsolveが使える。ただしcollectiveは使えない。
成分と同様、こうやって計算できる。
from sympy import *
init_printing()
#Sパラメータ, Zパラメータの非可換の変数定義
V = Symbol('V', commutative=False)
I = Symbol('I', commutative=False)
a = Symbol('a', commutative=False)
b = Symbol('b', commutative=False)
S = Symbol('S', commutative=False)
Z = Symbol('Z', commutative=False)
#特性インピーダンスを対角成分にもつ行列のみ可換
Zo = Symbol('Zo')
#Zパラメータの定義
expr = V - Z*I
#V,Iを入射波a, 反射波bで書き直す。
expr2=expr.subs([(I, (a-b)/sqrt(Zo)), (V, (a+b)*sqrt(Zo))])
#反射波bについて解いたものがSパラメータ
Sconvert = solve(expr2, b)
#aをくくりだす
display(separatevars(Sconvert[0]))
結果はおなじみのものが得られた。
答え:
Sympyの使い方を勉強中です。何かよく知っている事例で試せないかな?ということで、
Zパラメータ(Z行列、インピーダンス行列)をSパラメータ(S行列)に変換してみよう。とりあえず2ポートで。
Zパラメータはポート1,2の電流(I1, I2)と電圧(V1,V2)を使って
[V1] = [Z11 Z12] [I1]
[V2] [Z21 Z22] [I2]
とかける。Sパラメータはポート1、2の入射波(a1,a2)と反射波(b1,b2)を使って
[b1] = [S11 S12] [a1]
[b2] [S21 S22] [a2]
とかける。ここで
V1=√Zo (a1 + b1), V2 = √Zo (a2 + b2)
I1=(a1 - b1)/√Zo, I2 = (a2 - b2)/√Zo
の関係がある。ここまでの情報からSympyに取り込む。collectが大活躍で簡略化してくれる。
やってること:subsでi,vにa,bを入れる。
solveでbについて解く。collectを使って簡略化する(simplifyが全然だめだったので)
係数を求めるのにどうも有理数ではcoeffが効かない?っぽいので、subsで片側を0にして求める。
こんな感じ:
from sympy import *
init_printing()
#Sパラメータ, Zパラメータの変数定義
var('S11,S12,S21,S22')
var('Z11,Z12,Z21,Z22')
var('a1,a2,b1,b2')
var('i1,i2,v1,v2')
S = Matrix([[S11,S12],[S21,S22]])
Z = Matrix([[Z11,Z12],[Z21,Z22]])
a=Matrix([[a1],[a2]])
b=Matrix([[b1],[b2]])
i=Matrix([[i1],[i2]])
v=Matrix([[v1],[v2]])
#特性インピーダンスZo
Zo = Symbol('Zo')
#Zパラメータと電流・電圧の関係
expr = v - Z*i
#Zパラメータの電流、電圧を進行波a, 反射波bで書き直す
expr2 =expr.subs([(i1,(a1 - b1) / sqrt(Zo)), (i2,(a2 - b2) / sqrt(Zo)), (v1, (a1 + b1) * sqrt(Zo)),(v2,(a2 + b2) * sqrt(Zo))])
#反射波bに関して解く
Sconvert = solve(expr2, [b1,b2])
#係数ごとに簡略化する。
Sconvert1 = collect(Sconvert[b1],[a1,a2,Zo])
Sconvert2 = collect(Sconvert[b2],[a1,a2,Zo])
Sconvert11 = collect(Sconvert1.subs(a2,0)/a1,Zo)
Sconvert12 = collect(Sconvert1.subs(a1,0)/a2,Zo)
Sconvert21 = collect(Sconvert2.subs(a2,0)/a1,Zo)
Sconvert22 = collect(Sconvert2.subs(a1,0)/a2,Zo)
#最終的な結果
Sconvert=Matrix([[Sconvert11,Sconvert12],[Sconvert21,Sconvert22]])
display(Sconvert)
結果はこんな感じ。
最終結果を拡大すると、
と望む結果が得られた。
とはいえ、成分で書くのはイマイチ、、、行列のまま計算したい。ということで(続く)。
この前の
の続き。
オリジナルのナベアツ数は3の倍数と3がつくときだけアホになる、だがnの倍数とnがつくときだけアホになる、のが一般化ナベアツ数。
Nabn(x)
と書こう。これを10^6まで、n=1-20まで図示するとこうなった。もちろんn=1は全部の数。結構思わせぶりな曲線になってる。
ではn=20-200では?
どれもNab_n(x)/x→1?
Pythonのコードはこちら。高速化のためにNumbaを使った。
import matplotlib.pyplot as plt
import numpy as np
from numba import njit
x=1000000
m=20
n = np.arange(1, x+1)
@njit
def Nab(n, x):
count = 0
nb = np.zeros(x)
for k in range(1, x+1):
if k % n == 0 or str(n) in str(k):
count += 1
nb[k-1] = count
return nb
plt.figure(figsize=(15,15))
plt.grid()
plt.title("Generalized Nabeatsu Numbers Nab_n(x)", fontsize=24)
plt.xlabel('x', fontsize = 18)
plt.ylabel('Nab(x)', fontsize = 18)
plt.tick_params(labelsize=18)
plt.xscale("log")
plt.yscale("log")
for i in range(1,m+1):
a = Nab(i, x)
s = 'Nab_' + str(i) + '(x)'
plt.plot(n, a, label = s)
plt.legend(fontsize=12)
plt.show()
加藤文元さんがナベアツ数の解析をされているのを初めて知った。
これですね。 pic.twitter.com/oSSUsQTaqs
— Fumiharu Kato 加藤文元(Bungen) (@FumiharuKato) May 15, 2021
おお、これは素数階段みたいだ。ということでPythonで描いてみよう。ついでに最後にquasi-Nabeatu function (nab(x))として記載されているものとも比較しよう。とりあえず10^5くらいで数分かかる。
Pythonのコードはこちら:
import matplotlib.pyplot as plt
import numpy as np
x=100000
count = 0
n = range(1, x+1)
Nab = []
qNab = []
for k in range(1, x+1):
if k % 3 == 0:
count += 1
else:
if '3' in str(k):
count += 1
Nab.append(count)
q = k - (2/3)*k**np.log10(9) - 1
qNab.append(q)
plt.figure(figsize=(12,8))
plt.bar(n, Nab, label = 'Nab(x)')
plt.plot(n, qNab, label='quasi-Nab(x)', color = 'Red')
plt.grid()
plt.title("Nabeatsu Numbers Nab(x)", fontsize=24)
plt.xlabel('x', fontsize = 18)
plt.ylabel('Nab(x)', fontsize = 18)
plt.tick_params(labelsize=18)
plt.legend(fontsize=18)
plt.xscale("log")
plt.yscale("log")
plt.show()
こちらも参照:
IEEE Microwave Magazineの今月号、
https://ieeexplore.ieee.org/xpl/mostRecentIssue.jsp?punumber=6668
Chipless RFID Printing Technologies: A State of the Artという記事が出てる。
電池もいらないで、情報をパターンとして描いて受け取った信号をさまざまな周波数で共振させることで情報を読み取り側に渡すもの。
こちらは工法主体。
一方、Microwave Magazineの今月号は、
https://www.microwavejournal.com/publications/1
Design of a Cobweb Shape Chipless RFID Tag
という記事が出ていて被った!珍しい。でもこっちはパターンが主。
あと、マイクロ波の回路シミュレータの元祖(ADSの前、MDSのさらに前)のCOMPACTの開発の話が出ていた。偉大なり。
Microwave MagazineのほうにはUWBを使った広帯域誘電体スペクトロスコピーも出てた。
UWBでタグ(RFID)と言えばApple AirTagも分解されてましたね。
グラフェンが6Gで大きな役割を果たすというIDTechEXの分析。ほんとかな、、、
Qorvoが出している電源管理回路のDummiesシリーズ。
ZigbeeがMatterに。普及するのかな、、、
EEtimesの名物エディター、Junko Yoshidaさんが引退!えーそうなのか。記事をいつも興味深く読ませてもらってました。
UWB(Ultra Wide Band)、AppleがiPhone11から採用し、AirTagが発売されたことでちょっと盛り上がっている。
AirTagはこちらを参照:
AppleのUWB利用を忘れものタグ(位置タグ) AirTagの分解
で、UWB用のアンテナについて調べていてこれを見つけた。
Ultra-Wideband Antenna and Design
その中でPICAというのがある。Planar Inversed Cone Antennaで、円錐アンテナが逆方向向いていてP板に形成されているようなものだが、、、その中で2つ穴が開いているのがまさにスライム!
3つ穴タイプは、うーん、キョーダイン、ゲッターロボ、仮面ライダーフォーゼ???
PICAなんでピカチュウもできそうではある、、、
5Gミリ波アンテナは水平(H)と垂直(V)偏波使うので、、、耳から給電すればPichachu-PICAができる!
あちこちで評判を聞いていて、これは読まねば、と思ってようやく読めた。
確かにこれは面白いです。細胞・遺伝子・自然淘汰による進化・化学としての生命・情報としての生命、の5ステップを説明したのち、生物学で世界をいかに変えることができるか、についての問題提起があり、そしてポールさんの生命とは何か?についての考えが述べられています。
多く挟まれる自分、あるいは別の学者たちのエピソードが非常に面白いです。特にポールさん自身が行った細胞周期についての発見のエピソードはわくわくする感じ。ダーウィンのおじいさんの話も知らなかったので面白い。
一番驚いたのはポールさん自身の生まれというか、出自というかですが、、、ドラマみたいだ。
あとイギリス人らしく、政治やウイルス拒否する人への皮肉も。
読んだ後はウイルスですら親戚と思えるような気がするほど、生命はお互いに関連づいていて祖先も同じ、ということに気付かされます。
コロナの中でこそ、こういう本を読んで生命に思いをはせるのがいいのでは、と思います。
昔は小西さんの本とか(まあ元ネタはいろいろ今ならわかりますが)それなりの数の高周波の教科書が書店に並んでいたことがあった、、、が、今はあまりないし、あってもちょっと初歩的すぎる?というのもばかり。
で、高周波(マイクロ波、ミリ波)でいい教科書ないですか?と聞かれることが多いのだが、
洋書ならPozarのとか、と言ってたら日本語じゃないと読めないと言われ(!)
じゃあ「ない」と言ってた。
スマートフォンの時代になってから完全に日本は高周波技術で立ち遅れたからなあ、、、
まあないだろうな、と思っていたらたまたま書店で見つけた。
これ!
おお、PozarのMicrowave Engineering 4th edition が邦訳されてた!早速買った。
もちろん、今の時代(5Gとか)から見ると古いところも多いですが、すべての基礎はここから。
これ全部読んどけば大抵の新技術にはひるむことなくついていけると思う。
難点は高いことだけ、、、
アマゾンリンク:
任天堂が面白いソフトを出すそうだ。
https://www.nintendo.co.jp/switch/awuxa/index.html
スイッチを使ってプログラミングの考え方を学ぶようなもので、既存の言語などではなくてオリジナルでスイッチの機能を活かしたものになっているようです。
で、ノードンというものを並べて線で結ぶ感じのプログラムで、
入力ノードン、中間ノードン、出力ノードン、モノノードンに分かれている。
どうやら中間ノードンというのが動きやセンシングの裏で動く、アルゴリズムを記述するメイン部分になるようだ。
ということでノードンたちを見てみると、
うわ、確かにこれだけあればいろんなことができそうだが、大人でプログラム組めるような人が逆にこんがらがって
子供の方がめちゃくちゃ複雑なアルゴリズム書きそう。
どんなものが出てくるか楽しみ。
※どこかの記事でScratchと比べられていましたがだいぶ違いそう。
Scratchって私もやっているけど数値計算、シミュレーションもできる普通のプログラミング言語としても使えるので。。。
たまたま月の軌道の摂動計算の話を調べていてこれを見た。
https://eco.mtk.nao.ac.jp/koyomi/wiki/B7EEA4CEB8F8C5BEB1BFC6B0.html
え!そうなの!
実際に計算してみよう。わからない定数はWolframAlphaが教えてくれる。例えば
のような感じ。
で月・太陽・地球の位置関係は
のようになるので(惑星の大きさはスケール通りじゃないです)どう見ても地球のほうが強そうだが、
実際に計算するとこうなる。
| 太陽 | 地球 | 月 | |||||
| 質量(kg) | 1.9884E+30 | 5.9724E+24 | 7.3458E+22 | ||||
| 太陽からの距離(m) | 1.4960E+11 | 1.4921E+11 | 地球は平均、月は一番近づくとき | ||||
| 地球からの距離(m) | 3.8500E+08 | ||||||
| 半径(m) | 6.9634E+08 | 6.3781E+06 | 1.7371E+06 | ||||
| 万有引力(太陽と地球) | 3.54E+22 | N | 万有引力定数G | ||||
| 万有引力(地球と月) | 1.98E+20 | N | 6.6743E-11 | m3 kg−1 s−2 | |||
| 万有引力 (太陽と月) | 4.38E+20 | N | |||||
うわ!本当だ。倍くらい太陽の引っ張る力の方が強いのか!知らなかった、、、
5/9追記:
いろいろ間違っていたので修正したものをUPします。
間違っていたところ:
ループアンテナだと思っていたのは、、、コイン電池の+側が当たるところでした、、、なにやってんだ。
UWBとBluetoothのアンテナはNFCコイルと同じくLDS(樹脂に電極を形成したもの)に形成されてます。
ーーーーー以下いろいろ間違っているが記録として残すーーーーーーー
5/1時点:
個人的に注目しているUWB利用法の忘れ物タグ、AirTag。iFixitが早速(途中まで)分解していた。重要な部品搭載面は基板の裏側なので、まずはアンテナだけが見える表側から。
https://www.ifixit.com/News/50145/airtag-teardown-part-one-yeah-this-tracks
金色の輪っかになっている3か所がUWBとBluetoothのアンテナだと思う。
※ちなみにiPhoneもUWBアンテナは3つあって水平方向と垂直方向が検知できる。
ただそれ以外にかなり大きなチップ部品も周囲にあるのが気になる。一見してタンタルコンデンサみたいなパッケージではあるが、こんなところに使う理由がわからない(まあ裏側に入らないのでこちらに持ってきたのかもしれないが) 位置的にはチップアンテナだとしっくりくるが、、、
X線で観ても中が良く見えない。線があるようにも見えるが基板の線が見えているだけかも。
フェライトの色みたいにも見えるのでコイル状のNFCアンテナ?とも思ったがそれは別の動画で見えるように
基板の裏側に載っている。
基板の裏側見て判断しよう。今の予想は
・電源用のタンタルコンデンサ
・NFCが色んな方向で使えるようにコイルアンテナ
のどちらかかなと。
※追記 よく見たらJ107Sって書いてある。10×10^7㎊ = 10^8 pF=100uFとでかい容量のコンデンサか。なので積層コンデンサじゃない。
現時点では裏側はこれだけ。U1チップ指で隠しちゃってる。
5/4追記:
基板の裏側の写真も公開。
https://www.ifixit.com/News/50145/airtag-teardown-part-one-yeah-this-tracks
私が解説した写真がこちら。
思っていたよりSiPが少なくてU1チップ用のみ。特徴はコイン電池用に大容量の高分子キャパシタを使って、その他は既存の部品を使って低コスト化を狙っているようですね。まあApple WatchやAirPodsほど機能に対して小さいわけではないので、これくらいで十分なのかも。
« 2021年4月 | トップページ | 2021年6月 »
最近のコメント