加速Arduino。 液体窒素下。 20⇒65.3Mhz @ -196°C

記事の開始前に、あなたはすぐに2つの質問に答えるべきです、占い師に行かないでください-彼らは尋ねられます:



1)これの実際的な意味は何ですか? 極低温で電子機器がどのように動作するかを把握するために、20 MHzからAVRをどれだけ絞り出すことができるかが非常に興味深いです。



2)なぜArduinoがマイクロコントローラーの束がより高速になり、i7が一般的にみんなを引き裂くのか? そうです。 さらに多くの最新のマイクロコントローラーがあり、2〜3桁高速です(そして、私はそれらを持っています)。 しかし、Arduinoは苦痛を与えることに決めたため、ファンの間で大きな名声を得ました。 実際のアプリケーションでは、より高速なマイクロコントローラー(Cortex-M3、M4)を使用する方が確かに安価で簡単です。



安定性テスト、プログラマブルクロックジェネレーター、または電源電圧制御がないため、液体窒素下でマイクロコントローラーをオーバークロックすると、「デスクトップ」プロセッサーをオーバークロックするよりも多少複雑になることが予想されます。 そして、Arduinoのコンポーネントは、実践が示しているように、極低温に耐えられません-そして、それらを個別に処理する必要があります。 幸いなことに、これらすべての問題を解決することができました。



液体窒素

私はずっと彼に会いたかった。 いくつかの企業がモスクワで販売していることが判明しました。 最も近いのはNII KMで 、1リットルあたり50ルーブルの窒素があります。 一部の企業は、5リットルで950ルーブルを求めて顔をしかめていません。



液体窒素は、文字通り空気から得られます-液化して蒸留塔で分離するか、逆も同様です-最初に、特別なフィルターで空気から窒素を分離し、次に液化します。 結局のところ、液体窒素(1日あたり10リットル)を生産するための小さなプラントでも販売されています。 電気生産のコストは、1リットルあたり5〜10ルーブルです。 今、私は自分の誕生日に何が欲しいかを確実に知っています!







窒素を通常のスチール製魔法瓶に入れて運ぶことができます(温度が急激に低下するとガラスが割れることがあります)。 さらに加温した後(+1センチメートルの断熱材と結露から保護するためのポリエチレン)、窒素は30時間で蒸発しました。これは原則として作業に十分です。 特別なデュワー船の購入は非常に高価な喜びですが、25日間で小さな(〜5リットル)の「正しい」デュワー船からの窒素が沸騰します。 また、液体窒素をしっかりと閉じることはできません。破片に裂けることを忘れないでください。



physics.stackexchange.com/で、彼らは断熱を反対の方法で行うべきだと提案しました-下ではなく上に置きます。 窒素を蒸発させて魔法瓶の外壁を冷却します。





負荷試験

SRAMでの読み取り/書き込み、フラッシュからの読み取り、算術演算、プログラムフローテスト(分岐あり)をテストするテストを作成する必要がありました。 テストのアイデア-コマンドのシーケンスが見つかり、システムを初期状態から戻し、一定数のステップを経て、元の状態になります。 ここから完全なストレステストをダウンロードしてください

テストを見る
void run_flow_test() { for(int repeat=0;repeat<250;repeat++)//We are aiming at ~10 benches per second { //Program flow check //Magic loop which after 93 itterations yields same value for(unsigned char i=0;i<93;i++) { flow_check=(flow_check<<1) + (flow_check>>7) + 25; if(flow_check&8) flow_check^=4; else flow_check^=16; flow_check=flow_check ^ 192 + 1; } } } void run_mul_test() { for(int repeat=0;repeat<350;repeat++)//We are aiming at ~10 benches per second { //Multiplication check for(unsigned char i=0;i<64;i++) { mul_check=mul_check*(mul_check-1); mul_check=mul_check*(mul_check+1)+2; } } } void run_flash_test() { for(int repeat=0;repeat<1000;repeat++)//We are aiming at ~10 benches per second { //flash_check for(unsigned char i=0;i<16;i++) { flash_check=(flash_check ^ svalue1) + svalue2; flash_check=(flash_check<<((svalue3+flash_check)&7)) + (flash_check>>((svalue3+flash_check)&7)) + svalue4; } } } void run_sram_test() { for(int repeat=0;repeat<10;repeat++)//We are aiming at ~10 benches per second { //SRAM check for(int i=0;i<2405;i++) { value1=(value1+value2+value3+value4+sram_check)&1; value2=(value2+value1+value3+value4+sram_check)&1+1; value3=(value3+value1+value2+value4+sram_check)&1+2; value4=(value4+value1+value2+value3+sram_check)&1+3; sram_check=(sram_check<<1)+(sram_check>>7)+value1+value2+value3+value4; } } }
      
      







4ビットバスを介して標準的な方法で接続されたHD44780画面の2行目には、ループの反復回数とチェックサムの8桁の16進数が表示されます。 最初の2つはSRAMテスト、次にフラッシュ、算術およびプログラムフローです。 すべてが正常であれば、チェックサムは12345678になります。チェックサムのエラーが蓄積されます。 また、エラーコードは、ボード上のLEDを点滅させることで表示されます。単調な点滅-すべては問題ありません。1回のフラッシュ-SRAMエラー、2-フラッシュなど。 〜-100°Cでのテストの場合、通常-196°Cでプログラムフローテストエラーが見つかりました-SRAMメモリの読み取り/書き込みテストです。



電圧を上げると、ディスプレイをオフにし、LEDだけに頼らなければならないと思われました。 しかし、それは逆に判明しました-液体窒素の温度でLEDが動作を停止しました(バンドギャップの拡大により、点火に必要な電圧は供給電圧よりも高くなりました、以下でさらに)。







クロックジェネレーター

Arduinoのデフォルトはクォーツです。 通常、第1高調波の水晶は30 MHz以下で動作するため、外部ジェネレーターを使用することは避けられません。 Arduinaボード自体をはんだ付けしないように、クォーツが接続されている2本の脚を曲げ、接点を外部クロック周波数にはんだ付けしました。 さて、ヒューズを外部ジェネレーターから動作するように変更する必要がありましたが、これには別のプログラマー(私の場合はTL866CS MiniPro )が必要です。 もちろん、私は足を曲げた後にこれについてすでに考えていました、そして、マイクロコントローラーはプログラマーに松葉杖で置かれなければなりませんでした。 左側の写真では、LM2596の中国語DCDCモジュールも表示されています。このモジュールで電源電圧を変更しました。







もちろん、100 MHzまでの信号発生器はありませんでした-これは高価なビジネスです。 50%のデューティサイクルで必要な範囲(16〜100 MHz)で生成できる調整可能なジェネレーターは、4回目の試行からのみ収集できました。 多くの発電機発電機は、最大周波数が低すぎるか、高周波数で不安定であることが判明しました(一部のパルスが誤って短く/広くなる)。 最終的に、次の回路は必要な範囲全体で確実に生成されました。 出力の抵抗R1は部分的なシリアル終端であるため、マイクロコントローラー側のクロック信号のオーバーショットはそれほど怖くありません。 高電圧で作業する必要があり、チップを焼くことができます(振幅が8Vの「シャープ」信号-マイクロコントローラの側面での瞬間的な「サージ」は最大16ボルトになります)。











極低温での電子機器の動作の特徴

-196度に冷却すると、金属の抵抗が大幅に低下します。 たとえば、銅の場合、コイルの抵抗は室温で56.3オームで、冷却するとわずか6.6オーム(8.5倍低下)でした。



コンデンサーの動作ははるかに複雑です。電解コンデンサーは、電解質が凍結すると〜500'000倍の容量を失います。 セラミックコンデンサ-誘電体に応じて:最も安価なY5V-冷却すると静電容量のほぼ全体が失われ、X7R-静電容量の66%が失われ、NP0(C0G)-1%以下の静電容量の変化(ただし、静電容量が1000 pFを超えるコンデンサはまれです) したがって、電力用の絶縁コンデンサがY5V誘電体の場合、冷却中に回路の安定性が失われる可能性があります。 100〜150度に加熱すると、誘電体のタイプを確認できます。静電容量への影響はほぼ同じです。 この問題を解消するために、X7RおよびNP0誘電体を備えたコンデンサをマイクロコントローラの電源脚に直接はんだ付けしました。



半導体の場合、 バンドギャップが増加し、電子/正孔の移動度が変化します(ここでは依存性が複雑です)。 実際には、これにより、たとえばシリコンダイオードの電圧降下が0.6〜0.7 Vではなく1.1になります。 これは、多くのバイポーラトランジスタがあるアナログ回路に特に当てはまります。



禁止ゾーンの幅の増加により、LEDのグロー色が変化し、波長が短くなります。 これは特にオレンジ/黄色のLEDで顕著です-それらは緑色に変わります。 同時に、必要な供給電圧が大幅に増加し、この場合、供給電圧はすでにそれをオンにするのに十分ではありませんでした。







冷却すると超小型回路の動作が速くなるのはなぜですか? CMOSロジックの動作速度は、浮遊コンデンサ(トランジスタおよび金属接続のゲート容量)の充電/放電の速度によって制限されます。 そして以来 温度が低下すると、金属の抵抗が低下します-特に回路の速度が重要な場合、動作の速度が向上する可能性があり、これらはいくつかの長いチェーンでした。



つまり 液体窒素は、大量の熱を除去するのではなく(通常の水よりも熱容量が大きいため、これに対処します)、内部金属化合物の抵抗を減らすことでマイクロ回路の特性を改善するために必要です。



劇的なスタートを伴う直接加速

これらの準備をすべて終えた後、Arduinoに液体窒素をゆっくりと充填します。接続部でクラックが発生し、画面のバックライトが突然消え、ボードがフリーズします。 終わりだと思いました。 それから、あまり冷めないようにボードを窒素よりわずかに高くすると、バックライトが再び点灯し、ボードが機能することがわかりました。 50 MHzまでオーバークロックするのは困難でした。 しかし、もちろん、結果は信頼できませんでした、なぜなら マイクロコントローラーの温度が不安定でした。



突然、ボードが窒素に降ろされたときに停止し、ウォームアップ時に機能し続ける様子を見て、アイデアが浮上しました:低すぎる供給電圧に対する保護が機能する場合はどうなりますか? ブラウンアウト検出をオフにしました-そして、液体窒素に下げられたとき、マイクロコントローラーは安定して動作し始めました! スクリーンでは、バックライトがボード上の3.3Vリニアレギュレーターに接続されていることがわかりました(電源ピンが切れていました)-そして、温度が下がったとき、彼はおそらく保護が機能していると感じ、電圧が非常に下がったと感じました 5Vに直接接続-そしてそれも機能しました。



安定した仕事は約50 MHzでした-そして、私は電圧を上げ始めました。 8ボルトを超えると、システムが動作を停止し、7.5〜8ボルトが65.3 MHzの周波数で完全に安定した動作を提供することが判明しました。 比較のために、室温と5Vで-最も安定した周波数は32.5 MHz、8V-37 MHzです。



65 MHzの周波数で、テストは1時間以上安定して動作し、合計3リットルの窒素が加速するのにかかりました。











空中で-ボードはすぐに霜で覆われます:





ビデオでは、65 MHzの周波数でのテストは、液体窒素の層の下でのArduinoの作業の種類である7:12-9.00から始まります。





そして、液体窒素の残りはお湯と顔を合わせます:


まとめ



PS 緑色の光による砂糖の液体窒素燐光を使った他の実験の。 そして、あなたが果物を壊すならば-それらが部屋中に散らばる果物のおridgeに変わる前に、断片を取り除いてください



PS :超伝導体のサンプルをどこで購入できるかを誰かが知っているなら、 書いてください 。 私が見つけたものは途方もなく高価です。



PSRedditについての議論



All Articles