STM32とLEDを使用した物理定数の決定

はじめに



LED-可視またはそれに近い範囲で電磁波を放出する半導体デバイス。 彼の研究は、光子遷移を伴う半導体遷移における電荷キャリアの再結合の効果に基づいています(完全な理論的説明は、物理学の対応する本に記載されていますが、ここでは説明しません)。 主な電気的および光学的特性(特定の設計の場合)は、基本的な物理定数によって決まります。この間接的な測定については、この記事で説明します。 すなわち、結果として、元素電荷(電子電荷)の値とプランク定数が決定されます。



私はずっとマイクロコントローラを研究し、それらのプログラミングを理解したかったので、そのような実験を行うことにしました。 その結果は、数週間前の物理試験の選択問題として首尾よく提示されました。



マイクロコントローラーの選択



このようなアイデアは試験の少し前に思いついたので、完成した作業計画を数日で理解し、実装しなければなりませんでした。 以前は、マイクロコントローラーの経験がまったくなかったため、さまざまな記事やフォーラムの情報に従って選択しました。 その結果、彼はST-STM32の32ビットARM Cortexファミリに落ち着きました。 このようなコントローラーには、便利な形式で最も必要なもの(プロセッサ自体、単純なバンドル、USBデバッガー(STLink))を含むかなり多数のデバッグボードがあります。 STM32F100RBコントローラーに基づいてベースSTM32VLDISCOVERY取得しました。 主な機能:8 KBのRAM、128 KBのフラッシュ、デフォルトで24 MHz、あらゆる種類のADC / DAC、タイマー、多数のGPIOピン、その他のインターフェイス。 プログラムは通常Cで記述されていますが、アセンブラーとC ++ももちろん可能です。



接続して始めましょう



私はLinuxでこのデバイスをハーフキックで取得することができませんでした(実際に動作しました)ので、WindowsでCooCox CoIDE環境を使用しました。既製の設定と私のようなデバッグボードの例があります。 実際には、接続にもコンパイルにも問題はありませんでした。すべてがすぐに機能しました。



プロセッサと周辺機器を制御するためのライブラリには十分な選択肢があります。ARMとSTのCMSIS、STのStdPeriph、CooCoxのライブラリなどです。 一般的に、今ではCMSISを使用するのが最も正確で最も簡単なように思えます。データシートに対応する構造と定数の定義を提供します。 しかし、このプロジェクトは急いで書かれたので、そこにリストされている3つのライブラリすべてをどのように使用したかに気付くことさえありませんでした。 STM32の開発を開始するための十分なチュートリアルがあるので、これ以上詳しくは説明しません。



回路図



Discoveryボードには別のUSB電源(5 V、および3.3 Vスタビライザー)があるため、回路の測定部分には同じソースから電力が供給されます。 追加の詳細-3つの抵抗、1つのコンデンサ、1つのトランジスタ、そしてもちろんLED。 電気回路は非常にシンプルで、ヒンジ式にはんだ付けしました-すべては要素の発見に基づいています:



画像



ここでは、スイッチは、0または1が供給されるコントローラーピンへの接続を比fig的に示しています。5Vへのプルアップが使用されます。 ほとんどのピンは5 Vの電源をサポートしていますが、それ自体は3.3しか供給できません。 ここでは、それぞれ、ピンのゼロで、電圧は0で、ユニティで-ほぼ5 Vです。コンデンサは、数秒間電圧の滑らかな増加と減少を提供します。 「ADC」とマークされた端子は、マイクロコントローラーのADCの任意の2つの入力に接続され、LEDの電圧と電流の両方の測定を提供します。 画像



徴候



もちろん、単純にすべてのデータをコンピューターに送信し、既に処理することもできますが、その場で情報を表示したかったのです。 これを行うには、次のような通常の2行テキスト表示を使用しました。 画像

6つのGPIOピンでデータを転送できます。ソフトウェア側からの最速の方法は、何らかの種類のライブラリを使用することです。 CooCoxのメニューから直接接続されているHD44780(これはディスプレイのコントローラーです)のドライバーを取りました。 このようなドライバーを自分で作成することも簡単ですが(後で説明します)、長くなります。



測定



半導体の理論から、pn接合を流れる電流の値が小さい場合、飽和が遠い間、電流の電圧依存性は指数関数的であることが知られています(教科書で読むことができます): 画像 ここで、Iは遷移を通る電流、I 0は電圧がない場合の電子または正孔の電流、eは電子の電荷、Vは遷移の電圧、k bはボルツマン定数、Tは温度です。 後者の近似的な等式は、十分に小さな電圧(10分の1ボルト)でもほぼ正確に当てはまります。



電流が十分に大きい場合、飽和が発生すると、ダイオードは直列接続された一定の電圧降下(接合部の電位障壁に等しい)と、半導体と接点の抵抗に対応する抵抗として表すことができます。 LEDの場合の潜在的な遷移障壁は、放出された光子のエネルギーに対応します。 画像 ここで、V 0は遷移電圧、hはプランクの定数、cは光速、 画像 -LEDの放射の波長。 実際には、波長を決定するために必要なのはLEDです(通常のダイオードではありません)。 このデータをデータシートからLEDに取りましたが、一般的には自宅で測定できますが、CD / DVDディスクに基づいた分光計の作成に関する記事をいくつか見ました。



マイクロコントローラーは、LEDの電流-電圧特性、つまり2つのセクション、つまり低電流と比較的大きいセクションを測定するだけです。 測定は、ボタンを押した後に自動的に行われ、電流が25ミリアンペアに増加し、その後減少してゼロに戻ります。 I-V特性の興味深いセクションでは、コントローラーは最小二乗法により係数を計算し、それらから単純な算術演算により単純な定数が取得されます。



CVCの線形部分の典型的なビュー: 画像



そして指数関数的: 画像



その結果、決定された定数の値は実数に非常に近いことが判明しました。e= 1.54 * 10 -19 C、h = 5.72 * 10 -34 J * s(利用可能なすべてのLEDの平均、かなり大きな広がり)。



プログラミング



周辺機器とのやり取りを担当するコードの重要な部分はさまざまな記事やチュートリアルから引用されているため、この場合はコードの記述にあまり触れたくありません。そのため、1つだけでなくさまざまなライブラリが使用されています。 。 おそらく近い将来、同じマイクロコントローラーに基づいた別のプロジェクトについて、よりプログラミング指向の記事を書くでしょう。



プロジェクト全体(ソース、CooCoxサービスファイル、小さなレポート)は、 hg.plav.in / stm32_ledcvc / fileで表示またはダウンロードできます(レポートはレポートフォルダーにあります)。



おわりに



当初、このプロジェクトによって設定された目標は達成されました。マイクロコントローラーのプログラミングを理解し始め、試験で選択の問題を話しました:)もちろん、いくつかのことは改善または異なる方法で行うことができました。 たとえば、コンデンサを徐々に充電するのではなく、マイクロコントローラのDACを使用して電圧を滑らかに変化させることができます。そうすれば、追加の部品を少なくすることができます。 また、定格が27オームを超える抵抗を使用すると、低電流範囲でより正確な測定が可能になりますが、最初はそのような測定を計画していなかったため、回路をやり直すには遅すぎました。 ちなみに、このようなより正確な測定により、おそらく温度測定が可能になります(上記の図では、誤差は約+ -30度、またはそれ以上になります)。



何か質問がある場合、またはSTM32プログラミングに関連する記事で見たいことがあります-書いてください:)



All Articles