访问手机版页面
你的位置:老古开发网 > 其他 > 正文  
单片机典型案例开发(四)
内容导读:
  摘要:为了充分节约能源,提高路灯控制系统的智能化,介绍了一种基于STC 单片机的智能LED 路灯控制器,引入在线监测、PWM 和电力线载波通信技术,实践应用效果良好,具有成本

  一、基于STC单片机的智能LED路灯控制器设计

  摘要:为了充分节约能源,提高路灯控制系统的智能化,介绍了一种基于STC 单片机的智能LED 路灯控制器,引入在线监测、PWM 和电力线载波通信技术,实践应用效果良好,具有成本低、运行稳定的特点。本控制器对智能化路灯管理有很大帮助,应用前景广阔。

  当前巨量的能源消耗和由此引起的能源短缺、价格上涨等已使得节约能源成为一项十分迫切的任务。各国消耗的能源中很大一部分用于照明,其中城市公共照明(主要是道路照明和景观照明)在我国照明耗电中占30%.有资料显示,每年用于照明的电力在3 000 亿度以上,若采用LED 照明,每年就可以节约1/3 的照明用电,基本上相当于总投资规模超过2 000 亿元的三峡工程的全年发电量。综合以上优点,LED光源自然成为城市公共照明的首选,同时目前国内大部分城市的道路照明管理系统直至现在仍在沿用简单的光控、钟控等传统控制方式。这些系统普遍存在着难以反馈路灯运行状态信息、难以进行远程控制等局限,基本没有节电效果,并且采用传统的人工巡检,不仅使路灯管理部门的任务繁重,也增加了运行维护的费用。考虑到这些因素,本文针对LED 光源开发了智能路灯控制器。结合LED 光源的特点,并引入了电力线载波通信技术,PWM 调光技术。

  1 LED 技术概述

  1.1 体积小而坚固耐用

  LED 基本上是一块很小的晶片被封装在环氧树脂里面,它比灯泡和荧光灯管都坚固。灯体内也没有松动的部分,不易损坏。

  1.2 耗电量低

  一般来说LED 的工作电压是2~3.6 V.工作电流是0.02~0.03 A.这就是说:它消耗的电不超过0.1 W.

  1.3 使用寿命长

  当光通量衰减到80%时,其寿命达到了25 000 h.而金属卤化物灯的寿命在6 000~12 000 h,高压钠灯的寿命是12 000 h.

  1.4 调光功能

  由于LED 的工作范围较大,其光输出和工作电流成正比,因此可以通过减小电流的方法来调光。LED 的调光还可以采用脉冲宽度调节的方法来得到,通过调节电压的占空比和工作频率,有效调节LED 的发光强度。

  1.5 环保

  LED 是由无毒的材料制成,不像荧光灯含水银会造成污染,同时LED 也可以回收再利用。

  1.6 光色、显色性好

  在中间视觉水平下,人眼在高色温环境里比低色温环境更容易辨别事物。白光LED 的显色性也比高压钠灯好很多,高压钠灯的显色指数只有20 左右,而白光LED 可以达到65~80.

  2 系统的工作原理

  智能LED 路灯控制器是作为智能路灯控制系统参考的一部分,主要由STC 单片机、采样电路、载波收发模块等组成。系统上位机的命令和控制器的反馈都通过载波模块利用电力线进行收发;路灯的电压、电流由采样电路实时采集;单片机实时处理采集的电压、电流,进行判断处理,同时判断执行上位机的指令,及时反馈路灯的信息。

  3 硬件电路的设计

  3.1 主要器件的选择和相关的性能

  STC12C5404AD 单片机是一款高速、宽电压、低功耗的增强型8051 内核单片机,最高16 k 字节片内Flash 程序存储器,512 字节片内RAM 数据存储器。STC12C5404AD 有10 位ADC 通道捕获/ 比较单元,6 个16 位定时器,硬件看门狗,高速SPI 通信端口,全双工异步串行口,每个通用I/O 口驱动能力均可达到20 mA.在线可编程,无需编程器,无需仿真器,可远程升级,有效节约成本,方便客户的各种应用。

  PL2102 是特别针对中国电力网恶劣的环境所研制开发的低压电力线载波通信芯片。它仅由单一的+5 V 电源供电,以及一个外部的接口电路与电力线耦合。PL2102 除具备基本的通讯控制功能外,还内置了五种常用的功能电路:可数字频率校正的实时钟电路、32 Bytes SRAM、电压监测、看门狗定时器及复位电路。它们通过标准的I2C 接口与外部的微处理器相联,其中实时钟与32 Bytes SRAM 在主电源掉电的情况下可由3 V 备用电池供电继续保持工作。由于采用大规模数字/ 模拟混合0.35 μm CMOS 工艺制作,所以在抗干扰、抗衰落性能以及国内外同类产品性能价格比等方面有着出众的表现。

  3.2 通信技术特点

  本控制器采用了主流的扩频通信技术,有效提高了通信的可靠性,同时创造性的采用动态路由算法,可靠的延长了控制范围。

  (1)扩频通信技术其信号所占有的频带宽度远大于所传信息必须的最小带宽。频带的展宽是通过编码及调制的方法来实现的,与所传信息数据无关。接收端使用与发送端相同的扩频码进行相关解调,恢复出所传输的信息。根据香农关于信道容量的理论:

  C=WLog2(1 十P/N)。

  式中:C 称为信道容量;W 是频带宽度;P/N 是信号与噪声的功率比。此式说明:在保持信息容量C 不变的条件下,可以有不同的W 和P/N,亦即,如果频带宽度变宽,信道的信噪可以比较低,而可以达到同样的信道容量(有效的信息传输速率)。甚至,在信号被噪声淹没的情况下,只要相应地增加信号传输带宽,也能够达到可靠传输的目的。扩频通信就是基于这一原理。

  (2)动态路由方法需要在集中器建立中心路由表和信息素表,各终端建立子路由表,集中器和所有终端都要建立各自的电气距离表, 用来记录与其能够直接通信的其他终端的电气距离。算法主要包含路由发现和路由维护两部分,下面分别进行描述。

  路由发现,是指按一定的规则来寻找并发现路由,即路由逻辑树的建立过程。集中器根据目的终端的回应信号建立中心路由表,其他终端通过接收或监听电力线上的信号,根据计算出的电气距离值不断地更新其电气距离表,从而调整其可直达节点路由表。

  载波信号从集中器出发,根据约束集的约束、信息素浓度τi,j以及问题的启发信息,按一定策略选择下一终端,直至到达目标终端。同时载波信号按原路径返回,回到集中器之后,对路径质量进行评估, 采用全局更新规则对迭代或全局最优路径上的信息素浓度进行更新。

  由于电力线信道环境随时间会发生缓慢的变化,信息素表中在较早时间里获得的信息素会逐渐失去代表电力线信道当前环境状况的效力,所以对其他路径的信息素采取定期按照一定比例挥发的机制。同时为了避免搜索出现停滞现象,设定了路径上信息素的浓度值的上、下限。当获得的最优路径达到要求的精度时,认为本次路由发现完成。集中器通过不断发出寻路信号,来完成各终端的路由发现过程,最终建立到达各终端的中心路由表。

  算法中,载波信号在选择下一个节点的时候,采用了气距离作为约束的候选集策略,并结合了确定性随机性的选路原则。首先,设定一个能正常通的电气距离的阀值,当电气距离大于这一阀值时,认为信道状态较差,两节点间不能直接通信。

  从大量的实验结果来看,最大可通信距离附近的节点在通信上并不稳定,不适合作为中继使用,所以,在算法中选择电气距离为阀值的[1/2,3/4]这个区间上的节点作为下一节点的候选集。同时通过公式(1)作为下一节点的选择策略。

  

  式中:pi,j(t)为在第t 次迭代中,编号为i 的节点到编号为j 的节点的转移概率;τi,j(t)为路径(i,j)上的信息素强度;a 为信息素调整因子;ηi,j为节点i 到节点j 的电气距离值;allowed 为载波信号下一跳候选节点集合;q 为在[0,1]区间随机产生的服从均匀分布的随机数;q0为载波信号选择下一跳的概率度量阀值。当q≤q0时,载波信号选择信息素最大的路径节点作为下一跳节点,这就是确定性选择策略,当q》q0时,根据公式(2),用赌轮法随机选择下一跳,这就是随机性选择策略。算法的确定性使选择趋向于获得最优候选解,而随机性则通过扰动来发现新的解,防止陷入局部最优。

  路由维护是指当以前的路由变得无效时或为了寻找一条更加适合当前电力线状况的更优路由,需要对路由表进行更新的过程。当集中器按照中心路由表中的路由向目标终端发送控制命令,由于该路由中某一路径上的负载变大或受到强干扰而使通信失败,则集中器在确认该路径已经不适合当前信道的情况下,将重新选择路由或使用路由发现规则寻找到达目标节点的新路由。进行路由维护的搜索过程是针对个别节点或局部区域节点进行的,因此可以大大地节约时间。

  3.3 电路设计

  STC 单片机将路灯电压、电流的现场数据进行采集,利用单片机内部AD 进行转换并与正常的上下限值进行比较得到路灯的运行状态信息,判断是否向上位机报警。STC 单片机的PWM 引脚输出占空比可调的信号,直接控制LED 驱动芯片,调节LED 光源的亮度,实现有效的节能。电力载波模块将需要传递的信息利用电力线进行收发。控制器整体结构见图1.

  

  图1 整体结构

  如图2、图3 所示,电压、电流采集电路[3]分别通过电压、电流互感器感应交流的电压、电流,再通过I-V 互换得出相应电压值。

  

  图2 电压采集电路

  

  图3 电流采集电路

  电力载波通信由PL2102 和STC 单片机配合操作完成,主要外围电路有功率放大电路、滤波整形电路、耦合电路组成。电力载波通信主要电路组成见图4.

  

  图4 载波电路

  功率放大电路是用来将PL2102 芯片产生的载波调制信号进行功率放大后耦合到电力线上。载波功能被使用后,载波信号由PSK-OUT 输出,波形为0~5 V 变化的方波,包含丰富的谐波;经过推挽电路进行功率放大后,PSK-OUT 的方波信号被放大为IN 点信号。功率放大电路见图5.

  

  图5 功率放大电路

  图7 中电感L1、电容C3 完成整形滤波后,再通过耦合线圈T1 耦合到低压电力线上,双向二极管D7 起保护作用。图7 中包含接收回路部分。R3 在接收本地强发射信号时可以有效吸收衰减;电感L2、电容C6 组成并联谐振回路,谐振以中心频率为120 kHz 设计,完成对有效信号的带通滤波;良好的选频回路可以有效提高载波接收灵敏度。载波耦合及接收电路见图6.

  

  图6 载波耦合及接收电路

  4 路灯控制器的软件设计

  软件程序使用C51 语言,采用模块化方式编程。软件主要由主程序、AD 采样程序、PWM 程序、通信程序组成。

  4.1 主程序

  系统开始工作后主程序首先对单片机内部及外部的资源初始化,然后依次调用各功能模块程序。

  4.2 A/D 采样程序

  A/D 采样程序由主程序循环调用,每次对外部10 个模拟量采集12 次,经由数字滤波后送到数据缓冲区,供其他程序使用。

  4.3 PWM 程序

  单片机将上位机命令解码后,内部控制寄存器置位,启动可编程计数器阵列(PCA)/PWM 工作,输出可调PWM,实现调光的功能。

  4.4 通信程序

  载波通信模块提供透明数据传输通道,用户通信的可靠性由用户的通信协议保证。上位机通过载波通信模块向路灯控制器发出命令,由STC 命令解码后,置位相应的寄存器,实现对应功能。

  主程序框图、中断程序流程图见图7、图8.

  

  图7 主程序框图

  

  图8 中断程序流程图

  5 结论

  智能LED 路灯控制器采用智能化设计,能够可靠地对城市路灯进行有效的数据采集,自动判断,自动报警。同时它作为智能路灯系统的一部分,通过电力线载波通信技术与上位机方便地联系,便捷地接收系统命令并且利用自有的PWM 功能对LED 光源进行调光操作,达到节能要求,具有体积小,工作可靠,控制便捷的优点。智能LED 路灯控制器如能推广使用,会使城市路灯管理工作提高到一个新的水平,不但节约能源,同时也可减少照明灯具的损耗,因此具有广泛的推广前景。

  由图7 所示的脉冲信号控制IGBT 导通和关断,在负载两端产生等效于图4 的电压,从而使电感L 上的电压如图8 所示,最终产生的电流波形如图9.可以看出,电流波形为线性度良好的三角波。通过实验验证得到的数据与理论分析结果相一致,证明了该系统的正确性和可行性。

  二、基于Web的单片机远程监控系统设计方案

  摘 要:传统的远程监控系统一般采用C/S 模型的方式,针对大型设备,成本高。文章采用SOC 芯片C8051F020 和10M 自适应网络芯片RTL8019AS 接口的方案,在单片机中嵌入了精简的TCP/IP 协议栈,构建了基于Web 的单片机远程监控系统软、硬件平台,在此基础上实现了基于单片机的数据采集和远程监控,所实现的系统具有成本低廉、操作方便、可靠等优点。

  1. 引言

  单片机系统以其简单、高效的特点,在工业控制和日常生活中应用越来越广泛。目前大多数单片机系统是以51 单片机为核心,与检测、伺服、显示设备配合起来实现监控功能。

  然而,这些监控系统的数据传输多采用RS-232、RS-485 以及各种现场总线,这些方式有些通信速度不够快,有些距离不够远,且各种总线之间难于实现互连和互操作。以太网作为目前应用最为广泛的局域网,在工业自动化和过程控制领域得到了越来越多的应用。同时,随着Internet 的普及,现代通信技术的进步,基于TCP/IP 和Client/Server 架构的分布式监控技术也日趋成熟。把嵌入式系统连接到Internet 上,就可以方便、低廉地把信息传送到世界的任何一个地方。

  传统的远程监控系统一般采用C/S 模型的方式,主要针对大型的设备进行监控。对于如摄像头图象监控﹑家用仪表﹑门禁控制系统等小型的设备的监控就需要采用低成本的方案。

  鉴于此,在低成本的单片机系统上移植精简的TCP/IP 协议簇,实现对于小型设备远程监控是最佳选择。该系统以Web 方式实现,用户可以在任何一台装有浏览器的PC 机上进行远程监视与控制,具有价格低廉、操作方便、界面友好等优点。传统的远程监控系统模型与本系统采用的模型如图1 和图2 所示。

  

  图1 传统远程监控系统模型

  

  图2 单片机监控系统模型

  2. 系统硬件设计

  本系统以 Cygnal 公司的完全集成的混合信号系统级芯片(SOC)C8051F020 单片机为核心,采用Realtek 公司的10M 自适应以太网控制器RTL8019AS 实现系统的网络接口部分。

  SRAM 部分用于存放大量的数据信息。数据采集部分用于采集系统需要监控的设备的运行情况,由于C8051F020 内部带有真正12 位100 ksps 的8 通道ADC 带PGA 和模拟多路开关,还有两个12 位DAC 可编程更新时序,可以方便的进行模拟信号采集和对外设进行控制。

  C8051F020 单片机内置64K FLASH 程序存储器、4K 内部SRAM,可以嵌入TCP /IP 协议, 从而实现嵌入式Web Sever 的功能。RTL8019AS 集成了介质访问控制子层(MAC)和物理层的性能,与单片机的接口简单,可以方便地用来设计基于ISA 总线的系统。另外,它还具有与NE2000 兼容、软件移植性好以及价格低廉等优点,所以特别适合用于嵌入式系统。

  

  图3 系统框图

  3.系统软件设计

  3.1 软件流图设计

  软件的实现主要是根据数据在网络中传输的方向和数据的流向来实现的。在本设计中数据的流向为:请求信息从局域网中来,通过RJ 45 送到RTL80l9AS,处理后的数据包送入单片机系统的协议栈,由协议栈对数据包进行解析,得到原始请求信息。请求信息再经过单片机系统的处理,产生回复信息。回复信息到局域网的过程与上面正好相反。整个系统的软件流程如上图4 所示。

  

  图4 软件框图

  3.2 RTL8019 接收与发送数据

  1.RTL8019 芯片初始化主要是将网卡设置成正常的模式,跟外部网络连接。清除所有中断标志位,让芯片开始工作。

  2.对RTL8019 接收数据操作,有查询和中断两种方式。因为单片机的速度和PC 机相差太远,而且还有一些采集任务,本系统不采用中断方式,用查询方式。在查询方式下,通过查询CURR 和BNRY 两个寄存器的值来判断是否收到一帧数据。当BNRY+1 与CURR不相等,说明接收缓冲区接收到了新的数据帧。图5 为RTL8019 报头格式,接收部分子程序如下:

  UCHAR xdata * rcve_frame(void) //如收到有效数据包,返回收到的数据,否则返回NULL

  

  图5 RTL8019 报头格式

  3.数据的发送包含三个步骤:封装数据包;通过远程DMA 将数据包送入RTL8019AS的数据发送缓冲区;通过RTL8019 的本地DMA 将数据送入FIFO 进行发送。具体过程如下:

  (1)包在发送前应该按规定的格式封装好,格式如下图6 所示:

  

  图6 MAC 帧首部

  (2)把上面的数据包通过远程DMA 写入RTL8019AS 的数据发送缓冲区;

  (3)启动本地DMA,把数据发送出去,数据包长度最小为60 字节,最大1514 字节。

  发送子程序为:void send_frame(UCHAR xdata * outbuf,UINT len)//发送一个数据包3.3 TCP/IP 协议栈的实现。

  3.3.1 ARP 协议的实现

  ARP 地址解析协议的本质是完成网络地址到物理地址的映射。物理地址有以太网和令牌环网两种基本类型,网络地址特指IP 地址。具体到以太网,使用的是动态绑定转换的方法,但是会遇到许多细节问题,例如减少广播,ARP 包丢失,物理地址变更(更换网卡)、移动(移动设备到另一子网)、消失(关机)等。一般是设置ARP 高速缓存,通过学习、老化、更新、溢出算法处理ARP 映射表来解决这些问题。整个ARP 处理过程,主要用5 个函数实现。

  在实现网卡驱动程序后,所有ARP 处理操作就是填写ARP 包。主要程序代码编制如下:

  (1)void init_arp(void)//完成ARP 表初始化,概括说就是ARP 表state 字段清0

  (2)void arp_send(UCHAR * hwaddr,ULONG ipaddr,UCHAR msg_type)//完成ARP 请求

  (3)void arp_rcve(UCHAR xdata * inbuf)// 完成响应操作

  (4)UCHAR xdata * arp_resolve(ULONG dest_ipaddr) //完成从cache 里面查找对应//IP 地址的物理地址,如果没有,就发送ARP 请求

  3.3.2 IP 协议的实现

  网际协议 IP 是TCP/IP 协议族中最为核心的协议,它的主要功能是负责把数据交付给主机,当目标主机与原主机处于不同的物理网络中时,IP 负责把数据包路由到相应的目标网络上。Internet 上所有的数据都以IP 数据包格式传输。IP 协议最大的特点是提供不可靠的和无连接的数据包传送服务。IP 协议主要实现以下两个子程序:

  (1) void ip_send(UCHAR xdata*outbuf,ULONG ipaddr, UCHAR proto_ id,DINT len)//发送IP 数据;该子程序用来创建一个发送数据报。

  (2) void ip_rcve(UCHAR xdata *inbuf) //接收IP 数据;该子程序检测一个外来数据包,并对数据包作相应的处理。

  3.3.3 TCP 协议的实现

  1.使用TCP 状态机:TCP 协议是整个TCP/IP 协议的核心,也是传输层中最复杂的协议。TCP 协议在两个端点之间建立了等效于物理连接的逻辑连接。数据沿着这个连接双向传输。连接的双方必须对发送和接收的数据保持跟踪,以便能够检测出数据流中的遗漏和重复。

  2.使用简单的确认机制:序列号和确认号这两个字段用于协同完成TCP 协议中的确认工作。对于每个接收到的数据包进行确认号的计算,需要从接收到的数据包中提取TCP 报文的数据部分长度,并进行计算,这增加了处理器的运算量。但如果每次只对单个TCP 报文进行确认的话,并没有太大的难度。TCP 协议主要包含的程序如下:

  (1) init_tcp(void) //初始化TCP 协议

  (1) Tcp_send(UINT flags, DINT hdr_len, UCHAR nr) //发送TCP

  (2) Tcp_retransmit(void) //重发TCP 数据

  (3) Tcp_inactivity(void) //停止TCP

  (4) Tcp_rcve(UCHAR xdata * inbuf, UINT len) //接收TCP 数据

  3.3.4 HTTP 协议简介

  HTTP 协议是TCP 协议的高层协议,HTTP 的请求和应答都是一行或多行文本,它的结束标志是一个换行符[5]。如果请求成功,数据就沿着该连接发送,直到发送完为止。HTTP的端口号为80.HTTP 中的命令称呼为方法(method),其中GET 语句用来获取文档,POST语句用来粘贴文档。通过判断GET 和POST 语句后面的文件名来判断所需要传递的文件的位置。

  请求:

  GET / HTTP/1.1

  响应:

  HTTP/1.1 200 OK

  Content-type: text/html

  ……

  《html》

  《body》

  ……

  《/body》

  《/html》

  4.应用部分

  本 WEB 服务器系统几乎可以应用于所有对实时性要求不是很高的场合,只要对本系统的相关部分做些修改或改进,例如:客户端的访问权限、IP 地址的过滤等,就可应用于诸如远程抄表、信息家电的远程控制等场合。下面图7 为ping 命令测试网络不通到通的连接状态,图8 实现了局域网内任意主机通过ip 地址形式访问单片机内部存诸的网页,从而实现对单片机系统的远程监控。

  

  图7 网络连接测试

  

  图8 远程监控温度

  5.结束语

  实现了基于单片机的 TCP/IP 协议栈,使单片机控制的系统具有了WebServer 的功能,这样可以使用PC 机通过因特网远程访问单片机系统,也可以使用单片机系统将有用的信息通过因特网发送到远端的PC 或其它终端上。为嵌入式设备实现远程数据采集、远程监控、远程诊断、远程帮助、远程升级、远程重构等功能提供了可能,这是嵌入式系统发展的趋势。

  三、基于89C52单片机的微电压信号源设计

  1 设计原理

  被测设备要求提供0.5~50mV的可调直流模拟电压,分辨率达10微伏,精度达±0.01mV,温度跟随性要好,即要求提供高精度的微电压信号。

  如果采用单片机通过D/A转换器输出所需电压,输出范围0~5V,LSB=0.01mV,则D/A转换器的位数:

  X=lg2(5000/0.01)≈19(Bit)

  考虑D/A转换器的量化误差、温漂、噪声和其他各种误差的影响,至少选择21Bit以上的D/A转换器,但目前尚无适合本系统设计的D/A转换器。因此,在考虑系统分辨率和输出电压范围的前提下,采用如下方案:先将小于50 mV的电压数值扩大100倍,再用 16Bit D/A转换器输出,然后通过200倍的高精密分压器和超低漂移的运算放大器缓冲输出。与此同时,采用高位A/D转换器组成电压反馈回路,对输出进行差值补偿,进一步提高信号精度和稳定性。 其原理结构如图1所示。

  

  2 硬件设计

  2.1 电压输出电路

  在单片机(89C52)、D/A转换器、分压、运放组成的微电压输出电路中,设计的要点是如何用单片机控制D/A转换器的输出。本设计采用美国BB公司生产的16位高精度数/模转换器DAC714(单通道、串行通讯方式,工作电压±12V或±15V,能实现±10V、±5V和0~10V的模拟电压输出)。图 2是D/A转换器与单片机的连接电路。DAC714采用 ±15V工作电压,通过外部连接的增益(OFFS)和双极性偏移(GADJ)电位计调整,实现对输出电压的精度要求。在调节这两个参数时,为了避免零点对比例调节的影响,应注意先调整比例系数,后调零点。其中,A0为输入寄存器控制信号,A1为D/A锁存控制信号,SDI为串行数据输入。数据控制均为低电平有效,当A0=0时,当前数据进入移位寄存器;当A1=0时,数据进入D/A锁存。

  

  5V满刻度的16位DAC714转换器,1LSB对应76μV。如果输出端的负载电流为5mA,则60mΩ的线路和接触电阻,就会产生300μV的压降;此外,还有印刷电路板产生的压降。因此,将模拟地和数字地分开,采用单点连接,尽量减小接地回路。模拟插钉互相靠近,有利于模拟与数字信号的隔离,而模拟信号应该尽量远离数字信号。为了将D/A转换器与开关电流隔离,模拟地设在D/A周围或者在其下方的模拟信号和电源的附近,最好在DAC714转换器的下面将DCOM与ACOM直接接地。

  2.2 电压反馈电路

  DAC714转换器的输出电压经精密分压电路和OPA111BM运放组成的缓冲电路输出后,理论上完全可达22位分辨率。但是由于温漂和其他误差影响,实际输出时为19位分辨率,精度不能满足要求,为此,设计了反馈补偿电路。用22位A/D转换器测量实际输出电压,在单片机中将实际输出电压与理论输出值比较,其差值信号作为DAC714的补偿电压输出,确保了电压输出精度。

  图3是由ADS1212组成的电压反馈电路。 ADS1212是美国BB公司生产的高精度、宽动态特性的22位单通道Δ-Σ模拟/数字转换器。其差动输入端直接与微小的电压信号相连。由于采用了低噪声的输入放大器,在转换速度为10Hz时仍可获得20位的有效分辨率。它有一个灵活的同步串行接口,单一+5V供电,有内/外参考电压和内部自校准系统。与外部器件接口的形式有双线制、三线制、四线制和多线制,此处采用三线制来实现与单片机的接口,接口信号是数据准备就绪线(DRDY)、数据输入输出线 (SDIO)、时钟信号线(SCLK)。

  

  2.3 温控电路

  为了进一步降低温漂的影响,必须保证系统工作温度变化在一个较小的范围内,为此,设计了自动恒温控制电路。该电路由TMP01温度控制芯片(AD公司)和加温、降温电路等组成。

  TMP01通过外接电阻值来设定高、低温度控制点。当系统温度高于或低于设定值时,输出电压控制信号,启动加温或降温电路的工作。TMP01温度控制精度达±1℃,负载能力达20mA,可直接驱动继电器。

  3 软件流程

  本电压信号源采用液晶显示屏显示汉字和数字,可通过按键直接控制输出电压的大小。用汇编语言编程,实现电压的自动输出。软件流程如图4所示。

  

  4 结束语

  本文介绍的数字式微电压信号源,利用精密分压和反馈补偿原理,实现了用16位D/A数模转换器输出19位分辨率的直流电压的目标。部队实际使用表明,采用单片机控制的数字式微电压信号源不仅电压精度稳定,而且成本低,体积小,提高了测试自动化的程度。

  四、一款自制简易示波器设计

  这款简易示波器的性能如下:

  1.电压挡位:200mV、500mV、1V、2V、5V、12.5V、25V、50V。

  2.频率挡位:12MHz、6MHz、4MHz、3MHz、2MHz、1MHz、500kHz、250kHz、100 kHz、50kHz、25kHz、10kHz。

  3.能较好地测量300 kHz的波形。

  这次DIY的示波器性能虽然较弱,仅仅能用来测试音频等300kHz以下频率的周期波形。不过它还有一个实用的功能,可以用来测试+/-50V的电压(量程是自动切换的)。

  

  主要零件

  编号 零件名称 数量

  1    ATMEGA8单片机 1

  9   24MHz有源晶振 1

  8   128x64液晶屏

  [ST7565控制器] 1

  2    5532运放 2

  3   AD603压控放大器 1

  4    TLV5618[DA] 1

  5    ADS830E[AD] 1

  6    IDT7205 1

  7    ILC7660 2

  10    1117-5.0 2

  11    1117-3.3 1

  12    79L05 1

  13       继电器 2

  14 电容、电阻、二极管 若干

  15    三极管 2

  16    洞洞板 1

  17    按钮 2

  电路分析

  这个版本示波器的电路原理如图1所示。电路制作时,我用了1块16cm×10cm的万用板,电路中仅仅使用2个按钮来操作示波器,因为我只使用了一片M8单片机作为控制器,1个按钮用于循环改变采样频率,另一个按钮用来选择信号的耦合方式,直流或者交流耦合。

  大家要问了,如何用一片 M8 单片机产生12MHz的采样时钟呢?呵呵,其实我对M8单片机进行了超频,使用24MHz的有源晶振作为它的时钟频率。然后,通过定时器2的比较匹配翻转电平,以产生不同的时钟。当OCR2=0时,单片机的OC2引脚就能产生12MHz的方波了。当然,如果大家不想超频,那么最高的采样频率就是16MHz的一半,8MHz了。因为,M8的技术手册上建议最高为16MHz的时钟,而比较匹配的最高频率为系统时钟的2分频,即8MHz。本次制作的源代码使用WinAVR编译。如果使用16MHz的晶振,请自行修改源代码。

  电路中,被测量的信号,经过500kΩ、480 kΩ、20 kΩ电阻串联回路,通过继电器进入第1个运放,运放起到阻抗匹配的作用,因为AD603的输入电阻仅为100Ω。单片机通过继电器选择合适的衰减倍数,在默认情况下,为1/2倍的衰减。在测量较大的电压时,单片机会选择1/50 的衰减。选择衰减的目的是为了方便后期的2次放大。后期放大使用了一片AD603,它是压控放大器。通过改变GPOS(第1脚)与GNEG(第2脚)之间的电压差,即可控制它的放大倍数。AD603的GPOS(第1脚)的电压通过一片DA5618控制,它是12位串口DA,它的参考电压为1.25V,由2个电阻分压而得。整个电路的运放可以使用NE5532、AD8066、LM6172等,它们的引脚都是兼容的。由于采样的速度比较快,远大于M8单片机的读取及处理速度,所以通过IDT7205来缓冲高速采样的电平数据。最后,单片机读取采样的数据,并在128×64的液晶上显示。

标签:STC单片机,控制器,单片机
来源: 作者:电子大兵 时间:2012/4/26 11:30:00
相关阅读
推荐阅读
阅读排行
最近更新
商品推荐