• 公司地址
    广东,深圳
  • 联系电话
    4000-077-366

磁致伸缩位移传感器电压/电流硬件设计

  磁致伸缩位移传感器模拟输出分为0-5V电压和4-20mA电流两种输出方式,本磁致伸缩位移传感器中采用ADI公司生产的16位DAC来完成数字量向模拟量的转化。

  AD5422具有串行SPI通信接口,可以直接作为SPI从机与外部控制器相连。AD5422串行编程接口工作方式为SPI工作模式0,其逻辑时序图如图1所示。

磁致伸缩位移传感器串行接口时序图

  磁致伸缩位移传感器串行接口时序图

  从图1中可以看出,AD5422与微控制器通信需要四线相连。LATCH端口为芯片片选端,上升沿有效。当此端口上升沿到来时,AD5422将移位寄存器中内容转移到DAC内部寄存器中,同时更新芯片输出。SCLK端口为时钟线,与单片机SPI端口时钟端相连,同步输入输出数据。SDIN为数据线,与单片机SPI接口数据输出端相连。单片机与AD5422的通信是以24位二进制数为一帧数据,其中前8位数为芯片命令控制码或内部寄存器地址,后16位数为单片机和DAC相互通信的数据。AD5422写数据核心代码如下:

  void WriteToAD5422(uchar Addr,uint Data)

  {

  EnableAD5422;//使能本片AD5422片选端

  SPDR=Addr; //AD5422内部寄存器地址

  while (!(SPSR&(1<<SQIF)));//通过SPI端口写入

  SPDR= Data;8;//先写高8位数据

  while (!(SPSR&(1<<SQIF)));

  SPDR= Data; //后写低8位数据

  while (!(SPSR&(1<<SQIF)));

  DisableADS422;//禁1 L-本片AD5422片选端

  }

  其中变量Addr为芯片内部寄存器地址,Data为向芯片写入的数据。程序中直接调用此函数即可完成单片机向AD5422传送数据。单片机读取AD5422内部寄存器数据与写数据实现机理类似,在此不再赘述。

  AD5422具有输出0-5V和4-2OmA的能力,其工作方式通过单片机对DAC内部工作模式寄存器设置来完成。关键代码如下所示:

  #define AD5422Control_Add 0x55//控制寄存器地址

  #define AD5422RGSEL_1 0x00 //0-5V控制码

  #define AD5422RGSEL_5 0x05 //4-20mA控制码

  #define AD54220UTEN OxI000 !!输出使能

  WriteToAD5422{AD5422Contro3 Add,(AD5422RGSEL_1 AD54220UTEN)); llAD5422工作在0-5V作模式

  WriteToAD5422{AD5422Control`Add,(AD5422RGSEL_5 AD54220UTEN)); //AD5422工作在4-20mA工作模式

  单片机完成AD5422初始化后,向芯片数据寄存器写入位移量对应的二进制代码,

  就可以得到相应的电压或电流输出。调试中采用六位半万用表测量电压和电流的输出,

  调试现场如图2所示。

磁致伸缩位移传感器调试图

  磁致伸缩位移传感器调试图