我不是为了做一个示波器
讲一个故事:
今年九月,一个新学期的开始,课很少。
我是一个闲不住的人,这样的日子很难熬,想去电子市场逛逛,但学校离市区有三十多公里路,终于无聊到周末了。
和平常一样,逛电子市场都是这儿看看哪儿看看,碰着没见过的还喜欢问问,多年的习惯改不掉的……
一家柜台上摆着“低价处理 LCD模块”的牌子,对于像我这样的穷学生来说,价格往往是考虑的主要因素。我径直走了过去,老板说这些低价屏都是全新的,只是没有资料,所以只能低价处理,于是我就贪了个小便宜花 30 块钱买了一块 128*64 分辨率的点阵屏。喜欢贪小便宜的人最后往往都是要吃亏的,最后我真“吃亏”了,就因为这个屏,害得我花了近300 块买了一块 320*240的屏。
回到学校后就上网找它的资料,功夫不负有心人,我找着了。从资料中得知这块液晶显示器是不带字库的,这让我有些小失望,但一想只花了 30 块钱也就没事了。根据资料编写了程序让它显示了一些简单的图形,但让它显示图形或字符都得将所要显示的东西做成点阵数据存放在数组里才行,太浪费单片机里少得可怜的资源了!没有字库的点阵屏就是鸡肋!
正徘徊在“食之无肉,弃之有味”的时候,突然灵光一现,何不用它来显示一些时实的图形呢?显示什么呀?亮着的示波器给了我灵感,那就让它显示波形吧!正好我用的 AVR单片机带有 AD转换器,说干就干,忙活了一下午,晚上的时候波形就显示出来了。这不就是一个最基本的数字示波器吗?图 1 和图 2 就是当时的“珍贵照片”,因为那块电路在以后的试验中已经被我拆了。这两张照片是我买了 LCD屏的第二天晚上照的。
第一步的成功,坚定了我做数字示波器的信念。人总是有追求的,所以我要完善它!其实这无异于“因有一只鞍而买一匹马”,但那并不总是坏的。
接下来的一个星期中我有事做了…… 第二个周末,我拿出了我半个月的生活费,花三百多块买了一块 320*240 的液晶显示屏和两片 TLC5510,开始了我自制数字示波器的征程。
以前从没有想过要制作一台数字示波器,所以对数字示波器的了解也仅停留在基本原理和功能上,更深入的东西几乎是一片空白。但是我相信电类的知识,只要你下工夫就没有学不来的,于是我开始到处找资料,但不管是图书馆还是互联网,几乎找不着一个现成的电路或实例可供参考,这种情况下只能自力更生,按自己的理解画出框图,一步一步的实验。
图 2:最初的“数字示波器”
刚开始时因为用的是 AVR 单片机中的 ADC,最快的转换速率为 40k(不要求达到 10位精度),所以勉强能测到两三千赫兹,这样的性能我当然不满意!于是就用外置的高速ADC,这时 TLC5510 就派上用场了,它的最高转换速率为 20MSa/s,为了达到高速采样我给它提供 20MHz 的时钟信号,8 位并行数据直接送入单片机,问题出来了,单片机太慢了,来不及读数据。通过查阅资料我了解到对高速数据的缓冲可以使用 FIFO存储器,这是我第
一次接触 FIFO 存储器。第三个周末,我花了 40 块钱买了一片 4KB 容量的 FIFO 存储器IDT7204,直到现在这个示波器还是用的这片存储器。FIFO 的使用解决了单片机来不及读数据的问题,但剩下问题还有很多:如何控制扫速、如何控制灵敏度、如何控制触发……
太多的“如何”让我好几个晚上不知如何睡好觉,但也正是这些“如何”给了我解决掉这些“如何”的动力……我喜欢挑战自己。换方案,试验,调试,再换方案,再实验,再调试……最终一个个“如何”的被我解决掉了,兴奋又使我好几个晚上不知如何入眠。这就跟一个国家的内战一样,不管谁输谁赢受伤的总是这个国家,但却推动了历史的进步。我就是在发现问题和解决问题中进步的,虽然受了点伤……试验期间我得到了《无线电》杂志社尹飞编辑的鼎立帮助,非常感谢他在精神以及物质上对我的支持!
最终我将这个数字示波器做出来了,也实现了我起初的要求,能较好的测量到 5MHz,这样的性能与专业的示波器相比也许差了些,但用于音频电路和平时的电子制作调试中性能还是能够满足要求的,不足 500 元的成本我觉得是很实用的,特别是对象我这样的穷学生电子爱好者。
谁对自制数字示波器有兴趣?
想体验一下兴奋到失眠的感觉?
跟我来吧,我们一同体验这种兴奋的感觉!
魏坤
11 15
电路才是“硬”道理
——硬件电路简述
通过我的“蛊惑”,想必大家都想自制一台示波器玩玩,那就继续跟着我走吧!
所有的电子设备都离不开硬件,首先让我来对它的硬件结构进行一下简述:
总体电路如系统框图所示(图 1),前面已讲过,为了提高性能本电路采用“双核”结构,两片 AVR 单片机协同工作,MCU1 用于控制和频率测量,MCU2 用于数据处理和显示控制,两片单片机采用 SPI总线通信。
信号从探头输入,进入程控放大(衰减)电路进行放大(衰减),再对被放大(衰减)的信号进行电平调整后送入高速 AD转换器对信号进行采样,采样所得的数据存入 FIFO存储器中,当 FIFO 存满后通知 MCU2,MCU2 从 FIFO 存储器中读出数据进行处理,将波形显示在 LCD模块上。时钟电路为高速 AD转换器和 FIFO存储器提供从 600Hz~60MHz 的8 种不同的频率信号作为不同水平扫速时的采样时钟频率。从程控放大器输出的信号一路送入 AD 转换器,另一路送入整形电路对输入信号进行整形,作为测频率的待测信号送入MCU1 的16位计数器外部触发引脚 T1(PD5),进行频率测量,程控放大器的放大(衰减)倍数和时钟电路的输出频率均由 MCU1 控制。MCU1 将被测信号的频率、程控放大器的放大倍数和时钟电路的输出频率等数据通过 SPI总线发送给 MCU2, MCU2 以这些数据作为频率、水平扫速、灵敏度和峰峰值计算、显示的依据。
1.程控放大电路和电源电路:
将程控放大电路与电源电路放在一块讲,是因为他们不仅有着密切的联系,而且还是做在一块电路板上的。
程控放大器的作用是对输入信号进行衰减或放大调整,使输出信号电压在 AD转换器输入电压要求范围内,达到最好的测量与观察效果,所以程控放大器电路在规定带宽内的增益一定要平坦,故对运算放大器的要求比较高,在本电路中我选用的是 NSC 公司生产的高速运算放大器 LM6172 双运放,带宽为 100MHz,转换速率 3000v/μs,每通道消耗电流 2.3mA,输出电流可达 50mA,完全满足本电路的要求,选择该芯片的另一个原因是价格,邮购价格为 8 元一片,相比 ADI,MAX 等公司几十元一片的高速运放芯片来说算是很廉价了,电源采用正负双电源供电,由于整个电路总的电源输入为单 8v,所以专门用一片 dc/dc 电路MC34063 为其构成了负压转换器再经稳压得到-5v 电压,+5v通过对输入电压稳压得到。
程控放大器电路如图 1所示,被测信号从 BNC 插孔输入, S0继电器决定输入耦合方式,S0 吸合为直流偶和方式,S0 断开为交流耦合方式。信号通过交直流耦合选择开关后被送入由 R3~R5和C2~C4 组成的 X0.5/ X0.05 的衰减电路,衰减倍数由 S1 控制,当 S1 未吸合时
MCU1 电路见图 9, PC2~PC5 共 4 个 IO 口接 4 个轻触开关 S1~S4,S1、S2 是两个复用键,用于控制水平扫速与垂直电压灵敏度,功能通过 S4切换,当前功能状态显示在显示器上,如果当前的控制功能为控制水平扫速则在显示器的右下边反显示“T”, 如果当前的控制功能为控制垂直电压灵敏度则在显示器的右下边反显示“V”,见照片。S3 是触发控制,当前状态显示在控制状态左边,箭头上升则自动触发,箭头向下则不触发。长按 S3 选择交
直流偶和方式。该示波器现在只能实现基本功能,其他更多功能有待于广大爱好者共同努力。S0、S1、S2、S3、S4 共5 个端口分别连接 PB4、PB0、PB1、PC0、PC1 用于垂直电压灵敏度控制,控制数据见“程控放大电路”中的表 1。 PB2、 PB3、 PB5作为 SPI总线接口与 MCU2通信,为了防止下载程序时两芯片 SPI 口冲突所以在两单片机之间的 SPI 总线上串联 3 只1K的电阻,实验证明此法非常有效,电路工作稳定。PD0~PD2 共 3个 IO口用于时钟控制,控制数据见“时钟产生电路”中的表 2。频率的测量使用了 16 位计数器,外部下降沿出发。程控放大器输出的信号送给由场效应管 Q1 和高频三级管 Q2 组成的高输入阻抗整形电路整形后再由 U17 触发器74F74 进行 4 分频然后送入 MCU1 的 T1(PD5)脚进行计数测频,在低水平扫速时(5ms/div和 50ms/div)为了保证测频精度侧频周期为 1s,在高水平扫速时(小于 5ms/div)测频周期为 0.25s。测频的原理是通过记录 1s 或0.25s 内计数器记录的脉冲数来换算频率,测频定时由中断完成,每测完一次频率就向 MCU2 通过 SPI总线发送一次数据,所以在高水平扫速时每秒向 MCU2 发送 4 次数据,而在低水平扫速时每秒向 MCU2 发送 1次数据,能较好的保证参数显示的实时性。
给你的电路注入灵魂
——程序设计
没有程序那一堆堆电路起不到任何作用,完全是一堆废板子!就像一台没有操作系统的电脑一样,只能废电。程序设计是整个示波器制作中的难点,本文将详细讲解程序的设计。 该示波器中的程序全部是用 c 语言编写的,开发环境为 CodeVisionAVR C,原程序在附件中,下面就各个重要的子程序的设计一一叙述,其它程序见原程序。MCU2 与 MCU1 的程序流程图分别见图 1和图 2。
2.高速 AD转换与 FIFO 存储器电路
高速 AD转换与 FIFO存储电路 PCB 板图见图4 所示,图5和图 6 为该板的实物图。从图 4 中可以看到其中体积最小管脚最密的为 AD 转换器 ADS830E 的焊盘,往左依次是74LVC574和 IDT7204的焊盘,上面是 74F08的焊盘。这个电路是示波器的咽喉要道,但不用调试!只是在焊接 ADS830E 时应注意一下焊接技巧,因为 ADS830E 的引脚比较多而且很密(引脚间距 0.65mm)所以焊接时容易因焊锡较多而造成短路,即然这样焊接时还不如给每个引脚上都镀上焊锡,先不要管他是否短路,焊在电路板上再说,焊好后用浸上松香的铜编织网将多余的焊锡吸掉就行,很简单的操作。后面的mega32 的焊接方法相同,从图 6照片中可以看出 ADS830E 旁边有很多松香,就是吸焊锡时残留的,虽然有些影响美观但对电路的性能没有影响,业余条件下还是可以接受的。
3.时钟产生电路
因为时钟产生电路的工作频率高达 60MHz,为使其工作稳定也使用双面板做,一面铜箔全部接地对高频信号进行屏蔽减少辐射干扰。印刷板见图 7 所示,图8为实物照片。因为该电路的最高工作频率为 60MHz,一般的 74LS系列或 74HC 系列数字逻辑电路最高只能工作在 40MHz 左右,不能满足该电路的要求,所以只能选用速度等级更高的 74F 系列和 74AC系列,相对来说 74F系列更好买,所以本电路中的两个与 60MHz 信号相关的芯片 74F74 和
74F151 都选择 74F 系列,AD 转换电路中的与门因为也有可能工作在 60MHz(最快的两个扫速),所以也选用了 74F 系列中的 74F08。由于该电路板上全部为数字电路,所以只要元件选择正确且安装无误不用调试即可正常工作,所以就不多说了。
4.MCU2 控制电路
MCU2 控制电路板其实就是一个 mega32 的最小系统板,板子上有复位电路、振荡器等保证 mega32 正常工作所需的基本电路和 ISP 程序下载接口,32 个 IO 口全部引出,与各部分模块相连,见整体图。图 9 为MCU2 控制电路的 PCB 板,图 10 和图11 为做好后的照片,从图 10 中可以看出 mega32 所使用的晶振为 18MHz,如硬件电路介绍中所述用 18MHz晶振是为了提高屏幕的刷新率,增强示波器的实时性。这块板子的制作没有什么特殊要求,只是
焊接 mega32时用焊接 ADS830E 的方法即可,就不多说了。LCD显示器引线采用扁平排线,所以要用接口连接。为了试验方便将 LCD模块的接口电路单独做成一块 PCB 板,没有做在这块板上,见图 12 所示,图 13 为 LCD适配器电路的照片。因为我做的这个示波器中的电路都是一步一步实验确定的,途中一个功能电路用好几种方案,最后确定最佳电路。所以电路都是做成模块的,这样的话便于组合实验,当确定一整套最佳方案后再将所有的模块做在一块电路板上。
图 14 为将 LCD模块与 LCD接口电路连接起来的照片,在电路都固定好之后,LCD模块的接口电路是藏在 LCD模块底下的,在整体的照片中是看不到的。
5.MCU1 控制电路与整形电路
MCU1控制电路的 PCB 板图见图15,mega8 单片机使用双列插 DIP封装,这种封装的好处容易焊接,但占用板子的面积大,如果想要做成示波表,最好将 mega8 换成贴片封装的,以节省印刷板的面积,如果要扩展更多的按键,那么最好使用一片 mega16-16AI,因为mega8 一共有 23 个 IO口,在本电路中基本将 IO口用完了,所以还是换一个 32 个IO口的mega16 比较方便,成本增加不了几块钱,当然印刷板就得重新设计了。在安装这块电路板时有一个细节要注意,就是将所有元件焊完后在焊接场效应管 2sk192,而且焊接时要将烙铁从插座上拔下,以免烙铁上有感应静电,因为 2sk192 的栅极输入电阻极高,而且结电容很小,所以一点点的静电感应就可以让结电容上产生足以击穿栅极的电压,所以在储存和焊接时要特别注意。平时存放内部没有保护二极管的场效应管时应存放在金属盒中或用金属箔包裹后存放,尤其是在空气干燥的北方。
完整的pdf格式文档51黑下载地址(共49页)此PDF详细介绍了如何自己动手制作示波器:
DIY示波器.pdf
(5 MB, 下载次数: 897)
|