单片机实例分享,自制数字示波器
示波器是最常用的电子测量仪器之一,它能把肉眼看不见的电信号变换成看得见的图像。为了携带方便,我曾经做过一台简易数字示波器(见图22.2),材料成本只有150元左右,这台数字示波器的设计思想是:简单实用,价格低廉,容易制作。
主要性能指标:
最高采样率:20MSa/s
模拟带宽:4MHz
输入阻抗:1MΩ
垂直灵敏度:0.01V/div~5V/div(按1-2-5方式递进,共9挡)
水平扫描速度:1.5µs/div~6ms/div(按1-2-5方式递进,共12挡)
垂直分辨率:8位
显示屏:2.4 英寸 TFT320×240(驱动控制芯片:ILI9325)
测量时能同时显示信号的频率、电压峰峰值,具有信号保持(HOLD)功能。
图22.2 自制的简易数字示波器
电路工作原理
图22.3 数字示波器结构框图
我们知道,模拟示波器是用阴极射线示波管(CRT)显示被测信号波形的,而数字示波器是采用LCM(LCD显示模块,含LCD及显示驱动控制芯片)显示被测信号波形。因为LCM的每一个显示像素都对应一个地址,地址要用数据表示,每一个像素的颜色也是用数据表示的。因此电路向LCM发送的是数据编码信号,这就决定了它和模拟示波器的电路结构不一样。
本文介绍的数字示波器的结构框图如图22.3所示。它由垂直输入电路、A/D转换电路、数字信号处理与控制电路、液晶屏显示电路、电源电路等部分组成。
图22.4 数字示波器电路原理图
输入的电压信号经垂直输入电路放大,以提高示波器的灵敏度和动态范围。对输出的信号取样后由 A/D 转换器实现数字化,模拟信号变成了数字形式存入存储器,微处理器对存储器中的数据根据需要进行处理,最终在显示屏上显示测量波形和相关的参数,这就是数字存储示波器的工作过程。
数字示波器的电路原理图如图22.4所示,下面分别对各单元电路进行介绍。
表22.1 垂直灵敏度和K1~K5的对应关系
1. 垂直输入电路垂直输入电路由双运算放大器LM6172和衰减电路等部分组成。对其有两个基本的要求:一是对放大倍数的控制,二是要有满足设计要求的足够的带宽。
示波器输入信号电压的动态范围很大,为了将输入信号电压调节到A/D转换电路的最佳采样范围,以便得到最合理的显示波形,在信号电压较小时要进行放大,在信号过大时要进行衰减。
示波器输入信号的频率范围也很宽,为了使垂直输入电路有较平坦的频率特性曲线,即对不同频率的信号放大电路的增益基本保持一致。为此选用了高速双运放LM6172,其带宽为100MHz,并在衰减电路中加了频率补偿电容。
电阻R1、R2、R3和继电器K1、K2、K3等组成衰减电路,衰减系数分3挡:1:1、1:10、1:100,由K1、K2、K3控制。第一级运算放大器接成电压跟随器的模式,主要起到缓冲的作用,提高输入阻抗,降低输出阻抗。第二级运算放大器接成电压串联负反馈电路的模式,其中电阻R6、R7、R8和继电器K4、K5等组成3挡增益调节电路,放大器的增益由K4、K5控制。当触点K4闭合时增益为(R6+R9)/R6;当触点K4开启、K5闭合时增益为(R6+R7+R9)/(R6+R7);当触点K4、K5均开启时增益为(R6+R7+R8+R9)/(R6+R7+R8)。按电路图中各电阻的取值,对应本级3挡的增益分别为25、12.5、5。
继电器K1~K5工作状态受单片机控制,所以垂直输入电路是一个程控放大器。垂直灵敏度和K1~K5工作状态的对应关系见表22.1(1表示闭合,0表示断开)。
2. A/D 转换电路我们知道,A/D转换电路的作用就是将模拟信号数字化。一般把实现连续信号到离散信号的过程叫采样。连续信号经过采样和量化后才能被单片机处理。通过测量等时间间隔波形的电压幅值,并把该电压值转化为用二进制代码表示的数字信息,这就是数字示波器的采样,采样的工作过程见图22.5。采样的时间间隔越小,重建出来的波形就越接近原始信号。采样率就是每秒采样的次数,例如,示波器的采样率是10MSa/s,即每秒采样10M次,则表示每 0.1μs进行一次采样。采样率是数字示波器最重要的一项指标。
根据Nyquist采样定理,当对一个最高频率为f的模拟信号进行采样时,采样率必须大于f的两倍以上才能确保从采样值完全重构原来的信号。对于正弦波,每个周期至少需要两次以上的采样才能保证根据采样数据恢复原始波形。在数字示波器中,为了减小显示波形的失真,采样率至少要取被测信号频率的5~8倍。本文介绍的数字示波器采样率取被测信号频率的5倍,因为最高采样率为20MSa/s,所以当被测信号的带宽在4MHz以内时有比较好的测量结果。
采样率的提高受制于A/D转换芯片的工作速度,本文电路中使用的单片机ATmega16内部虽然也有A/D转换器,但其工作频率太低,不能满足数字示波器的采样要求。因此我们用了一片高速A/D转换芯片ADS830E,其最高采样率可达60MSa/s。ADS830E的转换精度为8位二进制数,即垂直分辨率为256,因为选用的LCM的分辨率为320×240,对应垂直分辨率为240,所以ADS830E完全能满足分辨率的使用要求。
ADS830E的IN(17脚)是供采样的模拟信号的输入端,CLK(10脚)是采样时钟信号输入端。每输入一个时钟脉冲就进行一次A/D转换,转换后的8位二进制数据由D0~D7输出。ADS830E的输入电压幅度可以通过11脚进行控制,当11脚接高电平时,ADS830E的输入电压范围是1.5~3.5V;当11脚接低电平时,输入电压范围是2~3V。这里选用1.5~3.5V的输入电压范围,中点电压为2.5V,中点电压由电位器RP进行调节。当IN输入电压为1.5V时,D0~D7输出的转换数据是0x00,当IN输入电压为3.5V时,D0~D7输出的转换数据是0xff,即255。
图22.5 采样的工作过程
3. 数字信号处理与控制电路
数字信号处理与控制电路由单片机ATmega16、FIFO(先进先出)存储器IDT7205、4个2输入与非门74HC00等组成。
单片机ATmega16在电路中的主要作用是:(1)对A/D转换后的数字信号进行处理,转换成LCM能接受的数据格式,输出给它显示;(2)产生ADS830E、IDT7205工作所需要的时钟脉冲信号;(3)通过按键对示波器参数进行控制调节,输出继电器的控制信号。
图22.6 倍频电路及各点的脉冲
FIFO存储器IDT7205是一个双端口的存储缓冲芯片,具有控制端、标志端、扩展端和8192×9的内部RAM阵列,12ns的高速存取时间。内部读、写指针在先进先出的基础上可进行数据的自动写入和读出。当有数据输入到数据输入端口D0~D8时,可由控制端Wclk来控制数据的写入。为了防止数据的写溢出,可用标志端满FF、半满HF来标明数据的写入情况,写入时由内部写指针安排其写入的位置。由于内部RAM阵列的特殊设计,先存入的数据将被先读出。如果需要数据外读,则可由控制端Rclk来控制数据的读出。RST为复位端。Wclk、Rclk、RST均由单片机ATmega16提供控制脉冲。数据输出端口Q0~Q8是三态的,在无读信号时呈高阻态。输入数据位D0~D8和输出数据位Q0~Q8均为9位,这里输入和输出均只使用了8位,即只使用了D0~D7和Q0~Q7。
读到这里,有的读者可能会问:把ADS830E输出端口D0~D7输出的数据直接输入ATmega16的PA端口不就行了吗,为什么还要在中间加上一个IDT7205?这是因为ADS830E工作速度比ATmega16快得多,即ATmega16读取数据的速度比ADS830E输出数据的速度慢,如果直接相连ATmega16就拖了ADS830E的后腿。加上IDT7205后就起到了缓冲的作用,ADS830E转换的结果先存在IDT7205内,等到ATmega16需要时,再从IDT7205中读出来。
ADS830E的采样时钟与IDT7205的写信号时钟是同一个时钟源,以确保两者同步。时钟脉冲信号由ATmega16使用内部定时器产生,由于ATmega16外接晶体的频率为20MHz,所以产生的时钟信号最高频率只能达到10MHz,为了使采样率达到20MSa/s,使用了74HC00等构成的倍频电路。若ATmega16 PD7端输出的脉冲信号频率为f,则74HC00的F4输出的脉冲信号频率为2f,倍频电路的工作过程和各点脉冲信号时序关系如图22.6所示。
K1~K5是干簧继电器,干簧继电器特点是吸合和释放时噪声很小,功耗低。因其吸合电流较小,所以可直接用ATmega16的输出端口驱动。
SB1~SB5是示波器调节按钮。SB1、SB2是水平扫描速度调节按钮,按SB1时μs/div的值增加(水平扫描速度减小),按SB2时μs/div的值减小(水平扫描速度增加);SB3、SB4是垂直灵敏度调节按钮,按SB3时V/div的值增加(垂直灵敏度减小),按SB4时V/div的值减小(垂直灵敏度增加);SB5是波形保持(HOLD)按钮,按一下测量波形被冻结保持,同时在显示屏上显示字符“HOLD”,再按一下又恢复到正常测试状态。所有调节参数均显示在液晶屏上,调节好的参数将自动保存到ATmega16的EEPROM中,下次开机时有关参数将预设在上次关机前的设定值上。
4. 显示电路
LCM采用2.4英寸TFT彩色液晶屏,分辨率为320像素×240像素,驱动控制芯片为ILI9325,该芯片传递数据8/16接口位兼容,使用8位接口时能够节省单片机的输出端口,在8位接口工作状态时16位数据分两次传递,速度稍慢。数据端口D0~D15中的高8位D8~D15为8位接口使用的端口。8/16接口位的选择由端口IM0控制,IM0接高电平时为8位接口工作状态,IM0接低电平时为16位接口工作状态。
电路中ILI9325的工作电压是3V,ATmega16的工作电压是5V,两者高电平不一致,通信端口相连时要进行电平转换,因为这里只需要ATmega16向ILI9325单向传递数据,所以只需要将5V向3V电平转换,不需要将3V电平向5V电平转换,就不必使用专用的电平转换芯片,只要用电阻分压电路将5V高电平转换成3V高电平就行了。电路中R14~R35组成电阻分压电路,连接端口有8个数据端口和3个控制端口。
5. 电源电路
这个数字示波器使用了交流电源,提供+5V、−5V、+3V三种直流电压。
程序设计
设计好电路只是为数字示波器奠定基础,更重要的是单片机程序的设计。实际上在设计硬件时既要考虑到功能,也要考虑到程序设计的需要。比如对单片机的选型,主要考虑功能、工作速度、端口的数量、程序存储器Flash的容量、RAM的容量、有没有EEPROM等。综合考虑后选用AVR单片机ATmega16,它的程序存储器Flash为16KB,RAM为1KB,使用时将16MHz的时钟频率超频到20MHz,经过对其资源合理分配,完全可以满足设计要求。
程序的开发环境为ICC-AVR V6.31A,使用 C语言编写。程序采用了分时控制、顺序调度的工作方式,没有使用任何中断程序,程序流程图如图22.7所示。
图22.7 程序流程图
下面对主要部分进行分别介绍。
1. 垂直灵敏度控制
按钮SB3、SB4用来调节垂直灵敏度,按动后通过键盘扫描程序可以增加或减小程序中变量Key_ver的值,Key_ver取值范围为1~9,分别对应9挡垂直灵敏度,通过Key_ver的取值控制继电器K1~K5的工作状态,从而得到相应的灵敏度。
以K1为例,K1接ATmega16的PB0端口,有关宏定义为:
#define K1_ON PORTB &=~(1<
#define K1_OFF PORTB |= (1<
因此,K1_ON表示PB0输出低电平,K1闭合,触点接通;K1_OFF表示PB0输出高电平,K1释放,触点断开。
2. 水平扫描速度控制
水平扫描速度控制是通过改变A/D转换电路的采样率来实现的,按动SB1、SB2可以改变程序中变量Key_hor的值,Key_hor取值范围为1~12,分别对应12挡水平扫描速度。
A/D转换电路所需的采样时钟脉冲用ATmega16的8位定时器/计数器2-T/C2产生,选择CTC工作模式。其工作参数主要由控制寄存器TCCR2、计数寄存器TCNT2、输出比较寄存器OCR2决定。TCCR2中的位CS22、CS21、CS20的取值确定T/C2的时钟源的分频系数,OCR2中的数据用于同TCNT2中的计数值进行连续的匹配比较,一旦TCNT2计数值与OCR2的数据相等,单片机端口OC2的输出电平即取反,这样即可输出脉冲信号。脉冲信号的频率f由时钟源的分频系数和OCR2的预置值决定,计算公式为f=时钟源频率/(2×(1+OCR2)),OC2输出的脉冲信号经倍频后作为采样时钟信号,相关参数之间的关系见表22.2。
只要对寄存器TCCR2、OCR2的值进行设置,就可以获得我们所需频率的采样时钟信号。
3. 数据的存储和读取
ADS830E的采样数据存入IDT7205后达到一定数量就停止采样,再将IDT7205存储的数据读入ATmega16,程序中用一个数组RAM[650]来存储读取的数据,存储容量为650,即一次读取650个采样数据。
仔细看了电路图的读者可能会发现,IDT7205的满FF端口并没有使用,为什么不用呢?这是因为ATmega16的RAM容量只有1KB,只能分配约650个存储单元用来存储从IDT7205读取的数据,IDT7205存多了数据也没有用,ATmega16不能全部存储,多余的数据就丢弃了,还不如少读点数据节省时间,提高显示波形的刷新频率。这在采样时钟频率较低时效果尤为明显,因为采样时钟频率越低,采集一个数据所花的时间越长。以采样时钟频率5kHz为例,如果要将IDT7205存满8192个数据,所需要的时间为8192/5000≈1.6s, 显示波形1.6s以上才能刷新一次,这显然是不行的。如果存满700个就结束,则所需要的时间为700/5000=0.14s,刷新速度提高了很多。
从上面的分析可以看出,FIFO存储器其实使用IDT7202就够了,IDT7202有1024个存储单元。不过笔者只买到了DIP封装的IDT7205,虽然有点大材小用,但为以后数字示波器升级提供了空间。FIFO存储器存储数据的容量称为数字示波器的存储深度,也称记录长度,存储深度也是数字示波器的一个重要技术指标,适当存储深度便于对显示波形进行分析和处理。
不使用FF端口是如何控制IDT7205存储数量的呢?我在IDT7205存储数据时根据不同的采样时钟频率设置了不同的延时时间,在此时间内能存入多于700个数据即可。延时结束后即将IDT7205的存储数据读入ATmega16。
表22.2 相关参数之间的关系
由于ADS830E每次重新进入工作状态要有一个稳定的过程,开始采样的几个数据精度不高,因此在读取IDT7205数据时先空读50个数据,将这些数据丢弃,然后再将后面的数据读入ATmega16。
图22.8 显示区域
4. 数据计算处理
数据计算处理工作主要包括同步触发信号检测、信号电压峰峰值测量、信号频率测量。这部分程序设计的思路是:
先在650个数据的前350个数据中以显示屏的垂直中点对应数据120为基准,找到同步触发信号。之所以在前350个数据中找同步触发信号,是为保留后面至少有300个数据供显示波形用。找到同步触发信号后,则把对应该点数据为起点的连续300个数据作为显示数据。
然后找到650个数据中的最大值和最小值,求最大值和最小值的算术平均数,即可得到中点电压值,检测信号相邻两次向上穿过中点的时间差即可计算出信号的周期。
5. LCM的控制与显示
TFT-LCD显示屏的分辨率为320像素×240像素。显示屏的每一个像素都对应着驱动控制芯片ILI9325内部存储器唯一的一个地址(x,y),x为横坐标,寻址范围为0~319;y为纵坐标,寻址范围为0~239。在像素对应地址写入16位颜色数据就可以显示相应的颜色,如果某一点要清除,只要对该像素对应的地址写入背景色就可以了。由于这里ILI9325采用8位接口工作模式,因此传递16位数要分两次进行。
因为数字示波器既要显示被测信号的波形,也要显示有关的测量数据,如电压峰峰值、频率、水平扫描速度、垂直灵敏度等,所以必须对显示区域进行合理的划分,并对颜色进行规划设置,分配好的显示区域如图22.8所示。图中用来显示波形的区域为中间的300×200。在这个区域画了刻度线,将水平方向分成10格,垂直方向分成8格。其余区域用来显示各种数据。
对ILI9325最基本的操作有两种:发送命令和发送数据。无论是显示屏的初始化,还是设置显示地址和显示颜色,都要用到这两种基本操作。
显示被测信号波形的过程是:先清除上一帧显示波形,然后画刻度线(刻度线每次都要重画,因为有些和显示波形交叉的点也被清除了),最后画新的一帧信号波形,同时备份数据作下一次清除用。显示信号波形时,存储器地址(x,y)中的x代表水平扫描信号所处的位置,y代表信号电压的大小。每次刷新信号波形时,信号电压峰峰值和信号频率显示数据也同时刷新一次。水平扫描速度和垂直灵敏度的数据只有在重新调整后才刷新。
表22.3 主要元器件清单
元器件选择
主要元器件的清单见表22.3。
经过试验,我发现在工作电压为5V时,单片机ATmega16和ATmega16L在时钟频率为20MHz下均能正常工作。因此,如果你手头只有ATmega16L也可以使用。
IDT7205如果使用PLCC封装的芯片,请注意引脚编号不同。
干簧继电器也可以选用其他型号的,只要工作电压是5V,闭合电流小于20mA即可。
机箱我选用的是成品塑料机箱,你也可以用其他样式的,或者自己用有机玻璃DIY。
显示屏和ADS830E的两块转接板是必须要用的,不然无法在万能板上安装,可以设法和元器件一起采购。
图22.9 缓冲区对比图
图22.10 开关单独安装在小的万能板上
显示屏的品牌很多,你很难买到和我一样的品牌。但有一点要注意,驱动控制芯片一定要是ILI9325的,如果不是,你就要修改程序了,不同的芯片即使是同一系列,驱动程序也往往不兼容。即使驱动芯片一样,不同品牌的显示屏引脚编号也可能不一致,接线时要仔细对照。另外有一点提醒一下:我买的显示屏的4个背光二极管是并联的,我是把它们公共的阳极串接一个电阻(不知道模块内部有没有限流电阻,还是外接一个电阻保险)接到+5V电源,如果你买的显示屏的背光二极管是串联的,要求的工作电压就高了,接到+5V是不能发光的,可串连一个100Ω(电阻的取值使发光二极管工作电流不超过20mA为宜)接到LM7805的输入端,此处的电压约有10V,可以满足驱动要求。
安装
安装前先将目标文件dso.hex写入单片机ATmega16,特别提醒一下:用编程器将目标文件调入时要选择“缓冲区预先填充00”选项,否则在显示屏显示字符时会出现色块。如果你用下载线写入文件,则往往不提供该选项给你选,会直接把缓冲区都填入了FF,见图22.9上半部分,这时你可以手工编辑一下,把方框中的FF全部改为00,结果见图22.9下半部分。
5个按钮开关单独安装在小的万能板上,见图22.10。其余的元件除显示屏直接固定在机箱面板上外,都安装在大的万能板上。接线时注意同一单元要一点接地,数字地和模拟地要分开。三端稳压器LM7805要加一个小的散热片。
机箱的面板根据显示屏的大小、按钮开关和BNC插座的安装位置开孔,面板上的标记可打印在一张纸上,再用1~2mm的透明有机玻璃做一块尺寸一样的面板(对应显示屏的位置不开窗口,正好做防护屏),再把打印好的纸夹在两层中间,用螺丝固定好后,面板就做好了。
按钮开关电路板是直接用4个螺丝固定在面板上的,显示屏可用热熔玻璃胶固定,把显示屏在窗口摆正位置后,在4个角用热熔玻璃胶固定一下就可以了。
安装好的示波器内部结构见图22.11。
图22.11 安装完成的内部结构
调试
如果安装时没有接线错误,元器件没有质量问题,调试还是比较容易的。
调试分4步进行。
(1)各单元先不接电源,测量电源部分输出电压是否正常,正常后再接通各部分的电源。
图22.12 水平扫描线与中线未重合
图22.13 补偿电容与方波波形的关系
图22.14 调试好的示波器的使用效果
(2)检查显示屏工作是否正常,接通电源,显示屏初始化后先是全屏显示白色闪亮一下,然后显示刻度线和相关数据。如果开机后显示屏没有反应,先检查单片机有没有正常工作,如按动K3、K4继电器的工作状态应该有所改变。如正常再查显示屏的连线和供电是否正常,直至显示正常才能进入下一步。
(3)将示波器输入端信号线短接,调节电位器RP,使其中点电压为2.44V(注意不是1.5~3.5V的中点电压2.5V,因为显示屏垂直方向中点的值是120,120是2.44V电压经A/D转换后对应的值,对应2.5V电压的A/D转换值是255/2),这时候可以看到一条水平扫描线出现在水平中线附近,见图22.12,仔细调节RP,使得其和水平中线重合。
(4)对衰减器的频率补偿电容进行调整,将垂直灵敏度调到0.5V/div,输入 200kHz、幅度1V的方波,改变电容C2的容量,使示波器显示的方波波形最好;再将垂直灵敏度调到1V/div,输入200kHz、幅度2V的方波,改变电容C3的容量,使示波器显示的方波波形最好。频率补偿电容与方波波形的关系见图22.13。
装配调试好的数字示波器的使用效果见图22.14。
单片机实例分享,无线供电的LED旋转显示万年历
大家一定见过各种各样的万年历吧?下面我就带领大家手工打造一台采用无线供电方式、以LED旋转显示屏作为显示器的万年历。图7.1所示就是这款LED旋转显示万年历的实际效果。所谓LED旋转显示屏,是指在电路中只有一列发光二极管,通过电动机带动发光二极管转动,当这列发光二极管转到不同位置时,用单片机控制相应的发光二极管点亮和熄灭,由于人眼的视觉暂留现象,形成了视觉上的图形或文字。
图7.1 基于LED旋转显示屏的万年历
由于显示屏是靠转动的发光二极管的残留影像显示信息的,其特点是显示信息丰富,而整个电路所需的发光二极管的数量却很少(本电路共使用16只发光二极管),所以电路原理图非常简单,几乎和流水灯电路无异,很适合手工制作。但由于整个电路板处于高速旋转状态,所以我们首先要解决两问题:一是如何给运动的系统供电;二是如何保证显示信息稳定显示。
如何给运动的系统供电
给运动的系统供电,常用的供电方式有3种:电池供电、电刷供电、无线感应供电。电池供电方式简单方便、易于携带,但它会使系统重量增加,影响转速,而且它成本高、寿命短,因此只适用于摇摇棒等短时间使用的装置,长时间运行的装置就不合适了。比如能显示时间的LED旋转显示屏,每次电池用完,重换电池就够烦心了,换了电池还得重新调整日期、时间,那简直可以用“痛苦”二字来形容。第二种方式——电刷供电,这种供电方式简单有效,能传送较大电流强度的电能,但在业余制作时,很难找到合适的高质量的电刷,高速旋转时会产生较大的噪声。第三种方式——无线感应供电,这种方式为无接触方式供电,寿命长、无新增噪声,虽然传送电流强度有限,效率稍低,但完全可以满足单片机系统的需要,所以本电路采用无线供电方式。无线供电方式技术要求稍高一些,但能增加制作的挑战性和趣味性,因此,本文首先对无线供电电路的设计与电能传输效率进行一些介绍。
无线供电技术目前还在研究试验阶段,但其应用场合非常广泛,前景非常好,比如,已经出现了一些小功率无线充电器应用成品,只要手机或者电子产品具备无线接收装置,靠近无线充电器就可以充电了,除此之外,还有无线射频IC卡、通行证、缴费卡等。
一个LED旋转显示屏需要消耗多大的电能呢?我们来做一个简单的计算:假设我们采用16个高亮度LED,工作时每个LED耗电10mA,单片机的自身耗电较少,暂且忽略不计,则电路所耗电流的最大值为160mA,电压取5V,所以最大总功耗约0.8W。下面我们就按这个要求设计电路。
无线感应供电的基本原理与变压器的原理相同。它利用电磁感应现象,通过交变磁场把电源输出的能量传送到负载,即在相距很近的两个线圈中,一个线圈作为电能的发送端,另一个线圈作为电能的接收端。通过振荡电路给发送端线圈提供交变电流,在相距很近的接收端线圈中就可以感应出交变电动势,再对这个交变电动势整流、滤波即可对负载供电。图7.2所示为通过无线感应供电方式驱动发光二极管发光的演示。
图7.2 以无线感应供电方式驱动发光二极管发光
图7.3所示是一个简易的近距离无线供电系统原理图。其中原线圈L1及其控制电路构成了发射端,副线圈L2及整流滤波电路构成了接收端,R5为负载电阻。
电路中使用74HC4060产生多谐振荡波,此多谐振荡波通过大功率场效应管IRF530给发送端线圈L1提供交变电流。本电路之所以使用74HC4060组成多谐振荡电路,主要是为了测试方便,74HC4060构成的振荡电路不但频率稳定,而且有10种输出频率可供选择,可以逐一测试每种频率所对应的输出功率和电能传输效率。当选用11.0592MHz的晶体振荡器时,QD端输出为经过16分频的频率——691.2kHz。
图7.3 简易无线供电系统原理图
次级接收电路中的谐振电容C4很重要,加上谐振电容后传输距离大大增加,输出功率和电能传输效率也明显提高。
按图3所示电路及元件参数搭好电路后接通电源,对电路进行测试。当不加任何负载时(L2远离L1),VT1的漏极电流I1为45mA;当L2与L1紧耦合时,I1增加到110mA,此时负载电阻R5上的电压U2为6.5V的电压,折合功率为0.83W,U1实测电压为13V,电能传输效率为:
电路的输出功率基本能满足LED旋转显示屏的要求,对于小功率设备,电能传输效率应该说是相当不错了。
在无线供电电路的制作中,振荡电路可以采用任何一种形式的多谐振荡器,如三极管振荡电路、集成运放电路或者门电路构成的振荡电路,也可以采用74HC4060这种带振荡器的二进制异步计数器来实现,振荡频率在500kHz左右为宜。另外,比较重要的就是线圈的制作了,发射线圈用Φ0.5左右的电磁线(漆包线)在外径为1cm的骨架上绕48匝,然后固定好;接收线圈用Φ0.2左右的电磁线绕成内径为4mm左右的12匝空心线圈即可,关键是安装时不要使这两个线圈相碰。
最后,根据我的制作体会,给对此有兴趣的爱好者几点建议:
(1)L1匝数较多是为了有足够的感抗(感抗和电感量及交流频率有关),避免流过的电流过大而发热。其实L1也可以只绕10匝左右,但一定要配上大小合适的谐振电容,使其工作在谐振状态,这样可以获得更好的传输距离、输出功率和电能传输效率,包括L2的谐振电容也是如此。谐振电容的选择可以在示波器监视下进行,谐振电容可以用涤纶电容、聚乙烯电容等,建议不要用瓷介电容。
(2)传输能量时,波形不是很重要,但是失真太大就会使功率管工作在线性区,而非工作在开关状态,这样将使电能的传输效率大幅度下降。如果在功率管的前面增加一级射极跟随器,可以提高波形的质量,从而提高电能的传输效率。
(3)无线供电电路的工作频率不可太高,频率越高对VMOS管的要求也就越高,目前高频特性满足这种要求的VMOS管还不容易找到;频率越低,就要求L1的电感量越大。所以我们通常选择电路的工作频率在200kHz~1MHz为宜。
(4)L2感应的电压经整流、滤波后一定要有稳压电路,以保证单片机工作稳定。
如何保证显示信息稳定显示
要保证LED旋转显示屏显示正常和稳定,就要求单片机控制显示屏总是从电路板转到某一位置时开始播放所要显示的内容。通常的做法就是通过传感器来检测电路板的位置,并通过中断的方式通知单片机进行显示。传感器可以使用霍尔元件或者光电传感器,其中光电传感器要求工艺简单,安装方便。
综上所述,本万年历的电路原理图如图7.4所示。
图7.4 LED旋转显示屏电路原理图
电路说明
本电路采用无线感应供电方式给旋转部分供电,所以电路包括无线供电部分电路和旋转部分电路两部分。
无线供电部分采用图7.3所示电路。
旋转部分是由电动机带动,进行高速旋转,其电路非常简单,首先由接收端线圈产生感应电动势,经二极管VD19整流、电容C4滤波、稳压二极管VD20稳压后得到5V电源给整个电路供电,单片机的16个I/O口线分别控制16个发光二极管。为了方便修改程序,我在电路中安装了ISP下载接口。电动机可以选用5V长轴直流电机。
作为万年历,应该具备显示公历、农历、星期、时间以及环境温度的功能,并且在掉电的情况下,所有信息不丢失,时钟正常走时,这里我们使用时钟芯片DS1302和数字温度传感器DS18B20。
同时在电路中还增加了一体化红外遥控接收头,它用于通过遥控调整时间和其他参数。
需要说明的是,在电路中并没有具体标明单片机的型号,你可以选用最熟悉的单片机,只要I/O口够用就可以了,当然,在I/O口够用的情况下,尽量选用体积小、重量轻的单片机为佳。
另外,在无线供电电路板和旋转电路板之间安装一对红外光电传感器,将电路板的位置状态送到单片机的外部中断请求输入端,用以对显示内容进行定位。
电路组装与调试
本系统电路不太复杂,两块电路都可以在万用电路板上插装、焊接(有条件的话也可制作PCB)而成。制作时首先按照原理图在万用电路板上规划出合理的元件布局,然后按布局图将元件依次插装并焊接,最后把需要连接的引脚用电磁线和镀锡裸铜线连接起来。注意不要短路,线路连接关系不要出错。图7.5所示是装配好的无线供电电路及底座实物图。
图7.5 装配好的无线供电电路及底座
安装时需要将直流电机和供电电路板固定在一个盒子里,使电机的转轴伸出盒外,将发射线圈套在电机转轴上,并以电机转轴为中心。图7.6所示是装配好的旋转主板正、反面的实物图,发光二极管和限流电阻均使用贴片元器件,这样会使得像素更紧凑,显示更清晰。
图7.6 装配好的旋转主板正反面
单片机使用STC12C5616AD,28脚窄体DIP封装。LED与单片机引脚的连接均用电磁线相连,这样走线整齐、美观,还能减小整个电路板的体积,其他引脚的连接使用镀锡裸铜线连接。接收线圈固定在旋转主板的底面,然后随旋转主板一起插到电机转轴上,使接收线圈套在发射线圈的内部,构成变压器的形式。全部安装好以后,需要插到电机轴上,测试一下电路板是否平衡,如果不平衡,可以通过在适当位置加焊锡进行配重。
电路装配好以后,需要对硬件电路进行调试,方法是通过ISP下载线接口对主板供电,依次测试每个发光二极管是否正常发光,或者通过下载器向单片机烧入流水灯等简单程序,观察电路整体运行情况。
Tips
DS1302是美国DALLAS公司推出的一款高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、星期、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5~5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个31×8的用于临时性存放数据的RAM寄存器,具有主电源/后备电源双电源引脚,同时提供了对后备电源进行涓细电流充电的能力。
DALLAS半导体公司的数字化温度传感器DS18B20采用TO-92封装,体积小巧、接线方便,是世界上第一片支持“一线总线”接口的温度传感器。测量温度范围为-55~+125℃。现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性,适合于恶劣环境的现场温度测量,支持3~5.5V的电压范围,使系统设计更灵活、方便。DS18B20可以程序设定9~12位的分辨率,精度为±0.5℃。DS18B20的性能是新一代产品中最好的,性能价格比也非常出色,让我们可以构建适合自己的经济的测温系统。
程序设计
本万年历的单片机程序流程图如图7.7所示。
图7.7 程序流程图
由程序流程图可知,主程序主要是对外部中断的控制寄存器进行初始化设置。系统共用到两个外部中断源,外部中断0的中断请求信号来自红外光电传感器的红外接收二极管。每当电路板的红外接收二极管转到与之对应的红外发射二极管的位置时,就会向CPU发出中断请求信号,CPU响应中断,调用显示子函数,这样显示子函数总是在电路板转到同一个位置时被调用,保证显示的内容正常和稳定。外部中断1的中断请求信号来自一体化红外遥控接收头,当收到红外遥控信号时,就会转向中断服务程序,对红外遥控信号进行解码,并进行相应的按键操作。因为当接收到红外遥控信号时,对遥控编码中的“0”和“1”的识别完全是靠时间长短区分的,为保证红外信号解码及时和正确,外部中断1必须设置为高优先级。
显示程序在外部中断0的中断服务程序中。编写程序时需要注意的是,在对字符或汉字取模时要采用逐列式,正序和倒序都是可以的,在程序中都可以调整。显示程序其实就是依次取出字模表中的数据,按时间前后顺序均输出到同一列发光二极管上。比如要显示5个汉字,每个汉字16列,共扫描80列,可用如下程序。
unsigned int i;
for (i=0;i<80;i++)
{
P1=tab[2*i];
P2=tab[2*i+1];
delay(70);//延时时间的长短决定了字的宽度
}
P1=0xff;//扫描完所有列后要熄灭所有LED
P2=0xff;
如果想让显示的字符出现如图1所示的效果,上半部是正立的,下半部也是正立的,我们可以编写一个字节倒序的子函数,对取出的字模数据首先作倒序处理,然后,显示程序的i值是从80减小到的,参考程序如下。
unsigned int i;
for (i=80;i)0;i--)
{
P2=chg(tab[2*i]);//chg是对字模数据作倒序处理的子函数
P1=chg(tab[2*i+1]);
delay(70);//延时时间的长短决定了字的宽度
}
P1=0xff;//扫描完所有列后要熄灭所有LED
P2=0xff;
数字温度传感器DS18B20和时钟芯片DS1302的读写程序在这里不再详细列出,需要的读者可以到qq群657864614进行下载。但需要注意的是,温度传感器DS18B20的读写对时序要求非常严格,并且读写过程中一旦被打断,就会导致读写错误,所以DS18B20的读写程序也放在外部中断0的中断服务程序中,我们可以放在显示上半部分文字和显示下半部文字的程序之间,作为两段文字之间的空格。
所有硬件和软件完成之后,下面就可以坐下来慢慢欣赏自己的作品了。
■我的淘宝店铺:首页-数码达人小李-淘宝网,主打电脑周边产品,性价比高,发货快,服务好,品质过硬,总有一款适合你,感谢支持!
相关问答
电池供电的 单片机 系统一般都用什么电池?非常适合单片机系统的供电需求。锂电池因其轻量化...电池供电的单片机系统一般会选择使用锂电池或者镍氢电池。这两种电池都具有高能量密度、长寿命和较小的...
单片机 可以5v供电吗?答单片机可以5v供电的因为5V来自于TTL电平,5为True,0即为False,之后用了压降更低的PN节,3v和5v一般出现在信号电路或者单片机等vcc供电大多数芯片都是5V的TTL...
usb 充电电路 工作原理是什么?-设计本有问必答usb充电电路工作原理:通过单片机检测电池电压和充电电流。通过单片机PWM输出控制。温度保护:通过单片面检测热敏电阻值,超过设定温度单片机输出保护...
充电 宝 单片机 有什么作用?单片机的用途多了去了,小到衣食住行,大到航空航母,都有单片机的身影。单片机就是缩小版的计算机,麻雀虽小,五脏俱全,单片机内部集成了CPU,随机内存和只读...比...
充电 模块怎么接线 单片机 供电?要将充电模块连接到单片机以供电,您需要了解以下几个方面:1.电源:首先需要确保单片机和充电模块的电源类型和电压相同。一般情况下,单片机和充电模块都需要...
单片机 电压?1、单片机1:高电平:2V--5V;2、单片机0:低电平:0V--0.8V;3、中间的一段电压是不可以出现的;但可以跳过。4、如果单片机供电电压是DC5v,那么一般高电平...1...
这是 单片机电路 的一部分,和这个电源联接的电容有什么作用啊?...图中RST点连接到单片机的复位端,系统加电时,由于电容充电的缘故,RST点的电位瞬间提高到VCC,使单片机复位。10uf电容充电完成后,电容等效于开路,RST点的电位降为...
STC 单片机 ,工作电压是5V,电流是多少。如何用3--4节干电池(5号,或,七号电池) 给STC 单片机 供电?STC89C52RC的工作电压范围是:3.3V~5.5V,整体流过单片机的电流总和不要超过70mA。你直接用三颗1.5V的电池串联供电就可以了。40引脚的单片机简单接法就可以驱...
2.4g无线模块怎么和 单片机 结合用呢?2.4G无线模块管脚有定义的,你按管脚定义连到单片机上,然后供电。单片机再对模块进行配置,准备好工作,就可以控制无线模块收发数据了。2.4G无线模块管脚有定...
51 单片机 如何 充电 ?51单片机是一种微控制器,它本身不需要充电。它需要通过外部电源供电,通常使用直流电源适配器或电池来为其提供电力。在设计电路时,需要将电源引脚连接到适当的...