在线制作数字示波器的经常见到的人,DSO必须具有数模转换单元,根据d/a转换电路可分为两种模式:1.特殊ADC芯片+单片机,2.在转换器内部使用单片机ADC计数。对于第一个模型,我尝试了两个,该电路稍微复杂一点,组件更难以完成,对于初学者来说很难。第二种结构相对简单,易于制造,但是具有很大的缺点,即带宽较窄, 示波器的带宽仅为7.7KHz。国内用户和STC单芯片AVR生产,但实际带宽小于10KHz。您也可以选择使用Fusion PCB制作PCB板,而无需自己焊接。
步骤1:代码
最近用Arduino示波器看到了一个网友,它可能比上面的第二种方法更容易使用,但结果并不理想,带宽很窄。因此,我想尝试一下,没有解决此问题的好方法。通过实验制作,不断修改代码,提高了d/a转换采样率,取得了很好的效果。
最终产品的主要参数:频率响应:10Hz-50KHz电源: 5V LCD LCD屏幕:128x64(ST7920)测量显示区域:96x64信息显示:32x64,显示测试信号的频率,Vpp等;同步:上升沿触发扫描速度:0.02ms/div〜10ms/div,载有9个1-2-5保持功能:冻结显示的波形和参数二,基本测试使用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 Buffer [128];缓存存储阵列void setup(){}样本void sample(){for(x = 0; x 《128; x ++)Buffer [x] = AnalogRead(A0); (x = 0; x 《128; x ++)Buffer [x] = 63-(Buffer [x] 》》 4)的信号采样;计算y值}显示void draw(){for(x = 0; x 《127; x ++)u8g.drawLine(x,Buffer [x],x,Buffer [x + 1]);画两条线u8g.drawLine(64,0,64,63);绘制轴u8g.drawLine(0,32,128,32);对于(x = 0; x 《128; x + = 8)//绘制轴刻度u8g.drawLine(x,31,x,33); for(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:电路
使用测试电路,直接使用AnalogRead()函数测量Arduino,以完成ad/a转换,转换速度约为111μs速度很慢,因此其带宽大部分为1KHz,下一个优先事项是在增加其他功能的同时提高数模转换的速度。
第三,最新的程序这是使用最新的源代码,请保留我的开机LOGO,哈哈。 Arduino_oscilloscope.zip(2.72 KB,下载:2710)
程序芯片1.1V ADC使用上述电压基准,如果要使用外部5V基准电压,则应程序ADMUX = 0xe0;至:ADMUX = 0x60; Vpp =(V_max-V_min)* 1.1/255;读取:Vpp =(V_max-V_min)* 5/255;
使用Fusion PCB可以制造出更好的电路板。
使用上面的Arduino UNO进行四次机器制造的实验,
电路图:
主要组件列表:编号名称Arduino PRO mini 1 LCD12864 LCD(ST7920)1电解电容器(100μ25V)1电位器(50k)1孔板3电源开关1电池盒2按钮开关(带可充电电池,第7个)1盒1
1,焊接Arduino PRO mini PIN。/p》
2,焊接电路板组件
3,制作LCD孔板
4,组装电路板
5,制作外壳I
6,组装
将带有塑料外壳的宝盒的充电结构调整到孔中的适当位置。
6,组装
将电路板装入带有厚白色面板的外壳中
第3步:上传并测试
都e到Arduino PRO mini不会打开USB串行端口电路,因此在下载程序之前要通过USB串行端口下载进行传输。
示波器的调试非常简单,只需将电位器调至50k中心即可。水平扫描线。我使用信号发生器的信号源。
启动LOGO
测试:
一些解释
1,这是最常见的一种。简单的数字示波器,您可以在此基础上进一步改进;
2,您可能已经注意到我没有使用I/O端口0-7,而I/O端口恰好是8位AVR芯片的微型计算机,这是我为后续升级准备的,使用特殊的ADC芯片,可以用作数据输入,如果您对示波器感兴趣,那么我会考虑升级;
3 ,工作很匆忙,存在任何缺陷和不足,请提出建议,您还有任何问题可以在这里进行。
-
数字示波器
+关注
关注
6文章
523浏览量
33571 -
Arduino
+关注
关注
188文章
6469浏览量
187038
发布评论请先 登录
相关推荐
评论