AD7190应用论文_第1页
AD7190应用论文_第2页
AD7190应用论文_第3页
AD7190应用论文_第4页
AD7190应用论文_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第3章 电路硬件设计3.1系统总体设计如何通过热电偶将温度信号转化为电压信号,再得到正确的数字信号,是本文面临一大难点。得到数字信号后,还需要对信号进行计算、显示、存储与传输。3.1.1系统硬件结构框图多路复用adc电气隔离微控制器eepromrs485isp在线烧写dip开关电气隔离rs232图3.1 控制部分结构图硬件系统的结构图如图3.1,从功能上可划分为采集部分与控制部分,在结构上以中间的电气隔离为界。采集部分包括多路复用器、adc、电气隔离器;控制部分包括微控制器(单片机)及其外围电路、扩展存储器、通信接口等。3.1.2采集部分为了将热电偶的小幅值电压信号转换为数字信号,我们需要对信

2、号进行放大、模数转换、以及数字信号传输。为了使用单个ad转换器测量多路信号,我们也需要多路复用器。(1)温度信号至数字信号转换热电偶电压信号为mv量级,并且可能出现双极性电压。采集如此微小的信号需要首先对电压进行放大,另外不同种类的热电偶的温差电动势也不同。用自己搭建的放大电路,获得稳定而且精确的放大倍数具有一定困难,更重要的是增益大小不可调。为了获得精确的放大信号,以及能够适应不多种电偶,决定选用集成了可编程增益放大器(pga)的adc作为信号采集的核心。pga具有高精度的增益倍数,一致性好,可通过程序设定增益大小。(2)多路复用器在离线应用场合下不方便布置多个采集设备,多路采集能力是必须的

3、功能。多路复用器是一个多对一的模拟开关,通过数字信号控制哪一路导通,而其他端口出于高阻状态。通过分时复用,就能使用单个adc转换多路模拟信号。(3)电气隔离电气隔离能够保护被测电路和测试电路以及操作人员的安全,例如被测电路上遭遇闪电、放电,或者被测电路不慎与其它电源短路。另外,电气隔离还能减小环境噪声对测试电路地影响,例如电网切换、电机启动和其它电网噪声引起的干扰,高频电磁加热设备的辐射干扰。在火灾实验中,经常遇到设有强电动力设备、电磁加热设备、电打火或者距离变压器、配电柜等强电网噪声设备的场合,热电偶也经常被固定到金属外壳上。3.1.3控制部分(1)微控制器与外部存储微控制器是控制部分的核心

4、,它负责控制采样,数据处理、存储与通信。具体包括设置adc相关参数,控制采样率;对采集到数据的格式进行整理,简单计算;按照一定的格式存储或读出;与上位机通信。外部存储器为离线工作模式提供存储空间,应具有足够的空间和写入速度,并且具有掉电不易失的能力。(2)数据通信接口为采集模块与pc间通信提供通信,应具有匹配的协议与电平型号。协议由微控制器负责,接口电路负责电平信号转换。(3)供电这一部分供电要满足整个模块的能耗需求,并且需要适应宽幅输入电压,并具有高转换效率、低输出纹波噪声,具有相应保护电路。3.2主要芯片选型3.2.1采集部分(1)模数转换器(adc)在集成pga的adc中,sigma-d

5、elta型adc具有超高分辨率,低噪声,高增益倍数,高输入阻抗,低价格的特点,特别适合热电偶电压信号,电桥信号等低速高分辨率小信号的采集应用。在现有商品化多路热电偶温度采集模块中被广泛应用。ad71907是美国adi公司于2009年最新推出的新一代高速、高分辨率sigma-delta adc,其24bit的分辨率、最高4.8khz的采样率、最低7nv的超低噪声,在同类产品中性能突出。相比广泛用与商品化热电偶采集模块的前辈ad7714等,由于新技术的采用,其性能指标更高,功能更强大,价格却更低。下表为icpcon i-7018采用的ad7712与小麻雀rsm-02采用的ad7714与ad7190

6、的主要参数对比:表3.1 不同型号ad主要参数对比 型号ad7190ad7712ad7714共同特性24 bits no missing codes0.0015% nonlinearitypga gains from 1 to 128low gain drift; low gain error; low noisecan be configured as fully differentialthree-wire serial interface;spi, qspi, microwire and dsp compatible最大采样率4.8khz1khz1khz1khz采样率下有效位数19bit

7、s960hz10bits1khz10.5bits1khz50hz噪声抑制120db100db100db其它特性input bufferedtwo fully differentialbridge power downfour digital outputvoltage attenuationinternal referenceinput bufferedthree fully differentiallow current (350ma)最低价格(1k)$5.9$15.89$8.38得益于技术的发展,新产品的性能更高,价格却更低(按时间先后:ad7712(1998年),ad7714(2004年

8、),ad7190(1998年)。从表3.1的对比可以看出,ad7190最突出的优点是高速采样模式下有绝对优势的有效分辨率。对于多路热电偶数据采集,每次切换输入通道后需要对数字滤波器进行重新建立。例如对与ad7190来说,其960hz采样率模式下的建立时间为4.17ms,等效239.8hz,即如果对8路信号循环采样,每路的采样率只有30hz。也就是说对于ad7712与ad7714来说,它们最大只能做到8路30hz的可靠采样,从同时也能看到表3.1,在高采样率下以上二者的有效分辨率远不及16位。即便模块工作在低速模式下,高的ad转换速率能降低各路采样不同时引起的误差。ad7190主要特性如下3rm

9、s noise: 8.5 nv 4.7 hz (gain = 128) 16 noise free bits 2.4 khz (gain = 128) up to 22.5 noise free bits (gain = 1) offset drift: 5 nv/c gain drift: 1 ppm/c specified drift over time 2 differential/4 pseudo differential input channels automatic channel sequencer programmable gain (1 to 128) output dat

10、a rate: 4.7 hz to 4.8 khz internal or external clock simultaneous 50 hz/60 hz rejection 4 general-purpose digital outputs power supply avdd: 4.75 v to 5.25 v dvdd: 2.7 v to 5.25 v current: 6 ma temperature range: 40c to +105c interface 3-wire serial spi, qspi, microwire, and dsp compatible schmitt t

11、rigger on sclk applications weigh scales ,strain gauge transducers ,pressure measurement ,temperature measurement ad7190结构图如下,封装为24-lead tssop。图3.2 ad7190结构图ad7190除了优秀的精度与采样速度外,其附加外设也十分便利;内部集成15pf电容,使用外部晶振时无需增加谐振电容。特别是p1p4的四个可编程数字输出端口,可通过更改片内寄存器改变其输出状态,这样当需要增添多路复用器时,只需要通过adc的数字输出来控制通道的选通,不需微控制器与多路复用

12、器之间建立直接通信。如此在隔离应用的设计时,大大减少了隔离器件的数目,减小了布线压力,提高系统可靠性。同时ad7190集成了温度传感器,可直接作为热电偶的冷锻补偿。(2)电压基准根据ad转换的原理 其中:n电压数字化后的值; vx待测电压值;gain放大倍数;vref参考电压;nadc的最大分辨率;可见电压基准对转换精度的影响也是决定性的。图3.3 mc1403 dip8封装mc14038是美国摩托罗拉公司生产的高准确度、低温漂、采用激光修正的带隙基准电压源。dip8封装引脚排列如图3.3所示。mc1403主要特性如下:output voltage: 2.5 v25 mvinput volta

13、ge range: 4.5 v to 40 vquiescent current: 1.2 ma typicaloutput current: 10 matemperature coefficient: 10 ppm/c typicalguaranteed temperature drift specification equivalent to ad580standard 8pin dip, and 8pin soic package陶瓷封装的mc1403具有极高的漂移稳定性,典型温漂特性1 ppm/c。mc1403外围电路简单,只需在电压输出脚并联一个解耦电容,抗噪声能力很强。(3)多路复

14、用器利用多路复用器可以使用单个ad转换单元分时采集多路模拟信号,代价是降低每一路的采样率,并引起采集时间误差。常用多路复用器有继电器式与模拟开关式。继电器式具有极低的导通电阻,并与控制电路隔离,可通过任意极性信号,常用于大电流或者超高精度采样的应用中,但其切换速度低,占用体积与能耗巨大。模拟开关式结构简单体积小,切换速度高,也可具有很低的导通电阻,能耗低。可用于高精度高速信号的切换。本文设计中adc的输入阻抗很高,故不需要低导通电阻特性。考虑到还需要设置一级rc滤波,滤波电阻可直接利用74hc4051是单8通道数字控制模拟电子开关,有三个二进控制输入端a、b、c和inh输入,具有低导通阻抗和很

15、低的截止漏电流。幅值为4.520v的数字信号可控制峰值至20v的模拟信号。例如,若vdd+5v,vss0,vee-13.5v,则05v的数字信号可控制-13.54.5v的模拟信号。这些开关电路在整个vdd-vss和vdd-vee电源范围内具有极低的静态功耗,与控制信号的逻辑状态无关。当inh输入端“1”时,所有的通道截止。三位二进制信号选通8通道中的一通道,可连接该输入端至输出。74hc4051具有低导通电阻(ron)特性:80 (typ) vcc-vee = 4.5 v70 (typ) vcc-vee = 6.0 v60 (typ) vcc-vee = 9.0 v其阻值接近100,配合0.1

16、uf电容可构成适用ad7190的典型rc滤波器。(4)电气隔离电气隔离包括电源隔离与信号隔离。电源隔离一般使用隔离变压器,而信号隔离具有多种方式,最常见的信号隔离方式是光耦隔离。光电耦合器将电信号转换为光信号,接收端再将光信号转化为电信号。信号单向传输,输出端无法影响输入端,实现完全电气隔离。光耦隔离应用广泛,但其输出信号表现为阻值变化,需要上拉电阻转化为电压信号。其边沿时间长,不够陡峭,使得一些数字端口不能正常识别是信号,而且其输出信号与输入信号极性相反,故还需添加反相器,使得电路复杂化。icoupler磁耦隔离器是基于芯片尺寸变压器的磁耦合器,与传统光耦合器中采用的发光二极管(led)和光

17、电二极管不同,icoupler磁隔离技术通过采用晶圆级工艺直接在片上制作变压器。icoupler磁隔离可以在低成本条件下实现多通道及其他功能集成。icoupler磁隔离变压器采用平面结构,在晶圆钝化层上使用cmos金属和金构成。金层下有一个高击穿的聚酰亚胺层,将顶部的变压器线圈与底部的线圈隔离开来。连接顶部线圈和底部线圈的cmos电路为每个变压器及其外部信号之间提供接口。晶片级信号处理提供了一种在单颗芯片中集成多个隔离通道以及其它半导体功能的低成本的方法。icoupler磁隔离技术消除了与光耦合器相关的不确定的电流传送比率、非线性传送特性以及随时间漂移和随温度漂移问题;功耗降低了90;并且无需

18、外部驱动器或分立器件。adum5401是三出单入共四路磁隔离芯片,它更是集成了基于isopower技术的电源隔离功能,可进一步简化设计,提高电路性能与可靠性。adum5401a具有2.5kv的隔离能力,最大1mhz的数据通信能力,可适应3.3v或5v电压输入输出,16-lead, wide body soic封装。3.3.2数字部分(1)微控制器(mcu)考虑到系统需求与功耗,8位单片机完全符合设计需要。目前8位机种类繁多,包括经典的ms-51系列、51兼容系列、pic、stm8、avr等。其中avr系列单片机性能出众,应用广泛,我也具有丰富的开发经验。avr系列单片机具有以下优势9 哈佛结构

19、,具备1mips / mhz的高速运行处理能力; 超功能精简指令集(risc),具有32个通用工作寄存器,克服了如8051 mcu采用单一acc进行处理造成的瓶颈现象; 快速的存取寄存器组、单周期指令系统,大大优化了目标代码的大小、执行效率,部分型号flash非常大,特别适用于使用高级语言进行开发; 作输出时与pic的hi/low相同,可输出40ma(单一输出),作输入时可设置为三态高阻抗输入或带上拉电阻输入,具备10ma-20ma灌电流的能力; 片内集成多种频率的rc振荡器、上电自动复位、看门狗、启动延时等功能,外围电路更加简单,系统更加稳定可靠; 大部分avr片上资源丰富:带e2prom,

20、pwm,rtc,spi,uart,twi,isp,ad,analog comparator,wdt等; 大部分avr除了有isp功能外,还有iap功能,方便升级或销毁应用程序其中高端的mega系列已逐渐成为主流,具有极高的性价比。通过对比以前做过的类似设计,估算程序空间需求在8kb以下,为了保留进一步开发的空间,决定选用具有16kb flash的atmega16作为微控制器。除了完全继承avr单片机的优势外,其它主要特性有:工作于16 mhz 时性能高达16 mips只需两个时钟周期的硬件乘法器16k 字节的系统内可编程 flash,擦写寿命: 10,000 次512 字节的eeprom,擦写

21、寿命: 100,000 次1k 字节的片内sram32 个可编程的i/o口40 引脚pdip封装 , 44 引脚 tqfp 封装,与 44 引脚mlf封装工作电压:4.5 - 5.5v(2)外部存储器作为离线数据采集的核心部件之一,外部存储器的选型十分重要。eeprom具有寿命长,擦写操作简单的特点,可单独对指定字节进行写入修改,有利于及时保护数据。其中24cxx系列应用广泛,采用iic总线接口,可方便实现容量扩展。单一总线上,通过设置不同的器件地址,可使用多片24cxx芯片构成最大2mb的存储空间,若按8路50hz 16b采样,最大可存贮327.68s的数据,对于不到3s的自由落体过程绰绰有

22、余。本文采用的型号为24c256,具有单颗256kb的容量、64b分页、100,000次擦写、40年数据保存能力、5v供电、dip-8封装。(3)通信接口串口是与pc进行低速通信最简单方法之一。pc上串口为rs232电平,故使用max232将单片机的cmos电平与其匹配,使得模块可以直接与pc相连,而不必通过额外的电平转换器。rs232电平无法构成总线,这样当在线模式下扩展多个模块共同工作时,通信十分不便。而rs485使用差分信号,总线最多可允许128个设备,在半双工模式下最少尽需要2根线。由于需要与其它采集模块以及pc相连,电气隔离的功能是必须的,这样当单个模块遭遇雷电、放电等危害时不会违纪

23、pc及其它模块。adm2483是采用icoupler磁隔离技术的485接口芯片,同时集成了信号隔离与电平转换功能,仅需配合一个隔离电源,就可构成完整的隔离485接口。其最大波特率可达500k,2.5kv的隔离能力,5v和3v适应,16-lead, wide body soic封装。(4)电源在离线应用下,能源有限,同时其它设备可能已经存在供电。故对电源就特别要求高转换效率与宽电压输入,这样就可提高电池的续航并且能方便的与其它设备共用电源。另外由于采集部分与控制部分电气隔离,总电源的纹波要求就大大降低了。开关电源能很好的满足以上要求。lm2575系列开关稳压集成电路是美国国家半导体公司生产的1a

24、集成稳压电路,它内部集成了一个固定的振荡器,只须极少外围器件便可构成一种高效的稳压电路,可大大减小散热片的体积,而在大多数情况下不需散热片;内部有完善的保护电路,包括电流限制及热关断电路等;芯片可提供外部控制引脚。是传统三端式稳压集成电路的理想替代产品。lm2575-5t具有845v的宽幅输入适应能力,高于75%的转换效率,额定电流1a,振荡频率54khz,最大稳压误差4%,to-220封装;隔离电源多为模块化产品,本文使用了金升阳公司出品的b0505s-1w型dc-dc电源模块,5v输入5v输出,额定电流200ma,隔离电压3kv。3.3原理图设计3.3.1 电路设计工具-eagle软件介绍

25、eagle是easily applicable graphical layout editor的简写,现隶属于cadsoft公司。eagle是强大的原理图与pcb编辑器,如其名所言,它也具有极好的易用性。相对protel少则几百兆,动则几个g的庞大身躯,eagle 5.7在仅仅30m的安装文件内,集成了了原理图和pcb编辑器、cad生成器、用户语言接口与极其丰富的元件库。其自动检错与自动布线功能强大而且由用户方便的更改规则。eagle简单,但是对于制作简单电路来说,必要的功能一个都不少。最为重要的两点是:(1)eagle具有免费版本,具备制作简单电路的完整功能。(2)eagle具有强大的库编辑

26、器与数量众多的第三方库文件。基于其具有免费版本的特点,国外采用该软件的团体与个人数量众多,各类元件的库文件也被广泛制作并分享。相对与元件库匮乏的protel系列软件来说,eagle的第三方库支持拥有绝对的优势。第三方库元件库大大节省了开发成本,经过他人实际应用过的封装也能保证正确性。软件的界面如下图3.4 eagle control panel图3.5 eagle schematic editor图3.6 eagle pcb editor本文中所制作的原理图与pcb均使用该软件3.3.2采集部分采集部分的原理图设计参考了adi公司提供的应用笔记,如图3.710。图3.7 24位隔离式单电源输入

27、电路电路描述: 传感器输出通常是小信号,例如热电偶或rtd等。本设计允许将这些小信号输入直接与ad7793的输入相连,后者具有最大增益为128的内部pga。该设计可以用作非环路供电smart发射器的完整解决方案。adum5401是一款采用adi公司icoupler技术并集成isopower技术的四通道隔离器。它可用来在现场端与系统微控制器之间实现隔离,隔离额定值为2.5 kv(均方根值)。adum5401还集成了dc-dc转换器,可在5 v或3.3 v时提供500 mw的稳压隔离电源。本设计利用adum5401提供的5 v电压为输入模块上的所有模拟电路供电。所有四条数据线都得到利用:三条用于发

28、射, (cs, sclk, din) 一条用于接收(dout),这些线与标准spi接口相连。此电路为adi公司提供的24bit sigma-delta型adc经典应用,本文采用的ad7190同样适用该电路。采集部分的结构参考此电路,同时也针对应用的特点与实际测试做出了大量修改,下面针对各功能模块进行了详细的设计。(1)模数转换模拟-数字转换电路是整个系统设计过程中最重要的一个环节,其相应、精度、稳定性一定程度上决定了整个系统的性能。实现这一功能的核心是模数转换器(adc),长久以来adc芯片的发展都得到了各厂家的重视。近年来集成可编程放大器(pga)的sigma-delta型adc,成为温度、

29、压力等低速小信号测量的主流技术之一。ad7190是美国adi公司力推的新一代高速、高精度、低功耗sigma-delta型adc,与现有成品相比具有更高的指标与更低的价格。该芯片设计非常人性化,虽然因为出品晚而应用不多,但开发难度不大,实际也达到了令人满意的效果。除了选用高性能的adc芯片外,adc外围电路的设计也对转换精度有着至关重要的影响。参考rsm-02小麻雀热电偶温度采集模块的设计,输入信号的滤波处理与过压保护电路如图3.8。通过串接在输入线路上的两个100电阻与并联的三颗电容,组成了rc滤波电路。实际测试中发现电容c6值选取偏小,在较强电磁干扰的情况下采集结果被明显干扰,更换为0.1u

30、f后干扰被基本消除。输入信号的负极通过一个连接到参考电压vref的500上拉电阻实现电压偏置,如此可保证正常输入信号维持在viso与gndiso之间,避免出现输入信号偏离供电电压之外引发无效的转换。d4、d5两颗二极管作为过压保护,当输入信号上电压大小超过安全限定时,电流通过这两个二极管被安全的泄放,从而保护了转换电路的安全。该电路的输出端直接连到adc的对应引脚上,以供调试使用,正常输入信号经由多路选择器,并共用部分电路。图3.8 rc滤波电路及过压保护adc外围电路的设计如图3.9,得益于优秀的设计,ad7190的外围电路较为简单。外置晶体振荡器比集成振荡器精度更高,可以提供更高的工频干扰

31、抑制能力。特别主注意模拟地与数字单独连接,各自配有解耦电容。参考电压电路参照经典设计,在输出端并联了一个解耦电容。图3.9 adc与电压基准电路(2)多路复用图3.10 多路复用器电路74hc4051工作在5v单电源模式下,其典型导通电阻为70,可替代rc滤波中的电阻。图3.10展示了多路复用器的电路设计,其中二极管、偏置电阻与图3.8 rc滤波电路及过压保护相同。为了方便布线,对信号通道07对应到多路复用器上的顺序进行了调整,在编写固件时会将多路复用器通道重新映射以对应实际接线。(3)电气隔离与采集部分供电此部分电路参照adi公司的应用笔记。但实际调试中发现应用笔记提供的电源滤波方案并不合适

32、。图3.7 24位隔离式单电源输入电路推荐输入输出电源与地线都加入lc滤波,我在最初的设计中遵循了此规则。但调试中发现,虽然电源上纹波较小,数字接口上却有明显的噪声。由于单片机spi与在线烧写(isp)接口共用部分引脚,强烈的噪声干扰了烧写信号,致使部分烧写操作失败,甚至造成单片机锁死。将地线上的电感短接之后,数字接口上噪声明显减弱,再未出现烧写失败状况,同时电源噪声也为发现明显增大。图3.11为改进后的设计。图3.11 电气隔离器与lc电源滤波电路3.3.3控制部分(1)总电源设计图3.12 开关电源电路lm2575t-5内部集成了一个固定的振荡器产生占空比可调方波(pwm),外部电路如图。

33、主要能量转换器件为电感l5,在pwm高电平时充能。当pwm低电平时,续流二极管d2为电流提供新的通道。输出电压被连接到fb(feedback)引脚,芯片根据fb引脚上电压大小改变pwm占空比从而保证输出电压维持在设定值附近。电容的滤波作用将脉冲电压转换为直流电压。(2)单片机及外围电路图显示的是单片机及其外围电路。左上角为晶体振荡器电路,其下是在线烧写接口。avr的复位电路十分简单,其内部集成上拉电阻与过压保护,最简化的复位电路仅需要一个开关,大量实践应用证明这种设计是可靠的。连接pc4pc7的四路dip开关可以作为模块的状态设置开关,使用内部上拉。pa2pa5提供四路集成adc接口,可做扩展

34、应用。两个外部中断接口int0与int1作为人工输入按键,可作为开始采集与开始传输触发信号。图3.13 单片机及外围电路(3)扩展存储器两个24cxx位置为扩展存储提供接口,其中一个的地址引脚被拉高以在通信时区分。这两片eeprom通过iic接口与单片机通信,同时引出了写保护(wp)引脚,可设置为防止误写入状态。电路如图3.14所示。图3.14 eeprom(4)rs-232与 rs-485通过rs232电平的接口可以直接与pc串口相连,方便调试。max3232可以将cmos电平与rs232的10v电平相互转换,使用电荷泵升压。图中四颗电容即为电荷泵的一部分。电路如图3.15所示。图3.15

35、rs232接口电路rs485可构成总线,为了保护整个采集系统,采用了电气隔离的设计。adm2483兼具电气隔离与电平转换功能,配合b0505s-1w隔离dc-dc模块,即可构成完整的隔离485接口电路。电路如图3.16所示。图3.16 rs485接口电路3.3.3接口定义图3.17为模块接线端子的连接定义,为连接外部装置提供参考。接线端子选用ptr-500型插接端子,与i-7018、rsm-02相同。图3.17 模块接口定义3.4 pcb布线布线时按照功能划分区域。如图3.18所示左下角为电源电路,其上为rs232与rs485接口电路。具有背面铺铜的部分是控制电路,其核心为单片机atmega1

36、6,晶体振荡电路、eeprom、dip开关等布于其周边。图3.18 pcb布线正面图从图中明显可以看到电气隔离的界限,在大约右起1/3处。需要特别说明的是由于8路采集需要16个接口,在同一侧排布的话尺寸太大,故参考i-7018的设计,将其中两路安排在了另一端。这样也可以保证接口与i-7018的接口兼容,具有可替代性。采集部分的左下为电源lc滤波以及spi数字通信接口,右下为多路复用器。adc及其外围电路布设在中部,其上是输入信号的rc滤波电路。在布线过程中,解耦电容尽量靠近ic的电源引脚,以减小噪声。3.5制板焊接使用eagle的cam processor 将完成布线的pcb文件生成gerbe

37、r文件,发送给制板厂家打样,得到pcb空板,实物照片如图3.19与图3.20。购齐所有元件后,对pcb进行了焊接,焊接完成后电路的正面照片如图3.21。使用k型热电偶线自行焊接了几根裸露热电偶,并用于调试。图3.21左侧三根热电偶即为手工焊接的。焊接使用了一台48v直流电源,将电源负极固定于一个导体上(最好是石墨),正极接待焊接热电偶。将热电偶焊接端两根金属丝绞接,快速触碰负极导体,会出现明亮的火光与明显的声响。控制好电压与接触速度,就能焊出牢固而且圆润的焊点。图3.19 pcb实物正面图3.20 pcb实物背面图3.21 焊接完成后实物正面图第4章 离线数据采集软件设计系统能够稳定高效的运行

38、,与软件的编写水平有着极大的关系。再强大的硬件,必须有软件的支持才能发挥其作用。本章介绍单片机固件的开发与上位机软件开发,以单片机固件为主。4.1工具及软件介绍。4.1.1开发环境固件的编辑与编译使用winavr(gcc),语言为c语言。图4.1 winavr(gcc)编辑器界面winavr即windows版的gccavrgcc是linux的唯一开发语言。就嵌入系统应用来说,几乎所有市面上有一定市场份额的8bit以上mcu都有爱好者移植gcc在其上。 gcc的编译器优化程度可以说是目前世界上民用软件中做的最好的,完全用ansic规范写出的超过一万行代码的程序,目前还没有任何一种编译器产生的目标

39、代码能比gcc产生的代码速度更快,但是同时它的bug数量却也可以算作所有民用c编译器中最少的 被移植到windows平台上,整合了各个组件后的windows版gccavr就是winavr。不是ide,自己定制ide的时候就要用到makefile,makefile重要作用就是:指定所用的单片机类型,指定编译的文件,设定编译优化条件等。c语言可读性强,方便移植,已成为嵌入式开发的主流语言。如今使用gcc编译器编译c代码,其执行效率已不逊色于汇编编写的代码。4.1.2编程与调试工具avr单片机的在线烧写功能强大,并且有开源的usb-isp项目。本文使用的在线烧写器(isp)即为参考网络上开源usb-

40、isp项目而自制的工具,如图4.2。烧写软件为志峰软件出品的progisp1.68。图4.2 自制usb-isp烧写线由于对该系列单片机已经十分熟悉,调试大部分通过pc串口,调试工具仅需串口转接线。4.2主程序设计采样率控制基于定时中断,时间间隔准确。在定时中断发生后,启动一次全部通道扫描。数据通过传递数组指针的形式传输,大大节省了内存空间与占用系统时间。通过一个自定义的存储标志来控制是否存储,存储标志在外部中断0的处理函数内置位,并关闭外部中断0。外部中断1触发时,清除存储标志,并将eeprom内数据通过串口全部发送。需要存储时,被存储的数据为采样直接得到的电压值,待发数据发送到上位机后再计

41、算为对应温度。通过串口发出的是具有一定格式的字符串,在上位机进行匹配。单采样的流程图如下图4.3 基于定时中断的主要功能流程图4.3主要功能模块实现avrgcc是基于c语言的编译器,它对单片机内部地址进行了宏定义。其中主要外设寄存器、中断向量地址均与datasheet中一致。4.3.1串口通信由于使用串口作为调试的主要方式,串口通信应首先实现。以串口的初始化函数为例,介绍使用avrgcc的简单语法。void uart_init(void)/usart 初始化 sbi(ddrd,1); /set pin txd as output/usart 8, n,1 pc上位机软件(超级终端等)也要设成同

42、样的设置才能通讯 ucsrc = (1ursel) | 0x06; /异步,8位数据,无奇偶校验,一个停止位,无倍速 ubrrl= (f_cpu/baudrate/16-1)%256; ubrrh= (f_cpu/baudrate/16-1)/256; ucsra = 0x00; ucsrb = (1rxcie)|(1rxen)|(1txen); /使能接收中断,使能接收,使能发送put_s(uart standby);这是一个函数的定义过程,函数名为用户自取,输入参数与返回值都为空(void)。ucsrx,ubrrx均为寄存器名,在编译时被替换为硬件地址。通过类如ucsra = 0x00的赋

43、值语句可以直接更改寄存器的值。通过诸如ucsrb = (1rxcie)|(1rxen)|(1txen)的语句可以按位更改寄存器的值。此函数将串口设置为波特率:由宏定义baudtrate决定数据格式:8位数据,无校验位,一个停止位使能接受中断,当串口接收到一个完整的数据后,触发中断。在这里串口是以8位数据格式发送的,可以是一个字符,也可以是一个8位二进制数。利用基本的put_c函数,可以以二进制形式发送任意格式数据。void put_c(u8 c) /发送采用查询方式while( !(ucsra & (1udre) ); /等待数据寄存器为空udr=c; /发送数据例如要发送一个字符串,null

44、结尾,流程图为图4.4 串口字符串发送流程4.3.2eeprom读写eeprom是体现本设计“离线”应用的基础,基于iic通信的at24c256的基本功能函数如下/发送stop信号void iic_stop(void) twcr = (1twint) | (1twsto) | (1twen); /发送start信号void iic_start(void) twcr= 0x00; /disable twi , when iic not statable,add it. twcr= (1twint) | (1twsta) | (1twen); while (!bv(twcr,twint); /把一

45、个字节数据输入器件, 返回twi状态u8 iic_put(u8 a) twdr = a; twcr = (1twint) | (1twen); while (!bv(twcr,twint); _nop(); return(twsr&0b11111000); /从器件读出一个字节u8 iic_get(void) twcr= (1twint) | (1twea) | (1twen); while (!bv(twcr,twint); return(twdr);利用这些基本函数,即可以使单片机与eeprom间以byte或者page的格式读写操作。at24c256以64byte为一个page,写入与读出

46、pgae的操作流程图如图4.5与图4.6。图4.5 eeprom按页读取 图4.6 eeprom按页写入4.3.3 spi通信接口ad7190采用了spi接口,在与其通信之前需要对单片机的spi进行初始化。spi是单片机常用通信接口,但其设置较复杂。为了移植方便,自行定义了一个针对avr的spi初始化函数。方法是将对寄存器位的设置,转化为对各功能设置的枚举变量的选择。为了方便起见,仅用宏定义制作了伪枚举,使用时不需声明。#define spi_int_en 1#define spi_int_ds 0#define spi_ddr_mf 0#define spi_ddr_lf 1#define

47、spi_mode_m 1#define spi_mode_s 0#define spi_cpol_1 1#define spi_cpol_0 0#define spi_cpha_1 1#define spi_cpha_0 0#define spi_prsc_4 0#define spi_prsc_161#define spi_prsc_642#define spi_prsc_1283/spi init: interupt first bit master.slave cpol cpha prescale/spi_int_en/ds spi_ddr_mf/lf spi_mode_m/s spi_

48、cpol_1/0 spi_cpha_1/0 spi_prsc_4/16/64/128/cpol : sck high when set; cpha : sampling at ending edge when set. void spi_init(u8 spi_int,u8 spi_first_bit,u8 spi_mode , u8 spi_cpol, u8 spi_cpha ,u8 spi_prescale )sbi(ddrb,spi_0cs); /设置对应引脚的状态sbi(portb,spi_miso);spi_cs_ds();sbi(ddrb,spi_mosi); /mosi outp

49、utsbi(ddrb,spi_sck); /sck outputspcr = (128*spi_int + 64 + 32*spi_first_bit + 16*spi_mode + 8*spi_cpol + 4*spi_cpha + spi_prescale );通过这一函数对spi的初始化就变得非常简单直观。例如本文采用的初始化函数为:spi_init(spi_int_ds , spi_ddr_mf, spi_mode_m , spi_cpol_1, spi_cpha_1 , spi_prsc_16 );编译过程中宏定义被自动替换为对应值,然后通过表达式计算出对应的寄存器值。这里初始化参数

50、表示:spi中断不使能,数据高位先发送,主机(master)模式,相位选项cpol=1且cpha=1,时钟为核心时钟的16分频。如要在调试过程中若要改变spi的频率,只需在初始话函数里更改spi_prescale的值即可,该值必须在spi_prsc_4、spi_prsc_16、spi_prsc_64与spi_prsc_128中选择。spi是串行循环通信。主机的发送mosi与从机的接收相连,主机的接收miso与从机的发送相连。当主机提供时钟脉冲sclk时,主机发送寄存器内的数据通过mosi按位发送到从机的接受寄存器,同时从机发送寄存器内的数据通过miso按位发送到主机的接受寄存器。当经过8个或1

51、6个sclk脉冲后,主机与从机完成数据交换。spi对应芯片选通引脚(chip select)改为地点平,通过如下函数u8 spi_trans(u8 sdata)spdr=sdata; /将数据送入spi数据寄存器loop_until_bit_is_set(spsr,spif); /等待发送完成return(spdr);即可完成一次8位数据的收发。4.3.4 ad采集程序在完成spi接口相关函数后,即可调试ad7190。向ad7190通信的第一个字节中包含下一步要进行的操作类型与硬件地址。表4.1 通讯寄存器定义cr6:置位是表示下一步是读操作cr5cr3:下一步操作的地址。详细定义如表4.2表

52、4.2 各寄存器地址在mode register中可设置工作模式、采样率、时钟源、滤波器等。在configuration register中可输入信号的极性、输入缓冲器、pga增益、输入通道选择等。每次转换完成后,数据被存放在data register中。通过gpocon register可设置ad7190四个通用数字输出接口的状态。sigma-delta型adc采用集成的高性能数字滤波器保障高转换精度。由于使用了外部多路复用器,每次改变通道后,先前的数字滤波器失效了,需要重新建立,故ad7190必须工作在单次采样(single)模式下,即每次采样都要对数字滤波器进行重新建立。表4.3 有效位

53、数(峰-峰)、输出速率、建立时间与滤波参数、增益的关系如表4.3所示,当滤波器值(filter word)为5时,连续采样模式下的数据输出速率(output data rate)为960hz,但第一次采样需要4.17ms的滤波器建立时间(setting time)。当工作在单次采样模式下时,实际的数据输出速率只能小于1/0.00417=239.8hz。这里的建立时间与所选滤波器类型有关,表4.3数据是工作在sinc4 chop disabled模式下测定的,本文采用了该模式。表4.4 mode register定义ad7190有两种单次采样模式。(1)根据表4.4,当mode register

54、的mr21mr23被设置为001(二进制)时,ad7190工作于单次采样模式。在此模式下,每次转换过程都需要一个完整的滤波器建立时间。转换完成后芯片发出转换完成信号(dry引脚低电平),同时进入空闲模式(idle mode)。从空闲模式下启动此种单次采样,芯片需要1ms的启动时间。(2)当mode register的mr21mr23被设置为000(二进制),同时mr11位置位时,ad7190工作与另一种单次采样模式。与前一种不同的是,这里的单次采样仅表示每次采样都要对滤波器重新建立,每次采样完成后自动开始下一次单次采样,而不是空闲模式。第二种单次采样模式更加适合本文应用。如图4.7,初始化ad

55、c完成后,将adc设置为单次采样模式2,使用多路复用器的0号通道,开始采样。采样完成后将数据存入数组对应位置,通道数+1,等待下一次采样完成。如此循环8此后,所有通道采集完毕,重新设置adc,改为采集内部温度传感器。待转换完成后将数据存入数组内第9个位置。由此就完成了一次8通道的数据采集,并得到了冷端温度,共9个16bit型无符号整数。此函数通过传递数组指针与其它函数交换数据,开始时传入一个18元素int型数组的头指针,采集完成后将数据写入该指针对应内存。图4.7 8路信号采样流程图4.4.5 其他功能函数外部中断通过两个按键触发,可作为开始采样与数据输出的触发信号。使用了下降沿触发模式,并进行消抖处理。定时器作为控制采样率的时间基准。使用单片机的timer1定时器,top至由icr1寄存器的值决定,定时周期可灵活改变。开启定时中断。4.4 由热电偶电压信号计算温度值热电偶将温度信号转化为了电压信号,采集到电压信号后通过计算能反推出对应温度值。热电偶的热电势与温度之间并非严格线性关系,但可通过计算的方法进行线性化修正。4.4.1常用的线性化方法(1)多项式拟合法即根据热电偶的分度表,用数值分

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论