亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

DIY 10Hz-50kHz 示波器在 128x64 LCD 显示器上

组件和用品

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

- ST7920 LCD 显示屏,分辨率为 128x64

- 三个瞬时开关

- 两个电位器

- 和一个电容 100 microF

该设备具有多种功能:自动触发(显示非常稳定),扫描速度:0.02ms/div~10ms/div,按1-2-5进位分为九级,保持功能:冻结显示波形和参数。这个项目发布在吴汉青的博客上,你可以在那里找到原始代码。我做了最小的改动,因为我是根据我以前的一个项目的硬件构建示波器的。正如您在视频中看到的那样,由于大屏幕,该仪器具有非常清晰的视野,并且具有令人惊讶的自动触发功能。图像的垂直位置用50kohms电位器调整,对比10kohms电位器。我用正弦和矩形信号发生器测试了示波器。

最后,即使它不是专业或非常实用的仪器,它仍然可以用于教育目的或在您的实验室中用于测试低频信号,尤其是知道该设备非常容易制造且非常便宜。

代码

  • 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;整数 x,y; int i,i1,i2,V_min,V_max,V_mid,t,t0,t1,sta,Key=1,hold=0;长频率;浮动Vpp;输入 Y[96];整数缓冲区[192]; const uint8_t L[] PROGMEM ={0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x,0,00x,0x,0,00000为0x00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x,0,00x,0x,00x,00x,0000x,00000为0x00,0x00时,0×00,0x00时,0×00,0×00 0×01,取0xE0,0x00时,0×00,的0x30,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,为0x1C,0x00时, 0x00时,将0xC0,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,×03,0×00,×03,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,为0x00,0x00时,0×00,0x00时,0×00,0×00,0x80的,0×04,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x60的,0x08时,0×00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x08, 0x00,为0x00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,为0x10,0x10的,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,为0x00,0x00时,0×00,0x00时,为0x10,0x10的,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x08时,为0x10,0x00时,0×00,0×00,为0x00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x08时,为0x10,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0xC0, 0x01, 0x80, 0x60, 0x00,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0 0x00, 0x01, 0xC0, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0x03, 0xFF, 0xFF,0xF,0xF,0x0,0xF,0x0, 0xF,0x0, 0xF,0x0, 0x0, 0x0 0x08, 0x10, 0x00, 0x00, 0x03, 0x8F, 0xFF, 0x00, 0x01, 0xE3, 0x1B, 0xB6, 0x6D, 0x9B, 0x80, 0x00, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x 0x33、0x31、0xB6、0x6C、0xB1、0x80、0x00、0x08、0x10、0x00、0x00、0x03、0xFF、0xFF、0x00、0x03、0x03 3, 0x31, 0xB6, 0x6C, 0xB1, 0x80, 0x00, 0x08, 0x10, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0x00, 0x06, 0x,9,0x,0x,0x,0x,0x,0x,0x,0x,0x,0x,0x,0x,0x,0x,0x,0x,0x,0 0x00, 0x00, 0x03, 0xFF, 0xFF, 0x00, 0x06, 0x1B, 0x1F, 0xBE, 0x6C, 0x8F, 0x00, 0x00, 0x08, 0x10, 0x,0x,0x,0x,0x,0x,0x,0x,0x,0x,0x,0x,0x,0x,0x,0x0,0x0 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x,0,0,0x,0,0,0,0x,0,0,0x,0,0x,0,0x0,0x0,0x0 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x00,0x,0 0x,0x,0 0x,0 0x,0 0x,0 0x,0 0x, 0为0x00,0x00时,0×00,0x08时,为0x10,0x00时,0×00,×03,为0xFF,0xF8的,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x08时,为0x10,0x0C,0x00时,为0x0F,0xF8的,为0x00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0×00,0x08时,为0x10,0x0C,0x00时,为0x0F,0xFC有,为0x00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00, 0x00, 0x08, 0x10, 0x0C, 0x00, 0x3F, 0xF8, 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, 0x,0x,0x,0x,0x,0x,0x,00x,0x,00x,0x,00x,0x,00x,00x,0x,000 0x0D, 0x93, 0x6E, 0xCD, 0x90, 0x00, 0x00, 0x08, 0x10, 0x0F, 0x87, 0xFF, 0xF9, 0x80, 0x00, 0x00, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0xC, 0x0, 0xF, 0x0, 0x3 0x0F, 0x87, 0xFF, 0xF9, 0x80, 0x00, 0x00, 0x03, 0xB0, 0xC6, 0xCF, 0x00, 0x00, 0x00, 0x08, 0x10, 0x, 0xF,0x,0x,0x,0x,0x,0x,0x,0x,0x,0x,0x,0x,0xF,0x,0xF,0x0 0x6C, 0xCD, 0xB0, 0x00, 0x00, 0x08, 0x10, 0x0F, 0xFF, 0xFF, 0xF8, 0x00, 0x00, 0x00, 0x07, 0x9E, 0x,0x,0x,0x,0x,0x,0x,0x,0x,0x,0x0,0x,0x,0x,0x0F, 0x0F, 0x0F, 0x3 0xFF, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x08, 0x10, 0x03, 0xFF,0x,0x,0x,0x,0x,0x,0x,0x,0x,0x,0x,0x,0x,0x,0x 0x00, 0x00, 0x00, 0x08, 0x10, 0x03, 0xFF, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x,0x,0x,0x,0x,0x,0x,0x,0x,0x,0,0x,0x0,0x0,0x0,0x0 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0xFF, 0xFF, 0xE0, 0x00为0x00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x08时,为0x10,0x00时,0x7F的,为0xFF,0x80的,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00, 0x08, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x,0x,0x,0x,0x,0x,0x,0x,0x,0x,0x,0x,0x,0x, 0为0x00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x08时,为0x10,0x00时,0×07,0xCF,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0×00,0x08时,为0x10,为0x00,0x07的,0xCF,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0×00,0x08时,为0x10,0x00时,0×07,0×83,0x00时,0×00,0x00时,0×00,0x00时,0×00,为0x00,0x00时,0×00,0x00时,0×00,0x08时,为0x10,0x00时,0×07,0×83,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0×00,0x08时,为0x10,0x00时,0×06, 0x03时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x08时,为0x10,0x00时,0×07,0×83,0x80的,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x07, 0x83, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 0, 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x,0,0x,0,0,0x,0,0,0x,0,0,0x,0,0,0为0x00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,为0x10,0x04的0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0×00,为0x00,0x20的,0×02,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x40的,0×01,0x80的,0×00,0x00时,0×00,0x00时,0×00,为0x00,0x00时,0×00,0x00时,0×00,0x00时,0×00 0×01,0x80的,0×00,0x60的,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,0x00时,0×00,为0x0E,0x00时, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0FF, 0 FF, 0 FF, 0 FF, 0 FF, 0 FF, 0 FF, 0 FF, 0 FF, 0 FF 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x,0,0,0x,0,0,0x,0,0,00x,0,0,0 0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00 x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x,0,0,0,0,0,0,0,0,0,0x,0,0,0,0 0x00, 0x00, 0x00, 0x00 }; void setup() { pinMode(Key_add,INPUT);数字写入(Key_add,HIGH); pinMode(Key_sub,INPUT);数字写入(Key_sub,HIGH); pinMode(Key_hold,INPUT);数字写入(Key_hold,HIGH); ADMUX=0x60; ADCSRA=0xe2; u8g.setFont(u8g_font_5x7); u8g.firstPage();做 { u8g.drawBitmapP(0, 0, 16, 64, L); } while( u8g.nextPage() );延迟(2000); } 无效循环( ) { 样本( );措施( );转变( ); Key_scan(); if(hold==0) { u8g.firstPage();做{画(); } while( u8g.nextPage( )); } } void sample() { for(i =0;i <192;i++) { Buffer[i] =ADCH; switch(Key) { case 1:break;情况 2:delayMicroseconds(4);休息;情况 3:delayMicroseconds(10);休息;情况 4:delayMicroseconds(23);休息;情况 5:延迟微秒(60);休息;情况 6:延迟微秒(123);休息;情况 7:延迟微秒(248);休息;案例8:延迟微秒(623);休息;案例 9:延迟微秒(1247);休息;默认值:中断; } }}void Measure(){ V_max=Buffer[0]; V_min=缓冲区[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) 频率=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) { case 1:u8g.drawStr(98,14,"0.02"); u8g.setPrintPos(98, 62); u8g.print(频率*50);休息;情况 2:u8g.drawStr(98,14,"0.05"); u8g.setPrintPos(98, 62); u8g.print(频率*20);休息;情况 3:u8g.drawStr(98,14," 0.1"); u8g.setPrintPos(98, 62); u8g.print(频率*10);休息;情况 4:u8g.drawStr(98,14," 0.2"); u8g.setPrintPos(98, 62); u8g.print(频率*5);休息;案例 5:u8g.drawStr(98,14," 0.5"); u8g.setPrintPos(98, 62); u8g.print(频率*2);休息;情况 6:u8g.drawStr(98,14," 1"); u8g.setPrintPos(98, 62); u8g.print(频率);休息;情况 7:u8g.drawStr(98,14," 2"); u8g.setPrintPos(98, 62); u8g.print(频率/2);休息;案例 8:u8g.drawStr(98,14," 5"); u8g.setPrintPos(98, 62); u8g.print(频率/5);休息;案例 9:u8g.drawStr(98,14," 10"); u8g.setPrintPos(98, 62); u8g.print(频率/10);休息;默认值:中断; }}void Key_scan(){ if(digitalRead(Key_add)==LOW) { while(digitalRead(Key_add)==LOW);键++; if(Key==10) Key=9;延迟(10); } if(digitalRead(Key_sub)==LOW) { while(digitalRead(Key_sub)==LOW);钥匙 -; if(Key==0) Key=1;延迟(10); } if(digitalRead(Key_hold)==LOW) { while(digitalRead(Key_hold)==LOW);保持=~保持;延迟(10); }} 

示意图


制造工艺

  1. DIY LUMAZOID Arduino 音乐可视化器
  2. 诺基亚 5110 LCD 上的 DIY 简单 20 kHz Arduino 示波器
  3. 钢铁侠
  4. 找到我
  5. LED Matrix + Motion Sensor Door Display [Arduino Holiday]
  6. Arduino 加湿器控制
  7. DIY 电压表与 Arduino 和诺基亚 5110 显示器
  8. Sonar 使用 arduino 并在处理 IDE 上显示
  9. MobBob:由 Android 智能手机控制的 DIY Arduino 机器人
  10. DIY 10Hz-50kHz 示波器在 128x64 LCD 显示器上
  11. Arduino Joystick
  12. 计步器(Arduino 101)