工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

128x64LCDディスプレイ上のDIY10Hz-50kHzオシロスコープ

コンポーネントと消耗品

>
Arduino Nano R3
× 1
コンデンサ100µF
× 1
ST7920 LCD 128x64
× 1
ロータリーポテンショメータ(汎用)
× 2
押しボタンスイッチ、モーメンタリ
× 3

必要なツールとマシン

>
はんだごて(汎用)

アプリとオンラインサービス

>
Arduino IDE

このプロジェクトについて

このプロジェクトでは、10Hzから50kHzの範囲の単純なオシロスコープを作成する方法について説明します。デバイスが外部のデジタル-アナログコンバータチップを使用せず、Arduinoのみを使用することを考えると、これは非常に広い範囲です。

結果は、128x64ピクセルの解像度で比較的大きなLCD画面(ST7920)に表示されます。測定表示領域は96x64、情報表示領域は32x64で、テスト信号周波数、Vppなどが表示されます。

構築は非常に簡単で、いくつかのコンポーネントのみで構成されています:

-Arduino Nano

-解像度128x64のST7920LCDディスプレイ

-3つのモーメンタリスイッチ

-2つのポテンショマー

-および1つのコンデンサ100microF

このデバイスには、自動トリガー(非常に安定した表示)、スキャン速度:0.02ms / div〜10ms / div、1-2-5のキャリーと9つのレベルへの分割、ホールド機能:表示波形とパラメーターのフリーズなどの機能があります。このプロジェクトは、元のコードを見つけることができるWuHanqingのブログで公開されています。以前のプロジェクトの1つのハードウェアに基づいてオシロスコープを構築していたため、最小限の変更を加えました。ビデオで見ることができるように、楽器は大画面のために非常にクリアなビューを持っており、また驚くほど良い自動トリガーもあります。画像の垂直位置は、50キロオームのポテンショメータで調整され、10キロオームのポテンショメータとは対照的です。正弦および長方形の信号発生器を使用してオシロスコープをテストしました。

最後に、それは専門的または非常に使いやすい機器ではありませんが、教育目的または実験室で、特にデバイスが非常に簡単に作成でき、非常に安価であることを知って、低周波信号をテストするために使用できます。

>

コード

  • Arduinoコード
Arduinoコード C / C ++
 #include  U8GLIB_ST7920_128X64_4X u8g(6、5、4); int入力=A0; int Key_add =8; int Key_sub =9; int Key_hold =10; int x、y; int i、i1、i2、V_min、V_max、V_mid、t、t0、t1、sta、Key =1、hold =0;長い周波数;フロートVpp; int Y [96]; int Buffer [192]; const uint8_t L [] PROGMEM ={0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x 0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00 0x00、0x00、0x00、0x00、0x7F、0xFF、0xFF、0xFF、0xFF、0xFF、0xFF、0xFF、0xFF、0xFF、0xFF、0xFE、0x00、0x00、0x00、0x0F、0x80、0x00、0x00、0x00 0x00、0x00、0x00、0x00、0x00、0x00、0x01、0xE0、0x00、0x00、0x30、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x1 0x00、0xC0、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x03、0x00、0x03、0x00、0x00、0x00、0x00、0x00、0x00、0x00 0x00、0x00、0x00、0x00、0x00、0x00、0x80、0x04、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x60、0x08 0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x20、0x08、0x00、 0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x10、0x10、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00 0x00、0x00、0x00、0x00、0x10、0x10、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x08、0x10、0x00、0x00 0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x08、0x10、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00 0x00、0x00、0x08、0x10、0x00、0x00、0x00、0xFF、0xFC、0x00、0x00、0xC0、0x01、0x80、0x60、0x00、0x00、0x00、0x08、0x10、0x00、0x00、0x00、0xFF 0x00、0x01、0xC0、0x01、0x80、0x00、0x00、0x00、0x00、0x08、0x10、0x00、0x00、0x03、0xFF、0xFF、0x00、0x01、0xE3、0xDF、0xB6、0x6F、0x8F 0x08、0x10、0x00、0x00、0x03、0x8F、0xFF、0x00、0x01、0xE3、0x1B、0xB6、0x6D、0x9B、0x80、0x00、0x08、0x10、0x00、0x00、0x03、0xFF、0x 0x33、0x31、0xB6、0x6C、0xB1、0x80、0x00、0x08、0x10、0x00、0x00、0x03、0xFF、0xFF、0x00、0x03、0xF 3、0x31、0xB6、0x6C、0xB1、0x80、0x00、0x08、0x10、0x00、0x00、0x03、0xFF、0xFF、0x00、0x06、0x33、0x1B、0xB6、0x6C、0x9B、0x00、0x00、0x 0x00、0x00、0x03、0xFF、0xFF、0x00、0x06、0x1B、0x1F、0xBE、0x6C、0x8F、0x00、0x00、0x08、0x10、0x00、0x00、0x03、0xFF、0xFF、0x00、0x00、0 0x00、0x00、0x00、0x00、0x00、0x08、0x10、0x00、0x00、0x03、0xFF、0xFF、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x08、0x10、0x00 0x03、0xFE、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x08、0x10、0x00、0x00、0x03、0xFF、0xF8、0x00、0x00、0x00、0x00、0x00 0x00、0x00、0x00、0x08、0x10、0x00、0x00、0x03、0xFF、0xF8、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x08、0x10、0x0C、0x00、0x0 0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x08、0x10、0x0C、0x00、0x0F、0xFC、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00 0x00、0x08、0x10、0x0C、0x00、0x3F、0xF8、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0 x08、0x10、0x0E、0x00、0xFF、0xFF、0x80、0x00、0x00、0x0F、0x1E、0x3C、0xF8、0xF0、0x00、0x00、0x08、0x10、0x0E、0x01、0xFF、0xFF、0x 0x0D、0x93、0x6E、0xCD、0x90、0x00、0x00、0x08、0x10、0x0F、0x87、0xFF、0xF9、0x80、0x00、0x00、0x0F、0x30、0xC6、0xCF、0xF8、0x00、0x 0x0F、0x87、0xFF、0xF9、0x80、0x00、0x00、0x03、0xB0、0xC6、0xCF、0x00、0x00、0x00、0x08、0x10、0x0F、0xFF、0xFF、0xF8、0x00、0x00、0x00 0x6C、0xCD、0xB0、0x00、0x00、0x08、0x10、0x0F、0xFF、0xFF、0xF8、0x00、0x00、0x00、0x07、0x9E、0x3C、0xF9、0xE0、0x00、0x00、0x08、0 0xFF、0xF8、0x00、0x00、0x00、0x00、0x00、0x00、0xC0、0x00、0x00、0x00、0x08、0x10、0x03、0xFF、0xFF、0xF8、0x00、0x00、0x00、0x00、0x00、0x 0x00、0x00、0x00、0x08、0x10、0x03、0xFF、0xFF、0xE0、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x08、0x10、0x00、0xFF、0xFF 0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x08、0x10、0x00、0xFF、0xFF、0xE0、0x00、 0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x08、0x10、0x00、0x7F、0xFF、0x80、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00 0x08、0x10、0x00、0x3F、0xFF、0x80、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x08、0x10、0x00、0x1F、0xFF、0x00、0x00、0x00 0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x08、0x10、0x00、0x07、0xCF、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x08 0x00、0x07、0xCF、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x08、0x10、0x00、0x07、0x83、0x00、0x00、0x00、0x00、0x00 0x00、0x00、0x00、0x00、0x00、0x08、0x10、0x00、0x07、0x83、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x08、0x10、0x00 0x03、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x08、0x10、0x00、0x07、0x83、0x80、0x00、0x00、0x00、0x00、0x00、0x00 0x00、0x00、0x00、0x08、0x10、0x00、0x07、0x83、0xC0、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x0 0、0x00、0x00、0x08、0x10、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x10、0x08、0x00、0x00、0x00、0x00 0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x10、0x04、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00 0x00、0x20、0x02、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x40、0x01、0x80、0x00、0x00、0x00、0x00 0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x01、0x80、0x00、0x60、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x0E 0x00、0x1E、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x70、0x00、0x00、0x01、0xFF、0xFF、0xFF、0xFF、0xFF、0xFF 0xFF、0xFF、0xFF、0xFF、0xFF、0x80、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00 0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0 x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x 0x00、0x00、0x00、0x00}; void setup(){pinMode(Key_add、INPUT); digitalWrite(Key_add、HIGH); pinMode(Key_sub、INPUT); digitalWrite(Key_sub、HIGH); pinMode(Key_hold、INPUT); digitalWrite(Key_hold、HIGH); ADMUX =0x60; ADCSRA =0xe2; u8g.setFont(u8g_font_5x7); u8g.firstPage(); do {u8g.drawBitmapP(0、0、16、64、L); } while(u8g.nextPage()); delay(2000); } void loop(){sample();測定( );変身( ); Key_scan(); if(hold ==0){u8g.firstPage(); do {draw(); } while(u8g.nextPage()); }} void sample(){for(i =0; i <192; i ++){Buffer [i] =ADCH; switch(Key){ケース1:ブレーク;ケース2:delayMicroseconds(4);壊す;ケース3:delayMicroseconds(10);壊す;ケース4:delayMicroseconds(23);壊す;ケース5:delayMicroseconds(60);壊す;ケース6:delayMicroseconds(123);壊す;ケース7:delayMicroseconds(248);壊す;ケース8:delayMicroseconds(623);壊す;ケース9:delayMicroseconds(1247);壊す;デフォルト:ブレーク; }}} void Measure(){V_max =Buffer [0]; V_min =Buffer [0]; for(i =0; i <192; i ++){if(Buffer [i]> V_max)V_max =Buffer [i]; if(Buffer [i]  =V_mid){i1 =i;壊す; }} for(i =i1 + 1; i <98 + i1; i ++){if(Buffer [i]  =V_mid){i2 =i;壊す; }} t =i2-i1; if(t> 0)Freq =8000 / t; else Freq =0;} void Transform(){for(sta =0; sta <96; sta ++){if(Buffer [sta] <128 &&Buffer [sta + 2]> 128)break; } for(i =0; i <96; i ++)Y [i] =63-(Buffer [i + sta]>> 2); } void draw(){for(x =0; x <95; x ++)u8g.drawLine(x、Y [x]、x、Y [x + 1]); u8g.drawFrame(0,0,97,64); u8g.drawLine(48,0,48,63); u8g.drawLine(0,32,96,32); for(x =0; x <96; x + =8)u8g.drawLine(x、31、x、33); for(y =0; y <64; y + =8)u8g.drawLine(47、y、49、y); for(x =8; x <96; x + =8){for(y =8; y <64; y + =8)u8g.drawPixel(x、y); } u8g.drawStr(98,7、 "MS / div"); u8g.drawStr(98,23、 "V / div"); u8g.drawStr(98,30、 "0.324"); u8g.drawStr(98,40、 "Vpp"); u8g.setPrintPos(98、47); u8g.print(Vpp); u8g.drawStr(118,47、 "V"); u8g.drawStr(98,55、 "F(HZ)"); switch(Key){ケース1:u8g.drawStr(98,14、 "0.02"); u8g.setPrintPos(98、62); u8g.print(Freq * 50);壊す;ケース2:u8g.drawStr(98,14、 "0.05"); u8g.setPrintPos(98、62); u8g.print(Freq * 20);壊す;ケース3:u8g.drawStr(98,14、 "0.1"); u8g.setPrintPos(98、62); u8g.print(Freq * 10);壊す;ケース4:u8g.drawStr(98,14、 "0.2"); u8g.setPrintPos(98、62); u8g.print(Freq * 5);壊す;ケース5:u8g.drawStr(98,14、 "0.5"); u8g.setPrintPos(98、62); u8g.print(Freq * 2);壊す;ケース6:u8g.drawStr(98,14、 "1"); u8g.setPrintPos(98、62); u8g.print(Freq);壊す;ケース7:u8g.drawStr(98,14、 "2"); u8g.setPrintPos(98、62); u8g.print(Freq / 2);壊す;ケース8:u8g.drawStr(98,14、 "5"); u8g.setPrintPos(98、62); u8g.print(Freq / 5);壊す;ケース9:u8g.drawStr(98,14、 "10"); u8g.setPrintPos(98、62); u8g.print(Freq / 10);壊す;デフォルト:ブレーク; }} void Key_scan(){if(digitalRead(Key_add)==LOW){while(digitalRead(Key_add)==LOW); Key ++; if(Key ==10)Key =9; delay(10); } if(digitalRead(Key_sub)==LOW){while(digitalRead(Key_sub)==LOW);鍵 -; if(Key ==0)Key =1; delay(10); } if(digitalRead(Key_hold)==LOW){while(digitalRead(Key_hold)==LOW); hold =〜hold; delay(10); }} 

回路図


製造プロセス

  1. DIY LUMAZOID Arduino Music Visualiser
  2. Nokia 5110LCDのDIYシンプル20kHzArduinoオシロスコープ
  3. 鉄人
  4. Find Me
  5. LEDマトリックス+モーションセンサードアディスプレイ[ArduinoHoliday]
  6. Arduino加湿器制御
  7. ArduinoとNokia5110ディスプレイを備えたDIY電圧計
  8. arduinoを使用したソナーと処理IDEでの表示
  9. MobBob:Androidスマートフォンで制御されるDIY Arduino Robot
  10. 128x64LCDディスプレイ上のDIY10Hz-50kHzオシロスコープ
  11. Arduinoジョイスティック