自制简易示波器,示波器DIY过程分享

作者 张彬杰 来源 《无线电》杂志
发布时间 2010-12-21

一年前,在《无线电》杂志上看到一篇示波器的连载文章(作者是魏坤)很是心动,希望自己也能亲手DIY一个。但当时材料、实力有限,于是笔者拼命的研究文章中提供的电路图和使用的芯片资料。现在,自己终于也能DIY一个了,当然,性能远远没有那篇文章介绍的强,但软、硬件技术及制作难度很小,容易让DIY爱好者们自制成功。在这里,笔者愿和大家分享一下制作过程。

自制示波器

这款简易示波器的性能如下:
1.电压挡位:200mV、500mV、1V、2V、5V、12.5V、25V、50V。
2.频率挡位:12MHz、6MHz、4MHz、3MHz、2MHz、1MHz、500kHz、250kHz、100 kHz、50kHz、25kHz、10kHz。
3.能较好地测量300 kHz的波形。

这次DIY的示波器性能虽然较弱,仅仅能用来测试音频等300kHz以下频率的周期波形。不过它还有一个实用的功能,可以用来测试+/-50V的电压(量程是自动切换的)。

主要零件

编号    零件名称    数量

1    ATMEGA8单片机  1
9    24MHz有源晶振   1
8    128x64液晶屏
     [ST7565控制器]   1
2    5532运放     2
3    AD603压控放大器  1
4    TLV5618[DA]    1
5    ADS830E[AD]    1
6    IDT7205      1
7    ILC7660      2
10   1117-5.0      2
11   1117-3.3      1
12   79L05       1
13   继电器       2
14   电容、电阻、二极管 若干
15   三极管       2
16   洞洞板       1
17   按钮        2

电路分析

这个版本示波器的电路原理如图1所示。电路制作时,我用了1块16cm×10cm的万用板,电路中仅仅使用2个按钮来操作示波器,因为我只使用了一片M8单片机作为控制器,1个按钮用于循环改变采样频率,另一个按钮用来选择信号的耦合方式,直流或者交流耦合。

大家要问了,如何用一片 M8 单片机产生12MHz的采样时钟呢?呵呵,其实我对M8单片机进行了超频,使用24MHz的有源晶振作为它的时钟频率。然后,通过定时器2的比较匹配翻转电平,以产生不同的时钟。当OCR2=0时,单片机的OC2引脚就能产生12MHz的方波了。当然,如果大家不想超频,那么最高的采样频率就是16MHz 的一半,8MHz了。因为,M8的技术手册上建议最高为16MHz的时钟,而比较匹配的最高频率为系统时钟的2分频,即8MHz。本次制作的源代码使用 WinAVR编译。如果使用16MHz的晶振,请自行修改源代码。

电路中,被测量的信号,经过500kΩ、480 kΩ、20 kΩ电阻串联回路,通过继电器进入第1个运放,运放起到阻抗匹配的作用,因为AD603的输入电阻仅为100Ω。单片机通过继电器选择合适的衰减倍数,在默认情况下,为1/2倍的衰减。在测量较大的电压时,单片机会选择1/50 的衰减。选择衰减的目的是为了方便后期的2次放大。后期放大使用了一片AD603,它是压控放大器。通过改变GPOS(第1脚)与GNEG(第2脚)之间的电压差,即可控制它的放大倍数。AD603的GPOS(第1脚)的电压通过一片DA5618控制,它是12位串口DA,它的参考电压为1.25V,由2 个电阻分压而得。整个电路的运放可以使用NE5532、AD8066、LM6172等,它们的引脚都是兼容的。由于采样的速度比较快,远大于M8单片机的读取及处理速度,所以通过IDT7205来缓冲高速采样的电平数据。最后,单片机读取采样的数据,并在128×64的液晶上显示。

那么,如何控制采样电压呢?单片机程序会自动选择合适的电压挡位(即控制AD603的放大倍数)。当电压一直小于一定值后,那么程序会选择高灵敏度的挡位(即增大控制AD603的放大倍数)。同样,电压一旦大于一定值,就会选择低灵敏度挡位(即减小控制AD603的放大倍数)。这样,电压的选择就实现了自动的功能。我使用了一个按钮来选择频率,手动循环地选择不同的量程。

电源使用12V的电压,经过6个二极管降压,这时的末端电压为6~7V。通过2片1117-5.0V稳压。这样就有两路5V的正电源了。一路用在数字部分,另一路用在模拟部分。其中,数字部分,再经过1117-3.3V稳压,产生3.3V的电压,用在黑白液晶上。负压,通过ILC7760产生,并经过 79L05稳压到-5V。这样,示波器所需要的电压就都有了。

示波器电路图

程序控制

笔者觉得这套电路中单片机程序的精华算是软件产生示波器所需要的采样频率了。M8单片机有3路时钟,T0、T1和T2,其中T1和T2有CTC时钟模式,于是我就使用了T2时钟的CTC比较匹配模式。

那么什么是CTC模式呢?CTC也叫比较匹配模式,T2定时器运行时,会和一个比较匹配寄存器比较。当数值一致时,定时器会复位,重新从0开始计数,周而复始。我们设置寄存器匹配时,单片机的OC2引脚翻转电平。这样,引脚上就能周而复始产生固定频率的方波了。

如何改变频率呢?很简单,通过改变比较匹配寄存器的数值即可。具体的数值,通过公式OC2 = 时钟频率/2/需要产生的频率-1来计算。其中,时钟频率可以设置为系统时钟、系统时钟8分频、系统时钟32分频等。单片机通过控制三极管来驱动继电器,其中一个继电器控制耦合方式,另一个控制衰减倍率。与此同时,单片机发送2字节的数据,让TLV5618产生控制电压,一路用于控制AD603,改变它的增益大小。一路恒定产生2.5V的中点电压。因为在这个电路中ADS830E的电压测量范围为1.5~3.5V,当ADS830E采样到的电压为1.5V 时,ADS830E的数值为0,采样到的电压为2.5V时,ADS830E的数值为128,采样的电压为3.5V时,它的数值为255。由于我使用的是 128×64的液晶,所以,把采集到的数据除以4压缩后,就可以方便地在128×64液晶上显示了。由于一个屏幕的波形,需要128个点显示,即128字节。因此,单片机最好有128字节以上的RAM来缓存数据。通过平均每点的数据,转换它代表的实际电压,即可计算出平均电压值。同时,比较数据,查出最大值和最小值,即可计算出峰峰值。最后,计算2次波峰间的点距,计算它代表的采样时间,即可得到波形的频率。具体的方法,请分析源代码吧。

12下一页
电子爱好者 DIANZIAIHAOZHE.COM