简 介: 将一般的波形,比如正弦波转换成方波是信号处理中经常碰到的问题。本文针对该问题给出了最简单的一种讨论,并对使用比较器进行波形整形过程中遇到的毛刺问题进行讨论。

关键词信号波形转换比较器

  模拟电子中对于信号进行波形转换是一个主要的处理问题。其中将输入的波形转换成方波信号是最为基础的转换方式。

  对输入信号通过一个基本的比较器,便可以将输入的连续幅度的信号转换成幅值为离散取值(二值化)的信号,这个过程也称为对输入信号的二值化。

  在有噪声的情况下,则需要通过带有一定回滞特性(Smith特性)来消除转换成安称重的信号抖动。

§01 问题提出


  本文中的内容是针对 信号转换的解题思路 中第一步“对信号整形”的处理。实验给出典型二值化的处理电路,并记录了一些基本的实验结果。

§02 实验验证


1、信号源的设置

  在博文 利用STC8G1K08实现的数字信号合成模块 给出了可以通过无线蓝牙设置输出频率和波形的信号源模块。

  由于该模块直接输出的信号的峰峰值只有0.7V左右,需要将其进行放大才能够满足后面信号实验的要求。

▲ 通过蓝牙设置信号模块及其放大电路

  下面是数字信号合成模块 AD9833 直接输出的正弦波信号。

▲ 直接产生的信号波形

  经过LMV358进行放大之后,正弦波的波形基本上达到了0~5V之间。

▲ 经过LMV358放大之后的采集信号
▲ 采集到的三角波信号
  AD9833可以直接产生0~5V的方波信号,只是此时的频率是设定频率值的一半。

▲ AD9833可以直接产生0~5V的方波信号
  采集和生成前面波形的Python程序如下:

#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# TEST1.PY                     -- by Dr. ZhuoQing 2020-05-22
#
# Note:
#============================================================
from headm import *
from tsmodule.tsvisa        import *
from tsmodule.tshardware    import *
from tsmodule.tsdraw        import *
#------------------------------------------------------------
ds6104open()
#zbcmd(b'ad9833triangle')
#zbcmd(b'ad9833sinusoidal')
zbcmd(b'ad9833square')
#------------------------------------------------------------
step = 20
flist = list(linspace(1000, 1500, step))
frvdim = flist + flist[-1::-1]
printf(frvdim)
#------------------------------------------------------------
pltgif = PlotGIF()
#------------------------------------------------------------
for f in frvdim:zbcmd(b'ad9833setfrequency %f'%f)time.sleep(.2)x, y = ds6104readcal(1)plt.clf()plt.plot(x, y)plt.xlabel('Time(s)')plt.ylabel('Voltage(V)')plt.axis([x[0], x[-1], 0, 5])plt.grid(True)plt.draw()plt.pause(.1)pltgif.append(plt)
printf("\a")
pltgif.save(r'd:\temp\1.gif')
#------------------------------------------------------------
#        END OF FILE : TEST1.PY
#============================================================

2、使用反相器来获得方波

  由于输入信号的幅值很大,接近于0~5V之间,所以可以使用带有Smith输入特性的14触发器完成信号的整型。

▲ Smith反相器(74HCT14)

  下面给出了使用74HC14反相器得到的对输入正弦波、三角波的整形结果。可以从输出方波信号的上升沿和下降沿对应的输入信号的幅值差别,可以明显看到反相器的绘制特性。

▲ 使用74HC14获得的方波

▲ 使用74HC14获得的方波

  使用一个简单的具有Smith输入特性的反相器门电路可以比较方便的进行波形转换,但具有以下 缺点:
  1. 输出波形不再对称。由于输入比较器的反转电压不再输入信号的过零中点上下对穿,这也使得输出方波不在是对称(50%占空比)。这在一些场合不太适合;
  2. 对于输入信号的幅值敏感。随着输入信号的不同幅值,输出方波的占空比也会随之改变。特别当输入信号的幅值达不到回滞上下限的时候,输出就会是一个恒定值。

3、使用比较器来获得方波

  LM311是常用到的高速信号比较器。它可以组成很多常用到的信号处理电路。

▲ LM311比较器

  使用该比较器可以对输入的信号进行转换成二值信号。

  通过分压电路使得比较器的IN-,IN+处在电源电压的终点,输入信号通过电容耦合到IN+。这样就可以准确在带输入信号的过零点完成信号的整形了。

▲ 使用LM311比较器获得的波形

  如果信号带有噪声,就会在输出信号的跳变的时候出现一定量的抖动。如下图所示。这可以通过对输出信号进行低通滤波来消除这方面的影响。但最好的方法就是在比较器中引入正反馈形成Smith特性。

▲ 在过渡带引起的振荡

  下面就是从比较器的输出,通过20k电阻引至比较器的IN+,和IN+连接到中位电压的1k电阻分压形成正反馈。这样在整形的输入输出之间就形成了一定的回差。

  通过这个回差(Smith)特性,可以消除输出信号在跳边沿出的抖动(Glitch)现象。

▲ 输入信号,输出信号,Smith反馈信号

  下面这张图是在增加了Smith特性之后,对输出跳边沿进行观察,已经没有了相应的抖动跳变了。

▲ 引入Smith特性之后,没有振荡波形了

§03 对称方波


  采集100次波形,计算波形的占空比。所得到的均值和方差分别为:

  • 均值: 0.5038
  • 方差:2.1642e-6

  采集并进行测试的程序:

#------------------------------------------------------------
def dutyratio(d):dlist = [int(s == True) for s in list(array(d) > 2.5)]ddif = [int(s1 != s2) for s1,s2 in zip(dlist[0:-1], dlist[1:])]changeid = nonzero(ddif)[0]printf(changeid)return (changeid[1] - changeid[0])/(changeid[2] - changeid[0])ratiodim = []for i in range(100):x1,y1,y2 = ds6104readcal(1, 2)r = dutyratio(y2)ratiodim.append(r)printff(i, r)tspsave('ratio', r = ratiodim)
printff(mean(ratiodim), var(ratiodim))
#------------------------------------------------------------
r=[0.50,0.51,0.51,0.51,0.51,0.50,0.50,0.51,0.50,0.51,0.50,0.50,0.50,0.50,0.50,0.50,0.51,0.50,0.51,0.51,0.51,0.50,0.50,0.50,0.51,0.50,0.50,0.50,0.50,0.50,0.50,0.50,0.50,0.50,0.50,0.50,0.50,0.50,0.50,0.50,0.50,0.50,0.50,0.50,0.50,0.50,0.50,0.50,0.50,0.50,0.50,0.50,0.50,0.50,0.50,0.50,0.50,0.50,0.50,0.50,0.50,0.50,0.50,0.50,0.50,0.50,0.50,0.50,0.50,0.50,0.50,0.50,0.50,0.50,0.50,0.50,0.50,0.50,0.50,0.50,0.50,0.50,0.50,0.50,0.50,0.50,0.50,0.50,0.50,0.50,0.50,0.50,0.50,0.50,0.50,0.50,0.50,0.50,0.50,0.50]

§04 实验总结


  通过LM311可以对输入的幅值连续的模拟信号进行二值化(整形)。通过加入少量的回滞(Smith)特性,可以消除输入信号中高频噪声在输出信号中所带来的抖动。

  回滞电压的区间需要控制在一定范围,否则就会使得输出整形信号的跳边沿不发生在信号的过零点出。


■ 相关文献链接:

  • 信号转换的解题思路
  • 利用STC8G1K08实现的数字信号合成模块
  • AD9833数字信号发生器模块

● 相关图表链接:

  • 通过蓝牙设置信号模块及其放大电路
  • 直接产生的信号波形
  • 经过LMV358放大之后的采集信号
  • 采集到的三角波信号
  • AD9833可以直接产生0~5V的方波信号
  • Smith反相器(74HCT14)
  • 使用74HC14获得的方波
  • 使用74HC14获得的方波
  • LM311比较器
  • 使用LM311比较器获得的波形
  • 在过渡带引起的振荡
  • 输入信号,输出信号,Smith反馈信号
  • 引入Smith特性之后,没有振荡波形了

信号转换 | 如何将正弦波转换成方波?相关推荐

  1. 标题:信号、传输介质、数制转换

    标题:信号.传输介质.数制转换 文章目录 一.信号与传输介质 1.1.信息概述 1.2.信号分类 1.3.模拟信号和数字信号的区别 1.4.信号的失真 二.传输介质的连接与布线 2.1.双绞线 2.2 ...

  2. 史上最强的YUV转换RenderScript,支持转换成RGBA,BGRA,并且同时支持旋转,翻转,YUV数据格式支持NV21, YV12, YUV420_888, 分别对应Android Camer

    个人觉得libyuv性能更好,建议使用libyuv,地址:https://www.raoyunsoft.com/wordpress/index.php/2020/05/25/androidlibyuv ...

  3. m4s格式转换mp3_wav格式怎么转换成mp3格式

    wav是一种音质极好的声音文件格式,有不少歌曲都是使用这种音频格式的.许多的音乐发烧友也特别热爱这种格式的音乐.但是这种格式的音乐对一般的音乐爱好者来说显得体积太大,浪费手机或者电脑的空间,所以许多人 ...

  4. LINUX下文件字符集编码查看与转换并文件名编码转换

    检查文件编码file命令 file ip.txt(加上-i选项可强制显示字符集) ip.txt: UTF-8 Unicode text, with escape sequences 一.运用iconv ...

  5. 字符编码转换_进制转换(GB2312,GBK,JNI,HexTOStr)

    [cpp] view plain copy print? // /* ASCII 英文一个字节 gb2312,gbk 中文两个字节,英文一个字节 在中文系统中ansi一般指gb2312或gbk GB2 ...

  6. 【Java代码】坐标系说明+WGS84\GCJ02\BD09坐标系转换工具+Java坐标系转换及验证源代码分享(粘贴可用)

    1. 坐标系说明 开发地图应用服务时,一定会接触到各种坐标系,而保证坐标系的正确与合理是一切数据分析的前提,总的来说,坐标系可以分为两大类:地理坐标系GCS(Geographic Coordinate ...

  7. matlab 数值格式转换,Matlab字符串转换及数值格式转换

    Matlab字符串转换及数值格式转换 字符串转换函数 abs 字符串到ASCII转换 dec2hex 十进制数到十六进制字符串转换 fprintf 把格式化的文本写到文件中或显示屏上 hex2dec ...

  8. mysql c语言数字转字符串函数_C++_c语言标准库中字符转换函数和数字转换函数,字符转换为数字: #includest - phpStudy...

    c语言标准库中字符转换函数和数字转换函数 字符转换为数字: #include atoi();将字符转换为整型   例:char ch1;int i=atoi(ch1); atol();将字符转化为长整 ...

  9. PPT转换PDF格式怎么转换?后悔现在才知道

    PPT和PDF文件大家运用的还是比较广泛的,大家在制作完一份PPT文件,为了格式不发生错乱通常将文件保存为PDF格式,接下来小编告诉大家PPT转换PDF格式怎么转换. 借助软件: ×××换器 1.大家 ...

  10. 大小写字母转换(java大小写字母转换)

    苹果4SQQ密码大小写字母怎么转换不?苹果4SQQ密码大小写字母 每次要输密码,当时在电脑上设置的密码,可以改变大小写,但是到了手机上,我不知道怎么换大小写,那位朋友告诉下 苹果手机输入法怎么改字母的 ...

最新文章

  1. 3分和30分文章差距在哪里?
  2. 全球农企对话国际农民丰收节贸易会·万祥军:拜耳谋定领先
  3. Swagger UI 与SpringMVC的整合 II
  4. 【HTML5初探之form标签】解放表单验证、增加文件上传、集成拖放
  5. @JsonFormat Date类型时间 格式化 注解 使用
  6. mix2s android p功能,已升安卓P!网友:MIX2S才是亲儿子
  7. net 架构师-数据库-sql server-003-T-SQL 基本语句
  8. 22. Yii 组件属性
  9. 数据挖掘技术基本任务
  10. pyecharts 字体大小调整
  11. 20210610 线程数不断飙升问题定位
  12. Pascal词法分析器用java实现
  13. 绘制几何图形,生成辅助线的思路
  14. 各软件版本、仓库、官网地址
  15. h5锁屏提醒-锁横屏和锁竖屏
  16. 抖音算法实习生面经(一面+二面)
  17. 计算机编程语言及C语言简介,编程语言基础:C语言
  18. jquery slideToggle() 效果
  19. 国密 sm2,sm3,sm4 算法纯 JavaScript 实现
  20. 【测开面经】Python篇

热门文章

  1. java 415_@RequestBody接受参数报415错误
  2. python的中介效应 调节效应
  3. 《数据安全法》施行在即,政企单位如何构建数据安全治理体系?
  4. 打开计算机文件反应慢怎么解决方法,电脑反应慢怎么解决
  5. ML/DL学习笔记2——偏差和方差模型好坏
  6. Chrome google浏览器从缓存下载视频
  7. chrome下载文件竟然都有缓存!
  8. android面试简历!Android中高级面试必知必会,内含福利
  9. anki android 导入路径,3.1 导入卡片
  10. 支付宝接口对接指南(一、支付宝文档解读和支付宝侧沟通)【保姆级】