|
|
马上注册,结识高手,享用更多资源,轻松玩转三维网社区。
您需要 登录 才可以下载或查看,没有帐号?注册
x
摘 要: 本文主要讨论了一种快速多通道12位ADC MAX115在磁悬浮轴承控制系统中的应用,详细介绍了MAX115的功能特点和工作过程,同时给出了MAX115与DSP(TMS320F240)之间的硬件接口电路和数据采集程序。
/ D7 a p7 A1 ^+ \1 u关键词: MAX115;数据采集;TMS320F240
/ R, x/ ?8 C( T1 r: ^, O引言' M9 G. ?# z% L3 o4 ^
在五自由度主动磁悬浮轴承控制系统中,采用由工控PC+DSP控制器的架构是一种较好的方法,而DSP核心控制器则是磁悬浮轴承控制系统中非常重要的一部分,对主轴位置信号的精确采集是DSP控制器的首要任务。在本控制器中采用MAX115对主轴位置的模拟信号进行采集。
, U, b. }1 k. L( V! Dhttp://21ic.com/news/upload/2006_09/060906100662331.jpg
, H+ ~4 |! \6 Q7 ?8 ]* o+ l3 ]图1 磁悬浮轴承DSP控制器的结构简图6 L) C1 C! @. D) F! r4 U- A4 U* [2 P
http://21ic.com/news/upload/2006_09/060906100662332.jpg
: u. D+ q/ x# I0 W, P! U( z7 U& m图2 MAX115与TMS320F240 DSP之间的接口电路图
7 h; z' [' I. J' F4 G, A! u磁悬浮控制器中的ADC选择
3 V: s2 ?, o7 y; O" k 在磁悬浮主轴控制器的设计中,对主轴位置的测量是至关重要的。位置传感器的信号经过适当的信号调理电路处理后被传送到A/D采样通道,ADC把得到的模拟信号转换成相应的数字信号,芯片采样的精度和分辨率以及采样转换时间是非常重要的技术参数,它们直接决定着控制速度和控制精度。本控制器中采用的传感器是一种电涡流位移传感器。它是一种高精度无接触式传感器。
* A& _! O3 {7 a9 b7 ]8 m9 b& ` M: A1 Q( p8 F3 i; [
本系统要求能分辨1mm位置信号,根据传感器的传感特性,必须要求有至少为12位的分辨率。同时本系统中要求绝对精度不低于±1LSB。 由于磁力轴承系统要求的控制周期很短(一般小于200ms),故要求ADC的采样时间也必须很快(一般在20ms内)。
. V! g4 \% Q. d& P: {5 ` ^综上考虑选用Maxim公司的MAX115作为ADC来完成主轴位置信号的采集。MAX115是12位2×4通道同步采样逐次比较型ADC,其具有两组ADC,每组4通道连续采集保持;单通道转换时间为2ms;转换精度±1/2LSB;4通道传输率为16ksps;并且内部具有2.5V参考电压和10MHz时钟,极大地精简了外部附加电路;其高速的并行接口可以方便地与DSP相连。3 Q$ E1 V( u" f! }& k, p* o
MAX115与TMS320F240的接口电路' ~# h8 A! d( R* \5 D0 W2 v
图1是磁悬浮轴承DSP控制器的结构简图。图中4路主轴位置信号经由MAX115进行A/D转换后,采集结果通过中断方式输入到DSP内。DSP经过滤波算法处理后,将采集数据写到双口RAM内,计算机通过ISA总线访问双口RAM并将其中的数据取走,进行上位机的图形显示、数据分析等功能。同时DSP进行控制算法计算,计算之后将控制数据通过控制器板卡上的4路DAC输出给功率放大器,从而实现对主轴的控制。这样,利用DSP处理速度快的特点来完成算法的计算,利用PC机强大的多媒体处理特点来实现主轴位置监视和数据分析,DSP和PC同时相对独立工作,互不影响,从而加快了系统的处理速度。
% y! f' O. \( z* A( u3 [
! i2 x2 f# K8 \8 d6 z MAX115和DSP硬件的接口设计如图2所示,MAX115引脚A0-A3和引脚D0-D11是具有三态的双向接口,可以直接和DSP相关引脚进行连接。为简化电路设计和增加可靠性,系统中使用的是内部基准电源,此时要将REFIN引脚接上一个0.1mF的旁路电容;同时使用内部时钟10MHz,并将CLK引脚接上VCC。
( I) T; B, J/ y9 I' b7 V% w% {: o$ ]1 [
MAX115与TMS320F240进行接口设计时主要考虑两个问题:一是MAX115数据线和控制模式线共用问题。由于MAX115的D1/A3,D0/A2为数据和地址共用引脚,但实际设计时不能将此引脚同时连接到DSP的地址线和数据线,此处即为DSP和MAX115接口连接的难点。本系统设计时用一种全新的方法来实现,因为DSP有16位的数据线,而MAX115只需要12位数据线和2根工作模式控制引脚,所以通过将DSP的14根数据线直接接到MAX115上的地址和数据线,即D0接AD_A0,D1接AD_A1,D2接AD_D0,D3接AD_D1,D4接AD_D2......D13接AD_D11,当对MAX115进行编程时,通过可编程逻辑器件MAX7128进行地址选通,MAX7128编程采用Altera公司的Max+plusⅡ集成环境,使用AHDL语言编写。
$ A/ w- U4 J1 x( g8 R) v5 u1 G... ...; L; w; a( i. q: w- H6 ^8 z
4 ~' q" }& d. E+ m1 B; h MAX115的和信号线由DSP的和分别直接连接即可。通过DSP的数据线的D0-D3作为编程地址线从而对其工作模式进行编程。当A/D转换结束后,要从ADC中读取数据,读到14位数据D13-D0时,再将所得数据左移2位,即屏蔽掉低2位无效的输入后,即可得到12位A/D采集数据。另一个问题是MAX115与DSP接口的速度匹配问题,由于DSP速度过快,会导致MAX115无法正常工作,所以系统中采用软件的方法插入等待状态,具体操作见下文的软件设计。7 @# N8 l8 j- j; @* l# g
" `8 J7 n- ~2 M [0 Y- [* u( O/ D
控制器中MAX115的片选()信号、转换开始()信号及读()写()信号都是由MAX7128产生的。MAX7128编程方便,易于调试,用其实现快速地址选通等功能来加快系统的处理速度。其中DSP的参与地址译码。. |$ D' x: @) q
软件设计
$ r) \ V7 w: {$ V DSP作为下层的CPU来控制数据采集的整个过程。本控制器设计使用的编程软件是TI公司的CCS,采用C语言及嵌入式汇编编程,这样编写的程序简洁,易于读懂。
5 o1 D8 d/ d Z1 R* b* h8 A9 f }本控制器采用4通道连续转换,A3A2A1A0=0011。上电后DSP给MAX115写入工作方式,然后送信号,A/D转换开始,转换完成后,MAX115发出请求AD_INT变低,DSP中断立刻开始读取A/D转换结果。MAX115的与DSP的XINT1相连,作为DSP的外部中断输入。当A/D转换完成后,变低,DSP进入中断服务程序,在中断服务程序中将A/D转换结果读出。这种方法应用于快速转换,只要中断来了便进行转换,充分利用了CPU的资源。下面给出了中断方式下DSP控制A/D转换的部分程序。其中主要以中断子程序为主,其它中断初始化及其DSP中断向量程序均省略。
" \; p! P$ W B0 g: r_
* {; J E4 W; y$ H( Q/ u8 c____ A/D转换电路 _____+ D0 l+ Q5 Y9 u+ Y% f2 B: [9 ]/ D
data=0X03; /*MAX115工作方式选择A3A2A1A0=0011*/* X' ~0 W. M3 ]' D- l" p- U
asm(" OUT _data,0003h "); 5 h& N: i6 r& B4 d; W8 X
/*选择ADC,并写入工作模式*/ O8 _- C: P3 f% y
asm("rpt XXX ");
+ T8 {$ i4 c6 b. v' B% @. W' a/*XXX为一个数值 其大小应根据实际调试而决定*/" [0 s, T* G: O: w; _3 F
asm(" nop "); 4 h* s6 E7 \* T5 p1 V4 h
/*延时 匹配速度*/
$ x* p$ f% ?7 o5 X: P7 c3 iasm(" OUT _data,1003h ");
: J( _$ c! i( u+ D E( t' g/*A/D转换开始用地址1003h来选中信号*/
! @/ D/ b! l. q: ~# a2 T* q1 G* e) D9 s* |8 c" Q; ?5 \0 O
_____A/D转换结果的读取_____
* K5 w* L$ O2 [' |8 c: l9 Kvoid AD_INT()$ d; p+ P3 l- F: U3 `; C5 P5 I- o
{ asm(" IN _ad_result1,0003h "); /*读入AD_CH1A转换结果*/ 8 o) E. c% u* S2 G+ h! `9 L
ad_result1=ad_result1&0x0fff; ( Z& |8 l/ s( R& _
ad_result1=ad_result1*2;
* j4 U8 H! O8 o8 R/* CH1A通道最后结果ad_result1*/
2 _$ a* d1 y6 X) C4 g) D( {9 nasm(" rpt XXX ");
. S" c. l5 d/ }6 D, B asm(" nop ");
% J* e4 o3 {# e3 U z" t7 r5 P asm(" IN _ad_result2,0003h "); /*读入AD_CH2A转换结果*/
$ B, z& t1 t4 Q ad_result2=ad_result2&0x0fff;9 @" a1 `7 O) i5 X- i* \! c
ad_result2=ad_result2*2; 8 l& b* t$ n: r7 Q: Y/ S
/* CH2A通道最后结果ad_result2*/
6 W v6 U# |* B* o7 jasm(" rpt XXX "); . n6 N9 v* {" K4 z! H! t+ P
asm(" nop "); ) V9 R) F0 [1 M- Z& ?' P
asm(" IN _ad_result3,0003h "); /*读入AD_CH3A转换结果*/
9 Y$ j U+ h; a0 b! Z l! Y ad_result3=ad_result3&0x0fff;) ]4 D7 `6 `! y7 l7 d2 G
ad_result3=ad_result3*2; ' i3 P( B. d% z' j' X L
/* CH3A通道最后结果ad_result3*// [$ ]: @$ @' M$ z9 E
asm("rpt XXX ");
3 g1 v/ r8 C" F/ w, V4 ~ asm(" nop ")
* [5 A/ U" i+ V/ \$ `原文没有注明出处。
" U! n! K0 C% }( \% S: o; v
t% T" e! V6 T[ 本帖最后由 tianxingzhe 于 2007-7-13 18:25 编辑 ] |
|