欢迎光临常州西曼顿电器有限公司! 关于我们 | 联系我们 | 在线留言
全国统一服务热线
13861054351

咨询热线:

13861054351

固话:0519-85182261

邮箱:czzhw401@163.com

地址:江苏省常州市新北区太湖明珠 苑31幢

 12位单圈绝对值编码器采用智能磁敏感元件,通过三轴霍尔技术,将机械转动或角位移转化为电信号,非接触测量。其产品具有分辨率高,温度稳定性好,广泛应用于工业自动化测量和监控系统,尤其适用于机械变化频繁,环境恶劣,要求传感器使用寿命长,可靠性高的场合。 
一、产品特点:
1、无触点,无噪音,高灵敏度,高重复性,接近无限转动寿命。 
2、防尘防潮性好,环境试用性强。 
3、体积小重量轻,性能稳定可靠。
4、360°绝对位置测量,是替代光学编码器,导电塑料电位器的理想产品。
二、应用范围:
    本产品广泛应用于航天航空、军工设备、纺织机械、灌溉机械、造纸印刷、水利闸门、机器人及机械手臂、港口起重机械、钢铁冶金设备、重型机械设备、精密测量设备、机床、食品机械等行业。
三、参数说明

   工作电压 

                     DC5V±10%

   工作电流

                       12mA

   工作温度

                     -30℃~80℃ 

   分 辨 率

                       12位

四、外形尺寸

五、接口定义

引脚序号

引脚符号

颜色

描述

1

GND

黑色

电源负

2

DO

绿色

角度数据

3

SCLK

黄色

时钟

4

CS

蓝色

片选

5

VCC

红色

电源正

六、读取数据
     采用三线制SPI总线进行数据通信。
  6.1  SPI总线时序图





6.2 器件指令机制
   在每一帧数据传输之前,主器件将发送字节 AAh 以使能帧传输。角度测量值的锁存点位于第一个数据帧字节前的最后一个时钟沿。
说明: 
    /SS:片选信号,低电平有效。
    SCLK:时钟信号。
    MOSI/MISO:为复用数据口,用来输入或输出数据。


6.3 数据帧结构
一个数据帧包含了 10 个字节:
• 2 个启动字节(AAh 和 FFh)
• 2 个数据字节(DATA16 – 高位先入) 
• 2 个反向的数据字节(/DATA16 -高位先入) 
• 4 个全高字节
6.4 数据结构
DATA16可以是一个实际的角度或者一个错误信号。这两种信号由 LSB 来区分。
DATA16: 角度信号A[13:0]。



DATA16: 错误信号E[15:0].



附AVR单片机读取数据程序
#define  DIO_OUT()   DDRC |= (1<<0)
#define  DIO_IN()     DDRC &= ~(1<<0)
#define  DIO_SET()   PORTC |= (1<<0)
#define  DIO_CLR()   PORTC &= ~(1<<0)
#define  READ_DIO()  PINC&(1<<0)
#define  SCLK_OUT()  DDRC |= (1<<1)
#define  SCLK_IN()    DDRC &= ~(1<<1)
#define  SCLK_SET()   PORTC |= (1<<1)
#define  SCLK_CLR()  PORTC &= ~(1<<1)
#define  CS_OUT()    DDRC |= (1<<2)
#define  CS_IN()      DDRC &= ~(1<<2)
#define  CS_SET()     PORTC |= (1<<2)
#define  CS_CLR()     PORTC &= ~(1<<2)
void  PORT_Init(void)  //端口初始化
{
    CS_OUT();
    SCLK_OUT();
    DIO_OUT();
}
void   Delay_us(INT8U Time) //1us延时函数
{
    INT8U i = 0;
    for ( i=0; i<Time; i++)
    {
        NOP();
    }
}
void  WriteByte(INT8U  Write_Value) //写一个字节
{
     INT8U i = 0;
     DIO_OUT();
     for ( i=0; i<8; i++)
     {
        SCLK_SET();
        if (Write_Value&0x80)
        {
            DIO_SET();
        }
        else
        {
            DIO_CLR();
        }
        SCLK_CLR();
        Write_Value <<= 1;
        Delay_us(1);
     }
}
INT8U  ReadByte(void) //读一个字节
{
   INT8U i = 0;
    INT8U Read_Value = 0;
    DIO_IN();
    for ( i=0; i<8; i++)
    {
       SCLK_SET();
       Read_Value <<= 1;
       SCLK_CLR();
       Delay_us(1);
       if (READ_DIO())
       {
           Read_Value |= (1<<0);
       }
       else
       {
           Read_Value &= ~(1<<0);
       }
    }
    return Read_Value;
}
INT16U  ReadAngle(void)  //读取角度数据
{
  INT16U  Angle_Value = 0;  //正常数据
  INT16U  Reverse_Angle_Value = 0;  //反向数据
  INT16U  Check_Angle_Value = 0;
  CS_CLR();
  Delay_us(10);
  WriteByte(0xaa); //1
  WriteByte(0xff); //2
   Delay_us(10);
   Angle_Value = ReadByte(); //3
   Angle_Value <<= 8;
   Delay_us(10);
   Angle_Value += ReadByte(); //4  字节3.4为数据字节
   Check_Angle_Value = Angle_Value; //保存当前的有效值
   Delay_us(10);
   Reverse_Angle_Value = ReadByte();  //5
   Reverse_Angle_Value <<= 8;
   Delay_us(5);
   Reverse_Angle_Value +=  ReadByte();  //6 字节5.6为反向的数据字节
   Delay_us(10);
   CS_SET();
   if ((Angle_Value == (~Reverse_Angle_Value)))
   {
      if ((Check_Angle_Value&0x0001) == 0x0001)//角度信号
   {
      Angle_Value = ((Angle_Value&0xfff0) >> 4);
         return  (Angle_Value);
   }
   else  //错误信号
   {
     return 0xffff;
   }   
   }
   else  //错误信号
   {
     return 0xffff;
   }    
}