在这篇有趣的文章中,我们将使用Arduino和一台个人电脑制作一个简单的单通道示波器,波形将显示在PC的显示器上,输入波形的频率和时间段将显示在16 × 2的显示器上。
介绍
每一个电子爱好者都说过“我有一个梦想,有一天我会买一个示波器”,但是,拥有一个像样的示波器用于他们的项目和实验仍然是许多人的梦想。
示波器是昂贵的设备,即使对入门级模型,我们认为他们是一个奢侈的电子工具,我们可能会使我们的实验和项目停止,因为我们买不起一个。
这个项目可能是一个游戏规则改变了许多,电子爱好者不需要花大量的钱示波器测量波的基本参数。
这个提议的想法有非常有限的功能,所以不要期望在一个高端示波器在这个项目中存在。我们从这个项目中获得三个坚实功能:
1)计算机屏幕上波形的视觉表示
2)输入波的频率测量
3)输入波的时间周期测量,以微秒计。
信号的频率和时间周期将显示在16 x 2 LCD显示屏上。有两种方法可以在计算机屏幕上直观地表示波形,这将在本文的后面部分进行描述。
现在让我们进入设置的技术部分。
建议的设置包括arduino,这是我们的项目通常的大脑,一个16 x 2 LCD显示器,IC 7404, 10K电位器和一台电脑最好是一台windows机器。
arduino是安装的大脑,这个项目我们必须选择arduino UNO或arduino mega或arduino nano,因为其他型号没有内置的USB到串行转换器,这是arduino和计算机通信必不可少的。
如果我们选择其他型号的Arduino板,我们需要外部USB到串行转换器,这可能会使项目复杂化。
LCD与Arduino连接示意图:
上述电路是不言自明的。我们可以在基于LCD的其他项目之间找到类似的连接和Arduino之间的类似连接。
10K电位器用于调整16 x 2液晶显示器的对比度,必须由用户设置为最佳视图。
IC 7404的功能是消除来自输入和馈送到频率采样引脚A0的任何噪声信号。IC 7404只输出矩形波,这对arduino来说是一个很大的优势,因为arduino更能处理数字信号而不是模拟信号。
计划:
//----- r.g riish开发的程序-----//
#include
液晶显示器(12,11,5,4,3,2);
X;
int y;
浮动时间;
浮动频率;
const int freqinput = a0;
const int oscInput = A1;
int Switch = A2;
Const int test = 9;
void setup()
{
Serial.begin (9600);
lcd.begin(16日2);
pinMode(开关、输入);
pinMode (Freqinput、输入);
pinMode (oscInput、输入);
Pinmode(测试,输出);
analogWrite(测试,127);
lcd.setCursor (0,0);
液晶显示器。打印(“按下按钮”);
}
无效循环()
{
如果(digitalRead(开关)= =高)
{
lcd.clear();
lcd.setCursor (0,0);
X = pulseIn (Freqinput、高);
y =脉冲(频率,低);
时间= X + Y;
频率= 1000000 /时间;
if(频率<= 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 US”);
}
其他的
{
lcd.clear();
lcd.setCursor (0,0);
lcd.print(“f =”);
lcd.print(频率);
lcd.print(“赫兹”);
lcd.setCursor(0,1);
lcd.print (T = ");
lcd.print(时间);
液晶显示器。打印(“我们”);
延迟(500);
}
}
其他的
{
以analogRead (oscInput));
}
}
//----- r.g riish开发的程序-----//
一旦你完成硬件部分和上传以上代码。是时候在计算机屏幕上绘制波形了。有两种方法可以做到这一点,下面将介绍最简单和最懒惰的方法。
方法1:
将输入线连接到arduino的9号引脚(测试模式)。
•打开Arduino IDE(它必须是1.6.6或更高版本)
•进入“工具”选项卡,选择串行绘图仪
一旦串联绘图仪打开,你可以看到由arduino的9号引脚产生的矩形波,如下图所示。
按下按钮显示读数,还要刷新读数LCD显示屏,它必须在“测试模式”上显示约490Hz。
测试模式示意图:
测试模式是检查示波器的正常功能。PIN#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显示屏上的频率和时间段,同时WaveForm将在计算机屏幕上冻结,只要您继续按下按钮即可。
你也可以认为这是一个优势,因为你可以在任何时刻停止计算机显示器上的频率,这可能给你时间来分析显示的波形。
作者的原型:
如果您对这个简单的单通道Arduino示波器电路有任何进一步的疑问,请随时使用下面的评论框表达您的具体意见
Swagatam说
你可以试试下面的线路
//www.addme-blog.com/2012/04/how-to-make-simple-programmable-timer.html
Ndidi斯特拉说
请问,先生,你能设计一个可以接入互联网的lifi电路吗
Swagatam说
如果可能的话,我一定会帮你寄的。
Ndidi斯特拉说
谢谢你,先生。我相信你能做到。
Swagatam说
Ndidi,这可能需要一些时间,因为这个概念有点混乱。
USB数据有LED灯无法区分的正负推拉信号…为了纠正这一点,我们可能必须对这两个信号进行调制,但调制可能会导致实际信号的失真?
Ndidi斯特拉说
请把你的通讯录给我
Swagatam说
我在这里发布了所需的电路
https://www.homemade-circulay.com/2017/04/lifi-internet-transmitter-circuit.html.
你可以在同一篇文章中讨论你的问题。
未知的说
请您可以提供具有此功能的视频混音器的电路图。AV&VGA输入和AV和VGA输出。
GR说
你好,
无法从Arduino添加VGA输出/输入。
问候
贾马尔说
先生,我可以使用74HC14替换7404吗?THX,全部 - 先生
赃物说
是的74HC14也可以工作,只要确保你正确地更换了pinouts…
贾马尔说
先生,我做了它-但我的lcd16x2不能工作&我在我的笔记本电脑屏幕上得到了1020幅,有什么建议可以解决吗?谢谢你,先生
赃物说
Jappar,我把这个转发给Mr.GR,他会很快回复的
GR说
嗨Jappar,
你必须按下按钮,然后LCD屏幕显示频率和时间周期。
你能说你用哪个信号源作为输入吗,内置的测试信号490 HZ?或外部信号?
在视觉上看到你使用的Wave Wave Wave Wave Wave Wave,串行绘图仪或串行示波器软件?
请给我一个洞察阅读以上。
GR说
*请给我一个关于上述内容的见解。
贾马尔说
先生,我在这个新版本中找不到7404的示意图(我在旧版本中看到的)
Saqib卢迪说
嗨赃物,
当编译上面的Arduino代码时,我得到了错误。我不擅长硬件微控制器编程。你能帮我检查并修改一下代码吗?错误如下;
示波器:4:错误:程序中偏离了' \302 '
int x;Â② -
^
示波器:4:错误:程序中杂散了' \240 '
示波器:4:错误:程序中偏离了' \302 '
示波器:4:错误:程序中杂散了' \240 '
赃物说
你好Saqib,我会把这个消息转发给Mr.GR,他会尽快回复你…
Saqib卢迪说
嗨,Swag,现在不需要。我已经解决了这个问题。问题是将代码从网站复制粘贴到Arduino IDE。
这可能是因为我从网站上复制了代码,可能不是ASCII编码页面,而是UTF-8编码页面。所以为了解决这个问题,我复制了visual studio c#文件中的所有代码,然后替换了qomma和分号,复制的代码到Arduino IDE,它工作了。
顺便感谢你的及时回复。
还有一件事,我已经成功的用你博客里的Arduino做了一个频率计,效果很好。现在我在做这个示波器,因为它有频率计和波形图。我快做完了。希望它能成功。
赃物说
你好Saqib,我以为你指的是上面的文章,所以它是从其他网站??
GR说
嗨saqib,
它是复制/粘贴错误。
从这个站点复制代码并直接粘贴到Arduino IDE。
如果它没有工作,去(Arduino IDE)“工具”>自动格式。
我只是直接复制粘贴到IDE上,没有发现错误,代码编译成功。
我认为你正在使用一些代码编辑工具或类似于那样的东西并从那里复制。
如果进一步出现任何错误,通知我们,我们将帮助您解决。
问候
赃物说
谢谢GR,问题现在解决了,但不确定Saqib先生是指你的上面的文章还是其他外部文章....
Saqib卢迪说
赃物,
这是你博客上的。我的Microsoft Edge复制了无效字符。在之前的评论中分享了我完成的项目图片。感谢GR和Swag提供的伟大工具。这对我们很有帮助。
赃物说
好的,知道了,谢谢,谢谢!
Saqib卢迪说
嗨赃物,
伟大的新闻。我已经成功建造了这个项目。效果很好。与你分享图片。谢谢你的博客。
https://ibb.co/dbBofb
https://ibb.co/nafelb.
https://ibb.co/ekwofb.
https://ibb.co/cpvg0b.
赃物说
非常感谢Saqib,恭喜你。
我相信这里的其他人也会喜欢那些照片和你的成功。
法说
它能承受的最大频率是多少?