您的位置  > 互联网

自制一个性价比高、简单、实用的信号发生器

DIY或产品制作时,在开发调试阶段需要给出各种测试信号,所以信号发生器肯定是必不可少的。 花很多钱买信号发生器,但如果使用频率不高,成本还是会很高。 因此,第五季我们将教大家如何制作一款高性价比、简单实用的信号发生器。

DIY的第一步就是拆! 拆开一款商用信号发生器,看看它的硬件组成和基本原理:

在考察了商用级信号发生器之后,我们决定明确自己的DIY信号发生器应该具备哪些功能,然后我们就正式开始着手研究。

以下是整个DIY过程的文字版:

DIY的第一步是确定信号发生器方案。

早期的信号发生器中,信号发生电路采用纯模拟电路。 例如,可以通过运算放大器或晶体管生成正弦波,可以通过高速比较器生成三角波或方波。 这种方法对于设计模拟部分的工程师来说要求非常高。 高,并且,受器件工艺参数以及PCB对高频电路的影响,它们的频率都比较低,通常在1MHz到3MHz之间。 纵观目前市场上10MHz起步的信号发生器,采用的方案绝对不是这种纯模拟的方案。

目前主流的信号发生器设计方案是直接数字合成,也称为DDS。 直接数字合成(DDS)是一种生成任意频率波形的技术。 输出可以轻松摆动或调谐到另一个频率或相位,而不会出现不连续、相移或其他伪影。

有两种方法可以实现DDS。 第一种是用FPGA+高速DAC来实现。 通常的方法是使用软件生成波形表,然后实例化ROM内核,然后通过硬件描述语言控制DAC的输出。 DAC 输出执行低电平操作。 滤波后送入可编程放大器,按照设定的幅度放大输出,即可得到非常漂亮的信号。 就像这块板子一样,通过控制板上的这块,就实现了一个具有基本功能的信号发生器。 但这种方案的缺点是对于不会使用FPGA的人来说比较麻烦,而且外围电路还是很复杂。

第二种是很多器件厂商开发的DDS芯片,比如ADI、、等,类似于将波形表、ROM核心和DAC做成一颗芯片。 外部仅保留模拟输出和控制信号输入。 当我们需要任何信号时,只需通过控制信号告诉它输出信号即可。 无需关心其具体实现。 即使是51单片机也可以控制DDS芯片来制作强大的信号发生器。 然而,这种方法也有缺点,即它生成的波形类型有限。 如果芯片设计中有多种类型的波形,则只能生成几种类型。

对比这些方案,根据使用需求,最常用的波形包括方波、正弦波、三角波和PWM信号。 频率范围是1Hz-2MHz,完全够用了。 1路也够了,因为有可拆卸和需要遥控调试的要求,所以电源是电池供电的。 对于远程调试,还需要无线通信。 这种情况下,采用单片机+DDS芯片的方案就足够了。

方案确定后,就需要选择DDS芯片。 选用ADI公司的DDS芯片。 它是一款低功耗、可编程波形发生器,可以生成正弦波、三角波和方波。 输出频率范围为0~12.5MHz。 ,输出频率和相位可由软件编程,无需外部元件即可轻松调节。 频率寄存器为28位,通过3线SPI串口写入。 串口工作时钟频率高达40M,兼容DSP和微处理器标准。 工作电压在2.3V至5.5V之间。 封装采用MSOP表面贴装封装,尺寸较小。 至于主控MCU,可以用,性能完全够用。

确定主控和DDS芯片后,下一步就是设计原理图。

第一部分是最小系统,由晶振电路、复位电路和BOOT电路组成; 第二部分是电路。 可以看到它的外围电路非常简单,只需要几个电容和一个有源晶振。 其实这个有源晶振可以省掉,直接用STM32输出时钟即可; 第三部分是放大电路。 其作用是放大所产生的信号。 该放大器采用ADI的单运放形成同相比。 放大器,通过调节RP1,可以调节放大倍数,改变输出幅度。

接下来是信号发生器的显示。 我打算用这个4.3寸的串口触摸屏来做显示器。 它的优点之一是附带许多显示和触摸空间。 它通过串口与单片机进行通信。 它易于使用且快速。 开发,但是不适合一些数据刷新比较快的应用。

关于无线传输功能,如果有的同学没有云服务器,这部分可以省略。 我这里选择使用4GDTU模块是因为我有云服务器,所以非常好用。 只要有4G信号覆盖,就可以在全国任何地方进行远程控制。

关于供电电路,整个信号发生器采用12V电池供电,4GDTU模块采用12V供电,触摸屏需要5V供电,信号放大电路采用5.2V供电,STM32需要3.3V供电。 这是整个系统的电源转换电路。 有时在调试时需要使用3.3V和5V电源,所以我在这里额外安装了一组电源用于外部输出。

电路原理图设计完成后,下一步就是软件设计。 软件分为三部分,即触摸屏HMI界面设计、STM32主程序设计和上位机控制程序。

首先是触摸屏HMI界面设计。 这部分需要使用串口屏厂家的上位机来进行。 这里做了三个界面,主界面、PWM输出控制界面和系统设置界面。

接下来是STM32主程序设计。 该程序由驱动程序、ADC驱动程序和Uart串口驱动程序组成。

在Main函数中调用它就完成了信号发生器的功能。 驱动由GPIO初始化、频率控制和波形控制功能组成; ADC驱动器包括GPIO初始化和ADC转换功能; UART串口驱动只有各串口的初始化功能,串口1用于与触摸屏通信。 串口3用于与4GDTU通信。 接下来看主程序。 这部分是头文件引用、函数声明、变量定义。 进入Main函数,首先是板级初始化。 初始化完成后,程序进入while循环,循环中执行2。 首先是上传ADC采样值并分别进行DDS输出。

主机部署在云服务器中。 我在云服务器中部署了 EMQX 和 Node-Red 环境。 这两个环境的功能是MQTT消息服务器和基于Node.JS的低代码编辑。 设备。

软硬件设计完成后,下一步就是调试。 将程序下载到单片机中,连接起来,将虚拟示波器分别连接到DDS信号输出口和PWM信号输出口开始一一测试。

最后一步就是给它套上贝壳,穿上衣服。 外壳是我之前3D打印的小仪器外壳。 只需在相应位置打孔即可。 这是最终安装后的样子。

因为这只是第一个版本的验证,所以采用了这种模块拼接的方式。 还有很多可以优化的地方。 例如,如果将放大器替换为可编程放大器,则可以通过单片机直接控制幅度,而无需用手扭动电位器。 。 另外PC端的远程控制界面和触摸屏界面也不是很好看。 不幸的是,我对这些UI设计实在是没什么感觉。 整个项目是开源的。 想要的朋友可以自己DIY一下。

2023 年第 5 季

实验室一直伴随着电子人的学习和工作。 Digi-Key 第 5 季:实验室 DIY 季!

整个系列从4个视角出发,安排了13个视频讲座,帮助您打造属于自己的实验室。

9月12日起,达尔文B站、 B站每周二、四晚8:00上线。

推荐列表和选择技巧已编译成文件。 同时,的三台实验设备也已开源。 大家可以下载资料自己动手做哦~

扫描下方二维码即可获取数据下载链接。

第 5 季:

第八讲:百元DIY加热台|文章《可以烧烤》吴《可以焊接》(B站德杰电子查看)

过去的问题:

结尾