久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3392|回復: 0
收起左側

格雷碼編碼器測試

[復制鏈接]
ID:80436 發表于 2015-5-21 22:32 | 顯示全部樓層 |閱讀模式
本帖最后由 liuqq 于 2015-5-21 22:34 編輯

搞到一個格雷碼輸出的1024分辨率的光洋編碼器,之前沒看手冊,然后用直接接線讀取,然后將格雷碼轉成2進制,發現數據就是不對,
后面到光洋網站上下載了編碼器文檔,仔細一看才知道,這玩意是PNP輸出的,恍然大悟,終于知道為什么處理出來的角度數據是錯的。原來就是輸出類型的問題沒有主意。電平翻轉后轉成2進制,nice。數據就正確了。


格雷碼百科
  • 格雷碼屬于可靠性編碼,是一種錯誤最小化的編碼方式。因為,雖然自然二進制碼可以直接由數/模轉換器轉換成模擬信號,但在某些情況,例如從十進制的3轉換為4時二進制碼的每一位都要變,能使數字電路產生很大的尖峰電流脈沖。而格雷碼則沒有這一缺點,它在相鄰位間轉換時,只有一位產生變化。它大大地減少了由一個狀態到下一個狀態時邏輯的混淆。由于這種編碼相鄰的兩個碼組之間只有一位不同,因而在用于風向的轉角位移量-數字量的轉換中,當風向的轉角位移量發生微小變化(而可能引起數字量發生變化時,格雷碼僅改變一位,這樣與其它編碼同時改變兩位或多位的情況相比更為可靠,即可減少出錯的可能性。
  • 格雷碼是一種絕對編碼方式,典型格雷碼是一種具有反射特性和循環特性的單步自補碼,它的循環、單步特性消除了隨機取數時出現重大誤差的可能,它的反射、自補特性使得求反非常方便。
  • 由于格雷碼是一種變權碼,每一位碼沒有固定的大小,很難直接進行比較大小和算術運算,也不能直接轉換成液位信號,要經過一次碼變換,變成自然二進制碼,再由上位機讀取。[3]
  • 典型格雷碼是一種采用絕對編碼方式的準權碼,其權的絕對值為2^i-1(設最低位i=1)。
  • 格雷碼的十進制數奇偶性與其碼字中1的個數的奇偶性相同。






  1. #include "RobotLib.h"
  2. int temp=0;
  3. long int GrayData=0;
  4. long int Data=0;
  5. long int DecData=0;  
  6. float Angle;

  7. static unsigned int GraytoDecimal(unsigned int x)
  8.     {
  9.      int i;
  10.      for(i=0;(1<<i)<sizeof(x)*8;i++)
  11.      {
  12.        x^=x>>(1<<i);
  13.      }
  14.      return x;
  15.     }

  16. void main()
  17. {


  18. int i=0;
  19. int count=10;
  20. unsigned char GrayBit[10];
  21. GrayData=0;
  22. Data=0;
  23. DecData=0;
  24. Angle=0;
  25.   for (i = 0; i < count; i++)
  26.   {
  27.     GrayBit[i]=0;
  28.   }
  29. while(1)
  30. {
  31.   for (i = 0; i < count; i++)//Read GrayBit
  32.   {
  33.     GrayBit[i]=DI(i);
  34.   }
  35.     for (i = 0; i < count; i++)//this encoder is  PNP type,so need overturn
  36.   {
  37.     if (GrayBit[i]==1)
  38.        GrayBit[i]=0;
  39.      else GrayBit[i]=1;
  40.    
  41.   }
  42.       //Assembly the Graybit
  43.       Data=((GrayBit[9]<<0)|(GrayBit[8]<<1)|(GrayBit[7]<<2)|\
  44.       (GrayBit[6]<<3)|(GrayBit[5]<<4)|(GrayBit[4]<<5)|\
  45.       (GrayBit[3]<<6)|(GrayBit[2]<<7)|(GrayBit[1]<<8)|\
  46.       (GrayBit[0]<<9));
  47.      
  48.      //Gray  transform to Bin
  49.     DecData=GraytoDecimal(Data);
  50.     Angle=0.3515625*DecData;
  51.     printf("    Gray bit\r\n %d %d %d %d %d %d %d %d %d %d\n   count=%d\n \r   Angle=%f\n",
  52.     GrayBit[0],GrayBit[1],GrayBit[2],GrayBit[3],GrayBit[4],GrayBit[5],\
  53.     GrayBit[6],GrayBit[7],GrayBit[8],GrayBit[9],DecData,Angle);
  54.    
  55.   
  56. }
  57. }
復制代碼



回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美日韩在线免费 | 国产欧美一级二级三级在线视频 | 国产免费看 | 精品日韩一区 | 成人免费久久 | 日韩精品一区二区久久 | 国产 日韩 欧美 制服 另类 | 99re在线| 国产成人jvid在线播放 | 亚洲久久一区 | 中文字幕日韩欧美 | 亚洲一二三在线观看 | 中文字幕 亚洲一区 | 久热国产精品视频 | 国产一区二区在线播放 | 国产精品高清一区二区三区 | 在线看成人av | 精品乱码一区二区 | 一区二区三区播放 | 日韩欧美在线免费 | 日韩一级免费观看 | 国产精品一区二区电影 | 1区2区3区视频 | 国产免费一区二区三区 | 日韩精品一区二区三区在线播放 | 欧美影院 | 国产一区视频在线 | 福利社午夜影院 | 国产2区| 久久久女女女女999久久 | 9久久 | 免费一区二区三区 | 亚洲 欧美 综合 | 午夜欧美 | 婷婷综合激情 | 久久久久久一区 | 国产精品久久久久久久久久 | 久久亚洲欧美日韩精品专区 | 日本久草视频 | 国产精品麻 | 91视频国产一区 |