寒假在家一起练——简易示波器DIY套件(基于STM32G031最小系统)
基于STM32G031最小系统的Mini示波器制作,波形显示,信号输出。涉及SPI、ADC、DMA、TIM、FFT等知识。
标签
嵌入式系统
MPU
STM32G031
迷你示波器
灞田虎
更新2021-03-02
2163

1.项目描述

     寒假在家一起练——简易示波器DIY套件(基于STM32G031最小系统)

2.项目需求

  • 完成对板上音频信号的采集和波形显示,可以通过手机播放音乐或App产生音频信号的方式提供声音信号源,通过板上电路的放大、MCU中ADC的采集以后将波形显示在OLED屏幕上,可以通过板上按键的操作在两个方向(横轴 - 时间;纵轴 - 幅度)来扩展、压缩波形的显示,按键的功能可自行定义;
  • 实现信号发生器的功能,能够产生2KHz以内的正弦波、三角波、方波三种常用波形,通过按键的操作能够实现频率可调、幅度可调,通过调整板上的R、C的值,可以最高生成200KHz的模拟信号;
  • 能够通过Ain管脚测量外部模拟信号(0-3.3V,DC-200KHz),并能够对外部的周期性波形测量其周期和峰-峰值;
  • 能够对采集到的信号进行FFT变换,并在屏幕上显示其基频及低次谐波(比如2、3、4、5次)的分量。

3.完成的功能

3.1 波形显示

      能够采集并显示其他单片机产生的波形

      FvEWyEZRDnvSPG8o7leDoWOcTj8S

     采集手机放出的音乐的波形

      FmS8RQvv44Gy4mb5HOLgsLLdIBHC

3.2 信号输出

       按OK键打开输出波形配置菜单,在菜单中,可以选择输出波形(正弦波、三角波、方波),增加/降低输出信号的频率(起始125Hz,上限2kHz)、幅值(起始3.3V,下限1.8V)。

Fvgd_-aEydiRY7ZtSQCTCNcUDhE5

FqaXsspJFWtZpir8Y4mIUn1oEhq2

4.未实现功能

     频谱显示,能够对采集到的信号进行FFT变换,并在屏幕上显示其基频及低次谐波(比如2、3、4、5次)的分量。据说涉及到快速傅里叶变换或者也可以用蝴蝶算法,精力有限,没有过多深入研究。

5.实现思路

      波形显示:ADC对模拟输入进行采样,采样由中断触发,采样结果由DMA从外设搬运至内存,将采样得到的ADC值经过解算后在屏幕上进行动态显示;通过取不同的采样点来调整采样频率,实现波形在时间轴上的扩展与压缩;

      信号输出:TIM2计数值满后产生中断,输出PWM波并通过RC低通滤波实现方波、正弦波、三角波的生成,通过调节TIM2的预分频值来产生不同的频率;通过改变PWM波的占空比来实现幅值的改变。

6.遇到的主要难题

6.1PWM波占空比值的产生

      对于正弦波,这就涉及到SPWM的知识。SPWM 波形——脉冲宽度按正弦规律变化而和正弦波等效的 PWM 波形。SPWM 是一种非常典型的 PWM 波形,它在数字电路控制中应用非常广泛,如果使用低通滤波器,可以由 SPWM 波得到其等效的连续正弦半波。

(1) 计算法:根据拟合波形的频率、幅值和半周期脉冲数,准确计算 PWM 波各脉冲宽度和间隔,据此控制开关器件的通断,就可得到所需 PWM 波形;

(2) 调制法:拟合波形作调制信号,进行调制得到期望的 PWM 波;该方法一般采用等腰三角波为载波,其任一点水平宽度和高度成线性关系且左右对称。载波 (等腰三角波) 与平缓变化的调制信号波 (即要拟合的波形) 相交,在载波与信号波的交点控制器件通断,就得宽度正比于信号波幅值的脉冲,符合 PWM 的要求,见图调制法得到 PWM 波。相对于计算法,其处理过程计算简单。

FjN40uDQw_14C9KIwklGU35ZgKKe

6.2产生的信号的频率计算

  找了好久才找到这个公式:

Ft0PbXfIG7clQKcBe9a_c4O2PGF4

      Tsystick为系统时钟周期,TIM_Prescaler为TIM预分频系数,TIM_Period为计数值,N为波形单个周期点数。

7.未来的计划建议

     对信号的处理方面有很大的空白,有时间要把快速傅里叶变换和蝴蝶算法研究一下。

     该项目还有许多可以提升与扩展的地方:STM32G031的资源有限。可以更换更好的主控芯片,来提高采样率,采样点数等从而实现更高的性能。板上的OLED屏幕分辨率较低,无法显示信号细节与更多信息。可以使用分辨率更高的屏幕,或将波形信息直接发送给上位机,由上位机进行显示。板上按键过少,使用起来不方便。

源代码链接:https://pan.baidu.com/s/1thDXBMmVLbDtA5K12Zji4Q 
提取码:zjxz

HEX文件链接:https://pan.baidu.com/s/1R55WMbg3SVmu3_XgZUnQaQ 
提取码:zjxz 

制作PWM表的脚本链接:https://pan.baidu.com/s/1_zE7gxgZ9EskkbA-xw6Dlw 
提取码:zjxz 

项目资料网址:https://www.eetree.cn/project/detail/35

团队介绍
南京信息工程大学自动化学院
团队成员
胡升龙
南京信息工程大学自动化学院电气专业
翟忠浩
南京信息工程大学自动化学院自动化专业
评论
0 / 100
查看更多
目录
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2024 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号