ムービングライトトラッカー

今日、私は研究からの自由時間に従事していた1つの興味深いプロジェクトについて書くことにしました。



デバイスの本質は単純です-移動可能な光源からの光を記録するフォトダイオードのマトリックス(この場合は4ですが、さらに多くの場合もあります)があります。 当然、各フォトダイオードに入射する光の量は個別に異なります。



デバイスは、移動する光源の空間的な位置を特定する必要がありますこれが主な目標です。 つまり、光源の強度ベクトルと位置ベクトル間の多次元相関の問題をプログラムで解決する必要があります。







一般的なスキームを上の図に示します。 この例では、4つのフォトダイオードのみです。 フォトダイオードからの信号は増幅され、ATMega16マイクロコントローラーに送られます。 マイクロコントローラーはデータパケットを生成し、USART(COMポート)を介して1 Hzの周波数で送信します。 コンピューター側から、Lazarus(FreePascal)で書かれたプログラムが実行され、ポートからデータを読み取り、無料のニューラルネットワークライブラリを使用して分析し、光源の位置の結果を提供します。



これは簡単な説明でしたが、現在は詳細です。



1)フォトダイオードの接続




フォトダイオードをオペアンプに接続する簡単な図を示します。小さな電流-電圧変換回路は、回路に関する書籍で見つけることができます。







入射光により光電流が発生し、オフセットのある回路とは対照的に、回路は線形(飽和するまで)です。 電流は反転入力にほとんど流れないため、出力電圧はU = I * R1として定義されます。



フォトダイオードとアンプに関する非常に優れた記事は、Texas Instruments Philip CD HOBBSの従業員「オペアンプのフォトダイオード用アンプ」によって書かれました。 興味のある方すべてにお勧めします。



高速PINフォトダイオードBPW34を使用しました。 彼らは非常に広い視野角を持っていません-手元にあったものを使用しました。 ここでは、ほとんどすべてのフォトダイオードが適しています。好みの問題です。



赤線にはオペアンプAD820が必要です。 電界効果トランジスタ増幅器(FET)は、バイポーラの低リーク電流よりも優れているため、電流-電圧変換回路では非常に重要です。 アンプにはレールtoレール出力もあります。つまり、出力電圧の大きさは電源バスに非常に近くなります。

アンプ出力の後にローパスフィルター(ローパスフィルター)を使用し、ノイズが少なくなるように希望のカットオフ周波数を選択することをお勧めします。



2)ATMEGA16マイクロコントローラー




上記で書いたように、信号をデジタル化し、PCポートに送信するには、マイクロコントローラーが必要です。

COMポートに最も古いMAX232ACPEコンバーターを使用します。 現在、ハードウェアUSBを備えたコントローラーを使用していますが、1年前、MAX232を備えた回路は非常にクールに思え、最終的にそれを見つけたときは非常に満足していました。

COMポートを備えたボードをお持ちでない方は、FT232RLでボードを組み立てるか、USB-USARTコンバーターを購入する必要があります。これは現在インターネットで大量に販売されています。







まず、マイクロコントローラー(MK)の安定した電源を編成する必要があります。 栄養のために、常にMKの足のできるだけ近くに、容量0.1 uFのセラミックコンデンサを入れてください。 図はVCCとGNDの間にあります。



次に、クロック信号に注意する必要があります。



ここに8MHzの水晶振動子があります(信じてください、私が始めたとき、それはとても小さいと思いました)。 安定性を高めるために、図に示すようにピコファラッドコンデンサが取り付けられています。 各周波数には固有の名称が必要です。詳細については、各IC(集積回路)の公式パスポートドキュメントのデータシートを参照してください。



MKが偶発的な放電なしで機能するためには、プルアップ抵抗を介してVccをRESETに接続する必要があります。



PA0..7のアナログ入力は、アンプから信号を供給するポートです。

ADCの基準電圧としてVccを使用しますが、それほど複雑ではありません。



RX、TXポートは、データの送受信に使用されます。

TTLロジックとRS232ロジックは非常に異なっており、直接動作することはできないため、コンバーターを使用します。接続図は左側に示されています。 コンバータの配線図に示されているコンデンサはすべてセラミック製で、公称値は0.1 uFです。



3)開発環境と使用するライブラリ




このプロジェクトは、FreePascalコンパイラであるLazarus IDEで作成中に、いくつかのコンポーネントとライブラリを使用しました。







ニューラルネットワークを操作するために、無料のFANNライブラリを選択しました。 ほとんどの人はニューラルネットワークアルゴリズムの仕組みを知っていると思いますが、念のため、例で繰り返します。







ここで、ニューラルネットワークは最初に教師と一緒に学習する必要があります。



トレーニングの意味は、ネットワークが出力ベクトルとトレーニングベクトルの差を最小化するような方法でマトリックスマトリックスの係数を調整する必要があるということです。



各タスクはある意味で一意であるため、問題を解決するのに十分なニューロン数、使用する伝達関数などを示す理論はありません。



それだけです

次に時間を見つけたとき-次のような部分を含む続編を書きます:



次の部分は完全にソフトウェアになります。



All Articles