0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何制作功能为自动量程的简易示波器?

电子森林 来源:电子森林 作者:马尚清 2021-04-01 10:15 次阅读

这是南信大马尚清同学的作品

因为本人也没学几天,学识浅薄,有错误问题难以避免。

已经实现的功能

Ain通道示波功能(量程为0-3.3V)

示波器相关数据显示功能(通过二级菜单显示)

波形自动量程功能

仍需完善的功能

波形频率测量(软件测量波形周期代码编写过于简单,测试对于规则的上下对称的波形还可以测量,而对于其他的则测量偏差太大,仍需完善)

未能实现的功能

采样速度的调节功能(对于采样率,时钟之间联系的理解不够,如果简单的改变采样间距会导致波形变形,造成偏差)

快速傅里叶变换(不太能理解快速傅里叶变换是如何实现的,直接带入网上代码也会导致占用空间过大)

上位机通讯功能(对于DMA理解不够,不知道应该如何将DMA中读取到ADC的数据上传到上位机中)

采集板上的音频信号(采集信号波形与实际情况不合,故在设置中将MIC对应的PA1管脚关闭,后续可以继续优化)

实现过程

这个项目是我第一次接触stm32系列的项目,也是第一次用HAL库来开发项目(虽然建议使用LL库来减少空间的占用,但是对于LL库,本人有点更难理解,所以就没有采用)。所以在实现的过程中,遇到了很多的困难,加上HAL库的教程也比较少,并且G031系列单片机也是比较新的产品线,所以没有多少能够借鉴的例子,所以一些看似很简单的功能,在实现他们时反倒难住了我,包括OLED屏幕点亮,ADC采样,波形显示等等问题。

示波器实现过程的原理其实并不困难:由ADC采样到数据,将数据乘以330 除以4096,从而得到实时电压值,在把数据进行量化之后,储存进数组(数组内成员个数需要大于波形显示区域的横向像素点),通过数组的比较函数,得到数组内的最大电压以及最小电压(由于数组的最大值与最小值受到之前测量数值的影响,于是我采用每隔一段时间就复位一次来达到最大值和最小值能够随着测量进行不断更新而不会卡死在某一数值)。

之后进行需要将电压值转换成应在应该显示在屏幕上的坐标(其中我将128*64的OLED显示屏的取107*47作为波形显示部分,因此右侧和下侧显示区域只留有不到16像素点,而正常的OLED显示程序里面字体是远大于此,所以我们需要使用0806字体,否则会造成字体显示错位),如果是固定量程则是由测量值与量程之间的比值得到示波器纵向坐标的比值,从而达到计算出点坐标。如果是动态范围则是测量值与数组范围内最大值与最小值的差之间的比值得到,此外还需要根据最大值和最小值更新网格线旁边的数值,这里就使用sprintf函数来达到不断更新字符串的目的,在通过OLED的字符串显示函数显示到OLED屏幕的指定位置上。之后波形的绘制则是通过ADC不断的采样,写入数组,读取数组,进行画点,更新数组,从而达到连续不断的显示输入波形的效果。

而按键功能的实现可以通过按键中断回调函数(本人使用过程中会出现中断不了的现象,可能是中断优先级配置的问题)或者自行编写按键判断函数,放入while函数中不断循环运行从而达到不断扫描按键的效果。按键触发的逻辑也需要自己仔细的考虑,否则会造成连击,无法触发,循环触发等出乎意料的现象。此外而按键功能的设计一定要有严密的执行逻辑,否则容易造成按键冲突,或者程序卡死。此外需要设立按键标志位,来判断按键触发的次数,从而达到按键多用的功能。

项目的一些细节部分:

波形的显示函数中加入插值函数,这样才能使得示波器有能够轻易看出的连续波形,而不是一个个离散的点。

按键的读取需要进行延时消颤处理,并加上触发判断,不然按键会多次激发,或者不激发,影响操作。

按键多次触发功能是通过按键中断中简单的计数函数来判断按键被按下几次,判断按键是否进行长按与短按则是通过延时判断来的。

波形显示时,需要将超出量程的值限制为最大值,否则会导致显示在其他区域。

自动量程,通过测量值与最小值的差与数组内最大值与最小值差的比来算得测量值应该在OLED屏幕上的坐标,并且将示波器旁的数值改变为最大值与最小值,从而达到动态量程的效果。

示波器的背景网格线最好不要使用图片显示,而使用间隔画点功能,从而达到绘制背景网格线的效果。否则容易造成OLED显示错乱和频闪等情况。

在进行单片机数值计算时候,一定要注意运算完成后,数据类型已经精度问题,否则容易造成数据不准确,甚至错误数据的出现。

实现功能注意事项:

注意OLED屏幕显示函数的位置坐标,有的代码是以默认的OLED最下方一排为0,有的进行了反相。

OLED Clear()函数不能够完全清屏,会有残留。

使用OLED直接操纵点显示的函数时,一定要注意运行频率,否则会造成闪屏。

实现项目的感触

通过这次寒假在家练项目,收获颇丰。通过自己亲自参与到项目的实现过程来,才能够发现问题,分析问题,寻找解决思路,从而解决问题。作为刚刚接触到STM32的萌新,这项项目让我能够快速学习。之前学习他人教程,觉得思路很清晰,实现起来很简单。但是当自己真正的接触到一项陌生的项目,没有现成的答案和结果等着自己的时候,才发现自己原来很多都不知道。正是由于项目中一个个出乎意料的问题的出现,才能逼迫着自己去查找资料,学习大神们写的代码,并尝试自己去解决。

未来完善功能

能够兼容所有波形的频率测算功能

学习快速傅里叶算法,简化FFT函数,使其能够在单片机剩余空间内实现

波形发生器以及其他附加功能的开发

原文标题:具有自动量程功能的简易示波器

文章出处:【微信公众号:FPGA入门到精通】欢迎添加关注!文章转载请注明出处。

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 示波器
    +关注

    关注

    113

    文章

    6180

    浏览量

    184426
  • 电压
    +关注

    关注

    45

    文章

    5548

    浏览量

    115540

原文标题:具有自动量程功能的简易示波器

文章出处:【微信号:xiaojiaoyafpga,微信公众号:电子森林】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    罗德与施瓦茨RTB2004示波器:深度解析信号波形

    罗德与施瓦茨RTB2004示波器是一款功能强大的数字示波器,广泛应用于电子工程、通信、自动化等领域。其出色的性能和丰富的功能使其成为科研人员
    的头像 发表于 08-30 16:00 305次阅读
    罗德与施瓦茨RTB2004<b class='flag-5'>示波器</b>:深度解析信号波形

    阐述示波器探头上的衰减开关功能

    示波器探头上的衰减开关在示波器测量中扮演着至关重要的角色,其主要功能可以归纳如下: 一、功能概述 衰减开关用于调整探头对输入信号的衰减倍数,从而控制信号在
    的头像 发表于 08-09 14:43 657次阅读

    如何使用数字示波器自动测量功能

    数字示波器是一种广泛应用于电子工程领域的测试仪器,它能够实时显示电信号的波形,帮助工程师对电子设备进行分析和调试。数字示波器自动测量功能是其核心
    的头像 发表于 07-17 17:39 1343次阅读

    示波器分段存储功能介绍

    在电子测量领域,示波器作为一种重要的测试工具,广泛应用于信号分析、故障诊断等领域。随着技术的不断发展,示波器功能也越来越强大。其中,分段存储功能作为
    的头像 发表于 05-29 17:11 643次阅读

    示波器的种类和功能介绍

    示波器,作为电子测量领域的重要工具,其种类繁多,功能各异。从传统的模拟示波器到现代的数字示波器,每一种示波器都具备其独特的性能和适用场景。本
    的头像 发表于 05-20 16:50 760次阅读

    示波器滤波功能怎么用

    示波器,作为电子工程师和科研人员的得力助手,在信号处理、电路调试、通信分析等领域扮演着不可或缺的角色。而在示波器的众多功能中,滤波功能尤为重要。滤波
    的头像 发表于 05-17 17:23 1593次阅读

    示波器自动触发、标准触发、单次触发三者之间的区别

    。本文将详细探讨示波器自动触发、标准触发和单次触发三种触发方式之间的区别,旨在帮助读者更好地理解和应用示波器的触发功能
    的头像 发表于 05-17 16:49 2362次阅读

    示波器探头的量程怎么看?

    示波器探头的量程是指探头能够测量的电压范围,它是一个重要的参数,决定了探头适用的测量场景。
    的头像 发表于 05-13 15:22 1269次阅读

    示波器功能及用途

    示波器功能及用途非常广泛,以下是对其主要功能和常见用途的详细描述。
    的头像 发表于 05-07 15:23 2402次阅读

    示波器的 FFT 功能怎么调?

    示波器fft功能-示波器中的快速傅立叶变换 FFT功能非常有用。是德科技与您分享keysight示波器fft调出来的方法。Keysight
    的头像 发表于 03-19 18:04 2839次阅读
    <b class='flag-5'>示波器</b>的 FFT <b class='flag-5'>功能</b>怎么调?

    【电磁兼容技术文档分享】频谱仪应用案例&amp;amp;简易探头的制作

    【电磁兼容技术文档分享】频谱仪应用案例&简易探头的制作
    的头像 发表于 02-19 13:20 762次阅读
    【电磁兼容技术文档分享】频谱仪应用案例&amp;amp;<b class='flag-5'>简易</b>探头的<b class='flag-5'>制作</b>

    什么是示波器触发?示波器的区域触发功能

    什么是示波器触发?示波器的区域触发功能示波器触发是示波器中一项重要的功能,它用于在输入信号中
    的头像 发表于 01-22 13:40 1545次阅读

    示波器的主要功能和作用 示波器可以测量哪些参数

    的应用。 一、示波器的主要功能和作用: 1.波形显示:示波器最基本的功能是将电信号波形转换为图形显示,通过图像可以直观地分析和判断信号的特性。示波器
    的头像 发表于 01-19 15:50 1.2w次阅读

    电流自动量程切换方法有哪些

    电流自动量程切换是电流测量中的一种常用技术,它可以根据电路中的电流变化自动选择合适的量程,以确保测量结果的准确性和精度。在本文中,将详细介绍电流自动量程切换的几种方法。 一、基于模拟电
    的头像 发表于 12-26 10:27 2120次阅读

    基于STM32制作的500KHz示波器项目

    今天小编给大家带来国外的Maker Mirko Pavleskid的基于STM32制作的500KHz示波器项目。
    的头像 发表于 12-03 10:07 1763次阅读
    基于STM32<b class='flag-5'>制作</b>的500KHz<b class='flag-5'>示波器</b>项目