12位單圈絕對值編碼器_常州真人视讯電器有限公司
歡迎光臨常州真人视讯電器有限公司! 關於我們 | 聯係我們 | 在線留言
全國統一服務熱線
13861054351

相關資訊

谘詢熱線:

13861054351

固話:0519-85112261

郵箱:[email protected]

地址:江蘇省常州市新北區太湖明珠 苑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;
   }    
}