Arduinoでデジタルオシロスコープを作る:3ステップ

Arduinoでデジタルオシロスコープを作る:3ステップ

目次:

Anonim

多くの場合、オンラインのデジタルオシロスコープを作るDSOは、d / a変換回路に従って2つのモードに分けることができる、デジタル - アナログ変換ユニットを持っている必要があります。コンバータ私が2つ試した最初のモデル(私のブログを見てください:http://blog.Sina.com.CN/ntwhq)、この回路はもう少し複雑です、コンポーネントは完成するのがより難しいです、それは初心者にとって難しいです。 2番目の構造は比較的簡単で、作成が簡単ですが、狭い帯域幅の中で最も典型的な作品の1つは、http://www.serasidis.gr/circuits/AVR_oscilloscope/avr_oscilloscopeの海外の友人です。 HTM、オシロスコープの帯域幅はわずか7.7KHz。国内ユーザーとSTCシングルチップAVR生産、しかし実際の帯域幅は10KHz未満です。あなたは自分ではんだ付けする代わりにFusion PCBを使ってPCBボードを作ることも選択できます。

用品:

ステップ1:コード

最近Arduinoのオシロスコープとネットの友人を見た、それは上記の2番目の方法よりも簡単かもしれませんが、それらの結果は理想的ではない、帯域幅は狭いです。だから私は試してみたかったし、この問題を解決する良い方法はありません。実験により作成され、絶えずコードを修正し、そして変換サンプルレートを改良し、非常に良い結果が達成された。

最終製品の主なパラメータ:周波数応答:10Hz - 50KHz電源:5V LCD LCDスクリーン:128x64(ST7920)測定表示領域:96x64情報表示:32x64、テスト信号の周波数、Vppなどを表示します。立ち上がりエッジトリガスキャン速度:0.02ms / div〜10ms / div、9回搬送1-2-5ホールド機能:表示されている波形とパラメータのフリーズ第2に、基本的なテストArduinoプロジェクトの最大の利点は、豊富なリソースを使用することである。 SCMの多くの知識。私はそれをプログラムするのをより簡単にするリポジトリu8glib LCDを使って作りました、さもなければLCDドライブはあなたに多くの時間がかかるでしょう。 U8glibダウンロード:u8glib_arduino_v1.13.zip(989.55 KB、ダウンロード:2577)これが私のArduino UNO用の最初のテスト回路で、ST7920制御を使った12864 LCD LCDです。ダウンロード後にコンパイルされた次のコードの入力方法で、デジタルオシロスコープの基本機能を実現できるのであれば、もっと簡単でしょうか。 #//ステートメントを含めるU8GLIB_ST7920_128X64_4X u8g(13、12、11);ステートメントLCD SPI Com:SCK = 13、MOSI = 12、CS = 11 int x、y。描画点座標intバッファ128。キャッシュストレージアレイvoid setup(){}サンプルvoid sample(){(x = 0; x <128; x ++)の場合Buffer x = analogRead(A0); (x = 0; x <128; x ++)に対する信号サンプリング。バッファ[x] = 63−(バッファ[x] >> 4)。 yの値を計算します。void draw(){(x = 0; x <127; x ++)を表示します。u8g.drawLine(x、Buffer x、x、Buffer x + 1); 2本の線を引くu8g.drawLine(64,0,64,63);軸を描画します。u8g.drawLine(0,32,128,32); (x = 0; x <128; x + = 8)//軸スケールを描画します。u8g.drawLine(x、31、x、33); (x = 0; x <64; x + = 8)についてu8g.drawLine(63、x、65、x); u8g.drawFrame(0,0,128,64);境界線を描く} void loop(){sample();}サンプルu8g.firstPage();画面をクリアしてdraw()を実行します。 while(u8g.nextPage())を表示します。

}

ステップ2:回路

テスト回路を使用して、私のArduinoは約111μsの変換速度のためにad / a変換を完了するためにanalogRead()関数を使用して直接測定されます、その帯域幅の大部分は1KHzです。他の機能を追加しながら、変換。

第三に、最新のプログラムここで使用している最新のソースコードです、私のブートLOGO、HA HAを保管してください。 Arduino_oscilloscope.zip(2.72 KB、ダウンロード:2710)

外部の5V基準電圧を使用したい場合は、上記の基準電圧を使用してチップ1.1V ADCをプログラムします。ADMUX = 0xe0をプログラムします。に。ADMUX = 0x60。 Vpp =(V_max − V_min)×1.1 / 255。 Vpp =(V_max − V_min)×5 / 255。

Fusion PCBを使用すると、はるかに優れた回路基板を作成できます。

4、マシンは上のArduinoのUNO、ArduinoのPROミニを使用するときの実際のカードを使用して実験を行ったので、より小さいボリュームを持っている。

回路図:

主な部品リスト:番号名称Arduino PRO mini 1 LCD 12864 LCD(ST 7920)1電解コンデンサ(100μ25 V)1ポテンショメータ(50 k)1穴プレート3電源スイッチ1バッテリーカートリッジ2ボタンスイッチ(充電式バッテリー付き、7番目)1ケース1

1、溶接Arduino PROミニPIN。

2の溶接のサーキットボードの部品

3、LCDホールプレートを作る

4、回路基板の組み立て

5、私は穴の上の適切な場所で、私はプラスチックケース入りの宝箱の充電再構築を使用しました。

6、組み立て

前面パネルの内側に取​​り付けられた厚い白いパネルを使用して、回路基板をケースに取り付けます。

ステップ3:アップロードとテスト

ArduinoのPROミニのためにプログラムをダウンロードする前にUSBシリアルポートのダウンロードを介して転送するように、USBシリアルポート回路を回さない。

オシロスコープのデバッグは非常に簡単で、ポテンショメータを50k水平スキャンラインの中心に調整するだけです。信号発生器の信号源を使います。

ブートロゴ

テスト:

いくつかの説明

1、これは最も単純なデジタルオシロスコープの一つです、あなたはこれに基づいてさらに改善することができます。

2、あなたは私が8ビットのAVRシングルチップマイクロコンピュータと口であることを起こるI / Oポート0-7を使用していないことに気づいたかもしれません、これは私が特別なADCチップを使って、その後のアップグレードのために準備したものです、それあなたがオシロスコープに興味があれば、データ入力として使用することができます、そして私はアップグレードを検討します。

3、仕事は急いでいたし、の欠陥や欠陥があります、あなたがここであなたも運んでいるどんな質問でもあなたにアドバイスしてください。