In this interesting post, we are going to make a simple single channel oscilloscope using Arduino and a personal computer, where the waveforms will be showcased on the PC’s display and frequency and time period of the input waves will be displayed on the 16 x 2 display.
介绍
每个电子爱好者都曾说过“我有一个梦想,有一天我将购买一个示波器”,但这仍然是许多人的梦想,拥有一个像样的示波器为他们的项目和实验。
示波器是昂贵的设备,即使是入门级的模型,我们认为他们是一个奢侈的电子工具,我们可能会停止我们的实验和项目,因为我们负担不起。
这个项目可能是一个游戏更换器,电子爱好者无需为示波器花费吨,以测量波浪的基本参数。
拟议的想法具有非常有限的功能,因此不要指望一个功能高端示波器参加这个项目。我们从这个项目中得到了三个可靠的功能:
1)波形在计算机屏幕上的可视化表示
2)输入波的频率测量
3)微秒内输入波的时间段测量。
信号的频率和时间周期将显示在16 × 2液晶显示屏上。有两种方法可以在计算机屏幕上直观地表示波形,本文后面的部分将对此进行描述。
现在让我们潜入设置的技术部分。
提议的设置包括arduino,这是我们通常的大脑项目,一个16 × 2液晶显示器,IC 7404, 10K电位计和一台计算机,最好是一台windows机器。
arduino是设置的大脑,我们必须选择arduino UNO或arduino mega或arduino nano这个项目,因为其他型号没有内置USB到串行转换器,这是arduino和计算机之间通信的必要条件。
如果我们选择其他型号的arduino板,我们需要外部USB到串行转换器,这可能会使项目复杂化。
LCD与Arduino连接示意图:
上述电路是不言自明的。在其他基于LCD的项目中,我们也可以发现display和arduino之间类似的联系。
10K电位器用于调整16 × 2液晶显示器的对比度,用户必须设置最佳视图。
IC 7404的功能是消除来自输入的任何噪声信号,并馈送到频率采样引脚A0。IC 7404仅输出矩形波,这对于Arduino来说是一个很大的优势,因为arduino更能够处理数字信号而不是模拟信号。
计划:
//-----由R.Girish开发的程序-----//
# include < LiquidCrystal.h >
液晶液晶(12、11、5、4、3、2);
int X;
int Y;
浮动时间;
浮动频率;
const int Freqinput = A0;
const int oscInput = A1;
int switch = a2;
Const int test = 9;
无效的设置()
{
Serial.Begin(9600);
lcd.begin(16日2);
PinMode(开关,输入);
PinMode(FreqInput,输入);
PINMODE(OSCINPUT,输入);
pinMode(测试、输出);
Amplwwrite(测试,127);
lcd.setCursor(0,0);
lcd.print(“按下按钮”);
}
无效循环()
{
如果(digitalRead(开关)= =高)
{
lcd.clear ();
lcd.setCursor(0,0);
x = Plablein(FreqInput,高);
Y = pulseIn (Freqinput、低);
时间= X + Y;
频率= 1000000 /时间;
如果(频率< = 0)
{
lcd.clear ();
lcd.setCursor(0,0);
lcd.print (F = ");
lcd.print(“0.00赫兹”);
lcd.setCursor (0,1);
lcd.print(“t =”);
lcd.print(“0.00”);
}
别的
{
lcd.clear ();
lcd.setCursor(0,0);
lcd.print (F = ");
lcd.print(频率);
lcd.print(“赫兹”);
lcd.setCursor (0,1);
lcd.print(“t =”);
lcd.print(时间);
液晶显示器。打印(“我们”);
延迟(500);
}
}
别的
{
serial.println(Analogread(Oscinput));
}
}
//-----由R.Girish开发的程序-----//
一旦你完成了硬件部分并上传了上面的代码。是时候在计算机屏幕上绘制波形了。这可以通过两种方式实现,下面描述了最简单和最懒惰的方式。
方法1:
•将输入线连接到Arduino的PIN#9(测试模式)。
•打开Arduino IDE(必须是1.6.6或以上版本)
•转到“工具”选项卡并选择串行绘图仪
当串行绘图仪打开时,您可以看到由arduino的引脚#9生成的矩形波,如下图所示。
按下按钮显示读数,同时刷新LCD显示的读数,它必须在“测试模式”上显示490Hz左右。
测试模式的示意图:
测试模式是检查示波器是否正常工作。引脚#9被编程为490Hz输出。
方法2:
这个方法比较简单,但是我们需要从给定的链接下载软件:http://www.x-io.co.uk/downloads/Serial-Oscilloscope-v1.5.zip
与arduino的串行绘图仪相比,这个软件将给我们更多的控制和功能。我们可以放大和缩小生成的波形;我们可以设置触发器功能,垂直轴和水平轴的偏移控制等。
•下载软件和解压。
•现在双击串行示波器应用程序。
•将弹出窗口,如下图所示,然后选择波特率至9600。
•现在选择“串口”标签,并选择正确的COM端口,可以不同的计算机。如果您选择了正确的COM端口,您可以看到如下所示的读数。
•现在选择“示波器”选项卡,选择“通道1、2和3”(第一选项)。
•您可以看到Arduino生成的测试信号,如下图所示。
如你所见,软件上有一些控制按钮,你可以更好地分析波形。
笔记:
拟议的设置有一个主要缺点:
Arduino不能同时显示计算机屏幕上的输入波形和LCD显示上的频率/时间周期读数。为了克服这个问题,提供了一个按钮来读取/刷新LCD显示上的频率和时间周期。
一旦您按下按钮,它将显示频率和时间周期在LCD显示屏上同时显示波形将冻结在计算机屏幕上,只要您继续按下按钮。
你也可以认为这是一个优势,因为你可以在任何时刻停止计算机显示器上的频率,这可能给你时间来分析显示的波形。
作者的原型:
如果您对此简单的单声道Arduino示波器电路有任何进一步查询,请随时使用以下评论框来表达您的特定视图
你可以试试下面的电路
https://www.homemade-circulay.com/2012/04/how-to-make-simple-programmable-timer.html.
先生,你能设计一个可以接入互联网的lifi电路吗
如果有可能我肯定会为你发布......
谢谢很多先生。我相信你可以做到。
Ndidi,可能需要一些时间,因为这个概念有点令人困惑。
USB数据具有正负值拉动信号,LED灯无法能够区分......纠正这一点,我们可能不得不调制两个信号,但调制可能导致实际信号的失真?
请我收到您的联系人
我已经在这里张贴了所需的电路
//m.addme-blog.com/2017/04/lifi-internet-transmitter-circuit.html
如果有的话,您可以在同一文章下讨论您的查询
请给一个电路图的视频混合器与这个功能。Av和VGA输入和Av和VGA输出。
你好,
不可能从arduino添加VGA输出/输入。
问候
先生,我可以用74HC14代替7404吗?谢谢大家,先生
是的74HC14也将工作,只需确保正确更换引脚......
先生,我建了它,但我的lcd16x2不工作,我的笔记本电脑屏幕的振幅为1020,有什么建议可以解决吗?谢谢你,先生
Jappar,我会向Mr.gr转发这个,他很快就会回复
嗨Jappar,
您必须按下按钮,只有LCD屏幕显示频率和时间段。
你可以说你用作输入的信号源,内置测试信号490 Hz吗?或外部信号?
为了直观地看到波形,你使用了哪一种:串行绘图仪软件还是串行示波器软件?
请给我一个阅读上面的洞察力。
请给我一个关于以上的见解。
先生,我无法找到7404的原理图(我在旧版本中看到它)在这个新版本中
嗨赃物,
编译上面的Arduino代码,我得到了错误。我不利于硬件微控制器编程。请您检查并修复代码。错误以下;
示波器:4:错误:程序中杂散“\ 302”
int X;一万亿一千一百一十一亿一千一百一十一万一千一百一十一
^
示波器:4:错误:程序中杂散“\ 240”
示波器:4:错误:程序中杂散“\ 302”
示波器:4:错误:程序中杂散“\ 240”
Saqib你好,我会把这条信息转发给gr先生,他很快会回复你……
嗨,Swag,现在不需要。我已经解决了这个问题。问题是将网站上的代码复制粘贴到Arduino IDE上。
可能是因为我从网站上复制了代码,网站上可能没有ASCII编码的页面,而是UTF-8编码的页面。为了解决这个问题,我复制了visual studio c#文件中的所有代码,然后替换了qomma和分号,把代码复制到Arduino IDE中,它工作了。
顺便说一下,谢谢你的快速回复。
还有一件事,我已经成功地建立了频率计使用Arduino,这是在你的博客,它工作完美。现在我在做这个示波器,因为它有频率计和波形图。我快完成了。希望它能成功。
嗨Saqib,我以为你是指上面的文章,所以它来自其他一些网站吗?
嗨Saqib,
这是复制/粘贴错误。
从这个站点复制代码并直接粘贴到Arduino IDE。
如果没有工作,转到(Arduino IDE)“工具”>自动格式。
我刚刚直接复制并粘贴了IDE,发现没有错误和代码成功遵守。
我想你用了一些代码编辑工具或者类似的工具然后从那里复制过来。
如果进一步出现任何错误,请通知我们,我们将帮助您解决。
问候
谢谢GR,问题现在解决了,但不确定Saqib先生是指你上面的文章或其他一些外部文章....
赃物,
这是你博客上的。我的Microsoft Edge复制了无效的字符。在之前的评论中分享了我完成的项目图片。感谢GR和Swag提供的伟大工具。这对我们很有帮助。
好的,明白了,谢谢,谢谢!!
嗨赃物,
好消息。我已成功建立了这个项目。它很棒。与您共享图像。谢谢你的伟大博客。
https://ibb.co/dbBofb
https://ibb.co/nAFELb
https://ibb.co/ekwofb
https://ibb.co/cPvg0b
感谢Saqib,恭喜。
我相信这里的其他人也会喜欢这些照片和你的成功。
它能处理的最大频率是多少?