有信号发生器功能的简易示波器DIY套件V2.0
使用硬禾学堂开发的16管脚MCU最小系统核心模块,通过软件编程制作一款能够采集100KHz以内模拟信号和麦克风做信号源的音频信号采集及处理、能够产生20KHz以内频率的任意波形发生器的简易示波器DIY套件。
标签
嵌入式系统
STM32G031
简易示波器
寒假在家一起练
硬禾发布
更新2023-04-25
9182

2020年暑期我们发起了一个基于LPC824微控制器的简易示波器的编程活动,引起了热烈的反响,先后有600多人参加,并有120多位网友参加了我们组织的为期10天的直播培训。尤其是Jack网友,在Github上开源了他的代码,包括移植的FFT功能,通过他的演示视频可以看出,在LPC824微控制器上能够非常流畅地实现简易示波器的数据采集、显示功能以及FFT频谱变换和分析的功能。

pocketinstrument:mini_scope_diy.png

基于LPC824的简易示波器套件构成框图

简易示波器DIY套件的实际效果图

基于LPC824的简易示波器DIY套件的实物图

应广大网友的要求,我们在第一个版本的基础上做了简单的升级,并增加了一款基于ST的STM32G031的MCU核心模块,在模块上引出了6个通道的模拟输入,跟原来的LPC824模块管脚兼容,但STM32G031核心模块多了4个数字IO管脚(在本简易示波器的扩展底板上为附加的功能),其性能也有增强:

  • 同样是Cortex M0+内核,其主频工作到了64MHz,比起LPC824提升了一倍;
  • 12位的ADC可以工作在2Msps,具有更高的采样率,因此支持的模拟信号带宽也可以提升一倍;
  • STM32G031内部的定时器可以工作在128MHz,可以输出更高频率的PWM信号,通过DDS+PWM的方式能够产生的任意波形输出的频率也就可以更高。

除了新的核心处理模块性能增强之外,本套件的主板也做了简单的升级(参见下面的PCB图):

  • 板上的Mic电路在送到ADC之前增加了一级运放跟随器,使得其送往ADC端口的模拟信号直流偏移为STM32G031供电电压的中间位置,也就是3.3V/2 = 1.65V,且不再受MCU的ADC输入阻抗的影响,这样在ADC量化的时候音频电路的模拟信号范围可以围绕1.65V为中心上下摆动,量化后的数字量也可以围绕2047上下摆动;

FpmCDD6k6HIny3fqNq9vrEXWeM9I

  • 对外的连接改为4个管脚的插针,除了3.3V、GND(可以为外扩的电路板提供电压)、Ain外部模拟信号输入(0-3.3V)之外,又增加了一个Aux管脚,它通过一个RC网络连接到核心模块的一个输出管脚,可以通过PWM产生任意波形的信号,RC作为滤波器,从而在Aux上得到模拟信号波形,如果去掉C、R=0ohm,则Aux就可以作为通用的数字IO使用,当Aux作为输出测试信号使用的时候,用跳线帽连接Ain/Aux可以进行闭环测试、开发;
  • 在对应于核心板模块的Pin6、7、8、9、10、11包围的区域没有敷铜和走线,这是为了支持有无线功能的BLE或未来的WiFi模块,如果将无线模块直接焊接在底板上,挖空的区域不会影响到这些无线模块的性能。

Fq5xm7e2X0sXTgKcW5hN2jdvnuLv

MiniScope V2.0 PCB板图

基本功能特性:

  • 核心控制器 - DIP16封装/邮票孔 + 4 GPIO的STM32G031控制器模块
    • ST的STM32G031控制器
    • Arm Cortex M0+内核
    • 64MHz主频
    • 内置1个12位/2Msps的ADC,在模块上有6个IO可以通过内部的开关切换共享该ADC,因此可以支持6通道模拟信号的输入
  • 核心模块上使用CH340E实现USB-UART的连接,用以STM32G031的程序更新,具体的操作方法参见STM32G031控制器模块的项目页面;
  • 扩展板上的输出显示 - 采用128*64分辨率/0.96英寸的OLED显示屏,通过SPI总线控制;
  • 扩展板上的输入控制 - 有5个按键,用户可以参照底板的原理图自己定义每个按键的功能;
  • 两路模拟量输入:
    • 1路直接连接外部模拟信号,输入信号的幅度范围为0-3.3V,频率建议控制在200KHz(根据奈奎斯特定律可以支持到1MHz)以便取得好的波形显示效果,在采样率为2Msps的时候一个周期里可以有10个采样点,在屏幕上显示起来会比较好看;
    • 1路通过板上的麦克风及音频放大/滤波电路将外部声音信号转变为电信号,经过10x的放大以及带通滤波器以后,进行直流偏移,送到ADC的输入端口,由于ADC的输入内阻在30K欧姆左右,在第一个版本的主板上,没有加入运放缓冲级,虽然通过电阻分压的方式将送到ADC输入端的模拟信号做了直流偏移,但由于ADC内阻的存在,输入端信号的直流偏移高于1.65V,采集以后可以通过内部的软件进行补偿,在本版本中添加了运放缓冲,送到ADC输入端的信号的直流偏移就会正好在3.3V/2的位置。当然由于分压电阻本身有5%的精度误差,所谓的3.3V/2也不是正好在正中间,这可以通过软件针对量化后的数据进行补偿;
  • 一路Aux,功能可以根据需要灵活使用 - 缺省配置为模拟信号输出(板上有一个1Kohm的电阻和10nF的电容构成的低通滤波器,截止频率为1.6KHz),改变RC的值可以调节LPF的截止频率,去掉C,将R安装为0欧姆电阻,则为直接连接,可以用于数字信号输出或数字信号输入,用于信号产生、外部控制或状态监测。

FnjRg6vXPR3uvFL_UrsiMYOGsIK2

基于STM32G031或LPC824最小系统模块的简易示波器DIY 3D效果图
FvdLt665OzFU9T7hb5maFq7pUDIT

微控制器的最小系统模块可以使用双排插座跟底板连接,便于更换不同控制器,核心控制模块还可以用在其它场景

由于主板硬件的兼容性、核心模块的管脚兼容性,以及LPC824/STM32G031内部功能的相似性 - 都是Arm Cortex M0+的内核、都使用串行ADC做数据采集,如果要用STM32G031实现简易示波器的功能,完全可以参考LPC824实现的功能、思路乃至代码。

下面给出基于LPC824的第一个版本的简易示波器的项目参考:

基于LPC824的直播课程/技术专栏

网友基于LPC824做的模拟示波器的实现效果展示

 

为帮助大家更多地了解简易示波器的硬件构成,下面两个类似的产品可以参考一下,通过自己编程以及简单的硬件搭配,你也可以自己做一个类似的产品。

参考竞品资料:

  1. EspoTek Labrador - 超小、USB连接的板上实验室
  2. Xminilab Portable

FthWMDENlsN8dZSG5TO8IgxoGQse

FlwPNqKdUpRRQLwQosjb5pn32Kht

FjGFON90SaxgavWpQxmXQpTXCU6X

参考技术资料:

关于总线:

关于用PWM生成任意波形:

关于示波器功能的参考:

   下面几篇关于在Arduino实现FFT功能的文章,虽然是基于8位的单片机Arduino实现的,但很容易移植,用在性能更加强大的32位微控制器STM32G031上应该更轻松实现

还有在NXP的LPC55S69上实现的文章:

物料清单
附件下载
01-规格书与控制芯片手册.zip
128 x 64 OLED显示屏的规格书和控制芯片的使用手册
STM32例程.zip
STM32控制器控制OLED显示屏的源码示例参考
MiniScopeDIY.pdf
简易示波器DIY套件V2的原理图 - PDF
团队介绍
苏州硬禾信息科技有限公司的工程师团队专注于基于FPGA和嵌入式系统学习平台的开发和生态系统的建设,在过去5年里成功推出的小脚丫FPGA学习平台被全国上百所高校采用于数字电路教学实践中,并一直积极推动开源、免费PCB设计工具KiCad在高校学生及硬件工程师中的应用。
团队成员
苏公雨
与非网/硬禾学堂创始人,电子创客爱好者,15年硬件研发、设计背景。
王安然
资深硬件设计工程师、FPGA教学导师,12年硬件研发经验,主持开发了基于小脚丫FPGA的系列学习平台。
吴志军
苏州思得普科技有限公司创始人/总经理,负责小脚丫FPGA平台的研发及生态建设,20年硬件系统研发经验。
陈强
控制工程硕士,资深硬件研发工程师,丰富的嵌入式产品研发与技术支持经验,熟悉嵌入式系统编程、FPGA和数字系统设计。
马熙飞
资深硬件工程师、技术专家。有9年工业级产品研发以及13年Altium公司技术专家的职业经历。精通Altium Designer软件的使用,有着丰富的电子产品工程开发和管理经验,以及电子产品的EMC设计经验。擅长PCB工具、系统化电子产品设计等方面教学。
评论
0 / 100
查看更多
相关产品
目录
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2023 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号