• 基于MCU+CPLD的新型光栅数显系统设计

    基于MCU+CPLD的新型光栅数显系统设计

    1 引言    光栅数显系统主要用于普通机床,可直接显示机床加丁的长度值,有助于提高加工精度和效率。目前国内市场上的光栅数显系统大多采用国外集成电路实现,研发成本高,且不便于操作人员使用。针对这种状况,研发了基于MCU+CPLD的新型光栅数显系统。该系统具有计数精度高、成本低、操作方便以及升级快等特点,能够处理高达5 MHz/s的正交脉冲,并在掉电时有效存储当前长度值,其数码管可显示关键的长度值,点阵式液晶屏还可显示相关的提示信息。 2 系统工作原理    利用CPLD实现正交脉冲处理逻辑电路,而可逆计数器则用于处理计数光栅尺输出的正交脉冲,CPLD的高速并行处理能力可保证光栅尺输出信号无遗漏采样,从而确保计数的可靠性。可逆计数器的值通过MCU一系列运算后转换为机床加工的长度值、MCU再将其长度值回送至CPLD并在数码管上显示。    此外,CPLD还具有7×8键盘按键检测和去抖功能,将处理后的可靠按键送至MCU。MCU主要用于液晶屏的显示控制、掉电数据保存,以及复杂的数学运算。系统工作原理框图如图1所示。 3 正交脉冲信号采集处理3.1 正交脉冲采集    光栅尺输出一组正交脉冲信号,即相位差为90°的两路方波,如图2所示。当光栅尺正向移动一个栅距时,光栅尺输出一个00—01一11—10—00循环,A路方波相位超前于B路90°;当光栅尺反向移动一个栅距时,光栅传感器输出一个00—10一11一01一00循环,A路方波相位滞后B路90°。    分析A,B两路方波的逻辑状态发现A,B两路方波在任意时刻下只有一路信号发生逻辑状态变化。如果在逻辑状态变化前A,B两路的状态相同,那么变化后的逻辑状态肯定相异;如果变化前A,B两路方波逻辑状态相异,那么变化后逻辑状态肯定相同。只需对这两路信号异或,就能提取光栅尺运动的方向信号updown以及与运动距离成正比的计数脉冲cp。     由图2看出,光栅尺移动一个栅距将输出4个cp脉冲,系统测量的最小分辨率提高至1/4栅距,通常称为四裂相或四倍频。CPLD在每个clk的上升沿检测A,B两路方波的状态,首先分别对当前检测的状态A0,B0和上次检测的状态A1,B1相异或,然后将两次异或值再异或。如果最后异或值为1,则说明A,B两路方波发生变化,则向可逆计数器输入一个高电平宽度为1个clk周期的计数脉冲cp,实现逻辑如图3所示。 3.2 可逆计数器    将提取的方向信号updown和计数脉冲cp输入至可逆计数器,实现对光栅尺输出的正交脉冲计数。可逆计数器模块的VHDL程序如下:        3.3 clk的取值    由于CPLD的采样时钟clk必须大于8倍光栅尺输出的正交脉冲,因此系统不会丢失信号。该系统设计使用40 MHz有源晶体振荡器作为CPLD的采样时钟源,可记录的最大光栅传感器输出信号频率为5 MHz。如果使用50线/mm的光栅尺,经过CPLD的四裂相细分后,计算该光栅尺接该系统的最大不漏数加工速度为20 μmx5 MHz=100 m/s,最小分辨率为5μm。远远超出机床运行的极限速度,完全满足实际需求。3.4 EPM240简介    选用Altera公司的EPM240作为CPLD,EPM240是MAX Ⅱ系列器件中的一员。MAX Ⅱ CPLD系列的体系结构使其在所有CPLD系列器件的单位I/O引脚的功耗和成本最低;支持高达300 MHz的内部时钟频率,面向通用低密度逻辑应用,MAX Ⅱ CPLD可替代高功耗和高成本 ASSP 以及标准逻辑CPLD。    EPM240含有240个逻辑单元(LE),等效于192个宏单元;8 192 bit的用户Flash存储器,可满足用户小容量信息存储要求:最大用户I/O数为80,最快速度为4.5 ns,完全满足系统设计要求。4 MCU掉电数据存储    掉电数据存储是系统设计的另一重要功能,要求高可靠性。系统在掉电时应保存光栅尺的当前位置信息,下次开机时通过调用上次掉电时保存的位置信息恢复系统。因此,掉电瞬间,掉电报警电路将迅速响应.向MCU_ 发出报警信号;MCU检测到报警信号后,马上进行相应处理,将当时光栅尺的当前位置信息存入EEPROM。其硬件电路如图4所示。     为了提高MCU的掉电响应速度,增强系统可靠性,系统设计采用新的增强型51单片机STC-89C516RD。该器件具有1 KB RAM和高达64 KB大容量ROM,ISP 功能,指令周期有6clock和12clock两种可选模式。使用20 MHz晶体振荡器,采用6clock模式烧写时,单指令周期的程序执行时问仅为0.3μs,比普通51单片机在最高24 MHz晶体振荡器下的运行速度要快得多。因此,大大缩短了掉电数据存储程序的执行时间。4.1 掉电报警电路    选用超小型高精度电压检测器S80848,内部检测电压固定为4.8 V,精度为±2%,最大响应时间为60μs。S80848采用标准5 V供电,电源正常时输出高电平;当电源电压降至4.8 V时,则输出低电平。将S80848的输出脚连接至MCU 的INT0,并将MCU的INT0设置为电平触发。因此,电源电压只要低于4.8 V就会使MCU进入INT0中断,MCU在中断程序中保存位置信息。4.2 EEPROM选取    当MCU对EEPROM的写操作完成后,EEP-ROM需用10 ms的最大自写入时间将信息写入存储单元。为了使用更多的时间用于EEPROM自写入,选用低压EEPROM,即AT24C64—2.7 V,其工作电压为5.5 V~2.7 V,容量为64 KB,每页为32 B,最大写入次数为1 000 000。4.3 掉电时间计算    选用工作电压为4.5 V~5.5 V的STC89C516RD,当电源电压降至4.5 V以下时,MCU不能可靠工作。MCU的INT0的中断服务程序只能使用电源电压从4.8 V降至4.5 V的这段时间,所有处理必须在该段时间内完成。因此中断程序设计时应尽量考虑使其执行时间最短,中断应先将所有存储的数据存入一个数组,然后将该数组的所有元素写入AT24C64,当然该数组的元素数必须小于AT24C64一页的长度.即必须小于32 B。    当输出电压为5 V时,最大电流为,Imax=0.8 A,等效负载R=5/I=6.25 Ω,与5 V电源并联的电容C=4700μF,则系统时间常数为丁:τ=RC=0.029 s。设发生掉电t=0,根据公式u(t)=Vcc exp(一t/τ)=5 exp(一t/0.029)可知:t=1 183 μs时,电源电压Vcc从5 V降至4.8 V;t=3 055μs时,Vcc降至4.5 V;t=17 869μs时,Vcc降到2.7 V。MCU的中断服务程序时间为3 055-1 183=1872μs,故大于实测中断服务程序时间1 350μs;EEPROM自写入有效时间为17 869-3 055=14 814μs,故完全满足EEPROM写入要求。4.4 中断服务程序    为了避免MCU频繁写入EEPROM,使用次数超出最大有效写入次数。中断程序对中断输入引脚上的电平进行必要滤波。滤波算法为:系统进入中断程序后,首先关闭中断,然后连续10次判断INT0的电平,如果每次判断得到的电平值都为低,则继续往下执行中断服务程序,只要有一次为高则立即退出中断服务程序。完成写入数据,要确保INT0上的低电平解除后再返回中断,否则等待,直至低电平解除。中断服务程序流程图如图5所示。 5 结束语    详细介绍光栅数显系统设计,采用CPLD可大大简化系统硬件设计,降低系统成本,增强系统可靠性和灵活性。选用STC89C516RD,可避免扩展外部存储器,从而简化单片机的外围电路设计。

    单片机 cpld MCU 光栅 数显

  • 一种易于移植和使用的文件系统FatFs Moule

    一种易于移植和使用的文件系统FatFs Moule

    引 言     随着信息技术的发展,当今社会的信息量越来越大,以往由单片机构成的系统简单地对存储媒介按地址、按字节的读/写已经不满足人们实际应用的需要,于是利用文件系统对存储媒介进行管理成了今后单片机系统的一个发展方向。目前常用的文件系统主要有微软的FATl2、FATl6、FAT32、NTFS,以及Linux系统下的EXT2、EXT3等。由于微软Windows的广泛应用,在当前的消费类电子产品中,用得最多的还是FAT文件系统,如U盘、MP3、MP4、数码相机等,所以找到一款容易移植和使用、占用硬件资源相对较小而功能又强大的FAT开源文件系统,对于单片机系统设计者来说是很重要的。     FatFs Module是一种完全免费开源的FAT文件系统模块,专门为小型的嵌入式系统而设计。它完全用标准C语言编写,所以具有良好的硬件平台独立性,可以移植到8051、PIC、AVR、SH、Z80、H8、ARM等系列单片机上而只需做简单的修改。它支持FATl2、FATl6和FAT32,支持多个存储媒介;有独立的缓冲区,可以对多个文件进行读/写,并特别对8位单片机和16位单片机做了优化。FatFs Module有个简化版本Tiny—FatFs,它跟完全版FatFs的不同之处主要有两点:     ①占用内存更少,只要1 KB RAM;     ②1次仅支持1个存储介。     FatFs和Tiny—FatFs的用法一样,仅仅是包含不同的头文件即可,非常方便,本文主要介绍Tiny-FatFs. 1 Tiny-FatFs  1.1 移植前的准备 FatFs Module一开始就是为了能在不同的单片机上使用而设计的,所以具有良好的层次结构,如图1所示。最顶层是应用层,使用者无需理会FatFs Module的内部结构和复杂的FAT协议,只需要调用FatFs Module提供给用户的一系列应用接口函数,如f_open,f_read,f_write、f_close等,就可以像在PC上读/写文件那样简单。      中间层FatFs Module实现了FAT文件读/写协议。FatFs Module的完全版提供的是ff.c、ff.h,简化版Tiny—FatFs提供的是tff.c、tff.h。除非有必要,使用者一般不用修改,使用时将需要版本的头文件直接包含进去即可。     需要使用者编写移植代码的是FatFs Module提供的底层接口,它包括存储媒介读/写接口DiskIO和供给文件创建修改时间的实时时钟。     本移植硬件平台使用型号为ATmegal28的AVR单片机和SD卡。ATmegal28是一种8位RISC单片机,具有多达4 KB的RAM、128 KB的内部Flash和丰富的外设。软件平台是WINAVR,具有代码优化能力强和完全免费的优点。 1.2 移植步骤  1.2.1 编写SPI和SD卡接口代码    本文使用SD卡的SPI通信模式。SD卡的DI接MOSI,DO接MISO,CS接SS。这就需要ATmegal28提供SPI读/写接口代码,主要包括初始化、读和写。SPI初始化包括SPI相关寄存器的初始化和相关I/O口的初始化。将ATmega 128的SPI配置成主机模式、数据高位先传、时钟速率为二分之一系统时钟等。代码如下: SPCR=(O<<SPIE)|     (1<<SPE)|     (O<<DORD) |     (1<<MSTR)|     (O<<CPOL) |     (O<<CPHA)|     (O<<SPR1) |     (O<<SPRO);SPSR|=(1<<SPI2X);     接着配置I/O口的输入/输出。MOSI脚和Ss脚配置成输出,MISO脚配置成输入。然后,就可以进行读/写了。     读1个字节的SPI接口代码:     static BYTE rcvr_spi(void){           SPDR=OxFF;           loop_until_bit_is_set(SPSR,SPIF);           return SPDR;    }    写1个字节的SPI接口代码:    static void xmit_spi(BYTE dat){           SPDR=dat;           loop_until_bit_is_set(SPSR,SPIF)    }     在具备SPI读/写接口的基础上编写SD卡接口代码,需要编写3个基本接口函数:     ①向SD卡发送1条命令:    Static BYTE send-cmd(BYTE cmd,DWORD arg);    ②向SD卡发送1个数据包:    Static BOOL xmit—datablock(const BYTE *buff,BYTE token);    ③从SD卡接收1个数据包:    static BCK]L rcvr-datablock(BYTE*buff,UINT btr); 1.2.2 编写DiskIO    编写好存储媒介的接口代码后,就可以编写DiskIO了,DiskIO结构如图2所示。     Tiny—FatFs的移植实际上需要编写6个接口函数,分别是:     ①DSTATUS disk_initialize(BYTE drv);     存储媒介初始化函数。由于存储媒介是SD卡,所以实际上是对SD卡的初始化。drv是存储媒介号码,由于Tinv—FatFs只支持一个存储媒介,所以drv应恒为O。执行无误返回0,错误返回非O。    ②DSTATUS disk_status(BYTE drV);     状态检测函数。检测是否支持当前的存储媒介,对Tinv—FatFs来说,只要drv为0,就认为支持,然后返回O。    ③DRESULT disk_read(BYTE drv,BYTE*buff,DWORD sector,BYTE.count);     读扇区函数。在SD卡读接口函数的基础上编写,*buff存储已经读取的数据,sector是开始读的起始扇区,count是需要读的扇区数。1个扇区512个字节。执行无误返回O,错误返回非0。     ④DRESULT disk_write(BYTE drv,const BYTE*buff,DWORD sector,BYTE count);     写扇区函数。在SD卡写接口函数的基础上编写,*buff存储要写入的数据,sector是开始写的起始扇区count是需要写的扇区数。1个扇区512个字节。执行无误返回O,错误返回非0。     ⑤DRESULT disk_ioctl(BYTE drv,BYTE ctrl,VoiI*buff);     存储媒介控制函数。ctrl是控制代码,*buff存储或接收控制数据。可以在此函数里编写自己需要的功能代码,比如获得存储媒介的大小、检测存储媒介的上电与否存储媒介的扇区数等。如果是简单的应用,也可以不用编写,返回O即可。     ⑥DWORD get_fattime(Void);     实时时钟函数。返回一个32位无符号整数,时钟信息包含在这32位中,如下所示:    bit31:25 年(O..127)从1980年到现在的年数    bit24:21 月(1…12)    bit20:16 日(1..31)    bitl5.1] 时(O..23)    bitl0:5 分(O..59)    bit4:0 秒/2(0..29)     如果用不到实时时钟,也可以简单地返回一个数。正确编写完DiskIO,移植工作也就基本完成了,接下来的工作就是对Tiny—FatFs进行配置。 2 Tiny—FatFs的配置     Tiny—FatFs是一款可配置可裁减的文件系统,使用者可以选择自己需要的功能。Tiny—FatFs总共有5个文件,分别是tff.c、tff.h、diskio.c、diskio.h和integer.h。tff_c和integer.h一般不用改动,前面的移植工作主要更改的是diskio.c,而配置Tiny—FatFs则主要修改tff.h和diskio.h。     在diskio.h中,使用者可以根据需要使能disk—write或disk_ioetl。以下代码使能disk_write和disk_ioctl:    #define—R'EADONLY 0    #define—USE_IOCTL 1     在tff.h中,使用者可以根据需要对整个文件系统进行全面的配置:     ①   #define_MCU_ENDIAN。有1和2两个值可设,默认情况下设1,以获得较好的系统性能。如果单片机是大端模式或者设为1时系统运行不正常,则必须设为2。    ②  #define_FS_READONLY。设为1时将使能只读操作,程序编译时将文件系统中涉及写的操作全部去掉,以节省空间。     ③#define_FS_MINIMIZE。有0、1、2、3四个选项可设。设0表示可以使用全部Tiny-FatFs提供的用户函数;设1将禁用f_stat、f_getfree、f_unlink、f_mkdir、f_chmod和f_rename;设2将在1的基础上禁用f_opendir和f_readdir;设3将在1和2的基础上再禁用f_lseek。使用者可以根据需要进行裁减,以节省空间。 3 TINY-FatFs 的读/写测试     Tiny-FatFs的功能很强大,提供了丰富而易于使用的用户接口函数,如图3所示。     Tiny—FatFs的功能很全,本文仅测试f_mount、f_open、f_read、f_write和f_close五个函数来读一个3.4 MB的文件和写一个1MB的文件,文件名分别为testl.dat和test2.dat。主要代码如下:         经过实际测试,在单片机系统时钟为11.059 2 MHz下读一个3.4 MB文件耗时约20 s,平均约170 KB/s;写一个1 MB文件耗时约6s,平均约166 KB/s,在资源有限的单片机系统下这个读/写速度是相当令人满意的。综上所述,FatFs Module具有容易移植、功能强大和易于使用的优点,适用于小型嵌入式系统;又是完全的免费和开源,也可以用于教育科研及其商业用途。

    单片机 移植 文件系统 fatfs moule

  • 基于MSP430的烟雾报警器优化设计

    基于MSP430的烟雾报警器优化设计

    引 言传统的烟雾报警器一般由烟雾传感器和烟雾探测芯片构成,探测芯片接收传感器信号并进行处理,从而判断是否有火灾发生。这种烟雾探测器结构简单、成本低,但存在误报率高和环境适应能力差的缺点。为了解决这一问题,单片机被嵌入到报警器中,以识别传感器因环境影响而产生的干扰信号。但是这样做又带来了其它方面的问题:(1)采用一般的单片机,比如51单片机,会大大增加报警器的功耗,这对于长时间需要电池供电的烟雾报警器而言是不能接受的;(2)传感器产生的是微弱的模拟信号,这一信号要经过放大、模数转换之后才能被单片机处理。采用独立的A/D转化电路不仅增加了系统的功耗,还降低了系统的可靠性;(3)单片机软件设计不合理,致使报警器误报率较高,操作控制也不灵活。针对上述情况,本设计以TI公司的MSP430单片机为核心器件设计了一款烟雾报警器。在软件设计中采用模糊滤波算法,提高了单片机对环境的监测能力和自适应能力。系统硬件设计MSP430单片机简介MSP430系列单片机是TI公司推出的16位超低功耗的混合数字信号处理器,它针对实际应用需求,把许多模拟电路、数字电路和微处理器集成在一个芯片上。MSP430是基于精简指令集(RISC)结构的16位单片机,使用8MHz晶振工作时,指令速度可达8MIPS。MSP430单片机的电源采用1.8V~3.6V低电压,RAM数据保持方式下耗电仅为0.1μA,I/O输入端口的漏电流最大仅50nA。MSP430有正常工作模式(AM)和5种低功耗工作模式(LPM0~LPM4)。当电源电压为3V时,各种模式的工作电流分别为AM:340μA;LPM0:70μA;LPM2:17μA;LPM3:2μA;LPM4:0.1μA,单片机可以方便地在各种工作模式之间切换。MSP430的超低功耗使其在报警系统、便携式设备等对供电要求非常苛刻的应用中表现出优良的特性。MSP430系列单片机结合了TI公司高性能的模拟技术,各成员都集成了较丰富的片内外设(视不同型号而定),这些外设包括多通道高精度的ADC和DAC、片内模拟比较器、多个具有PWM功能的定时器、片内USART、硬件乘法器、液晶驱动器、看门狗定时器(WDT)、片内数控振荡器(DCO)、大量的I/O端口以及大容量的片内存储器等,单片可以满足绝大多数的应用需要。MSP430的高集成度使应用人员不必在各种外设上花太多的精力,便可以方便地设计出真正意义上的单片系统。本设计采用MSP430F2254,其主要参数如下:16KB的Flash ROM 、512B片内RAM 、32个I/O口 、12通道10位的ADC 、3个16位定时器A和3个16位定时器B。硬件电路设计烟雾探测电路烟雾探测采用光电传感器,传感器及放大电路如图1所示。传感器电路主要由红外发射管D1和红外接收管D2构成,探测信号经过放大之后被单片机接收。 D1和D2被置于光电感应室(俗称:迷宫)中,二者之间有障碍,D1发射的红外线不能直接被D2接收,当有烟雾进入迷宫时,红外线经烟雾折射后被D2接收,继而转化成电信号,以此检测烟雾的存在。单片机每隔一段时间由I/O端口P1.6输出高、低电平,控制D1发射红外线和停止发射,以探测烟雾。传感器间歇性地工作,便于降低功耗。集成运放的电源由单片机经P1.5提供。同样,只有在传感器工作时,运放才相应地对接收信号作放大处理,避免连续工作以降低功耗。信号经放大后通过单片机的P1.4引脚进入MSP430片内A/D转换器,避免了设计独立的A/D转换电路,既降低了功耗,同时也提高了系统的可靠性。P1.4作为ADC的输入通道A7。报警电路报警电路如图2所示。MSP430内部的定时器A能产生周期和占空比可调的脉宽调制(PWM)信号。PWM信号由P1.3引脚输出,经三极管放大之后驱动蜂鸣器。PWM信号占空比设定为50% ;改变信号频率可以调节蜂鸣器声音的大小,本系统设定为1kHz(频率为1kHz时,本报警器报警声音分贝数最大)。 低电压监测电路电池经过长时间的工作后,自身的电压会逐渐降低,以至于无法维持报警系统正常工作。烟雾报警器对电池供电的稳定性具有严格要求。本烟雾报警器具有对电源低电压的自动监测功能。 低电压监测电路如图3所示。P1.1输出高电平使Q4、Q5导通,VDD在R11上的压降通过单片机P1.2引脚进入MSP430片内A/D转换器,此时P1.2作ADC的输入通道A2。电压信号经A/D转换后与设定的安全电压阈值作比较,从而判断电源电压是否正常。图3所示VDD表示的是系统供电电池的电压,本报警器选用9V干电池供电。VDD经过电压转换后变成3.3V的VCC。 系统软件信号数据处理尽管许多烟雾报警器采用单片机来处理信号,但仍存在较高的误报率,其中一个重要的原因在于对信号的处理不够合理。本报警器在信号数据处理的程序设计上采用了模糊推理滤波的思想,以提高系统的自适应能力从而降低误报率。 火灾现场的环境复杂,火灾信号也具有很大的随机性,传感器探测到的烟雾参数是无法预知和不确定的。环境变化和探测器系统内部噪声对烟雾参数会产生干扰,需要将A/D转换后的数据经过滤波处理,并要求信号处理算法能够适应各种环境因素变化的影响,自动调整报警参数以达到既能快速探测火灾又有降低误报率的目的。模糊数学中的模糊逻辑理论较好地解决了采用精确计算和布尔逻辑难以确定的问题,因此在软件设计中,信号数据处理程序采用了模糊逻辑算法以解决外界干扰的模糊性和报警阈值变化之间的关系,从而达到提高探测器可靠性的目的。首先对经过A/D转换后的烟雾信号模糊化,具体如下:当烟雾信号值x小于阈值 B0 时,认为没有出现火警;当信号值x大于阈值 B1时,认为出现火警;当信号值x介于B0 和B1 两个阈值之间时,认为可能出现火警,并且x越大越接近B1 时,火警出现的根据越充分。模糊化隶属度函数如下: 式中,A为反应火灾出现可能性的模糊量,f(x)为相应的隶属度。外界环境的干扰信号带来的影响是瞬态的,可采用窗口移动滤波法来提高抗干扰能力。滤波函数如下:窗口大小取值为5,当连续有5次f(x)值不为零时,计算K值,判断K值是否超过阈值K0 ,如果K大于或等于K0时立即报警,否则不报警。在上述信号数据处理过程中,模糊量A是一个与温度相关的值。报警器在探测烟雾的同时,还通过温度传感器对现场环境温度进行监测。A与温度的对应关系表预先存入单片机中,单片机根据监测到的环境温度来查找该关系表,以确定A的值。阈值B0 、B1 和K0 是3个关系报警器精度的量,需合理设置,以确保报警器在精度符合国家标准的前提下大幅降低误报率。应用程序设计IAR公司的IAR Embedded Workbench是一套支持TI MSP430处理器的集成开发环境,支持汇编语言和C语言的编译、仿真与调试。为了加强软件的可读性和可移植性,采用C语言开发应用程序。应用程序设计采用模块化的设计思想。整个程序包括:主程序和中断服务子程序两大部分。主程序由初始化模块、烟雾信号处理模块两大部分组成。中断服务子程序由烟雾信号探测及采样模块、低电压检测模块和系统自检模块构成。烟雾信号探测及采样流程如图4所示。 软件设计中的一些要点:(1)初始化程序时,单片机中未使用的引脚应设置为输出状态,以减小功耗。(2)在采样程序中,由于光电传感器及信号放大电路的上电和稳定需要一定时间,因此在开启A/D转换器之前要延迟一段时间,以等待传感器和放大电路稳定,如图4所示。(3)单片机中,CPU与外围模块之间是独立运行的,要灵活利用MSP430单片机的低功耗模式,以降低整个系统的功耗。例如在信号的采样过程中,ADC作为外设负责信号的采样和转换,而此时CPU可以进入低功耗模式,等待转换结束。(4)MSP430单片机的P1和P2端口除了具有输入输出功能和外部模块功能外,端口中的每一位都具有开关中断的功能,利用这些开关中断的中断服务程序可以实现一些额外的功能。结束语MSP430内嵌到烟雾报警器中,一方面增强了报警器的性能,使之更加智能化;另一方面降低了开发难度。MSP430系列单片机型号众多,开发者可根据产品的功能和成本作合理的选择。

    单片机 msp 430 优化设计 烟雾报警器

  • 基于MN101EF32D单片机的电子血压计设计

    基于MN101EF32D单片机的电子血压计设计

    引言 血压是极为重要的健康指标,血压测量的准确与否直接关系到人们的健康。国家把血压计列为强制检定计量器具。一般医院使用的水银血压计基于人工柯氏音法,这种方法存在一些固有的缺点:一是放气的快慢对读数有直接影响,国际标准放气速度为每秒3~5mmHg,而不同的医生放气有快有慢,会影响测量的准确度;二是这种方法以人的视觉、听觉和协调程度为主要依据,很难标准化。为此,本设计从血压的检测方法着手,采用日本松下公司高速、低功耗的MN101EF32D单片机,作为血压计测量、控制、数据读写、数据显示的核心,可准确地采用示波法(振荡法)测量血压。 工作原理示波法(振荡法)是根据袖带在减压过程中,其压力振荡波的振幅变化包络线来判定血压的。目前比较一致的看法是当袖带压力振荡波的振幅最大时,袖带的压力就是动脉的平均压。动脉的收缩压对应于振幅包络线的第一个拐点,舒张压对应于包络线的第二个拐点。硬件设计 系统基本工作原理如图1所示。压力传感器输出的电压信号首先通过低通滤波器滤波,之后由运放电路将信号转化为适合单片机的输入信号,最后将模拟的采样信号经过MN101EF32D单片机转化为数字量。程序对采集的数据进行数字滤波后分析,计算出人体血压的两个关键指标"舒张压"和"收缩压",之后单片机立即将数据存储到外部存储器中,并将这些重要数据显示在LCD上。 传感器绍及其外围电路的设计 该血压计使用的传感器为MPS-3100-006G压阻式压力传感器,是由四个等值电阻组成的惠式电桥,其输出电压和输入压力成正比,理想状态下当压力输入时,电阻值就跟着改变,但实际上温度的改变也会影响其阻值输出结果。另外,由于晶体和电路设计制作的误差,加上封装过程等方面的影响,零点偏移不是零。所以必须由外加元件来进行个别温度补偿电路校正。其重要指标如下:a、传感器测定范围:5.8~15 PSIGb、操作温度范围:?40~85 ℃c、驱动电流:1.5~3mAd、驱动电压:5~15Ve、零点漂移:?25~25mVf、电阻温度系数为:0.2%/℃因为血压信号取自手臂,测量的信号容易受袖带的位置、手臂的挪动而带来的干扰。根据这些专业特点,要求系统具备高输入阻抗、高增益、高共模抑制比、低噪声以及低漂移等特征。如图2所示,图中的T1即为MPS-3100-006G压阻式压力传感器。整个电路首先将压力信号转换为电压信号,然后进行放大滤波。图中U1、U2为有源运放LM324,它的输入阻抗很高。压力传感器的信号通过放大后,并通过调节VR1的大小来改变运放的闭环增益,以调节为适应于A/D的电压输入范围。U1运放回路用来测量袖带中的压力,测量的数据用来供MCU分析并控制对袖带充气和放气的速度。另外U2运放回路是将通过C11电容隔直的交流信号放大,此回路测量的是人体的脉搏波。两个回路的采集数据构成了血压计各个指标的重要计算参数。 MN101EF32D的特性MN101EF32D是松下(Panasonic)公司于2008年初推出的产品,MN101Exx系列8位单片机复合了多功能的外围功能,具有灵活而最优化的硬件结构,简洁而高效的指令体系,充分实现经济性和高速性。MN101E32D型单片机,内置64KB Flash、4KB RAM,具备6个外部中断、20个内部中断(包括NMI)、9个定时器计数器、3个串行接口、8路A/D转换器、32×4段LCD驱动器、监视定时器、单系统的数据自动传送功能、同步输出功能以及蜂鸣器输出等外围功能。最小指令执行时间可达50ns,封装为64引脚LQFP。本血压计使用MN101EF32D的功能大致如下:a、10位A/D采样,用于静态压力及脉搏波的测量。b、LCD显示控制器,直接驱动23*4段的液晶显示器,显示测量的过程及结果。c、定时器功能,用于定时A/D采样数据并计算自动关机时间。d、采用数字信号处理的技术对A/D采样的信号进行处理,主要有数字低通滤波和相关的计算。e、电源开启采用硬件控制的方法,电源关闭采用软件控制的方法,关机时除了稳压模块外,其它芯片处于断电状态,功耗极低。f、测量时可以选择mmHg和Kpa作为主显示方式,测量精度高,达到静态1mmHg、动态3mmHg的测量精度。由于采用铁电存储器作为存储媒介,数据的保存时间很长。MN101EF32D与外部串行铁电存储器的硬件连接在选择外部存储器时,由于考虑到要长期反复擦除、写入所设置的工作参数和测量到的重要信息,并保存大量的历史数据,因此必须使用容量较大的静态存储器,以便写入尽可能多的数据信息并保证掉电后数据不丢失。由于EEPROM本身的设计工艺。寿命有限,而且写入的时间较长,因此不适合用于电池供电的系统。血压计需要保存的数据设计依次为收缩压(2个字节)、舒张压(2个字节)、平均压(2个字节)、脉搏(2个字节)、每次记录的时间(5个字节)等,每次测量需要13字节存储数据。假设每天测量4次,需要13×4=52字节,血压计能够保存7天的数据则需要364字节,故选用"铁电"的24cL04。当打开血压计使用的时候,单片机在其PA0口模拟出IIC总线的SCL,并输入给外部存储器24cL04的SCL引脚,同时PA1口与24cL04的SDA口进行数据交换,将有用的数据显示在LCD上。 电源处理模块及其相关电路设本血压计选用2节7号电池作为电源的输入。为了达到较好的供电质量,在此电路中选择了DC/DC升压芯片RN5RK331A,将2节串联的1.5伏7号电池构成的3V左右的电压升到3.3V,供给系统中的模拟电路电源,也作为数字电路的正电源供给MCU(如图3所示)。考虑到气泵、气阀如果与模拟电路、数字电路直接共用一个电源,会引入比较大的干扰,从而影响压力传感器、运放以及MCU的正常工作,所以设计成气泵、气阀不与其它器件接在一起,直接由电池供电。另外,血压计的重要采集数据通过运放放大的袖带气压和隔直后的脉搏波,由于它们都是通过微小的信号放大后得到的,所以A/D转换的设计也极为重要。系统采用智能充气测量、自动降压,在降压的过程中进行测量。由于在气阀工作降压的时候,电源受到波动,如果用系统电源直接拿来作为A/D的参考电压基准,必然会给测量带来误差。采用National Semiconductor的LM385作为A/D转换的电压基准连接到芯片的VREF+引脚,确保采集的数据转换准确。LCD显示模块的设计 如图4、5所示,为了使用户更为方便、简单地使用本系统,采用LCD显示。松下的MN101EF32D芯片内置了LCD驱动模块,可以直接驱动LCD。先初始化LCD方式控制寄存器1(LCDMD),它是8位寄存器,用来指定LCD时钟、LCD显示的ON/OFF、显示占空比等。 系统软件设计软件的主要流程如下: 上电后,首先完成系统的初始化工作。单片机开始给气泵供电,让袖带迅速充气至被测者收缩压以上约30mmHg左右。之后单片机通过1路A/D开始采集袖带的气压,并根据袖带内气压下降的速度来控制排气阀排气,使袖带内匀速降压(3~5mmHg /s)。与此同时,另外1路A/D开始采集经过隔直的脉搏波。当脉搏波的振幅最大时,袖带的压力就是动脉的平均压。动脉的收缩压对应于振幅包络线的第一个拐点,舒张压对应于包络线的第二个拐点。软件主要细分为以下3个重要模块:一)匀速降压控制模块尽管气阀有自动缓慢放气的特点,但为了使袖带迅速充气至被测者收缩压以上30mmHg左右后匀速降压(3~5mmHg /s),而不能用普通的处理方法,因为整个测量过程中容易受到外界震动的影响,如人为的震动袖带、气管的震动、人的身体运动等,另外气管的刚性度也会影响到袖带内气压微弱的变化。所以袖带内的压力降低的速度与气阀开关的频率为非线形关系。本设计采用了PID算法来控制气阀的开关时间来确保袖带以3~5mmHg /s的速度匀速降压。受到单片机的处理速度和RAM资源的限制,这里不采用浮点数运算,而将所有参数全部用整数,最后再除以2N(相当于移位),作类似定点数运算,可大大提高运算速度。最终赋值给定时器,来控制气阀的开启时间,从而保证降压的速度恒定。在PID算法中三个基本的参数Kp、Ki、Kd的设定与调整是比较难的部分,根据这些参数的作用原理,总结调整方法大致如下:1、压力很快就降到目标值,但压力降的太多:a)比例系数太大;b)微分系数过小;2、压力下降达不到目标值:a)比例系数过小;b)积分系数过小;3、基本上能够控制在目标上,但上下偏差较大,且经常波动a)微分系数过小;b)积分系数过大;二)信号处理模块本血压计测量信号为2路,MPS-3100-006G压力传感器的信号首先进行低通滤波处理,排除因外界干扰造成的信号读数的误差,之后放大送AD1,作为静态血压信号;隔直后经再次放大送AD2,作为脉搏波信号。由于MN101EF32D的A/D为10位,因此最高精度可达1/1024。为了最大限度地利用A/D转换的采样速度,用中断来实现A/D转换后的数据处理。当A/D转换完毕,在中断程序中,用防脉冲干扰移动平均值法来实现简单有效的数字滤波,使测量更加准确。具体做法为在一次定时中断内连续进行5次A/D转换,去掉最大值和最小值,剩余3个数据求算术平均值,该算术平均值作为此次的A/D转换结果。三)计算血压模块袖带气压和脉搏波经信号处理模块的处理后,得出如图6所示的数据。图中的下方为被测者的脉搏波,上方为血压计升压和压降过程中的袖带压力。在此基础上分析信号,供收缩压、舒张压、平均压和心率的计算。单片机在测量过程中已经存储各个脉搏波的峰值,以及每个脉搏波的间隔时间。 收缩压判据的确定采用最大振幅法,即在放气过程中脉搏波幅度包络线的上升段,当某一个脉搏波的幅度Ui与最大幅度Um(平均压)之比刚刚大于Ks时,就认为此时对应的气袖压力为收缩压。Ps=P/Ui=Ks*Um舒张压判据的确定也是用最大振幅法来判定的,不过是在脉搏波幅度包络线的下降段,当某一个脉搏波的幅度Ui与最大幅度Um(平均压)之比刚刚小于Kd时,就认为此时对应的气袖压力为舒张压。Pd=P/Ui=Kd*Um先用经验参数Ks = 0.54和Kd = 0.72来计算,经测试后再进行修正。心率即为脉搏波的周期,具体也为算术平均值做法。结论 基于MN101EF32D单片机的血压计,充分利用了该芯片本身的功能,具备电路简单、功耗低、电源要求单一、精度高以及实用性强等特点,有着广阔的市场前景.

    单片机 mn 101 32d ef

  • 基于AT89C51的智能矿井环境质量监控系统

    基于AT89C51的智能矿井环境质量监控系统

    1 引言 以监测矿井有毒有害气体为目的,介绍一种通用性很强的智能空气监测系统的设计与实现。采用AT89C51单片机作为主控器,可实现对矿下温度和氧气、甲烷气等有毒有害气体的浓度参数进行采集处理、存储、显示及报警功能;同时可与上位机进行串行通讯:并能将环境空气的详细历史资料存储在EEPROM中备查。此外,能实现对矿井有人作业环境取排风温度进行连续、间歇检测;对无人作业环境下系统自动定时运行、非正常断电后系统开机等记忆功能。详细阐述了硬件结构和软件流程,并且指出该系统的特点和优势。 2系统组成及工作原理 该系统由硬件和软件两大部分。硬件部分主要完成各种传感器信号的采集、转换、各种信息的显示等;软件部分主要完成信号的处理及控制功能等。其工作原理是通过89C51单片机一次查询各传感器的输出信号,然后对输入信号进行相应处理后,再通过显示模块输出,同时还可输出各种报警信号和控制信号。图1给出系统原理框图。 3系统硬件设计 3.1主控模块 系统采用AT89C51单片机,它带有4 KB闪速式存储器、128 B内存,最大工作频率为24 MHz。同时具有32条输入输出线,16位定时/计数器,5个中断源,1个串行口。 3.2外围电路 采片Atmel公司的AT24C128,该器件具有128 Kb的EEPROM,可写入10万次,保持40年数据。该系统扩展了一片EPROM2754,接口器件采用一片8279,两片8155;两片A/D转换器选用ADC0809,在对12个通道进行扫描检测时,还将模拟量转换成数字量。MAX232是一款带±15 kV静电保护,+5 V单电源供电的RS232收发器。显示模块采用44780驱动的LCD,HD44780(KS0062)是用低功耗CMOS技术制造的大规模点阵LCD控制器(兼带驱动器)和4 bit/8bit微处理器相连,它能使点阵LCD显示大小写英文字母、数字和符号等信息。同时有较强的通用性,使用方便,能使用户仅用少量的元件组成一个完整的点阵LCD系统,根据送入的相关数据和指令就能实现所需的显示。HD44780显示模块有8条数据线,3条控制线,可与微处理器或微控制器相连,通过送入数据和指令,可使模块正常工作。 3.3传感电路 该电路包含3个检测电路,分别用于对温度、氨气和甲烷等有毒易燃气体浓度的测量。在测量甲烷时选用WIJ-1B型甲烷传感器作为检测元件。传感器吸附甲烷气体使其阻值发生改变,即将浓度信号转换为所对应的电阻值;在测量氨气时,选用定电位电解式传感器,即湿式电化学气体传感器,通过测定气体在某个确定电位电解时产生的电流来测量气体浓度。传感器输出标准的4~20 mA信号。为满足后续电路需要,采用两个运算放大器组成I/V转换电路,再将所对应的电阻值转换为相对应的电压值。 采用AD620作为信号放大电路,有效抑制输入信号间的共模干扰和串模干扰。图2给出了AD620与后继放大电路原理图。 通过A/D转换器由CPU处理获得测量结果及控制信号,执行部分由交流接触器直接控制排风电机,当某一通道的中间继电器闭合时,启动排风电机并且报警。 该系统采用增量式PID算法,当实测值与系统给定值之差大于零时启动排风电机,从而控制有害气体浓度。其算法公式为: 3.4温度检测电路 采用ADI公司生产的AD7416数字温度传感器,具有10位数字输出,其测量误差为1℃。可见,AD7416测量精度虽然不是很高.但是已能满足矿井测温的实际使用要求。表1给出温度输出对应值。 4软件设计 该系统软件采用汇编语言编写,在WAVE6000版本的集成开发环境下进行编译连接。图3给出系统的软件结构。 (1)初始化模块 主要用于对时钟器件和显示屏的初始化,同时可以检测单片机引脚,以实现时钟的调解。 (2)控制模块 完成对3个空气指标的检测。根据测量结果发出响应的控制信号或报警信号,同时调用显示模块中的相应部分。通过驱动44780由LCD显示测试数据及测试状态。 (3)显示模块 包含各个显示部分,在控制模块中被调用。 4.1主程序设计 由于系统对实时性的要求不高。因此软件部分采用顺序执行方式,此外,对各功能的实现使用模块化设计。图4给出主程序系统流程图,用以完成硬件初始化和子程序调用等功能。   4.2 RS232通信子程序 PC通信是准确采集测试数据的关键,二者间的通信采用RS232C接口,该接口是专为PC间通信设计的,其连接电路如图5所示。PC间通信采用ASCII码,前7位是数据,第8位是奇偶校验位,而单片机的串行通信格式是8位,因此不能采用奇偶校验纠错,必须采用查询方式纠错。即PC将接收到的数据再发送给单片机,单片机若比较接收数据和发送数据,若相同,则不再发送该组数据,等待发送下组数据;若不同,则再重发原数据,直到PC接收正确为止。实现通信双方约定:波特率为2 400 bit/s;帧格式为10位一帧,包括1个起始位,8个数据位和1个停止位;传送方式是PC机采用查询方式收发数据,单片机采用中断方式收发数据。AT89C51单片机采用中断方式接收PC机发过来的字符,并回送给主机。程序清单如下: PC机的通信程序采用Turbo C编写,程序清单如下: 5抗干扰设计 为确保整个系统的可能性和安全性,采用了由硬件和软件相结合的抗十扰措施。 硬件的抗干扰措施是:(1)滤波技术。将电源变压器的进线段加入滤波器,以消弱瞬变噪声干扰;存直流电源线和地线之间接滤波电容以抑制电源噪声。(2)去耦电路。在印刷电路板的各个集成电路的电源线端与地线端之间配置去耦电容。(3)屏蔽技术。采用电场屏蔽和电磁场屏蔽的方法。电场屏蔽主要使用低电阻材料。磁场屏蔽使用高导磁率的材料。(4)光电隔离。在I/O通道上接光电隔离器,将单片机系统与各种传感器和开关隔离开。 软件的抗干扰措施是:(1)数字滤波技术。采用数字滤波技术除去输入信号中掺杂的随机干扰。(2)软件陷阱技术。当系统受到干扰,PC值发生变化,程序出现"乱飞"等情况时,可以用软件陷阱和看门狗将程序拉回到复位状态。具体的讲,可以在RAM中埋一些标志,在每次程序复位时,通过这些标志,可以判断复位原因并根据不同的标志直接跳到相应的程序。这样可以使程序运行有连续性,用户在使用时也不易察觉程序被重新复位。

    单片机 at 89c C51 89

  • 基于DSP处理器的UMTS Turbo MAP 解码器高效实现

    基于DSP处理器的UMTS Turbo MAP 解码器高效实现

    Turbo码自1993年问世以来,以其出色的性能,在工业和科研领域都引起了广泛的关注。Turbo码性能逼近(信噪比差为0.7dB或更小)由Claude E. Shannon确定的信道容限。Berrou、Glavieux和Thitimajshima最先提出了Turbo码,其结构由两个并行级联卷积编码器组成。Turbo码编码方案产生同一信息序列的两个不同交织形式的分量码。解码时,由两个MAP解码器以迭代方式对判决结果进行解码。MAP 解码算法利用接收数据和校验符号(以真实和交织形式的数据计算而来的校验位),以及其他的解码软输出(外部的)信息,得到更加可靠的判决结果。 本文将讨论在ADI Blackfin通用定点DSP处理器上如何高效实现Turbo MAP 解码器的技术。 TURBO解码器 在Turbo解码过程中,MAP算法被用于确定最接近传输数据的信息位。MAP算法先对每个传送的数据位计算一个后验概率值(APPs),然后根据最大的后验概率值为该数据位分配一个判决值,再进行解码。MAP 算法使用后验概率值APP计算每一个传送位Cn的最大似然比LLR,使误码率(BER)最小,其计算公式如下:     (1) 其中,Y1N=[y1,y2,…,yN]。译出的信息位通过以下硬判决得到: 在UMTS Turbo解码器中,应用一个八状态的RSC编码网格,在n时刻,当输入序列为Y1N时,比特“1”和比特“0”的APP可分别由式(2)和式(3)求得。     (2)    (3)其中,分别是的对数, 是在n时刻和状态m下的前向状态度量, 是n时刻和状态m下的分支度量,是n+1时刻和状态k下的反向状态度量。每级中,只需要两个(当采用BPSK调制来传输数据比特流时)分支度量,而这些分支度量值可以由解码输入和另一个解码器的中间软输出计算得到。 式(4)中,前向状态度量根据编码器状态(对应于每级或时刻n)的网格表示从n=0时刻进行递归计算(由于在对数域内,采用累加)得到,这里假定的初值为,当1≤k≤2M-1时,。其中,M是编码生成多项式(1+D2+D3)的幂。类似的,式(5)中的反向状态度量从网格级n=N+1开始进行递归计算得到,同样假定的初始状态为和,其中1≤k≤2M-1。状态度量和的递归算法如下。(4) (5)其中,b(i,m)和f(i,m)分别是与第n级的状态m相关的第n-1级和第n+1级状态值。在α,β和LLR的计算中,我们必须解一个形如ez=ex+ey的方程。其和的近似值可由ex=emax(x,y)(1+e-|x-y|)或z=max(x,y)+ln(1+e-|x-y|)= max*(x, y)计算得到。该算子被称为Log-MAP算子。修正项ln(1+e-|x-y|) 是一个非线性函数,它对MAP解码器在低信噪比下的性能增益带来最高0.5dB的提高。如果我们忽略了这个修正项,算子z=max(x,y)则被称为Max-Log-MAP算子。本文只考虑Turbo MAP解码器实现中的Max-Log-MAP算子。 TURBO解码器的实现 Turbo解码器由两个MAP解码器组成,这两个解码器由一个交织器和解交织器分隔开。由于篇幅有限,我们将不讨论Turbo解码器的完全实现而只讨论性能敏感度最高的“度量计算”部分。 1度量计算 式(1)中LLR的值由APP求得,而APP则由式(2)和式(3)计算得到。在计算APP时,我们要用到第n级所有状态下的α (前向状态度量),β(后向状态度量)和γ(分支度量)。在第n级,γ值根据已接收到的信息和第n级的外部信息计算得到,而α用第n-1级的α和第n级的γ计算得到,β则由第n+1级的β和第n级的γ计算得到。换句话说,为了计算第n级的LLR值,我们要同时利用由前n级计算出的α值和由后N-n级计算出的β值,如图1所示。 图1 第n级LLR的计算图解 2 基于窗口的算法实现 如图1所示,Turbo解码器工作于符号长度为N的序列或结构上。因此,Turbo解码器的实现就需要一个超大容量的存储器(用来存储所有N级的α、β、γ、LLR、外部信息、接收序列、缓存等等),但是可以通过加窗的方法降低对存储容量的要求。基于加窗口的方法就是将整个数据结构分成一些小的数据块或数据窗(有6K级窗口的重叠,K=M+1,是编码器的约束长度),每次只在一个窗口上执行解码操作。在 MAP 解码中,三个主要的算子是α估计,β估计和LLR估计。在计算当前窗的β和LLR的同时,计算下一个窗中的α,这样就可以平衡ALU和DAG(加载/存储)单元对带宽的需求,如图2所示。 图 2 基于窗口的Turbo解码器的高效实现 BLACKFIN处理器上MAP解码器度量计算实现 在这一部分,将讨论Turbo MAP解码器中复杂的度量计算如何在ADI Blackfin处理器上实现,并充分利用Blackfin处理器提供的专用特性高效实现Turbo解码器。 1 状态度量计算实现 图3  第n+1级和第n级计算的蝶形算法 状态度量α和β可由式(4)和式(5)求得,该状态度量的计算可用图3所示的方法得以实现。α由正向(从左到右)计算得到,而β则由反向(从右到左)计算得到。图中,实线和虚线分别对应于输入“1”和“0”的编码。虽然通过分支度量(γ),可以由两个输入状态度量计算出两个输出状态度量(α和β),但这两个度量的输出状态却根据它们各自的输入状态而有所不同。在执行过程中,这一输入和输出状态度量的位置改变,在将数据从ALU寄存器存入存储器和将数据从存储器载入ALU寄存器时,可以通过加载/存储(DAG)模块解决。 图4 UMTS Turbo解码器状态度量估计的高效实现 UMTS Turbo解码过程中,α和β计算在Blackfin处理器上的高效实现如图4。由于Blackfin处理器能以向量模式运行,在单个指令周期执行四个16位加/减操作或两个16位求最大值操作,每一级α的计算需要8个循环周期来完成,而每一级β的计算则需要另外8个周期来完成。 2 LLR的实现 对于UMTS Turbo解码器,MAP算法的LLR可由式(1),式(2)和式(3)计算得到。式(2)和式(3)分别说明了通过α、γ和β来计算位“1”和位“0”的APP值的关系。这些MAP LLR的关系如图5(a)和图5(b)所示。 图5(a) 位“1”的 MAP关系,(b)位“0”的MAP关系 对于两个相同的输入和输出,位“1”和位“0”的MAP关系并不相似(极少情况下状态被交换),而这类不对称流程使我们无法利用Blackfin中计算单元和加载/存储单元的最大带宽。例如,图5(a)和图5(b)中标示的部分,我们考虑与式(2)和式(3)的前两项相对应的顶端蝶形运算。 图6 在Blackfin ALU上的LLR计算 由于Blackfin只需要三个周期就能完成四个16位加法和两个16位求最大值操作,要平衡加载/存储(DAG)单元的带宽和计算单元,只能用三个周期来加载数据。假设三个寄存器在三个周期中分别加载了α0|α0, α1|α1和 β4|β0,如图6所示。那么通过16位加法操作,我们可以在两个周期中计算出α0+β4|α0+β0和α1+β4|α1+β0。但是,MAX 操作要求仿照式(3)从反方向由α1+β0|α1+β4求得输出的第二项。Blackfin的16位加法指令所支持的交叉选项(CO)选项可用来换回加法的中间输出,如图6所示。如果没有交叉选项(CO),我们将耗费四个周期来计算四次加法,而不是两个。采用(CO)选项换回之后,执行最大向量操作(一个周期)即可得到两个Log-Max 输出。这一部分程序代码如图7所示。有了(CO)选项,就可以在18个Blackfin指令周期内计算某一级上的LLR值。 图7 利用BF5xx处理器交叉选项(CO)的LLR高效实现  总结 本文介绍了在ADI BF5xx处理器上Turbo MAP解码器的高效实现,详细说明了基于窗口的存储空间降低方法,并利用16位加/减和16位求最大值向量指令以及交叉选项(CO),高效地在Blackfin嵌入式处理器上实现了Turbo MAP解码。该方法耗费大约36个BF5xx周期,即可计算得到一个LLR输出。同时,利用约50kB的BF5xx存储空间,完成了UMTS Turbo MAP解码算法的数据和程序存储。

    单片机 umts DSP turbo map

  • 微控制器灵活的外设可提高设计的经济性和能源效率

    微控制器灵活的外设可提高设计的经济性和能源效率

    嵌入式控制应用的快速增长,对当今的微控制器提出了极为苛刻的要求。由于大量的数字/模拟输入信号的复杂控制算法都必须在一个界定的较短响应时间内进行处理,而且生成适当的输出信号。嵌入式控制应用对于电路板空间、功耗和整体系统成本往往也提出了苛刻的要求。因此,微控制器除需要提供足够的CPU和DSP性能外,还要求高度系统集成,从而避免扩展额外的外设。此外,它还能提供系统安全机制和降低器件功耗的特性。 支持电机控制设计的捕获/比较单元 CCU6是一个高分辨率的16位捕获/比较单元,采用特定应用模式,主要面向交流驱动控制或变频器。特殊运行模式支持采用霍尔传感器或反电势检测来控制无刷直流电动机。CCU6还支持通过输入同时启动若干个定时器,这是单芯片上的多个CCU6模块共有的一个重要的特性。CCU6单元由一个包含3个捕获/比较通道的定时器T12功能块,与一个包含1个比较通道的定时器T13功能块组成。T12通道能够独立生成PWM信号,或接受捕获触发信号,它们也可以共同生成控制信号序列,以驱动交流电机或变频器。以XE166系列控制器为例,它集成了多达4个CCU6模块,因此使用一片XE166控制器最多可以同时独立控制4台三相电机,如图1所示。 图1 XE166功能框图 CCU6 PWM单元可以和两个高精度模数转换器紧密联动,适用于采用闭环算法,如磁场定向控制(FOC)的高端电机控制,如图2所示。闭环算法需要来自电机的反馈信息,如相电流等。这个相电流值需要在PWM生成的界定状态下测定。由定时器T12的三个比较通道可以生成6路PWM信号,加上自动插入死区时间功能,可以控制三个的功率半桥。再加上计时器T13,CCU6 能够在已定义的PWM开关状态下产生硬件触发事件触发模数转换器。 图2 CCU6用于电机控制应用,产生自主PWM信号   灵活的串行接口和更低的CPU负荷 通用串行接口通道(USIC)是一个灵活的接口模块,支持ASC、SSC、LIN、IIC和IIS等协议,如图3所示。每个USIC模块有两个独立信道,每个信道均可配置为所支持的协议之一。以往,客户不得不使用指定的引脚来实现专用的输入/ 输出连接。有了USIC,每个信道的输入/输出信号可以单独地指派至几个端口引脚,从而进一步提高设计的灵活性。XE 166搭载至多3个USIC模块,能够支持6通道的片上输入/输出接口。每个信道都可以支持独立的可编程波特率配置,还可以采用面向发送和接收的FIFO缓冲器。即使在运行期间,用户仍然可以选择或改变所配置的每个协议,而不需要芯片进行复位操作。USIC可支持以下协议:UART(异步串行通道(ASC),1.2kBaud~3.5MBaud);硬件实现的LIN支持(低成本网络,最高20kBaud);SSC/SPI(同步串行通道,2kBaud~10MBaud);IIC(100~400kBaud);IIS(信息娱乐音频总线,最高26Mbaud)。 图3 灵活的通信 除了可以灵活选择通信协议之外,USIC架构还能降低系统负荷(CPU负荷),实现非常高效的数据处理(支持全双工数据传输)。每个USIC通道包含一个专用波特率生成器。波特率生成既可以基于内部系统时钟也可以由外部时钟输入。这种架构可支持频率无法由内部生成的数据传输,例如同步几个通信设备等。再加上非常灵活的信号引脚接口,USIC为各种应用需要提供了完善的通信接口。 模拟/数字转换器 为测量模拟信号,XE166集成了包含24个(16+8)复用输入通道的两个高速可同步10位模数转换器(ADC0、ADC1)模块,每个模块分别集成了采样保持电路。它们使用逐次逼近算法,在80MHz系统时钟下实现低至0.675μs的转换时间。采样时间(用于电容器加载)和转换时间都是可编程的,因此可以根据外部电路进行调整。这些模数转换器也可以在8位转换模式下运行,从而进一步缩短转换时间。 多个独立的转换结果寄存器、可选择的中断请求以及高度灵活的转换序列,提高了XE166的可编程性,满足不同应用的要求。两个模块可以同步,支持两个输入通道的并行采样。对于需要更多模拟输入通道的应用,外部模拟多路复用器可以自动控制。对于需要较少模拟输入通道的应用,多余的通道输入可以用作数字输入端口引脚。 极限/边界检查或结果累加等减少数据的特性,可以减少CPU的调用次数,从而即使在CPU速度很低的情况仍可实现精确的模拟输入评估(高转换率)。运用极限检查可减少中断负荷(例如温度测量或过载检测),因为只有在可编程边界之外的转换结果才会导致中断。 电源 XE166支持/提供非常独特的3~5.5V的灵活输入/输出电压,并可允许选择两个不同的电平(5V面向模拟精度、3.3V面向标准外设IC),如图4所示。内核工作电源电压为1.5V。片内已嵌入专用的调压器,从输入/输出供电电压直接为内核提供稳压,因此无须另外配备一个稳压器。这种设计的好处在于为模拟信号(将5V的传感器信号连接至模数转换器)和数字功能(数字逻辑、ASIC等)都提供了最佳的供电方式。对大多数应用而言,这可省去用于板上不同电压级别之间的信号转换的电平转换器。 图4 灵活的具有两个独立工作电平的电源 输入/输出供电电压通过一个具备内部上电检测功能的看门狗监视器进行监控,而且该器件无须外部上电复位电路便可启动。两个完全独立的阈值电平和比较器用来验证用户设定的欠压和过压电平。在2.9V和5.5V之间有共计16个阈值电平可供选择。供电电压看门狗还监控EVR的电源电压是否足以在所有运行条件生成一个有效的内核电压。外部电压监测功能只需使用一个低成本的调节器,而无须额外的状态信号。此外XE166还支持VDDI引脚上的短路保护。 灵活可靠的时钟源 图5 灵活可靠的时钟模式,可在外部石英晶体失效时启动片上振荡器 XE166系列的时钟采用一种非常灵活的设计理念,提供多个时钟源,以确保安全运行,如图5所示。时钟生成单元基于一个多预分频器的可编程片上锁相环电路(PLL),以非常灵活的方式为XE166生成时钟信号。系统时钟可以从若干个内部和外部时钟源(如晶体振荡器)提取。外设可以可时钟信号暂时断开以节省功率;如果它们一直没有被使用,也可永久断开。片上高精度振荡器电路(OSC-HP,4~25MHz,最高精度0.5mA)可连接一个外部晶体或输入一个高精度的外部时钟信号。其他时钟源来自一个电流控制的片上振荡器(OSC-LP,5MHz,快速启动)。因此,用户可以选择最适当的时钟模式,获得相关时钟信号确保稳定运行。不同时钟源模式之间的切换是由软件实现的。一个内部“紧急”时钟源可以保证在任何情况下都能提供时钟信号(而不需要使用一个外部晶体)。振荡器看门狗(OWD)监控输入时钟并在输入时钟出现不稳定的情况下启动紧急时钟。 结论 基于增强型C166S V2架构的XE166系列微控制器,不仅具有出色的CPU性能、更强的输入输出能力和灵活的电源选择,而且支持USIC等全新外设。该系列包含多种型号,广泛适用于诸如电机控制、电源、运输和通信等要求苛刻的工业应用领域。片内集成的稳压器、使用了额外闪存模块的仿真EEPROM和多个时钟源优化了系统成本。此外,这一系列还得到了全套开发工具的支持,包括评估板、调试器、编译器和相关文档。此外,英飞凌的合作伙伴Altium公司提供一年免许可费的Tasking XE166编译工具。

    单片机 经济 微控制器 外设 能源效率

  • 基于SPE61A单片机的非接触式高压验电器的开发

    基于SPE61A单片机的非接触式高压验电器的开发

    设计思想与总体方案 1 非接触式验电器的设计思想 本次开发的验电器主要用于铁路中高压输电线路的监测工作,其设计要求是监测铁路中高压线路的运行情况,要求能正确判断高压线是否带电,并将有电、无电信号通过发光二极管显示出来,同时还要发出相应状态的语音提示信息。 另外,验电器通常安装在室外,因此本装置还要满足室外工作的要求。 2 总体设计方案和框图 本验电器以SPE61A单片机作为检测和控制核心。装置采用铜片式传感器监测高压线附近电场,将电场信号转化为电压信号后送往信号处理电路,信号处理电路将该模拟信号转换成直流的有电、无电的状态信号送往单片机。单片机将接收到的信号与上一次信号进行比较,如果本次采集的信号跟上次采集信号相同,则继续下一次信号的采集,如果不同,则发出新的信号到语音模块、指示模块和信号传送模块,同时将本次采集的信号进行锁存,用以对下次采集的信号进行比较。语音模块收到信号后发出有电或无电语音提示;指示模块收到信号后发出有电或无电指示;信号传送模块收到信号后发出有电或无电状态信号送到室内监控计算机。硬件结构图如图1所示。 图1 硬件结构图 系统的硬件设计 1 单片机 本系统采用凌阳SPE61A单片机作为检测和控制核心。SPCE061A是继  μ'nSP系列产品SPCE500A等之后凌阳科技公司推出的又一个16位结构的微控制器。它设计有2个16位IO端口。该控制器可以在较宽的电源电压范围(2.6~5.5V)及系统时钟频率范围 (0.375~24.576 MHz)内工作,除了数据总线增至16位从而提高了工作速度外,SPE61A 16 位单片机内集成了更多的系统外围资源。其中有大容量ROM及静态RAM、红外通信接口、RS-232通用异步全双工串行接口、10位A/D及D/A转换、内置式带自动增益控制的扩音器输入通道、32768Hz实时时钟以及低电压复位/低电压监测系统。另外,SPE61A中还嵌入了LCD控制驱动和双音多频信令(DTMF)发生器功能等。 SPE61A最大的特点就是内置7通道10位电压模/数转换器(ADC)和单通道声音模/数转换器,其中,声音模/数转换器输入通道内置麦克风放大器和自动增益控制(AGC)功能。这使得SPE61A具备了初步的语音播放和识别功能。 在本系统中,SPE61A单片机主要监测和处理输入信号。在接收到来自信号处理模块的信号后单片机将相应的判断,并将处理结果发送到后续电路。 2 传感器 传感器用于读取电场信号,是整个设备的信号源。传感器被安装在距离高压线0.8m的正下方,用于读取和转换高压线附近的电场信号。本装置中的传感器采用铜片电容设计,从电容两端分别引出两根导线,其中一根导线作为信号输出的正极,另一根接地,作为地线。 另外,为了安全需要,在传感器的地线端多引出了一条地线(称为检测地线)作为电路中指示模块、语音提示模块和信号传送模块的地线,用于判断传感器传输线路是否完好。此时,若信号传输线路断开,则此地线亦断开,那么指示模块、语音提示模块和信号传送模块均不能工作,信号指示灯不能发光,语音模块被能发出语音信息,传送电脑的有电和无电信号也同时断掉,不会发出错误信号,提高了系统的可靠性,避免信号线断开时发出错误的无电信号,造成事故。 传感器采用封闭式半球形光滑外壳设计,能够彻底防水,满足室外工作要求。 3 信号处理模块 信号处理由信号跟随电路、滤波电路、倍压整流电路、减法电路、放大电路、施密特触发电路、信号指示和监控信号发送电路组成,其原理图如图2所示。输入信号来自传感器的送出的工频交流电压信号,该信号经过信号跟随电路跟随并正向偏置后进行滤波,然后将交流信号倍压整流成直流信号,减法器减掉相邻线路间的干扰信号,放大器将信号进行必要的放大后送入施密特触发器,触发器根据输入信号的大小送出有电、无电两种信号到单片机。 相关文献中对本装置的各模块功能结构和原理已经进行过详细的论述,本文不再累述。 图2 信号处理电路功能模块图 4 语音模块 语音提示信息处理由SPE61A自带的语音模块完成。本系统中直接在该模块中外接功放电路和喇叭,语音提示信息通过外接喇叭发出。 5 指示模块 指示模块由两只发光二极管组成,分别为红色和绿色,红色表示有电,绿色表示无电。由于SPE61A端口有足够的驱动能力,因此,本系统中直接将发光二极管接入到单片机端口中。 图3 信号传送 6 信号发传送模块 本验电器不仅要把高压线是否带电状况在指示模块中显示出来,还要将该信号送往室内监控计算机中进行监控。如果将信号通过验电器装置发送到计算机就遇到一个共地线问题,要让计算机正确地识别验电器传送过来的信号就必须使计算机和验电器共一个地线,否则,会因传送线路过长不共地线而导致计算机识别信号出错。本装置的信号传送方式如图3所示,由计算机发送信号,验电器内部通过继电器开关来控制有电或无电线路的导通或断开,计算机接收由自己发送的经过继电器开关送来的两路信号,若有电线路送来高电平信号,则无电线路送来低电平,此时高压线有电;若无电线路送来高电平信号,则有电线路送来低电平,高压线无电,若两路线路都送来高电平信号或低电平信号则电路出错。 语音模块中的功放电路、指示模块中发光二极管和信号发送模块中控制电路都以检测地线作为地线,这样就可以完成对传感器传输线路的判断,避免传感器线路的断开而发出错误的指示信息。另外,由于硬件都必须在室外工作,因此,整个硬件设备都被安装在以各特殊设计的防水金属外壳中。 系统的软件设计 图4 软件流程图 系统软件设计如图4所示。在系统第一次上电运行时先初始化到有电状态并将该信号端口中的指示模块中显示结果,调用语音子程序输出语音提示信息。延时1s后将状态锁存。系统先对输入端口进行扫描,再将扫描结果与锁存器中数据进行比较,如果相同则直接清看门狗返回到端口扫描进入下一次循环,如果不相同则将扫描结果(有电或无电)输出到端口中的指示模块中显示结果,然后调用语音子程序输出语音提示信息,再清看门狗,返回到状态锁存,将本次采集的状态信号进行锁存,用于下一次采集信号时比较之用,然后进入下一次循环。为了保证系统能正常运行,在两个分支循环中都设有清看门狗程序。 系统整个工作流程如下:第一次上电工作或重启后工作显示为有电状态,并且发出有电语音提示,延时1秒后如果指示状态没有改变则表明线路有电,否则延时结束会改变指示状态,并且有无电语音提示,表明线路无电。 另外,在语音输出中语音提示为“线路上电,请注意安全”和“线路断电”等两句语音。 结束语 非接触式验电器在进行验电工作时不需要与高压线直接接触,使用起来安全、方便。本文设计的验电器采用单片机作为检测和控制核心,在验电提醒时兼有视觉和语音提示,系统信号稳定,可靠性高。

    单片机 单片机 61a 61 spe

  • 基于单片机实现遥控编码器PT2262的软件解码

    基于单片机实现遥控编码器PT2262的软件解码

    1 引言    PT2262是红外遥控编码器,PT2272是其接收解码器,两者常常配对使用,现已广泛用于汽车门控、遥控门锁、门禁管理等领域,也可用于传送数字信息。PT2262具有19位二进制编码功能;PT2272的解码只有4~6位,这就限制了数据传输的应用。在此从PT2262接收的信号特征入手,利用8051F330单片机直接对接收到的信号进行解码,解释出PT2262发出的全部19位数据,从而使其应用于数字通信、智能化控制等领域。 2 硬件电路    图1是发射装置的原理图,PT2262作为编码器,当按下按键时,设定的地址码和数据码从17引脚串行输出,经红外发射元件IRED发出信号。通过电阻Rosc调节发射频率,适当提高PT2262工作电压(2.6 V~15 V),以增大发射距离。其中A0~A12可设置为高电平、低电平、悬空三种状态,因此可以发送531 441种编码组合,完全满足设计需求。     接收装置采用集红外线接收、放大、整形于一体的集成电路TL0038,无需任何外接元件,就能完成从红外线接收到输出与TTL电平信号兼容的所有工作,故适用于各种红外线遥控和红外线数据传输。译码采用8051F330D单片机,11.059 2 MHz晶体振荡器,接收信号送至I/0端口P1.0进行软件解码。接收和译码电路如图2所示。 3 解码原理    编码器PT2262发送的编码信号是由:地址码、数据码、同步码组成的一个完整码字,最多可以有12位(A0~A11)三态地址端引脚(悬空、高电平、低电平),任意组合可提供531 441个地址码。将编码器PT2262的A8拉高,D3拉高,D0拉高,D1拉低,其余悬空。截取一段接收模块信号输出波形如图3所示,PT2262每发射一次,至少发送4组相同编码字码。每组字码间隔(低电平)约14 ms。     将其截获波形每组字码放大,如图4所示,一组字码有12位A/D码,每个A/D位是由2个脉冲表示:2个窄脉冲则表示“0”:2个宽脉冲表示“1”;1个窄脉冲和1个宽脉冲表示“F”,即地址码“悬空”:除此之外,每组字码之间还有1个同步码隔开,所以每组字码共计有25个宽度不同的脉冲。窄脉冲宽为200μs,宽脉冲宽为1 200μs;两个窄脉冲之间宽1 200μs;两个宽脉冲间宽200μs;宽窄脉冲间宽为200μs;在4组字码中,每组的字码间隔为14 000μs。因此,采用单片机软件解码时,只要判断出起始码,并且识别其后面的字码脉冲宽度即可。 4 抗干扰措施    常用抗干扰措施,是在硬件电路中采用电源滤波、电源稳压、数字地与模拟地隔离。在设计中,除采用上述方法外,还根据干扰信号与有效信号波形特征异同点,采用软件识别干扰信号和有效信号,从而实现“抗干扰”目的。     当遥控器不发射时,由于空气中各杂波干扰,接收模块的信号输出端仍然会有干扰信号,截获波形如图5所示。      观察其特征,低电平最长为3 000μs,最短数十微秒;高电平最长500μs,最短数微秒.与发射时接收到的规则波形(即非有效信号)相比较,低电平为1 400μs的信号,是有效信号,而不是干扰信号。    并将A0~A34个地址焊接到高电平上作为发射编码信号的帧前码,可解决误码率和干扰问题。 5 软件解码    步骤1:单片机循环记录接收模块信号电平脉冲的长度。高低电平都记录。    步骤2:从记录高低电平组成的波形中,找出连续8个1 200μs时长的脉冲信号为特征波形段,即帧前码。    步骤3:确认帧前码之前是否存在一个时长为14 000μs的低电平,如果有(则说明不是干扰码),将解码并存储结果,然后根据指令码执行相应控制功能。如没有,则放弃记录的数据,重复步骤1,直到满足条件为止。    以下给出了相关软件解码的程序代码:             } } 6 结束语    该软件解码部分已在8051F330D单片机(11.059 2 MHz晶体振荡器)上通过现场测试,设计方案可应用于门禁管理系统。实践表明,应用方便、可靠性好、代码识别准确。

    单片机 pt 单片机 编码器 2262

  • 增强型XDS560USB仿真器和达芬奇视频处理模板(合众达)

    合众达电子日前正式对外发布了增强型XDS560USB仿真器---SEED-XDS560PLUS,这是合众达自1993年推出第一台国产TMS320C3X硬件仿真器以来推出的第七代仿真器。 为了顺应TI DSP新技术发展以及市场对仿真器成本的考虑,我们在TI XDS560技术基础上采用了更高性价比CPU来实现DSP的开发。为了降低 DSP开发门槛,更好普及与推广DSP技术,我们在XDS560PLUS新品发布的同时,全国实行9800元买一送一让利大活动! 与传统XDS560USB相比,SEED-XDS560PLUS仿真器有如下革命性突破: 1、全面升级,性能稳定可靠; 2、USB2.0接口,无需外接电源,低功耗设计; 3、JTAG电缆与仿真盒一体化,便携性高; 4、全面支持TI DSPs,兼容TI XDS560技术; 5、支持Win2000/XP/Vista。 与传统XDS510相比,SEED-XDS560PLUS仿真器有如下特点: 1、10倍于XDS510调试性能,下载速度达到500KB/s; 2、RTDX速度达到2MB/s; 3、0.5-5v核电压自适应,顺应TI新 DSP技术发展趋势; 4、JTAG高速电缆,抗干扰性更强; 5、兼容XDS510的全部功能。  面向工程应用的达芬奇视频处理模板SEED-DVS6446 SEED-DVS6446基于最新TI主流的达芬奇视频处理芯片TMS320DM6446,充分发挥达芬奇高集成度硬件、音视频软件算法优势,使视频数字化、监控网络化、系统集成化、管理智能化,并且具有体积小、布线简单、成本低、不占用主机资源等特点,可广泛应用于电力视频监控、楼宇监控、可视对讲、远程教学等场合,原始设备制造商(OEM)既可利用它丰富的硬件、软件特点作为标准参考设计平台,也可以将SEED-DVS6446应用到系统集成中,从而更加快捷地开发出一系列创新且经济高效的数字视频产品,并且为客户量身打造SDK软件开发套件,帮助客户在最短时间内掌握达芬奇技术。目前SEED-DVS6446是TI指定达芬奇培训硬件平台。 性能以及接口: DSP:    TMS320DM6446-594,双核ARM9+DM64X  DDR2:    64M×32位 NAND Flash:    64M×8位 UART:    1路RS232与1路RS485 Video:    1路PAL/NTSC标准模拟视频输入         1路PAL/NTSC标准模拟视频输出或VGA输出 Audio:    1路立体声输入/输出 数字I/O:    4入2出,用于状态和报警信号的输入/输出 RTC:    实时时钟 硬件加密:    ESAM 以太网接口:  10M/100Mbase标准以太网接口 USB接口:    直接挂接U盘或无线设备 总线扩展:    扩展EMIFA与VPEE总线 提供硬盘接口 14芯标准JTAG接口 板卡大小:     130mm*100mm 软件资源: 1.      DaVinci Linux Develop Software         集成最新版本DVEVM和DVSDK          详尽Linux服务器开发环境配置说明,十几分钟就能完成开发环境安装配置 2.      Flash_Writer         NAND Flash的烧写例程及说明 3.      U-Boot Bootloader         引导程序U-Boot的启动、编译、烧写例程及说明 4.      System Restore         文件系统恢复的例程及说明 5.      Root File System          NAND Flash中的Linux的文件系统结构调试例程及说明 6.      Linux Kernel Image         Montavistal Linux Kernel源码及安装、配置、编译说明 7.      DDK驱动程序(USB接口驱动、硬盘驱动、音频/视频驱动) 8.      基于CCS的各种测试程序源代码:存储器、UART、视频输入/输出、音频输入/输出、IDE硬盘接口、以太网接口、ESAM嵌入式安全加密模块、RTC实时时钟、数字I/O等等 9.      H.264编解码、网络传输DEMO 10.    TI ASP音视频算法DEMO(H.264、MPEG4、JPEG、G.711、G.729、ACC、MP3等) 11.    DVS6446平台的硬件数据手册,包括TMS320DM6446芯片及各个外围设备数据手册、DVS6446原理图、DVS6446的外设接口芯片数据手册 12.    详尽的SEED DVS6446用户手册 应用: 电力视频监控 楼宇监控、可视对讲、远程教学、智能交通 视频电话、数字视频录像机(DVR) 视频服务器、IP机顶盒 各种数码产品等

    单片机 USB 560 增强型 xds

  • 利用双处理器延长电池使用寿命

    利用双处理器延长电池使用寿命

    向着更低功耗、更高性能的电池供电型系统发展的趋势毋庸置疑。对于电池电源而言,消费者希望便携式电子产品能够以“更低电量执行更多功能”,同时,众多工业产品也开始转而采用电池供电。数字信号处理器 (DSP) 常用于要求高性能的应用领域,从而导致时钟运行速度不断提升。任何需要高速运行并集成成百上千万晶体管的处理器都需要尽可能地降低功耗。过去10 年来,架构创新与低功耗策略推动DSP处理能力不断加强,MIPS性能不断提升,同时,其他性能参数也在迅速得到改进。在这种情况下,由于具备这些更高性能的 DSP,诸如手机与超便携式音频播放器等基于DSP的系统的电池使用寿命总体上有了稳定而显著的提升。头戴式耳机与其他便携式消费类音频设备是要求最佳电源效率的重要范例。此外,工业与医疗产品也在不断向支持高级功能的高集成度便携式设备方向发展。这些设备的电源要求在很大程度上与超便携式消费类电子产品相似。在DSP技术取得快速发展的同时,微控制器(MCU)系统面临着不断降低功耗的压力。相对于DSP,MCU 在降低功耗方面拥有自己独特的优势,例如,其晶体管数量较少,时钟速度较低,而且通常工作电压也较低。不同于用微安计算的DSP,电源优化的现代MCU的待机电流可以纳安计。尽管 DSP的性能大大超过 MCU,而且在电源方面也得到了显著优化,但芯片设计人员在省电方面可做的毕竟有限。常规性认识在延长电池使用寿命方面,系统设计工程师的常识是“一颗芯片肯定比两颗芯片好”。他们的想法简单而直接,认为芯片间的通信肯定比片上通信的功耗大,两颗芯片的晶体管数量明显大于集成了对等功能的单颗芯片。不过,常识未必总是正确的。随着DSP开始集成如加速器、专用通信模块与网络外设等片上功能,其功能对于系统设计人员来说也正变得越发强大和实用。但是,如果芯片仅仅为了执行简单的常规处理或监管程序就保持开启的话,就会产生大量无谓的功耗。决定电池使用寿命的是系统的平均流耗,而非既定时间的瞬时流耗。因此,要延长电池使用寿命,就必须降低平均流耗。器件处于运行状态时,典型的高端处理器支持时钟缩放及其他降低功耗的特性,但如果处于非工作状态,器件就很难拥有出色的节电性能了。众多高性能处理器在停止模式下的耗电量达到 50~100μA以上。尽管乍看起来这种电流消耗还是可以接受的,但要知道,这是处理器停机时的持续耗电,而且不通过外部重启的话就不能执行任何任务。对这种处理器及其他较高端处理器来说,保持低功耗状态,同时又能激励或执行系统或进行监管任务,这时功耗为数十毫安。这就是说,如果系统依赖高端处理器来执行监管任务,电池的使用寿命不过几天而已。但是,如果通过其他器件来实施系统和监管功能,而这种器件又可管理主处理器的电源,那么系统的平均电流消耗就可显著降低。就某些应用而言,用MCU取代DSP执行系统监管任务是一种非常明智的设计决策。明确双处理器系统架构是否是正确的选择取决于众多因素。应用本身是最重要的因素,因为大多数设计方案还要考虑到空间与成本的局限性。举例来说,供电监控、复位监管以及电源排序等都是系统需要的最基本的监管功能。当前众多 SoC 都具备多条电源轨,上电时必须进行适当排序才能正常运行。固定功能器件可执行所有上述功能,但却不能满足系统的其他要求,也不能在不需要时关闭主处理器。以小型的低功耗微控制器取代固定功能器件可增加管理主处理器电源的功能,同时还能实施排序、监控以及监管等功能。低引脚数的低功耗微控制器正好能实现这种功能。举例来说,德州仪器(TI)推出的MSP430F20x1与MSP430F20x2两款器件均属14引脚的微控制器,并分别带有一个比较器和10位ADC。它们的待机流耗不足1μA,而且运行时的电流也不过几百微安。图1 小型微控制器管理主处理器的电源排序,并实施电源管理图1 显示了一个小型微控制器控制主处理器的电源排序、实施电源管理的实例。微控制器上的软件例程可根据正确顺序启动主处理器调节器,并通过内部 ADC 来确认电源轨达到适当电压的时间。不需要主处理器时,可通过调节器的关断特性来关闭主处理器,从而节约主处理器70μA到几毫安的电耗。更好地了解DSP与MCU各自对优化电源的作用是制定何时将二者在设计方案中结合使用的关键因素。设计人员通过将两个超低功耗处理器用于完成主处理器周期与监控功能,让它们分别实现最大化的电源效率,同时又能获得独特的性能、集成与成本优势,这样就能使双低功耗处理器系统的电池使用寿命超过单个处理器系统。DSP的电源DSP芯片设计人员采用了众多低功耗技术方案,如降低工作电压、将芯片分为多个时钟域等大多数方案都是在后台执行的。系统设计人员不必过多控制这些特性就能获得相关优势。不过,在DSP选择过程中,系统设计人员要对应用的执行方式发挥充分的作用。在选择最佳DSP时,应考虑以下四个重要特性。● 采用大容量片上存储器:在应用一般功耗基础上,每次执行片外存储器调用时都要消耗额外的电源。如果使用外部RAM,就必须为其持续供电,这是一个连续的耗电过程。● 选择能高度控制外设的 DSP,因为这直接有利于进一步降低功耗:数种DSP能在外设处于非工作状态时自动将片上外设关断,或允许系统设计人员手动管理外设状态。不过这种特性在粒度性上有一定局限。● 选择可提供多种待机状态的DSP:选项越多,从长远来看节电性能就越好。● 选择可提供开发软件的 DSP,以专用于优化电源并最小化功耗:所选工具应能轻松缩放芯片的电压与频率,管理电源状态,测量并分析功耗,从而评估各种可选的设计方案。MCU的电源优化MCU以实现低功耗工作的最佳起点是采用超低功耗工艺来制造MCU,从而可将晶体管的漏电流锐减至极低的水平。高性能工艺技术会造成DSP的功耗加大,与此相对应,专为降低功耗而优化的半导体工艺则可能限制MCU的峰值处理性能。时钟速度是最显而易见的局限性。例如,TI的MSP430F20xx是低引脚数的MCU系列产品,如图2所示,能够利用其独特的超低功耗振荡器(VLO)技术来实现低至500nA的待机模式电流、最高速度为 16MHz 的优异特性。VLO技术使MSP430F20xx能在超低功耗待机模式下完全自动控制时钟速度,同时无须外接组件就能实现自动唤醒功能,从而使烟雾检测器或家庭温控装置等系统能够在不更换电池的情况就能持续工作 10 年之久。图2 MSP430F20xx MCU结构图在其实现500nA待机功耗时,还能确保支持所有器件的故障保护安全特性,例如,既能实现超低功耗又能实现可靠性极高的系统的零功耗掉电复位(BOR)功能。在 VLO 推出之前,设计人员不得不采用外部晶振或振荡器电路来实现超低待机功耗。VLO 无须使用外部组件就能减少系统组件数,降低成本,缩小板级空间,而这些都是便携式应用的关键需求。与此形成对比的是,以 TMS320C5506DSP为例,其待机功耗为10μA,是上述技术待机功耗的20倍之多。使用智能外设也是降低功耗的高效的IC设计策略。以前,MCU 外设都是由CPU所执行软件驱动的,尽管这确实能高效工作,但CPU始终需要处于工作状态。通过设计尽可能减少软件服务量的中断驱动型外设,可以让CPU在大多数时间内都处于待机或空闲模式。此外,系统设计人员选择的MCU还应拥有ADC自动输入通道扫描功能、硬件转换开始触发器以及DMA数据传输机制等。这些特性还可将重复性数据采样实现自动化,并最小化CPU的运行时间。图3 对于MCU的电源效率而言,两个时钟比一个更好MCU 的时钟系统也可在省电方面发挥重大作用。图3显示了单个晶振的双时钟运行情况。对于MCU的电源效率而言,两个时钟比一个更好。MCU 的低功耗外设使用低频辅助时钟(ACLK)。低频、低功耗操作通常使用32kHz的外部振荡器,可支持实时时钟功能性。高速度的数控振荡器(DCO)可作为由CPU和高速外设使用的主系统时钟(MCLK)源。除通过采用某些外设的低速时钟实现省电之外,TI 的 MSP430MCU还片上集成了超低功耗振荡器(VLO),可作为ACLK的时钟源。在待机功耗操作模式下(LPM3),ACLK 仍保持运行且启用所有中断,这时 MSP430 器件的典型流耗还不足 1μA。此外,DCO 能够在不到 1μs 的时间里进入工作状态并完全稳定下来,且无须中间步骤。这就实现了“即时启动”的高性能处理功能,而不像采用第二个晶振或双速启动那样需要较长的启动时间。这不仅能节省时间,同时还有助于降低功耗。双处理器电源如前所述,诸如加速器、专用通信以及网络外设等的集成功能会导致DSP在执行简单功能时无谓耗费电力。对某些功能而言,MCU 比DSP更适用,例如,保持实时时钟工作或者管理电池充电程序等。将上述任务交由MCU完成有助于更好地利用DSP的 MIPS 速率预算,这非常重要。双处理器架构的优势非常明显。例如,假定某系统依赖高端处理器来执行监管任务,那么电池使用寿命可能只有几天的时间。具体地说,典型的NiMH AA电池的额定电量为2500mAh。如果平均电流仅为1mA,那么耗完AA电池的电量需要119天。如果将平均电流提高到10mA,则电池只能工作12天就没电了。通过采用双处理器系统,可通过以下系统或监管功能实现电源优化:保持实时时钟;供电排序;电源监控与复位;键区或人机接口管理;电池管理;显示管理。在描述MCU低功耗技术时,已经探讨了实时时钟功能。将上述原理作简单的扩展发挥,便可用MCU来为DSP提供时钟。管理DSP的电源众多现代DSP都拥有必须进行上电排序才能实现正常运行的多条电源轨。通常情况下,这些电源轨包括内核电源轨、DDR 电源轨以及 I/O 电源轨等。尽管可用固定功能的器件来执行电源排序,但却不能扩展支持其他功能。图4 采用MCU实现的DSP电源排序如图 4 所示,采用小型低功耗微控制器,如TI的MSP430 MCU,取代固定功能器件就能实施排序、监控与监管等功能,从而实现主处理器(如TI的TMS320C550x DSP)的电源管理。MSP430MCU上的软件例程可实现以正确的顺序启用C550x DSP稳压器电路。MSP430采用其内部ADC 来确认电源轨达到适当电压的时间。如果不需要C550x,则可采用稳压器的关断特性将主处理器关闭。 事实上,MCU可通过直接与VXO通信来控制电压,或通过与PLL直接通信来控制频率,从而同时实现对DSP电压与频率的控制。这样做明显的好处在于,DSP完成了计算密集型任务后,MCU 可让DSP进入有效的待机模式。监控进程是双向的,换言之,MCU可探询DSP的繁忙程度。在此模式下,其可发挥智能控制器的作用。另一方面,DSP的内部监控功能也能发挥作用。由于既可对MCU进行读取也能写入,因此DSP可根据应用需要通知MCU时钟的加速或减速。人机接口管理我们可通过与MCU的交互来降低DSP的功耗,避免在内部用DSP来执行简单的任务。不过这种做法的更大好处在于,系统设计人员能将单处理器系统中由DSP执行的一些监管任务交给MCU 来完成。MCU能轻松满足键区操作的相关要求,而且功耗比DSP低得多。例如,仅为500nA的待机电流就比DSP小得多。只有在将按键按下再放开后,我们才向DSP实施中断,通过确保这一点,MCU 可避免按键卡住后造成的电流消耗,而这种按键卡住不动的情况在某些手持设备中并不少见。此外,16MHz MCU还能支持用户显示的管理工作。为了进一步提高节能效率,MCU应拥有集成的片段型LCD驱动器,以处理四个多路复用的数据流。此外,MCU还应具备相关集成功能,以能通过标准SPI、UART、I2C 或RF等与外设通信,而且还应在无须轮询的情况下即能自动从低功耗模式启动。电池充电与充电管理通常是采用固定功能器件可执行的另一个监管功能,不过该任务也可由微控制器来完成。我们可用微控制器的 ADC 来测量电压;用定时器和软件来管理充电;并用脉宽调制输出来提供充电波形。微控制器厂商的应用报告通常会介绍其产品如何完成上述功能,而且还会提供代码样例。例如,用户可从 TI 网站上下载编号为 SLAA287、题为“采用 MSP430 的锂离子电池充电器解决方案”的应用报告,其中介绍了 MSP430 产品的相关解决方案。一旦系统分组完成后,还必需将MCU与DSP连接在一起,确保其彼此间正常通信。MCU 与外设交互过程中所需的大部分数据都要与DSP共享。当然,这会对MCU的技术规范提出一定的要求。我们应当寻求至少具备 16 个 GPIO 端口的产品,以支持处理器间的通信。此外,还应要求所选产品支持片上SPI 与 I2C 接口,而电池充电功能需要10 位 ADC。在大多数系统中,我们可构建简单的协议,让DSP向微控制器发出基本命令。在某些情况下,如果主处理器与微控制器是相同厂商提供的,那么可以通过应用报告及相关解决方案将二者很好地结合起来。结论DSP在降低功耗方面取得了重大进步,但由于制造DSP的高性能工艺技术所限,要实现应有的作用还比较有限。在芯片处于待机或空闲模式时,它们特别容易受到晶体管漏电流造成的功耗影响。说到底,设计人员需要根据对DSP和/或MCU的计算、测量分析以及两者间的折中平衡来确定到底其应用方案应采用一个处理器,还是结合采用两个处理器。

    单片机 寿命 延长电池 双处理器

  • 基于AT89S51单片机的冲床控制器

    基于AT89S51单片机的冲床控制器

    本文介绍了一种用Atmel89S51单片机仿真PLC控制的方法,设计适合刚性离合器冲床的控制器,介绍了用光电隔离的输入输出电路的基本构成和工作原理,重点介绍了内部键盘显示电路的设计思想,同时给出了冲床控制的电器原理图。 系统硬件配置以AT89S51单片机为核心。AT89S51是一个低功耗,高性能CMOS 8位单片机,片内含4Kb ISP(In-system programmable)可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,内置看门狗(WDT)电路。功能强大的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。采用该单片机设计的冲床控制器,具有以下几个特点: 图1 控制器的硬件结构框图 ● 控制器采用PLC设计的理念,可靠性高,抗干扰能力强。● 面板上6位七段LED显示,既可以用来调节参数,工作时也可以显示计数值。● 模块化设计,体积小巧,便于安装。● 利用AT89S51具有ISP的功能,可现场下载程序以实现可编程控制器的功能。 硬件设计 控制器的硬件结构如图1所示,主要有键盘显示电路、EEPROM电路、掉电检测、程序下载接口、光电隔离输入输出等模块组成。电源模块是用TOP220Y设计的具有+24V和+5V输出的开关电源。当系统断电瞬间掉电检测电路发信号给AT89S51,系统立即把参数和计数值存放到EEPROM电路中。 键盘显示电路如图2所示,为了节省I/O口线,这里复用了P0口的低3位。下面介绍该电路的工作原理:显示时,先置P3.3,P0.0~P0.5为高电平,再依次将显示内容所对应的编码经串入并出的移位寄存器74HC164输出到共阴极数码管,然后把要显示的位选置低,延时1ms,再把该显示的位选置高。只要这种动态扫描的频率足够高,本控制器采用80Hz,由于人眼的视觉暂留特性,就可以实现显示的功能,并没有闪烁的现象。扫描键盘时,把P3.3置为低电平,这时74HC164的输出均为低电平,这样就防止了在扫描键盘时干扰显示。当没有键按下时,读出的P0.0~ P0.2均为低电平,当有键盘按下时,相应输入会读出为高电平,再经延时去抖动法可判断出是哪个键被按下,再转到相应键的功能程序。本控制器的显示扫描、键盘扫描、键的去抖动都是放在定时器中断中完成的。 图2 键盘显示电路结构原理图 光电隔离输入电路如图3所示,输入端子和COM端子之间用无电压接点或NPN开集电极晶体管连接,为了可靠起见,输入电流为7mA,则输入为ON。当输入电流低于1.5mA则输入为OFF。输出电路采用光电隔离的继电器输出,将控制器内部电路与外部电路进行电气隔离,防止外部的干扰。 图3 光电隔离输入输出电路   具体应用 冲床控制接线如图4所示,工作时,面板上的6位数码管显示计数值,当需要设置参数时,按下功能建5秒后,可依次设定单次动作持续时间、需润滑的工作次数、润滑持续时间等参数。 转动选择开关到单次行程位置,滑块处于上死点范围内时,左手右手按钮同时按下,则双联阀得电,滑块往复运动一次,当凸轮转到制动位置时,控制器使双联阀失电,使滑块停在上死点的位置。 图4 冲床控制接线图 当选择开关置于寸动位置时,同时按下左、右手按钮,控制器使双联阀得电,可使滑块动作,松开按钮,控制器使双联阀失电,滑块随即停止。 总结 本文所述的用AT89S51单片机设计的冲床控制器,经试验运行,该控制器的运行可靠、抗干扰能力强,与软件算法设计以及光电保护的配合,可有效防止冲床的连冲,保障了操作人员的安全。另外,AT89S51单片机因其指令系统丰富、小巧、低价、灵活易扩展等独特的优点,在所设计的冲床控制器使整个系统的性价比得以大幅度的提高。

    单片机 at 89 89s s51

  • 基于Proteus的定位系统仿真设计

    基于Proteus的定位系统仿真设计

    引 言    随着单片机技术在工控领域及社会生活的各个方面得到广泛应用,对单片机开发成本及速度的要求也越来越高。按照传统的模式,在整个项目开发过程中,先根据控制系统要求设计原理图,制作硬件电路;然后进行软件编程,通过仿真器对系统硬件和软件调试;最后将调试成功的程序固化到单片机中。这一过程的主要问题是应用程序需要在硬件完成的情况下才能进行调试。虽然有的软件可以进行模拟调试,但是对于一些复杂的程序(如人机交互程序),在没有硬件时,界面没有真实感,给调试带来很大困难。在软硬件的配合中如果需要修改硬件,就必须重新制板。纵观整个过程,无论是从硬件成本上,还是从调试周期上,传统开发模式的效率都有待提高。能否只使用一种开发工具,兼顾仿真、调试、制板以及最大限度的软件模拟来作为单片机的开发平台,从而取代编程器、仿真器、成品前的硬件测试等。    英国Labcenter Electronics公司推出的Proteus 6ISIS是专用于开发单片机的集成软件,用户可以在该软件上简捷、高效地设计出各种模拟电路、数字系统、专用IC及各种芯片。在仿真过程中Proteus 6 ISIS给我们以最大程度上的视觉感受,为电子产品的开发和电子系统工程提供了一种全新的手段和便捷的途径。本文用上述软件对定位系统进行了仿真和设计。 1 定位系统原理及构成1.1 定位系统原理    定位系统的基本原理是:每颗GPS卫星时刻发布其位置和时间数据信号,用户接收机测量每颗卫星信号到接收机的时间延迟,根据信号传输速度就可以计算出接收机与不同卫星之间的距离。    GPS模块接收卫星的定位信号运算出自身的位置(经度、纬度、高度),时间和运动状态(速度、航向),每秒1次送给单片机并存储,以便随时提供定位信息。由单片机控制定位系统的协调工作。1.2 定位系统硬件构成    定位系统是基于AT89C52和GARMINGPS25LP的定位测量系统。其基本功能可分为单片机对GPS器件的控制以及显示采集的信息两部分。    系统由3个功能模块构成:    ①单片机系统:采用AT89C52单片机控制GPS的数据读取和数据传输过程,并将数据发送到LCD进行显示。    ②外围电路:一部分是GPS和辅助电路;另一部分是LCD显示电路。    ③C51程序:编写C51程序,实现单片机控制GPS器件完成方位数据的采集,并输出LCD显示。    本系统采用的GPS器件为美国GARMIN公司的GARMINGPS25LP,采用全密封方式,位置精度<15 m,速度精度<0.1 m/s,外形尺寸为46.5 mm×69.5 mm×11.4 mm。GARMINGPS25LP是同类型的GPS OEM板中最常用的一款,在飞机领域使用很多。GARM-INGPS25LP有其独特的输出/输入语句格式。在调试GPS时,通过串口和GPS板进行数据交换,由于GPS输出的也是RS232信号,因此可以直接与计算机进行通信。通过串口通信程序进行读/写控制,对GPS进行设置和调试。1.3定位系统程序设计    该程序主要功能有两方面:一方面是使用单片机与GPS模块进行通信,获得当前的方位数据;另一方面是单片机将所得的数据处理成数值,并发送到液晶显示模块进行显示。    此系统的函数分为4类:主程序、GPS的数据通信程 序、液晶驱动程序以及液晶显示程序。 void show(void)。    单片机对GPS模块的串行数据接收、整理,以及向RAM中写入数据的基本流程如图1所示。 2 定位系统仿真及设计2.1 定位系统程序调试    Proteus是目前最好的模拟单片机外围器件的工具,它可以仿真51系列、AVR、PIC等常用的单片机,及其外围电路(如LCD、RAM、ROM、键盘、马达、LED、ADPDA、部分SPI器件和I2C器件等)。其自身只带汇编器,不支持C语言,但可以将它与:Keil C51集成开发环境连接。用汇编语言和C语言编写的程序编译好之后,可以立即进行软、硬件结合的系统仿真,像使用仿真器一样来调试程序。结合Keil C51和Proteus进行单片机系统的软件设计和硬件仿真调试,既可大大缩短单片机系统的开发周期,又可降低开发调试成本。    Proteus中没有GARMINGPS25LP,但可以通过键盘模拟GARMINGPS25LP输出的数据格式向单片机发出数据。在单片机AT89C52内部通过程序截取有效信息,然后在LCD(采用HIT公司的LM041L)上循环显示虚拟终端模拟GARMINGPS25LP输出的数据,如位置(经度、纬度、高度),时间和运动状态(速度、航向等)。本系统中截取了经度(Longitude)=27.34,纬度(Lati-tude)=34.45,速度(Velocity)=120km/h, 航 向(Course)=10.24时的仿真电路原理图,如图2所示。 2.2 定位系统PCB    Proteus软件本身有PCB设计功能,可以生成多种格式的文件,供相应的专业PCB设计工具调用,从而很方便地进行后续PCB的设计。当仿真调试成功后,可利用Proteus 6 Professional中的ARES 6 Professional进行PCB设计与制作。ISIS和ARES高度集成,PCB封装可以直接从ARES库中提取,引脚信息可以通过虚拟封装工具直接输入。    用Proteus制作PCB通常包括以下步骤:    ①加载网络表及元件封装;    ②规划电路板并设置相关参数;    ③元件布局及调整;    ④布线并调整;    ⑤输出及制作PCB。    虽然库中没有GARMINGPS25LP的引脚封装,但可以通过自建库或选择相近封装。 结 语    本文介绍了一种基于Proteus软件的单片机系统设计与仿真的实现方法。单片机定位系统的实际开发过程充分说明,采用该方法可以大大简化硬件电路测试和系统调试过程中,电路板制作、元器件安装、焊接等过程。使用该方法进行系统虚拟开发、成功之后再进行实际制作,无疑要以提高开发效率,降低开发成本,提升开发速度,对单片机系统开发具有实用意义。

    单片机 定位系统 proteus 仿真设计

  • 基于MSP430单片机的开关稳压电源设计

    基于MSP430单片机的开关稳压电源设计

    1 引 言 MSP430系列单片机是美国TI公司生产的新一代16位单片机,是一种超低功耗的混合信号处理器(MixedSignal Processor),它具有低电压、超低功耗、强大的处理能力、系统工作稳定、丰富的片内外设、方便开发等优点,具有很高的性价比,在工程控制等领域有着极其广泛的应用范围。开关Boost稳压电源利用开关器件控制、无源磁性元件及电容元件的能量存储特性,从输入电压源获取分离的能量,暂时把能量以磁场的形式存储在电感器中,或以电场的形式存储在电容器中,然后将能量转换到负载。对DC-DC主回路采用Boost升压斩波电路。 2 系统结构和总设计方案 本开关稳压电源是以MSP430F449为主控制器件,它是TI公司生产的16位超低功耗特性的功能强大的单片机,其低功耗的优点有利于系统效率高的要求,且其ADC12是高精度的12位A/D转换模块,有高速、通用的特点。这里使用MSP430完成电压反馈的PI调节;PWM波产生,基准电压设定;电压电流显示;过电流保护等。 系统框图如图1所示。 3 硬件电路设计 3.1 DC/DC转换电路设计 系统主硬件电路由电源部分、整流滤波电路、DC/DC转换电路、驱动电路、MSP430单片机等部分组成。交流输入电压经整流滤波电路后经过DC/DC变换器,采用Boost升压斩波电路DC/DC变换,如图2所示: 根据升压斩波电路的工作原理一个周期内电感L积蓄的能量与释放的能量相等,即: 式(1)中I1为输出电流,电感储能的大小通过的电流与电感值有关。在实际电路中电感的参数则与选取开关频率与输入/输出电压要求,根据实际电路的要求选用合适的电感值,且要注意其内阻不应过大,以免其损耗过大减小效率采样电路。对于电容的计算,在指定纹波电压限制下,它的大小的选取主要依据式(2): 式(2)中:C为电容的值;D1为占空比;TS为MOSFET的开关周期;I0为负载电流;V′为输出电压纹波。 3.2 采样电路 采样电路为电压采集与电流采集电路,采样电路如图3所示。其中P6.0,P6.1为MSP430芯片的采样通道,P6.0为电压采集,P6.1为电流采集。 电压采集 因为采样信号要输入单片机MSP430内部,其内部采样基准电压选为2.5 V,因此要将输入的采样电压限制在2.5 V之下,考虑安全裕量则将输入电压限制在2 V以下,当输入电压为36 V时,采样电压为:12/(12+200)×36=2.04 V,符合要求。 电流采集 采用康铜丝进行采集。首先考虑效率问题,康铜丝不能选择过大,同时MSP430基准电压为2.5 V,且所需康铜丝需自制。考虑以上方面在康铜丝阻值选取上约为0.1 Ω。 3.3 PWM驱动电路的设计 电力MOSFET驱动功率小,采用三极管驱动即可满足要求,驱动电路如图4所示。 由于单片机为弱电系统,为保证安全需要与强电侧隔离,防止强电侧的电压回流,烧坏MSP430,先用开关光耦进行光电隔离,再经三极管到MOSFET的驱动电路IR2101。MSP430产生的PWM波,经过光耦及后面的IR2101芯片,在芯片的5管脚输出的PWM波接到MOSFET的门极G端,使其工作。IR2101是专门用来驱动耐高压高频率的N沟道MOSFET和IGBT的。它是一个8管脚的芯片,其具有高低侧的输出参考电平。门极提供的电压范围是10~20 V。 3.4 保护电路的设计 过电流保护是一种电源负载保护功能,以避免发生包括输出端子上的短路在内的过负载输出电流对电源和负载的损坏。当电流大于限定值的时候,使用继电器常闭触点断开进行保护。用MSP430单片机控制继电器的常开常闭的吸合,实现自动恢复电路工作的功能。如图5所示: 4 软件设计 MSP430单片机内部具有高、中、低速多个时钟源,可以灵活地配置给各模块使用以及工作于多种低功耗模式,大大降低控制电路的功耗提高整体效率;430F449有ADC12模块能够实现12位精度的模数转换、硬件乘法器以及带有PWM输出功能的TIMERA和TIMRB定时器,使得整个电路不需要任何扩展就能完成对电源输出电压、电流的实时采集、PI控制、PWM输出;同时MSP430F449带有内部LCD驱动模块,直接将液晶显示屏连接在芯片的驱动端口即可,电路结构极为简单。本设计的软件采用C语言编写,整个程序包括的子模块有:键盘控制模块、A/D电压和电流采集模块、PI控制模块和PWM波发生模块等几个部分,软件流程图如图6所示。 键盘控制和显示模块:通过键盘可实现电压参考值的设定,电压电流的切换显示。通过LED实现参考电压的设定与显示,通过LCD显示电压和电流的采集值。 AD电压和电流采集模块:通过MSP430单片机的12位A/D转换模块,对系统输出的电压值和负载电流进行采集。 PI控制模块:此模块用来对系统输出电压进行控制,使输出电压稳定。其控制原理如图7所示。 PWM波发生模块:利用MSP430单片机的TimerB定时器的比较功能,产生驱动MOSFET的信号。 5 实验结果分析 通过单片机MSP430软件设计,对PI调节选定合理参数及开关频率,能达到稳压的效果,使以上前3个指标能达到良好的效果。而能否对纹波电压限制,主要在于整流滤波电路中电容,因此高耐压的支撑电解电容的选取是重要的。 在选定开关元件之后,效率主要受开关频率的影响、储能电感的内阻以及线路中其他器件损耗影响,因此在器件选取上要注重其损耗的高低。对此系统的进行综合测试,结果如表1所示。 6 结 语 本开关稳压电源设计采用低功耗的TI公司的16位单片机MSP430F449片机最小系统板为控制核心,以PWM控制技术,闭环PI调节,高精度的12位A/D转换为基础,完成了采样值显示与设置电压值的功能和参数指标。实验结果表明:通过单片机MSP430软件设计,对PI调节选定合理参数及开关频率,能达到稳压的效果。

    单片机 msp 430 单片机 开关稳压

  • 基于AT89S52的数据采集系统

    基于AT89S52的数据采集系统

    1 引言    数据采集是目前一种流行且实用的技术。经调查,目前数据采集器的市场需求量大,以数据采集器为核心构成的小系统应用广泛,因此开发高性能的数据采集器具有良好的市场前景。本文以实验室数据采集、工业现场数据采集、野外数据采集为主要方向,设计一款结构简单、操作方便、高性价比、具有显示、记录存储功能的数据采集系统。 2 数据采集系统设计2.1 系统硬件设计     数据采集系统硬件电路包括单片机控制、监控、A/D采样、显示驱动、数据存储、数据传输等模块。图1所示为数据采集系统组成框图。2.1.1 单片机控制模块    本数据采集系统的单片机控制模块选用AT89S52。AT89S52具有40个引脚,8 KB Flash片内程序存储器,1个全双工串行通信口,内置看门狗(WDT)电路。 2.1.2 监控模块    测控系统中存在电源开断、瞬时电压不稳定等因素,造成系统死机、信息丢失、运行不稳定等故障。为实现系统安全可靠、稳定、实时运行,须在测控系统中加入监控模块。系统的监控模块采用X25045,该器件具有电压监控、看门狗定时器和E2pROM等功能,可以直接与微控制器的I/O端口串连。2.1.3 A/D采样模块    A/D采样模块采用TLCl543。TLC1543是TI公司采用SPI技术的模数转换器,具有输入通道多、高速、高分辨率、高性价比,易与单片机接口等特点。TLC1543的控制端CS、I/O CLOCK、ADDRESS和数据输出端DATAOUT遵循串行外设接口SPI协议。虽然51系列单片机未内置SPI接口,但仅需通过软件模拟SPI协议即可实现通信。TLC1543和微处理器的串行接口之间可通过一个4线接口高速传输数据。2.1.4 显示驱动模块    系统显示驱动模块采用PS7219。PS7219是一种高性价比的多位LED显示管理器,采用同步串行外设接口(SPI),可与任何单片机相连,并可同时驱动8位LED。2.1.5 串行通讯接口电路    在工业测控系统中,常用于51系列单片机采集现场模拟量、开关量,而PC机用于监控整个控制现场。这两者间的数据传输或所构成的局部网络、多用户系统和分布式控制系统一般采用串行通信,PC机为主机,单片机为从机。本系统数据传输采用异步串行通讯,采用Maxim公司的典型串行通信接口器件MAX232ECP实现数据传输。2.1.6 数据存储模块    为了实现系统数据定时采集和按日期保存数据,扩展一片实时时钟日历器件SD2001E。该器件具有I2C总线接口,内置实时时钟所需电池、晶体振荡器、电源管理等电路。系统掉电时可保证时钟正常运行。SD2001E无需外围元件,即可构成高精度实时时钟及具有256 KB非易失性SRAM的数据存储电路。    SD2001E采用24引脚DIP封装。SD2001E的主要特性:年、月、日、星期、时、分、秒的BCD码输入/输出;I2C总线接口(包括实时时钟部分和SRAM部分);自动日历到2099年(包括闰年自动换算功能);内置晶体振荡器,出厂前已对时钟校准,保证精度为±4×10-6,即时钟年误差小于2 min;低功耗,典型值为1.0μA(VDD=3.5 V);工作电压为3.0 V~5.5 V:可设置两路闹钟输出及1 Hz~32 768 Hz的方波信号输出;可设置每分钟固定中断输出或选定频率固定中断输出;内置充电电路和充电电池,电源管理电路以及稳压电路和电池掉电检测电路;内置256 KB的非易失性SRAM,其擦写次数为100亿次,且无内部写延时。    本采集系统设计利用SD2001E实现以下功能:    (1)实时时钟日历。SD2001E可提供高精度的时钟及日历功能,以满足具有定时数据采集、输出控制、数据保存以及定时报警等功能的嵌入式系统需要,同时也可以为系统提供时间以及日期显示功能。    (2)数据保存。利用SD2001E片内32 KB、擦写数为100亿次的高性能NVRAM,无需考虑存储器的擦写寿命及数据存储的可靠性问题。因而,SD2001E为那些需要频繁读写数据的应用提供了解决方案。    (3)定时输出。当系统需要以分钟为基本单位定时输出时(如采集周期固定的多路数据采集、巡回检测系统等),可将SD2001E状态寄存器的INT1ME位置“1”,INT1FE位置“0”,以选择为每分钟边沿中断输出或将INT1ME、INT1FE同时置“1”选择为每分钟固定中断输出。通过单片机的计数器或中断次数软件计数的方法,可得到以分钟为单位的任意时间输出。    SD2001E与AT89S52单片机的硬件连接电路如图2所示。由于AT89S52没有I2C总线,因此采用P2.0和P2.1接口线模拟I2C总线。SD2001E内部SRAM的I2C总线接口SDAE与SDA并联,SCLE与SCL并联。 2.2 系统软件设计    利用ASM51汇编语言编写数据采集与数值计算、数据显示、数据存储和数据通讯软件;采用可视化语言VB6.0设计上位机软件,编写上位计算机数据接收和处理软件。    系统主程序为数据采集系统的主体部分,它由自检与初始化、A/D转换程序、显示驱动、监控程序、按键程序、数据上传通讯、数据定时存储等模块组成。首先是系统初始化。当系统运行正常,则开始运行数据采集软件的主程序,使用默认配置参数设定系统的采集通道数,完成数据采集、数据显示、数据传输及数据定时存储等功能。系统软件设计流程图如图3所示。 3 结束语    本数据采集系统选用了工业级器件,能够适应油田野外恶劣环境,保证系统在宽泛的电压范围内正常工作,低功耗;实时时钟日历器件SD2001E能实现数据定时采集和按时间日期保存数据。该数据采集系统不仅能独立工作,还可进一步上传处理数据,扩展系统。

    单片机 at 89 89s s52

发布文章