
最初にアイデアを持っていた
仕事中(私は医学で働いています)2台の電気機械式レコーダーが腫れ、苦しんでいます。私と彼ら:マスカラ、メカニック-あなたはそれが不快であることを知っています。 あるアイデアが頭に浮かんだ:古い時代に窒息する2つのレコーダーを、プリンターに出力する機能を備えた適切なソフトウェアを備えたADCコントローラーとPC(弱くて古いものも含む)で構成される単純なデータ収集システムに置き換えてみませんか? そして、それは私の頭で始まり、回転しました...
歌詞
回路や電子機器の経験も特別な知識もないというアイデア以外は何もなかったので、ネットワークの広大さをめぐってかなりの量の文献とかき回しをしなければなりませんでした。 また、プロジェクトは予算がかかると想定されていたため、LUTメソッドを習得し、ボードのエッチング、ドリル、はんだ付けの方法を学ばなければなりませんでした-後悔はありません。 したがって、私はいくつかの小さな道を試しました-試行錯誤の道、私はその過程で私が行ったいくつかの観察をもたらします、多分誰かがそれらを自分のものと比較して同意するか、同意しないかもしれません:
- このようなクイックスタートは機能せず、幻想を作らないでください。汗をかかなければなりません。
- 最初は、プロテウスのようなエミュレーターを使用しない方が良いです。実際のハードウェアで実験し、手に触れ、味わい、味わう方がはるかに便利です。 単純なデバッグにはUARTで十分です。
- 回路基板-brr、私はLUT +塩化第二鉄+穴あけを好みます、それは少し長くなりますが、あなたがしていることの明確な理解を与えます;
- smdケースのインストールと回路基板の「小型化」に関与しないことをお勧めします。これは初心者にとっては非常に困難です。場合によっては、単純なヒンジ取り付けで「スケールを拡大」してボードを再マウントするのが簡単な場合があります(これも理解に役立ちます)。
ADC理論と最初の試みについて
いくつかの研究の後、いくつかの方法でアイデアを実現することが可能であることが判明しました。 最も簡単な解決策はパトリック・ゲルの本に記載されており(地下室を参照)、アナログからデジタルへの信号変換の基本もそこで説明されています。 そこから取った典型的な図は次のとおりです。

この回路はADCチップに基づいています。 PCとの相互作用は、PCのRS-232インターフェイスのモデムライン上にパルスの制御シーケンスを形成することにより、ソフトウェアレベルで実装されます。 この状況は、データレートを制限し、伝送エラーの可能性を高めます。 測定精度は、ADCの分解能(この場合は8ビット)、ADCに供給される基準電圧の精度(ION LT 1009 CZを使用)によって決まります。 信号のデジタル化速度は、ADCの変換時間に依存し、また、開発者によるインターフェイス構成の精度に依存します。 実際、この実装は私の最初の戦闘経験でした(下の写真を参照)が、よりエレガントなソリューションの必要性を感じたため、すぐに失望しました。 制御プログラム(ドライバー)は、PascalのDOSで作成されました。

このようなスキームは、実行可能性にもかかわらず、示された欠点が実際に使用されないため、ADCマイクロ回路は通常、ハードウェアレベルでデータ転送を既に整理し、同時にいくつかの制御操作またはプリミティブデータ処理を実行するマイクロコントローラーと一緒に使用されます。 このようなソリューションの良い例は、AVRマイクロコントローラーに基づい
た回路です。

この回路は、Atmega8マイクロコントローラー、FT232BM USBインターフェイスチップ、AD7876 ADCチップ、およびREF195GP IONに基づいています。 入力では、オペアンプに基づく微分器が入力信号を0〜5V(ADC基準電圧)の範囲にします。 AD7876 ADCチップは、アナログからデジタルへの信号変換を実行し、SPIインターフェースを介してマイクロコントローラーにデータを送信します。マイクロコントローラーは、UARTおよびFT232BMインターフェースのマイクロ回路を使用して結果をusbポートに「スロー」します。
タスクの一部として、4つのADCチャンネルを使用する必要があります。 魅力的な機会は、スイッチ入力を備えたマイクロコントローラの内蔵ADCを使用することです。これにより、外部ADCチップの使用を放棄し、必要なチャネル数を提供できるようになります-安価でシンプルなソリューション。 各入力での信号の振幅は2〜2.5 Vを超えないため、回路に微分器を含める必要はありません。
私のデバイスのスキーム
ADCコントローラーは、AVR Atmega8マイクロコントローラー上に構築されています。 MKには、4つのADCチャネル、信号LED、PCインターフェイスカードを接続するのに十分な脚があります。 回路は外部ION L1009CZを使用します。
RS-232インターフェースを介したPCインターフェースカード
は 、MAX232チップに基づいており、メインモジュールから分離されています。必要に応じて、USBインターフェース用の
FT232を搭載したカード、または任意のBluetoothモジュール(タイプ
BTM-222 、
HC-04 )blootoothインターフェースを介した通信用。 以下の図は、開発中のデバイスの概略図を示しています。

電源回路は標準です-リニアスタビライザー78L05に基づいて、信号LED HL1があります。 スケマティックダイアグラムはsPlanを使用して描画され、ボードのレイアウトはスプリントレイアウトにあります。 技術チェーンの最後-LUT +エッチング+穴あけ+はんだ付けにより、以下を取得します。

底面図:

ソフトウェア部
コーディングには、Windows用のAVRStudio + WinAVR(AVR-GCC)を使用しました。Linuxの代替はEclipse + AVR-GCCです。 CodeVisionAVRを試してみました-最初は悪くありません。組み込みのコードジェネレーターがあり、コードの量の制限は2 kBです。
ファームウェアは、次のアルゴリズムに従って動作します。
- 初期化:関数-UART_init、ADC_init、LED_init;
- 割り込みおよびUARTを介したPCコンポートへのデータ転送のための無限ループでのチャネルのシリアル尋問。
テキストをデバッグするために、テストメッセージが考慮されます。 ポーリングチャネルの切り替えは、対応するLEDによって強調表示されます。 初期化中、4つのLEDすべてが同時に点滅します。 LEDの切り替えが目に見えるように、遅延を意図的に設定しました。
デバッグが完了したら、テストメッセージをコメント化して、不要な遅延を削除する必要があります。 コードは
データシートに埋もれて書かれ、すべてがそこに詳細に書かれています。
プログラマー
ファームウェアには、最も単純な
STK200プログラマーが
使用され 、はんだ付けを容易にするために、ボードの配線を独自に行う必要がありました。 ステッチavrdude。 私はavrealを試してみました-すばらしい代替手段で、問題もありませんでした。


最後に、動作します!
コードのデバッグ、数回の消去/書き込みサイクルの後、MKデバイスは生き生きとして、LEDを点滅させて大喜びしました。
PCでは、テキストターミナルを使用してCOMポートを操作しました。 たとえば、QT +
QSerialDevice (comポートを操作するための素晴らしいライブラリ、同胞のDenis Shienkovによって作成された)などを使用して、必要に応じて一括で作成できます。
結論として
計画では、PC用のソフトウェアのみを作成しています。 実際、私はすでにQT + QSerialDevice +
QWTを使用して書いていますが、すぐに、グラフがディスプレイ上で
クロールされると感じています。 また、
ハブで既に述べた
STM32VLDISCOVERYを基礎として、STM32FシリーズMKにハードウェアを実装することも考えています。新しいハードウェアを学びたいです。
有用な文献
上記のすべての本を消化するのに役立ちます:
P.ホロウィッツ、W。ヒル。 「回路技術」は古典的なものです。
パトリック・ゲル。 パーソナルコンピュータを測定複合体に変える方法は上記で言及されました。