無線電子工学および電気工学の百科事典 COM ポートを使用した ADC 動作、シンプルなデータ収集システム。 無線エレクトロニクスと電気工学の百科事典 この記事は主に初心者を対象としています。 データ収集システムの作成やアナログ信号のコンピュータへの入力、処理などを自分でやってみようと思った方へ。 これについてはこの記事で説明しますが、すべてを自分たちで行うようにします。 一般に、このトピックについてはインターネットや文献にかなりの情報があります...特に Visual Basic 言語を使用している場合はそうです。 したがって、私はこのギャップを少なくとも部分的に埋めるように努めます。 それでは、始めましょう… 目的が何であれ、まず実際のアナログ - デジタル コンバーター (ADC) を購入する必要があります。 また、Visual Basic 6.0 開発環境をコンピュータにインストールします。 また、この開発環境を簡単に操作できる必要もあります...理由は... この記事は、読者が Visual Basic のプログラミングに関する少なくとも基本的な知識を持っていることを保証するように設計されています。 文献 [1]、[3] も読むことをお勧めします。 ADC として TLC549IP を購入することをお勧めします。 これは、シンプルな通信プロトコルを備えた 8 ビット シリアル ADC です。 これについてはこの記事で説明します。 もちろん、回路とコードを適切に変更すれば、他の ADC を使用することもできます。 詳細については、[1] を参照してください。 ADC を見つけたら、データ収集システムのハードウェア、つまり図に示す回路を組み立てる必要があります。 1. このスキームは [1] から借用したもので、若干の変更が加えられています。 ダイオード VD1、VD2、VD6 - KD521、安定化電圧 3 ~ 5 V 用の任意のツェナー ダイオード。78L05 の代わりに、KREN5A を使用できます。 許容誤差 1% の抵抗 R2、R1、または最も近い抵抗値を持つ複数の中から選択します。 測定の精度はそれらに依存します。 抵抗R3は多巻きであることが好ましい。 調整: ボードに電力を供給して、DA1 スタビライザーの Out ピンの電圧を測定します。 結果の電圧値を小数点以下 3 桁で書き留めます。後で必要になります。 DD1 マイクロ回路のピン 1 では、抵抗 R3 を使用して、Out ピンで測定されたスタビライザーのちょうど半分に等しい電圧を設定します。 それでは、実際のソフトウェア部分に移りましょう。 一般的には、最初はRS-232、I2C、Micro Wareなどの通信インターフェースを使用します。 不適切だと思うので、 プログラム コードがわずかに複雑になると、ハードウェアがさらに複雑になる可能性があります。 したがって、「データシート」から取得した最も単純な交換プロトコルを ADC に使用します。 つまり、実装が簡単です。 もちろん、このようなプロトコルでは高速化はできません。この場合、Visual Basic 自体による制限がありますが、最小限の時間と労力で最初の結果を取得したり、比較的ゆっくりと変化するプロセスを測定したりするには、とても適しています。 TLC549IP ADC の通信プロトコルを図に示します。 2. シングルステートの間、実際の変換は A/D コンバータの CS (チップセレクト) ピンで発生します。 データ出力は、クロック パルスの出現を伴う Low CS レベルで始まり、各パルスに 8 ビットが付きます。 8 ビット コードを生成するには、1 つのクロック パルスが必要です。 その後、CS を単一の状態に転送し、次の変換を実行できます。 ADC の動作の詳細については、[XNUMX] を参照してください。 これらすべてから、必要なパルスのシーケンスを適切なタイミングで生成するドライバー プログラムを作成する必要があり、その後はデータを受信するだけであると結論付けることができます。 Visual Basic 開発環境を開始し、標準 EXE プロジェクトを作成します。 MSComm コントロールを追加します。 次のようにコンポーネント パネルに追加できます。 プロジェクト --> コンポーネント -->リストから選択Microsoft 通信 6.0を制御する。 2 つのラベルと 2 つのタイマーとともにフォーム上に配置します。 名前はデフォルトのままにします。 これで、単純な電圧計のコードを書き始めることができます。 変数を設定しよう: Dim b1、b2、b3、b4、b5、b6、b7、b8、sum、Ud As Single フォームの読み込み手順に次のコードを配置します。 Private Sub Form_Load() MSComm1.DTEnable = True '初期値 - 高 CS レベル Timer1.Interval = 100 ' タイマー間隔 1ms Timer2.Interval = 1 ' タイマー間隔 100ms MSComm1.Settings = "1200,N,8,1" ' データ転送設定 MSComm1.CommPort = 1 ' COM ポート番号 MSComm1.PortOpen = True ' COM ポートを開く End Subの 手続き中 Timer1 にコードを追加します。 プライベート サブ Timer1_Timer() MSComm1.DTREnable = False '低 CS を作成 Label2.Caption = "" '初期遅延のゴミ MSComm1.RTSEnable = True '最初のクロック パルス クロック ハイ If MSComm1.CDHolding = True then b1 = 1 Else b1 = 0 'CD 入力 (ADC 出力) で XNUMX または XNUMX の値をポーリングします MSComm1.RTSEnable = False '最初のクロック パルス クロック ロー MSComm1.RTSEnable = True MSComm1.CDHolding = True の場合、b2 = 1、そうでない場合、b2 = 0 MSComm1.RTSEnable = False MSComm1.RTSEnable = True MSComm1.CDHolding = True の場合、b3 = 1、そうでない場合、b3 = 0 MSComm1.RTSEnable = False MSComm1.RTSEnable = True MSComm1.CDHolding = True の場合、b4 = 1、そうでない場合、b4 = 0 MSComm1.RTSEnable = False MSComm1.RTSEnable = True MSComm1.CDHolding = True の場合、b5 = 1、そうでない場合、b5 = 0 MSComm1.RTSEnable = False MSComm1.RTSEnable = True MSComm1.CDHolding = True の場合、b6 = 1、そうでない場合、b6 = 0 MSComm1.RTSEnable = False MSComm1.RTSEnable = True MSComm1.CDHolding = True の場合、b7 = 1、そうでない場合、b7 = 0 MSComm1.RTSEnable = False MSComm1.RTSEnable = True MSComm1.CDHolding = True の場合、b8 = 1、そうでない場合、b8 = 0 MSComm1.DTREnable = True '高い CS を作成 MSComm1.RTSEnable = False '最初のクロック パルス クロック ロー '展開式を使用してビットをXNUMX進形式に変換します 合計 = (b1 * 2^7) + (b2 * 2^6) + (b3 * 2^5) + (b4 * 2^4) + (b5 * 2^3) + (b6 * 2^2) + (b7 * 2^1) + (b8 * 2^0) Ud = Format(sum * 5.083 / 255, "##0.000") '比例値を計算します Label1.Caption = CStr(Ud) & "Volt" '結果の値を表示します End Subの Timer1 のコードは実際のドライバーです。 これは周期的に繰り返され、クロック パルスを生成し、データ ビットを受信します。 Ud は ADC 入力の電圧です。10 個の 12 ビット ADC を使用する場合、数値 225 はそれぞれ 1024、4096 に置き換えられます。10 個の 12 ビット ADC の場合は、欠落しているビットをコードに追加する必要があります、「データシート」に従ってください。 値 5.083 は、スタビライザーの出力出力で得られた電圧値です。 ここに値を入力します。 ボードに電力を供給するには、別の電源を使用することも、COM ポートから直接電力を供給することもできます。 これを行うには、Timer2 プロシージャに次のコードを配置します。 プライベート サブ Timer2_Timer() MSComm1.Output = Chr(0) & Chr(0) ' TX ピン (3) にパルスを作成して ADC ボードに電力を供給します End Subの COM ポートに大きな負荷をかけることはできないことに注意してください。期待できる最大値は 20 mA です。 動作モードでは、回路は 5 mA 以下の電流を消費します。 次に、ボードを COM ポートに接続し、プロジェクトを実行します。 DA1 スタビライザーの IN ピンの電圧を測定すると、6.5 V 以上である必要があります。そうでない場合は、別の電源を使用してください。 ADC 入力の電圧を変更することで、プログラムが動作し、画面に電圧が表示されることを確認します。 8 ビット ADC を使用する場合の電圧読み取り精度は 20 mV、10 ビット ADC を使用する場合は 5 mV、12 ~ 1.2 mV です。 Visual Basic での作業と、com ポートを使用して作成されたアプリケーションについて少し説明します。 おそらくすでに理解していると思いますが、COM ポートを使用するにはコンポーネントが必要です。Microsoft 通信 管理 つまり、MSCOMM32.ocx ファイルは、Visual Basic をインストールした後、C:\Windows\system32 ディレクトリに配置されます。 これが言いたいのは、インストーラーを作成せずにプログラムを Visual Basic がインストールされていない別のコンピューターにコピーすると、そのプログラムは動作しないということです。 このファイルをコンピュータ上と同じディレクトリにコピーする必要もあります。 システム32で。 またはインストーラーを作成します。 ここでいくつかのコマンドについて: データ交換レートを設定するコマンド: MSComm1.Settings = "1200,N,8,1" COMポート番号を指定するコマンド MSComm1.CommPort = 1 COMポートを開閉するコマンド MSComm1.PortOpen = True MSComm1.PortOpen = False +12V を COM コネクタの対応するピンに出力するコマンド: MSComm1.RTSEnable = True RTS (7) - ピン名とピン番号 MSComm1.DTREnable = True DTR(4) -12Vを出力するコマンド MSComm1.RTSEnable = False MSComm1.DTEnable = False ピン CD (1)、CTS (8)、DSR (6) をポーリングして、シングルまたはゼロ状態の存在を確認できます。 If MSComm1.CDHolding = True Then (if one then…) If MSComm1.CDHolding = False Then (ゼロの場合…) 文字または文字列の ASCII コードを Tx (3) 出力に送信します。 MSComm1.Output = "A" 番号 MSComm1.Output = Chr(10) 数値は 0 ~ 255 の範囲で変更できます このようなコマンドをタイマーに記述し、数字や記号を変更することで、PWM 変調を作成できます。 コマンドの詳細については、コントロールの説明をダウンロードしてご覧ください。 Microsoft 通信 管理. このコードを使用すると、データを収集するためのいくつかのプログラムを作成できます。 例: 電圧計、電流計、温度計、シンプルなオシロスコープ、データをファイルに保存。 測定は 1 ミリ秒ごとに XNUMX 回、または XNUMX 時間ごとおよび XNUMX 日ごとに XNUMX 回実行できるため、長期的なプロセスを監視できます。 交流電圧 (0 を通過) を処理し、測定限界を拡張するには、入力アンプが必要です。その回路は [1] から引用できます。 主電源電圧で動作する場合、またはネットワークから電気的に絶縁されていないデバイスを使用するには、回路をコンピュータから光絶縁する必要があります。 サンプルプログラムのソースコードをダウンロード (8 kB) 文学
著者: =ShooRooP=, evei [犬] mail.ru; 出版物: cxem.net 他の記事も見る セクション コンピューター. 読み書き 有用な この記事へのコメント. 科学技術の最新ニュース、新しい電子機器: バルク物質の固化
30.04.2024 埋め込み型脳刺激装置
30.04.2024 時間の感覚は何を見ているかによって決まります
29.04.2024
その他の興味深いニュース:
無料の技術ライブラリの興味深い資料: ▪ 記事 誰かが何か言った、それとも私にはそう見えましたか? 人気の表現 ▪ article ローディングおよびアンローディング プラント オペレータ。 労働保護に関する標準的な指示 ▪ 記事 サークロトロンの真実。 全てが真実であり、真実以外の何ものでもありません。 無線エレクトロニクスと電気工学の百科事典 ▪ 記事 オレンジがリンゴに変わります。 フォーカスシークレット このページのすべての言語 ホームページ | 図書館 | 物品 | サイトマップ | サイトレビュー www.diagram.com.ua |