標高+1m

Don't be rational.

PCB作ってみた

f:id:ympbyc:20160825155742j:plain

オキシドールクエン酸と塩のエッチング溶液と、レーザーカッターでラッカーを剥がすマスキング手法を組み合わせてみた。

レーザーカッターの精度がかなり重要で、KMSに置いてる機械は最高だった。今月はちょっと地理的にこれが使えないので精度が低い機械を使っていて、ハラハラする。

f:id:ympbyc:20160824153651j:plain

初めてのPCB作り。楽しい!

f:id:ympbyc:20160825140853j:plain

きれいにできた。パッドが小さいのは加工精度の問題。特にインパクトドライバを使った穴あけによるもの。

microduinoを使えるようにするメモ

microduinoを買ったけど、Macで使えるようにするまでちょっと手こずったのでメモ:

  1. FTDIのD2XXドライバをインストール. Tools>Portから見えるようになるはず。
  2. Arduino IDEのスケッチディレクトリ直下にhardwareディレクトリを作って、Microduino-IDE-Supportのhardwareディレクトリの中身をコピー。Tools>Boardから見えるようになるはず
  3. Verifyしてみると、1.6.5を使ってる場合core.aが見つからないと言われるので、ここを見て、platform.txtを編集する。

これでいけた。公式WikiのGetting Started(Mac)はあてにならない. Microduino IDEはディスクイメージが壊れてる(1.6.7)か、Java 6を要求してくる(1.0.6)から、上記の通りマニュアルインストールした。IDEのディスクイメージに同梱されてくるドライバも意味なさそうだった。

なんで僕は1.6.5使ってるんだっけと思ったけど、たしかBoards Manager使うためとかだった気がする。今もう使えるようになってるならアップデートしたい。

自由研究 弱い電源で負荷を間欠動作させる回路

f:id:ympbyc:20160613022251p:plain

ここ数日格闘している回路の話をします。面白いので聞いてください。

無線電力伝送を実用しようと画策していて、例えばこの記事のような実験をやっています。

mechanic.pilotz.jp

LEDを点灯させて喜んでいるのを見てわかるかと思いますが、今のところ実用には程遠い状態です。

弱電では効率が出ないという情報もあるし、他にも送電側の改良が必要なのは明らかにそうなんですが、今日は受信側の改良を考えます。

受信コイルの状況的には、電圧は来ているけど電流がそれほど誘導されていない。しかも波形が汚いといったところで、これをうまく使いこなせれば、ラジオ電波のハーベスティングとか、曇りの日の太陽電池といった、信頼性の低い電源全般にツブシが効きそうです。

ということで、出力インピーダンスが高い電源を出力インピーダンスが低い電源に変換する魔法の回路を探します。

f:id:ympbyc:20160613022805p:plain

そんなものはないので微分的なもので我慢します。間欠動作っすね。

ダイオードで整流したあと、大きい電解コンデンサなりEDLC (電気二重層コンデンサ)なりを充電して、ある程度電荷が溜まったら負荷を接続してガーッと一気に駆動するってことを自動でやりたいわけです。

f:id:ympbyc:20160613023158p:plain

やりたいことはシンプルなのに、この回路、なかなか検索に引っかかりません。発振回路の一種なことはわかるけど、大抵の回路ではコンデンサがbc間にあったりしてこりゃあかんとなります。

問題は、充電したCの放電で負荷を駆動したいというところです。大抵の発振回路ではCは時定数として使って、電源-負荷-GNDの経路を導通させることで駆動させるようになっています。自分でなんとか考えてみようとしましたが、頭がフライになって諦めました。

それもそのはずで、実はこれ、弛張発振回路のしかも今となってはちょっと特殊なタイプの回路だったのでした。なんだよサイリスタって!なんだよPUTって!なんだよUJTって!ネオン管ってなんだよ!マイコン時代にアナログ回路を独学している人間には知らないモノがたくさんあるのでした。

f:id:ympbyc:20160613023505p:plain

重要なのは負性抵抗(正確には微分負性抵抗)で、これがないとうまくいかないようです。要するに、導通開始電圧が導通を維持するのに必要な電圧より高いという特性です。これを使うと、Cの+側と負荷を一時的に直結するということがスッキリできます。

微分負性抵抗領域を持つ部品には、以下のようなものがあるようです。

一番使いやすそうなのはPUTで、導通開始電圧を自由に設定できるようになっています。構造はpnpn接合の2番目のn型半導体からゲートが出ていて、あとは両端からそれぞれアノードとカソードが出ているといった風情です。ゲートで設定した電圧になると導通するダイオードと考えるといいです。

PUTについて詳しくはこちら: PUT/逆方向(Nゲート)サイリスター

以下のサイトには、PUTの使い方と合わせて、pnpトランジスタとnpnトランジスタを組み合わせてpnpn構造をミミックする方法も載っています。

PUTを使った実験(その2)

上記のリンク2つは、LEDの点滅の例ですが、目を凝らして探していたら、悪コンディション下で間欠ソーラー駆動を行う回路も見つけました。 これはBEAM Roboticsっていうムーブメントでよく使われるらしい、Solar Engineという回路を集めたものです。

BEAM Circuits -- Type 1 SEs

こちらもどうぞ: すいか実験室(電子工作): 電気二重層キャパシタでの電力実験

BEAM Robotの実例はこちら: makezine.com

Solar Engineは色々なバージョンがあるみたいですが、やっぱりこれもpnpとnpnを組み合わせてpnpnを作るもので、PUTのミミックのようです。 追記: よく見たらちょっと違いました。これはこれで面白い。負性抵抗はどうやって作ってるんだろう。

さらに追記: 実験してみたところ、Solar Engineはやっぱり負性抵抗がないため、Zenerやダイオードで設定するtrip voltageの周辺でプツプツ細かく充放電するようです。下のPUTでモータを動かしてる動画では、trip voltageを越えると、大電流がドバッと出て、キャパシタがほぼ空になりますが(導通維持電圧まで下がる)、そういう挙動ではない。

f:id:ympbyc:20160613020412p:plain

LTSpiceで実験。PUTはないのでpnp-npnで代用。

f:id:ympbyc:20160613020431p:plain

放電箇所の拡大。

デッドストックのPUTが手に入ったのでLチカの再現実験。石一つで点滅している。

トランジスタ2石の回路もちゃんと発振した。

2000uFを5Vまで充電させればモーターも動く。てことはマイコンも楽々動く。BLEビーコンはばっちり発信した。

PUTは現在国産品種は廃版となっていて、手に入りづらいかもしれませんが、海外ではまだまだ生産中のようなので、みなさんぜひPUTの消費を増やして、絶滅を避けましょう。

大容量コンデンサを使った間欠駆動という旨の記述を含んだ記事が、インターネットには皆無に近かったのに危機感を覚えたので、取り急ぎ書きました。

以上です。

近況

f:id:ympbyc:20160219154153j:plain

ずっと放置しておくのもなんなのですこし近況を書きます。

最近は訳あってもっぱら電子工作に専念しています。

電子工作は子どもの頃鉱石ラジオを作ったことがあるくらいで、ずぶの素人だったんですが、去年の9月ごろからちょこちょこ勉強しつつやっています。

基礎がわからずに応用をやるのは嫌なので、マイコンに逃げずに電圧、電流から始めて、抵抗、コイルとコンデンサトランジスタ、アナログICと少しずつステップアップしていってるので時間がかかります。

電子工作についてのブログはもっぱら会社のブログに書いています。 → http://mechanic.pilotz.jp/

もうちょっと独創的なことができるようになってきたらこっちにも書きます。しばらくは上記のブログを見守ってください。

ではでは

宇宙の作り方とその段階

Star Cluster AP323
Source: Hubblesite.org

こんにちは。アマチュア理論物理学者の山下です。

今日は宇宙を作ってみます。 *1

宇宙たる要件

理論物理学では、物理的特性の集合を宇宙として扱う。物理的特性とは、観測によって得られたデータや、それを説明する式や定数のことで、例えば: 真空エネルギー,時空の幾何,力の強さ,粒子のスピン,ラグランジアン などの事柄である。全ての物理的特性を生じさせる一つの式すなわちTOE (Theory of Everything)があるのが理想であるが、僕らはまだ"この宇宙"のTOEを発見していない。

物理学の宇宙の定義は時代を経て変遷する。観測値により近い予測を行う宇宙が採用されるが、その発見以前には、誤ったものを宇宙として扱っていたことになる。例えば、特殊相対論以前には絶対時間がある宇宙が想定されており、実際に理論物理学はこれを宇宙として扱っていたのだ。理論物理学には、誤った(この宇宙での観測値と一致しない)宇宙論を扱う能力があることがわかる。人工宇宙が"この宇宙"の完璧な模倣でなくても、理論物理学の範疇で研究できるということだ。

物理的特性の集合が宇宙であるという定義は、重大な意味を持つ。これが宇宙作りを可能にするのだ! {人工宇宙の特性, ...}{"この宇宙"の特性, ...} という2つの宇宙に有意な区別はなく、強いて言えばTOEの美しさくらいしか優越の基準がない。宇宙を作るのは至極簡単なのだ。

問題は、面白い宇宙の作り方だ。これが難しい。今回は私の独断と偏見で面白い宇宙の要件を段階順に並べることにする。

  • 内部から観測できること。
  • 内部に観測者がいること。
  • 内部の観測者が矛盾のない、観測事実によく一致するTOEを手にできること。
  • 実行プロセスが物理宇宙と切り離されること。
  • きれいな星座がみれること。

一つ一つ順番に見ていこう。

内部から観測できること

内部からある程度以上の解像度で観測できることは他の要件を満たす上で非常に重要だ。観測とは可視化された宇宙を視ることであり、つまり可視化手法は重要である。可視化とは言っても僕ら人間向けではなく、内部の観測者向けの可視化だ。ある軸を選んで時間軸とし、時間軸に沿って時空をサンプリングさせるという微積分的な手法はたしかに魅力的である。

内部に観測者がいること

宇宙の構造の一つとして、観測者が存在しなかったら面白くない。そんな宇宙はスクリーンセーバーか、せいぜい便利なシミュレーションくらいにしかならない。内部の観測者を手にいれる幾つかの方法を示す。

  • 僕らがアップロードする。
  • 人工的に作る。
  • パラメータをいじりつつ自然発生するのを待つ。
  • パラメータのばらついた多宇宙で自然発生を待つ。

美しいTOEがあり、それが発見されること

これを実現するには、観測者は自然発生させるしかない。その他にも、時空の幾何(曲率,次元など)やインフレーションなど、考えることはたくさんある。この要件を満たす宇宙は、僕らの住む"この宇宙"より、一歩先んじる。

実行プロセスが物理宇宙から切り離されること

例えば宇宙をコンピュータシミュレーションとして実行する場合、コンピュータが壊れるなり太陽が死ぬなりすると実行が止まってしまう。時空の大きさを、外部から見ると有限だが、内部から見ると無限であるようにするなどのテクニックを使って、"この宇宙"への依存をなくす必要がある。

きれいな星座が見れること

宇宙を名乗るなら星空くらいはもつべきだ!

まとめ

人工宇宙が物理宇宙と肩を並べる要件と、これに面白さを追加するいくつかの案を段階順に提示した。

長い道のりですが、頑張りましょう。

オススメの本です

*1:先に断っておくと、僕はクリエイショニストでも、IDでもない。この取り組みはむしろこれらの否定である。ポイントは、ある宇宙が知性によって創造可能ならば、いかにその確率が低くても、物理作用によってランダムにその宇宙が組み上がる可能性を排除できないことだ。観測されてもいない人格を作り上げて創造者とするのは思考停止であり、科学者としてはこの宇宙の存在を可能とする枠組み(マルチバースなど)の物理を探求しなければならない。

We Need More Space!

f:id:ympbyc:20151202230659p:plain

  • 「この宇宙」と書くとき、これは観測可能な宇宙を表す。
  • 「宇宙」と書くときは、数学的に可能な宇宙を表す。

モノの抽象間のコミュニケーションを扱うプログラミングパラダイムについて研究している。既存の例としてはオブジェクト指向が有名であるが、オブジェクトはモデリングの失敗例である。オブジェクト指向は間違ったモデルの上に組み立てられた宇宙であり、僕らの住むこの宇宙のアナログであるとは言い難い。*1 そこで、今回はモノの抽象とそれらのコミュニケーションとして、より適切なモデルを模索してみよう。

まずは既存のモデルを物理的に解釈してみる。モノの抽象を扱う仮想のパラダイムxを使って記述する宇宙は以下の特性をもつとしよう。

  • 時間発展が実時間に依存している。
  • (スレッド内では)同期プログラミング。つまりモノAからモノBに、メッセージはゼロタイムで伝わる。
  • メッセージは宛先を知っている。

上記の3点は、この宇宙が超光速リンクが縦横無尽に走るSF的宇宙か、さもなければグラフの全ノードが1点に縮退し、エッジがくしゃくしゃに絡まったみじめな宇宙かであることを示唆する。

f:id:ympbyc:20151202213019p:plainf:id:ympbyc:20151202213307p:plain

どちらにしても、僕らがモデリングの対象とするこの宇宙とは似ても似つかないことは確かだ。注意して欲しいのは、このような宇宙は存在し得るということだ。ただし、こんな宇宙にあるモノを、僕らの宇宙のモノの記述として扱うのはちょっと大雑把過ぎる。

(普通の意味での)超光速コミュニケーションを禁止すると、グチャッと一点に凝固したグラフ宇宙になる*2。こんなに自由度が低い宇宙ではろくに歩き回ることもできず、まともに思考できるわけがない。 Hence the title "We Need More Space!" ここから出してくれ!

と、いうわけで特殊相対論を初めてちゃんと勉強した。サスカインド教授のレクチャーシリーズがオススメ。これを見てあとはグラフを描きまくれば理解できる。

www.youtube.com

特殊相対論が、時間と空間の関係を与えてくれるので、これを使えば今までのようにグローバルな時計を動かして直径1プランク光秒の閉所に自分たちを閉じ込めなくて済む。言い方を変えると、空間が欲しかったら時間のことも気にかけてやる必要があるってことだ。

ローレンツ変換や、光円錐とトラジェクトリの交点の判定などのテクニックを駆使して、特殊相対論的に正しいと思われるコミュニケーションモデルのシミュレーションを作成できた。clojureで、計算にはexpresso,可視化にはquilを使った。expressoは開発が止まっているようで、SNAPSHOT版は動かないので注意。とても便利。

View post on imgur.com

光速まで(0 ≦ v ≦ c)の速度を持つ慣性系どうしが、0 ≦ u ≦ cの速度の情報を交換する現象を記述できるようになったわけだ。

今のところ簡単のため空間次元はxしか扱っていないが、少なくとも2次元の自由度は得られた。やっと歩き回れる空間が手に入ったんだ。

実を言うと上記uがc未満のときの可視化にバグがあるため、コードの公開はしばらくお待ち下さい。核心部分は大体こんな具合です。

f:id:ympbyc:20151202230833p:plain

また、基本ではあるが、核心的部分については再帰的に定義し、内在するロジックだけで時間発展できるよう留意しました。

引き続きワッチしてください。

*1:オブジェクトをモノの抽象であるかのように宣伝せずに、抽象的な仮想機械であると説明するならば、その利便性については太鼓判を押そう

*2:ちょっと言い過ぎで、この近似でも1秒以内の誤差で直径30万kmの球は手に入る