in English

Arduino でオシロスコープ

Arduino で簡易オシロスコープを作ってみました。簡単に作れるので、ぜひ作ってみてください。 このページの内容を基にした記事がマイコンと電子工作4 特集「LilyPad & Arduinoを使ったテクノ・クラフト」に掲載されています(記事予告)ので、こちらもどうぞ。

仕様

結果として仕様は以下の表になりました。
入力チャンネル数2
入力電圧範囲0 to 5[V]
入力インピーダンス10kΩ?, AVRの仕様通り
電圧レンジ(VOLTS/DIV)1[V], 0.5[V], 0.2[V], 0.1[V], 50[mV]
時間レンジ(TIME/DIV)10[s], 5[s], 2[s], 1[s], 0.5[s], 0.2[s], 0.1[s], 50[ms], 20[ms], 10[ms], 5[ms], 2.3[ms] (4.3ksps), and 1.2[ms] (8.6ksps, samples only 1 channel)
トリガモードAuto, normal, scan, and one shot

回路図

回路図は見てわかるとおり、とてもシンプルです:

使い方

11個のスイッチに以下の機能を割り当てています。1枚目の写真のスイッチの並びと表の中での位置が対応しています。2から5段目は、2個のスイッチのうち左側が、一般的なオシロのつまみの左回し、右側が右回しに対応するようにしています。

メニュー 1 メニュー 2 メニュー 3
Menu Start/Hold Menu Start/Hold Menu Start/Hold
VOLTS/DIV (ch 1) offset level (ch 1) NORM/INV/OFF (ch 1)
VOLTS/DIV (ch 2) offset level (ch 2) NORM/INV/OFF (ch 2)
TIME/DIV Trigger level Trigger inputs (ch 1 or ch 2)
Trigger mode Trigger edge
Send Send Send

動画

ダウンロード

簡易オシロスコープのスケッチは、Arduino: Playgroundで紹介されているKS0108 Graphics Library を少し変えたものが必要です. また、抵抗値のばらつきのため、スイッチの判定閾値の調整が必要です。コメントアウトしている、シリアルポートで出力する部分を有効にして、調整してください。また Arduino の 5V 電源に参照電圧が依存しているため、電圧に合わせて内部の計算を変えるとよいでしょう。

古いバージョン

カラー液晶に表示してみる

このオシロのスケッチをaitendoで買った1680円液晶(2.6インチ液晶 for Arduino UNO[UNO026LCD7781TP], 液晶コントローラは ST7781)で動くようにしてみました。液晶にピンをとられてしまっているので、1チャンネル入力(A5)のみ、設定変更用のスイッチはなく、スケッチを書き換える必要があります。もう一つマイコンを使ってタッチパネルで操作ができといいなとは思っています。


動画:音声(母音)の波形をみています

次のファイルを使ってください:

設定を変えるには
// Declare variables and set defaults here
// Note: only ch1 is available with Aitendo's parallel 320x240 TFT LCD  
byte range0 = RANGE_MIN, ch0_mode = MODE_OFF;  // CH0
short ch0_off = 204;
byte range1 = RANGE_MIN, ch1_mode = MODE_ON;  // CH1
short ch1_off = 204;
byte rate = 3;                                // sampling rate
byte trig_mode = TRIG_AUTO, trig_lv = 30, trig_edge = TRIG_E_UP, trig_ch = 1; // trigger settings

の部分を変えます。range1変数で電圧レンジを決めます。0,1,2,3,4で、それぞれ1[V/div], 0.5[V/div], 0.1[V/div], 50[mV/div]になります。rate変数で時間軸のレンジを決めます。0が最高速度, 1が2番目、2が3番目の速度です。3から13で、5[ms/div], 10[ms/div], 50[ms/div], 0.1[s/div], 0.2[s/div], 0.5[s/div], 1[s/div], 2[s/div], 5[s/div], 10[s/div]になります(時間軸のレンジにはバグが残っているかも)。 ch1_off変数で電圧軸のオフセットを、trig_mode変数でトリガモード(TRIG_AUTO, TRIG_NORM, TRIG_SCAN)を決めます。trig_lv変数はトリガレベルの設定です。trig_edgeはアップ(TRIG_E_UP)とダウン(TRIG_E_DN)を決めます。

スピログラフ(おまけ)

この液晶でスピログラフを表示してみました。

リンク

変更履歴

戻る
コメントは E-mail で: mnoriaki < at mark > gmail.com
(本を出しました: はじめてのPICアセンブラ入門 | センサとデジカメで遊ぶ電子工作入門 | 玄箱PROと電子工作で遊ぼう )
Copyright (c) 2009-2014, Noriaki Mitsunaga