Arduinoを使用してシングルチャネルオシロスコープを作成する

問題を排除するために楽器を試してください





この興味深い投稿では、Arduinoとパーソナルコンピュータを使用して簡単なシングルチャネルオシロスコープを作成します。ここでは、波形がPCのディスプレイに表示され、入力波の周波数と期間が16 x2ディスプレイに表示されます。 。

前書き

すべての電子機器愛好家はかつて「私には夢があります。いつかオシロスコープを購入します」と言いましたが、プロジェクトや実験のためにまともなオシロスコープを所有することは依然として多くの人の夢です。



オシロスコープはエントリーレベルのモデルでも高価な機器であるため、高級な電子機器ツールと見なしており、余裕がないために実験やプロジェクトを中止する可能性があります。

このプロジェクトは、波の基本的なパラメータを測定するためにオシロスコープに莫大なお金を費やす必要がない多くの電子機器愛好家にとって、ゲームチェンジャーになる可能性があります。



提案されたアイデアの機能は非常に限られているため、 ハイエンドオシロスコープ このプロジェクトに参加する。このプロジェクトから3つの確かな機能が得られます。

1)コンピュータの画面上の波形の視覚的表現

2)入力波の周波数測定

3)マイクロ秒単位の入力波の期間測定。

信号の周波数と期間は、16 x 2LCDディスプレイに表示されます。コンピュータ画面で波形を視覚的に表現するには、2つの方法があります。これについては、この記事の後半で説明します。

それでは、セットアップの技術的な部分に飛び込みましょう。

提案されたセットアップは、いつものように私たちのプロジェクトの頭脳であるarduino、16 x 2 LCDディスプレイ、IC 7404、10Kポテンショメーター、およびコンピューター、できればWindowsマシンで構成されています。

arduinoはセットアップの頭脳であり、他のモデルにはArduinoとコンピューター間の通信に不可欠なUSBからシリアルへのコンバーターが組み込まれていないため、このプロジェクトではArduinoUNOまたはArduinomegaまたはArduinonanoを選択する必要があります。

他のモデルのarduinoボードを選択する場合は、プロジェクトを複雑にする可能性のある外部USBからシリアルへのコンバーターが必要です。

LCDからArduinoへの接続の図:

シングルチャネルオシロスコープLCDディスプレイ

上記の回路は一目瞭然です。他のLCDベースのプロジェクトでも、ディスプレイとarduinoの間に同様の接続が見られます。

10Kポテンショメータは、最適な表示のためにユーザーが設定する必要がある16 x 2LCDディスプレイのコントラストを調整するために使用されます。

Arduinoを使用したシングルチャネルオシロスコープ

IC 7404の機能は、入力からノイズ信号を除去し、周波数サンプリングピンA0に供給することです。 IC 7404は矩形波のみを出力します。これは、arduinoがアナログ信号よりもデジタル信号を処理できるため、arduinoにとって大きな利点です。

プログラム:

//-----Program Developed by R.Girish-----//
#include
LiquidCrystal lcd(12, 11, 5, 4, 3, 2)
int X
int Y
float Time
float frequency
const int Freqinput = A0
const int oscInput = A1
int Switch = A2
const int test = 9
void setup()
{
Serial.begin(9600)
lcd.begin(16,2)
pinMode(Switch,INPUT)
pinMode(Freqinput,INPUT)
pinMode(oscInput,INPUT)
pinMode(test, OUTPUT)
analogWrite(test,127)
lcd.setCursor(0,0)
lcd.print('Press the button')
}
void loop()
{
if(digitalRead(Switch)==HIGH)
{
lcd.clear()
lcd.setCursor(0,0)
X = pulseIn(Freqinput,HIGH)
Y = pulseIn(Freqinput,LOW)
Time = X+Y
frequency = 1000000/Time
if(frequency<=0)
{
lcd.clear()
lcd.setCursor(0,0)
lcd.print('F=')
lcd.print('0.00 Hz')
lcd.setCursor(0,1)
lcd.print('T=')
lcd.print('0.00 us')
}
else
{
lcd.clear()
lcd.setCursor(0,0)
lcd.print('F=')
lcd.print(frequency)
lcd.print('Hz')
lcd.setCursor(0,1)
lcd.print('T=')
lcd.print(Time)
lcd.print(' us')
delay(500)
}
}
else
{
Serial.println(analogRead(oscInput))
}
}
//-----Program Developed by R.Girish-----//

ハードウェア部分を完了し、上記のコードをアップロードしたら。コンピュータ画面に波形をプロットする時が来ました。これは2つの方法で実行できます。最も簡単で怠惰な方法を以下に説明します。

方法1:

•入力ワイヤをarduinoのピン#9に接続します(テストモード)。
•ArduinoIDEを開きます(1.6.6以降のバージョンである必要があります)
•「ツール」タブに移動し、シリアルプロッタを選択します

シリアルプロッタが開くとすぐに、以下に示すように、arduinoのピン#9から生成された方形波が表示されます。

arduinoのピン#9から生成される方形波

プッシュボタンを押して測定値を表示し、LCDディスプレイの測定値を更新するには、「テストモード」で約490Hzを表示する必要があります。

テストモードの概略図:

テストモードは、オシロスコープの適切な機能をチェックすることです。ピン#9は、490Hzの出力を提供するようにプログラムされています。

方法2:

この方法は比較的簡単ですが、次のリンクからソフトウェアをダウンロードする必要があります:http://www.x-io.co.uk/downloads/Serial-Oscilloscope-v1.5.zip

このソフトウェアは、arduinoのシリアルプロッタと比較して、制御と機能が少し向上します。生成された波形をズームインおよびズームアウトしたり、トリガー機能を設定したり、垂直軸と水平軸のオフセット制御を行ったりすることができます。

•ソフトウェアをダウンロードして抽出します。

•次に、シリアルオシロスコープアプリケーションをダブルクリックします。

arduinoのシリアルプロッタ

•以下に示すようにウィンドウがポップアップし、9600までのボーレートを選択します。

ボーレートを9600に選択します。

•次に、[シリアルポート]タブを選択し、コンピュータごとに異なる可能性のある適切なCOMポートを選択します。正しいCOMポートを選択すると、以下に示すように読み取り値が表示されます。

•次に、「オシロスコープ」タブを選択し、「チャネル1、2、および3」を選択します(最初のオプション)。

次に、「オシロスコープ」タブを選択し、「チャネル1、2、および3」を選択します(最初のオプション)。 Arduinoを使用したシングルチャネルオシロスコープからの波形

•以下に示すように、Arduinoから生成されたテスト信号を確認できます。

ご覧のとおり、ソフトウェアには波形をより適切に分析できるいくつかのコントロールボタンがあります。

注意:

提案されたセットアップには、1つの大きな欠点があります。

Arduinoは、入力波形をコンピューター画面に表示することと、周波数/期間の読み取り値をLCDディスプレイに同時に表示することはできません。この問題を克服するために、LCDディスプレイの周波数と期間を読み取り/更新するためのプッシュボタンが提供されています。

ボタンを押すと、LCDディスプレイに周波数と期間が表示されると同時に、プッシュボタンを押し続ける限り、波形がコンピューター画面でフリーズします。

また、コンピューターモニターの周波数をいつでも停止でき、表示された波形を分析する時間を与えることができるため、これを利点と見なすことができます。

著者のプロトタイプ:

Arduinoオシロスコープ回路のプロトタイプ画像

この単純なシングルチャネルArduinoオシロスコープ回路に関してさらに質問がある場合は、以下のコメントボックスを使用して特定のビューを表現してください。




前:16×2ディスプレイを使用したArduino周波数計 次へ:LiFiインターネット送信機回路–LEDを介したUSB信号転送