如何通过Arduino制作数字示波器

在线制作数字示波器的经常见到的人,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 ,工作很匆忙,存在任何缺陷和不足,请提出建议,您还有任何问题可以在这里进行。

如何制作Wi-Fi控制的四轮机器人
集成多路复用输入ADC可减少诸多难题
巡检机器人提高了城市地下综合管廊的运维和运营水平
思科大型发布会上宣布了一系列新的硬件,软件和芯片产品
三星Chromebook Pro怎么样?三星Chromebook Pro上手图赏
如何通过Arduino制作数字示波器
超声波测距液位传感器的工作原理是怎样的
基于RT-Thread和AB32VG1开发板实现家庭安全检测功能
Oculus联合创始人将从Facebook离职,疑因Rift 2计划被砍
双脉冲平台搭建的难题如何破解
CPU利用率过高的原因是什么
能源变革!新型电动汽车将与燃油车大PK
供水厂企业中的水务数字化转型的应用发展
工业CAN2.0及CAN-FD隔离器及共模干扰抑制模组
谷歌采用GANs与神经网络打造图像压缩新算法
中国芯上市公司应收账款周转天数排行榜
娃哈哈商业股份有限公司新成立了浙江娃哈哈智能机器人有限公司
物联网概念逐步升温意味着什么
电池管理系统的组成 锂离子电池充电管理IC设计方案
特斯拉大规模召回所带来的影响不大