波形

在电子电路中,我们经常需要产生一些不同类型、不同形状或不同频率的波形做为信号波形,如正弦波、方波、矩形波、三角波、锯齿波等等。这些波形通常会被用于时钟信号、触发脉冲、定时信号等等。

所谓波形,就是电压或电流随时间变化的直观表示。通常是以时间做为基准的X轴,电压或电流随时间t变化的大小数值则在Y轴表示,这样在一段时间所形成的图形,就是波形。波形的类型很多,按其在坐标轴上的表现,实际上大体可以分为以下两组。

1.单向波形:这些波形只会出现在零轴之上或零轴之下,不跨越零轴点。如方波时钟脉冲信号 ,通常使用时电压只出现于0V之上,而不会使用负电压。

2.双向波形:这些波形会交替穿过零轴线,出现于Y轴的正负方向上。这样的波形也可以称为交替波形。如市电的正弦波,就是这样的交替波形,电压变化交替出现于Y轴正负方向 。

波形的三个特征:

周期:波形从开始到结束、重复自身所用的时间,单位一般是用秒。这个值也是正弦波的周期时间T或方波的脉冲宽度。

频率:波形在一秒内重复自身的次数,(  ƒ = 1/T  ),单位是赫兹(Hz)。

幅度:以电压伏特或电流安培为单位测量的信号波形的幅度或强度。

周期和频率互为倒数,所以波形的频率越高,周期时间越短,反过来看就是周期越长,频率越低。

ƒ以赫兹为单位,T以秒为单位。1Hz为1秒一个周期,1Hz是个很小的值,为了表示波形的周期数量级,通常加入下面的前缀符来表示。

Definition含义(前缀) Written as 写法(读法) Time Period 周期时间值
Thousand 千 (Kilo) kHz (千赫) 1ms(1毫秒)
Million 百万(Mega) MHz(兆赫) 1us(1微秒)
Billion 十亿(Giga) GHz(吉赫兹) 1ns(1纳秒)
Trillion 万亿(Tera) THz(太赫兹) 1ps(1皮秒)

正弦波 Sine Wave

正弦波的波形如上图,在不同的幅度和不同周期下波形会不一样。它的一个周期包括了正负半周,周期时间单位(T)可以是秒(s)、毫秒(ms)、微秒(us)和纳秒(ns)等。对于正弦波还可以用度数或弧度来表示周期。一个完整的周期等于  360 o ( T =  360 o ) 或以弧度表示为2π ( T = 2π ),那么可以说  2π 弧度 =  360 o 。

方波 Square Wave

方波是一种对称、每半个周期时间是相同的波形,与具有平滑上升和下降波形的正弦波不一样,方波在正负峰值处有圆角,具有非常陡峭的上下升沿,顶部和底部平坦。当用于数字电路时,正脉冲宽度时间称为周期的“占空比”,方波波形的正(ON)时间等于负(OFF)时间是一致的,所以占空比是50%。方波常用于电路中的时钟和定时控制信号 。根据下面的公式,我们可以尝试计算一下方波的频率,当一个方波的脉冲宽度为10ms,因为占空比为50%,那么周期就为10ms+10ms=20ms,频率=1/T=1s/20ms=50Hz。

矩形波 Rectangular Wave
和上面的方形所不一样的是它不是对称的,属于“非对称”波形,周期内的2个脉冲宽度不一样。方波应该也算是一种特殊的矩形波。矩形波有时也可以用正脉冲宽度和占空比来表示。如脉宽为10ms,占空比为25%,也就是说这个波形周期T为10ms(25%)+30ms(75%),那么频率就是1/T=1s/40ms=25Hz。矩形波可以用于各种控制电路上,最典型的可以是通过调节占空比来调节电压或频率等的PWM脉宽调制电路。

脉冲 Pulse
脉冲也称脉波或脉冲波(pulse wave),波形和方波和矩形波形式上本无太大的区别,只是脉冲可以单个或以脉冲串形式被使用。脉冲波的形状是周期的“Mark-to-Space”比率决定,脉冲的Mark部分非常短,且具有快速上升和下降的形状。每个脉冲都可以是单独的有效的波形和信号,使用它的目的就是产生一个非常短的信号来控制某些事件,也可以生成脉冲串列达到某种功能。如启动单稳态电路、触发器、计数器、定时器或功率器件等等。

无论方波、矩形波或脉冲,理想的波形在高和低两个值之间是瞬时变化的。而产生波形的电路因为有物理局限性,这是不可能实现的。信号从低值上升到高值然后再下降所花费的时间分别称为脉冲上升时间(rise time)和脉冲衰减时间(fall time)。

三角波 Triangular Wave
三角波顾名思义形似三角形,正向上升与负向衰减的时间相同,相当于提供了50%的占空比,电压幅度与波形的频率决定波形的平均电压。较慢的上升下降斜率相比于较快的,得到的平均电压更低。

锯齿波 Sawtooth Wave
通过改变改变上升或下降的斜率,可以产生非对称的三角波,形似于锯片的齿,称之为锯齿波。下图是二种类型的锯齿波,前面一种是缓慢上升快速下降的正斜坡锯齿波,后面一种是快速上升缓慢下降的负斜坡锯齿波。三角波、锯齿波可被用于扫描电路、D类放大电路等场合。

*文中图片资料来源于互联网

20210909

电磁辐射探测器

电磁波,又称电磁辐射,是指同相振荡,且互相垂直的电场与磁场,在空间中以波的形式传递能量和动量,其传播方向垂直于电场与磁场的振荡方向。温度大于绝对零度的物体,都可以发射电磁辐射。人眼可接收到的电磁波,波长大约在380至780nm之间,称为可见光。电子产品在运行时也会发出不同频率的电磁波,如果没有明显的声音、发热、灯光、显示屏或电机动作,我们是很难感知电子产品在运行,也无法看到电子产品发射出来的电磁波。当电磁波通过电感线圈时,会在电路中产生电动势产生电压。当然普通电器发射出来的电磁波是很微弱的。

根据这个原理可以设计一个小巧简单的电路用于探测电子产品发射出来的电磁辐射。Q1-Q3组成放大电路,驱动LED进行显示。当开关SW按下时,电路通电,Q1的B极在上电初时电压为0,Q1关闭,Q2的B级经过R1得到电压后导通,Q3则处于关闭,LED不亮,此时C1通过R4得到充电,一定时间后C1正极达到阀值电压,同时也通过R5,给C2充电,Q1的B极得到电流,经过Q2Q3放大后,LED被点亮。当Q3工作后,这时C1处的电压会降下来,Q1的B级电流减少,LED熄灭,周期循环,形成振荡电路。LED以一定的频率闪动。频率大小可以修改C1、C2、R5、R4的值来改变。而当电感感应到电磁波时产生自感,从而改变Q1的B级电流周期变化频率,让LED的闪烁周期改变,达到探测的目的。如果把LED换成蜂鸣器,则可以用“滴滴”声来提示探测结果。

接下来做个实验板。电路简单,就用洞洞板随便焊了一个。

 

电感的大小会影响探测的灵敏度。从废置的空气开关中拆出一个电磁铁线圈。

 

最后的实验板子。

在电脑和台灯下测试的视频。

在运动相机附近测试的视频。把电路的灵敏度提高则可以用于搜寻隐藏的电子设备或输电线之类的。

常用串行EEPROM的编程应用(三)

SPI总线

SPI总线(Serial Peripheral Interface串行外围设备接口总线)是三线式的串行总线,是由摩托罗拉公司所研发,使用三线进行数据传输,分别是SCK时钟引脚,SI数据输入引脚和SO数据输出引脚,另外还有CS片选引脚可以对同一总线上的芯片进行选通使用,SPI总线已被广泛使用在EEPROM、单片机和各种设备中。常用串行EEPROM中的25XX系列芯片就是使用兼容SPI总线结构,采用先进COMS技术,体积小,是一种理想的低功耗非易失性存储器,广泛使用在各种家电、通讯、交通或工业设备中,通常是用于保存设备或个人的相关设置数据。ATMEL公司生产的25系列的EEPROM存储容量从1K位到256K位。其它一些芯片也会用到SPI总线,如常用的CPU监控芯片X5043、X5045就带有512字节的SPI界面EEPROM,常用于单片机系统的看门狗电路,同时也可以提供小数据量的存储,给电路设计带来很多的方便。此文将用X5045为例讲述SPI的编程应用和X5045的一些其它功能。X5045由Xicor公司出品,电压范围有2.7V到5.5V和4.5V到5.5V二个版本,擦写次数可达一百万次,最高时钟频率可达3.3MHz。图一是X5045的PID封装实物图。

图一

图二

图二是X5045的引脚定义图。CS/WDI是片选和看门狗复位输入,当CS为高时SO引脚变为高阻态,这时可以允许其它器件共用SPI总线,同时芯片也处于休眠状态,当CS为低时芯片被选中,并从休眠状态中唤醒,可以进行读写操作。SO是串行数据输出,在读芯片时数据从此脚输出。WP是写保护引脚,当WP为低时芯片写保护,不能对芯片写操作,但其它功能不受影响。Vss是电源地。SI是串行数据输入,接收来自控制器的数据和地址。SCK是串行时钟输入,RESET是复位输出,Vcc是电源。在25芯片中还有一个HOLD引脚,此引脚的功能是保持输入脚,ATMEL公司生产25芯片的HOLD引脚是低电平有效。不用此功能时,HOLD引脚要保持高电平。在芯片正在串行传输时,将HOLD拉为低电平,可以暂停进一步的传送,具体方法是SCK变低后,将HOLD也拉低,不然在下一个SCK变低前不能暂停传送,要恢复串行传送,必须在SCK为低电平时将HOLD拉高。芯片处于暂停时,SI,SO,SCK脚为高阻状态,任何时刻只要HOLD被拉低时,SO都会处于高阻状态。

限于文章的篇幅,下面内容只着重介绍X5045芯片的SPI总线对EEPROM单元的编程应用。在X5040芯片中有6个指令,它和25系列芯片的指令是兼容的,也就是说在25系列芯片中使用时基本上是不需要改变的,具体见表一。

 

指 令 指令格式 说 明
WREN 0000 0110 写入允许
WRDI 0000 0100 写入禁止
RSDR 0000 0101 读状态寄存器
WRSR 0000 0001 写状态寄存器,用于操作区块写保护标识和看门狗标识
READ 0000 A8011 读数据
WRITE 0000 A8010 写数据

注:A8用于数据地址的第9位。

表一 指令集

写入允许和禁止
X5045芯片内部有一个写入使能寄存器,在需要向芯片写入数据时,需要先用WREN指令使片内写入使能寄存器先置位,写入数据后可以用WRDI指令使寄存器复位到禁止状态。当上电、WRSR指令执行、WRITE指令执行、WP拉低也会使写入使能寄存器复位到禁止状态。图三是WREN/WRDI指令的操作时序图。首先要把CS拉低,输入数据,向SCK输入时钟信号,数据在时钟的上升沿有效,时钟上升后至少数据至少保持30ns。数据是串行的,所以在每个时钟周期的上升沿发送一个位。在操作这两个指令时,SO是处于高阻状态的。

图三 写入使能时序

 

读写状态寄存器

X5045片内有一个状态寄存器,用于指于芯片的状态和设置,可以读写,芯片出厂时状态寄存器值为30H。具体每位的功能请看表2。WIP写入保护位,是只读位,指示芯片是否正忙于写入操作。当WIP为“1”时,说明写入正在进行,为“0”时表示没有进行写入。在编程时,写入数据操作后,可以查询WIP位,当WIP为0后才进行下一次的写入操作,这样可以避免写入出错。WEL写入使能状态位,是只读位。WEL位的状态由WREN和WRDI指令确定,WREN成功执行后WEL为“1”指示允许写入数据,WRDI指令成功执行后WEL为“0”指示禁止写入数据。在编程时可以先查询WEL位的状态,如为0时则要执行WREN后才可以进行写入操作。BL0、BL1设置当前保护的区块地址,是可读写位,这两个位的设置和区块地址的关系如表3,区块的内容被保护后,就只能读出而不能写入了。25系列芯片中不同型号的芯片容量不一样,BL设置所保护的范围也不一样。WD1、WD0看门狗设置位是X5045/43特有的设置位,是可以读写位,在25系列芯片中这两个位是保留位,在X5045中有看门狗功能,这两个位就用于设置MCU喂狗的时间,表4是看门狗位的设置时间。状态寄存器的第6和第7位是保留位。读状态寄存器时,发送完RSDR指令后,SO由高阻态转为输出数据,从数据位的高位开始。写状态寄存器,发送完WSDR指令后,再发一个字节的状态数据就可以了,其中只读位可以是“1”也可以是“0”,它们不会被WSDR指令所更改。图5、图6是读写状态寄存器的时序图。

 

7 6 5 4 3 2 1 0
0 0 WD1 WD0 BL1 BL0 WEL WIP
0 0 看门狗位1 看门狗位0 区块保护1 区块保护0 写入使能状态位 写入保护位

表2 状态寄存器定义

BL1 BL0 保护地址范围
0 0 无保护
0 1 180H-1FFH
1 0 100H-1FFH
1 1 000H-1FFH

表3 BL设置位

 

WD1 WD0 喂狗时间
0 0 1.4秒
0 1 600毫秒
1 0 200毫秒
1 1 功能禁用(出厂设置)

表4 看门狗设置位

图四 读状态寄存器时序

图五 写状态寄存器时序

读数据

图六是读数据时的时序,先拉低CS选中芯片,先要把需读取的地址的第9位加到指令字节的第4个字节中,发送完指令字节就发送地址字节的前8位,这时SO就会由高阻态转为输出数据。每当一个字节的数据传送完毕后,芯片内部的地址指针自动加1,指向下一个数据地址,这时如仍有时钟脉冲时,数据会被继续输出,CS脚拉高后输出才会终止。当最高位地址的数据被读出后,地址指针指向00H。

图六 读数据时序

写数据

在向芯片写入数据之前,写使能寄存器必须处于置位状态,一般可以不必查询写使能寄存器的状态,而直接用WREN置位写使能寄存器。在发送完WREN指令后,必须把CS拉高,在CS拉高之前写使能寄存器并没有置位,这时向芯片传送数据是不会被写入的。写使能寄存器置位后,再将CS拉低,把需读取的地址的第9位加到指令字节的第4个字节中,发送完指令字节就发送地址字节的前8位,然后发送需写入的数据。WRITE指令可以连续写入16个字节,但这16个字节的地址必须在同一页中。每一页的地址由[xxxxx0000]开始,到[xxxxx1111]结束。操作方法就是在发送完每一个地址和数据后,继续发后面的数据,芯片内部的地址指针会自动累加,当达到页中最后一个字节时,时钟仍在继续,则内部地址指针回到页中第一个地址重新开始累加,并覆盖以前写入的数据。要注意的是,在操作过程中CS不能拉高,只有在数据字节的最后一个位传送完成后才可以拉高CS,不然写入操作将不完全。在写入数据或写状态寄存器指令写送后,芯片会进入一次非易失性写操作,这会花费一定的时间,最大约为10ms,在这个时间内可以用读状态寄存器,并检查WIP位,当WIP为1时则说明写入还在进行中,只有当WIP位为0时才可以进行下一次的读写数据操作,否则将会使写入不完全。

图七 写数据时序

下面我们用AT89C2051和X5045为主做一个密码控制器实验。使用X5045的看门狗功能可以使电路在受到干扰或特殊情况死机后,可以自动复位重启电路,使电路保持正常工作。使用X5045的数据读写功能,可以保存密码,也可以修改密码。本文附带的实例程序演示X5045的状态寄存器的读写、存储位的读写,里面的功能函数可以直接移植到别的程序中。电路上电后,红色LED亮,当按下按键时绿色LED闪亮一下,当按下“3,1,5,8,1,8”,密码正确,红色LED灭,绿色LED亮,继电器打开,10秒后回到上电时的状态。当按下第一次按键后20秒内没有按下正确的键值,则会进行下一次键值输入。程序可以方便修改成可以方便更改密码的程序,也可以加入记录工作次数的程序等等,升级成更实用的程序。图9是笔者用万用板搭建成的实验电路。在上一篇提供的EEPROM读写器电路及程序也支持25系列芯片和X5043/45芯片,可以直接使用它来读写。

X5045演示程序下载–》c3

图八 电路图

图九 制作实验