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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

mini512線編碼器MC9S12XS128源程序與相關資料下載

[復制鏈接]
ID:402019 發表于 2018-9-25 09:44 | 顯示全部樓層 |閱讀模式
0.png

mini 512編碼器系列使用說明書

一、特點
電子部分采用先進的檢測技術 , 機械外殼全鋁合金構造 ( 轉子除外 ) 。

具有以下特點:
● 分辨率有: AB 相正交輸出 256 線、 AB 相正交輸出 1024 線、步進 + 方向輸出 512 線;
● 旋轉速度高,最高轉速可達 10000rpm ;
● 寬廣的工作溫度范圍: -40 ℃ ~ +125 ℃ 。
● 抗擾性好 。 本產品采用霍爾檢測技術 , 屬于無接觸檢測 , 傳感器運行不受灰塵或其它雜物影響,很好克服了基于光學檢測原理的缺點;
● 體積小巧。直徑 D : 14mm 高 H : 18mm 軸徑: 3mm ;
● 重量輕。除轉軸外,全鋁合金構造,凈重 11.5 克。

二、應用
● 機器人
● 機械手
● 運動控制系統
● 伺服系統
● 自動化設備
● 辦公室設備
● 取代光學編碼器
● 智能車

0.png

512 線增量式編碼器使用教程

0.png
模塊說明:本編碼器體積超小,編碼器外徑 1.5cm,質量超輕,方便靈活的安裝在 A,B,C,D,E 等車模上,是智能車和機器人的不二人選。編碼器為 512 線 3 相Mini 增量式旋轉編碼器,編碼器自身直接輸出旋轉方向和脈沖,程序簡單,可運用于 8 位,16 位,32 位等系列單片機。3.3V到5V寬電壓供電,以滿足不同 IO 口電平的單片機。無需正交解碼或其他
繁瑣程序即可穩定獲得編碼器齒選裝方向。編碼器配套各種車模的齒輪可使用任意組別車模。
模塊使用方法:按下圖方式連接編碼器至電源和單片機打開測試程序,連接單片機和電腦或OLED即可在虛擬示波器或OLED上觀看編碼器旋轉波沖值,也可利用示波器觀看編碼器輸出波形。

如果采用示波器觀看編碼器輸出脈沖,只需要給編碼器連接電源,將示波器探頭底線與電源地線連接,示波器探頭信號輸入端連接 2(LSB)即可觀看編碼器輸出脈沖的波形,連接示波器信號輸出端到 5(Dir)即可觀看旋轉方向輸出信號。若采用單片機查看編碼器脈沖和旋轉方向輸出,即可連接 1(GND)到單片機電源地線,2(LSB)到單片機脈沖撲捉端口具體單片機下面將會介紹,4(VCC)到單片機電源正極,5(Dir)到單片機普通可做輸入的 IO 口,下載相應的測試程序,連接好 OLED 或者串口工具到電腦即可在上位機和OLED 上查看編碼器輸出脈沖和旋轉方向, 具體方法程序介紹中有介紹。

使用注意事項:編碼器供電電壓不得超過允許的電壓,不得對編碼器轉軸施加過大的力從而導致轉軸變形,編碼器信號線最好使用膠帶固定在編碼器外殼上避免長期使用過程中的拉扯導致信號線脫落。
(二)編碼器采集程序介紹
XS128 程序介紹: 給編碼器和單片機供電, 要求單片機和編碼器公地,連接編碼器2(LSB)到單片機 T7 口,連接編碼器 5(Dir)到單片機 A0 口,連接單片機和藍牙串口模塊,RX 到 S0,TX 到單片機 S1,打開上位機
0.jpg 0.jpg

運行上位機后,帶串口連接好后調節上位機刻度就會看到編碼器的脈沖信息。
K60 程序介紹:給編碼器和單片機供電(編碼器可選擇3.3V 或5V供電) ,要求單片機和編碼器公地, 連接編碼器 2 (LSB) 到單片機 C5 口, 連接編碼器 5(Dir)到單片機C0 口,連接單片機和藍牙串口模塊,RX 到D6,TX 到單片機 D7,上位機如上操作。運行上位機后,帶串口連接好后調節上位機刻度就會看到編碼器的脈沖信息。

0.jpg

單片機源程序如下:
  1. /********************************************************
  2. 【平    臺】龍丘MC9S12XS128系統板V4.1
  3. 【編    寫】龍丘
  4. ------------------------------------------------
  5. 【dev.env.】Code Warrior 5.1
  6. 【Target  】MC9S12XS128
  7. 【pllclock】64.000MHz
  8. 接線方式
  9. 編碼器------->單片機
  10. GND -------> GND
  11. VCC -------> VCC
  12. LSB -------> T7
  13. DIR -------> A0
  14. 藍牙串口模塊------->單片機
  15. RX -------> S0
  16. TX -------> S1
  17. 版權龍邱智能科技所有,轉載需注明出處!
  18. ********************************************************/
  19. #include <hidef.h>      /* common defines and macros */
  20. #include "derivative.h"      /* derivative-specific definitions */
  21. void SetBus_64M(void);
  22. void PIT_Init(void);
  23. void TimInit (void);
  24. void UART_Init (void);
  25. void uart_putchar ( unsigned char c);
  26. unsigned short CRC_CHECK(unsigned char *Buf, unsigned char CRC_CNT);
  27. void OutPut_Data(void);
  28. void Speed_Read(void);
  29. float OutData[4] = { 0 };
  30. uint num=0;
  31. int  Motor_Polse=0;
  32. /****************************************************
  33.   函數名稱:void SetBus_64M(void)
  34.   函數簡介:設置總線頻率為64M,晶振頻率16M
  35.   入口參數:
  36.   出口參數:
  37. *****************************************************/
  38. void SetBus_64M(void)
  39. {
  40.   CLKSEL_PLLSEL=0;  //禁止使能鎖相環時鐘
  41.   PLLCTL_PLLON=1;   //鎖相環電路允許
  42.   SYNR=0xc0|0x07;   //VCO_clock=2*osc_clock*(SYNR+1)/(REFDV+1)=128MHz
  43.                     //VCOFRQ[1:0]=1:1,代表VCO_clock在80~120MHz
  44.   REFDV=0x80|0x01;   //VCO_clock=2*osc_clock*(SYNR+1)/(REFDV+1)=128MHz
  45.                     //REF_clock=osc_clock/(REFDV+1)
  46.                     //REFFEQ[1:0]=1:0,代表參考時鐘在6~12MHz之間
  47.   POSTDIV=0x00;      //PLL_clock=VCO_clock
  48.   _asm(nop);
  49.   _asm(nop);         //短暫延時,等待時鐘頻率穩定
  50.   while(!(CRGFLG_LOCK==1))
  51.   {
  52.   ;
  53.   }
  54.   CLKSEL_PLLSEL=1;
  55. }
  56. //==============================================================
  57. //函數:void PIT_Init(void)
  58. //描述:初始化定時器為1ms中斷
  59. //參數:無
  60. //返回:無
  61. //==============================================================
  62. void PIT_Init(void)
  63. {
  64.    PITCFLMT=0x00; //禁止使能PIT模塊
  65.    PITCE_PCE0=1;  //使能定時器通道0
  66.    PITMUX=0x00; //定時器通道0使用微定時基準0
  67.    PITMTLD0=8-1; //設置8位微定時裝載寄存器0初值
  68.    PITLD0=8000-1; //定時周期=(&PITMTLD0+1)*(&PITLD0+1)
  69.    PITINTE=0x01;  //使能PIT定時器通道0中斷
  70.    PITCFLMT=0x80; //使能PIT模塊
  71. }
  72. //==============================================================
  73. //函數:void TimInit (void)
  74. //描述:脈沖累加器初始化
  75. //參數:無
  76. //返回:無
  77. //==============================================================
  78. void TimInit (void)
  79. {

  80. PACTL=0X00;
  81. PACNT=0X0000;//設置脈沖累加器初值
  82. PACTL_PAEN=1;
  83. }

  84. //==============================================================
  85. //函數:void UART_Init (void)
  86. //描述:串口初始化,配置串口1,波特率為9600
  87. //參數:無
  88. //返回:無
  89. //==============================================================
  90. void UART_Init (void)
  91. {
  92.    
  93.           SCI0CR2=0x2c; //enable Receive Full Interrupt,RX enable,Tx enable
  94.     SCI0BDH=0x01; //busclk  8MHz,19200bps,SCI0BDL=0x1a
  95.     SCI0BDL=0xa0; //SCI0BDL=busclk/(16*SCI0BDL)                  
  96.                   //busclk 32MHz, 9600bps,SCI0BDL=0xD0
  97.                   //115200 bps     SCI0BDL=0x11
  98. }                 // 64M 9600    SCI0BDH=0x01; SCI0BDL=0xA0;
  99. //==============================================================
  100. //函數:unsigned short CRC_CHECK(unsigned char *Buf, unsigned char CRC_CNT)
  101. //描述:虛擬示波器上位機接口程序
  102. //參數:
  103. //返回?
  104. //==============================================================
  105. unsigned short CRC_CHECK(unsigned char *Buf, unsigned char CRC_CNT)
  106. {
  107.     unsigned short CRC_Temp;
  108.     unsigned char i,j;
  109.     CRC_Temp = 0xffff;

  110.     for (i=0;i<CRC_CNT; i++){      
  111.         CRC_Temp ^= Buf[i];
  112.         for (j=0;j<8;j++) {
  113.             if (CRC_Temp & 0x01)
  114.                 CRC_Temp = (CRC_Temp >>1 ) ^ 0xa001;
  115.             else
  116.                 CRC_Temp = CRC_Temp >> 1;
  117.         }
  118.     }
  119.     return(CRC_Temp);
  120. }
  121. //==============================================================
  122. //函數:void OutPut_Data(void)
  123. //描述:向虛擬示波器發送數據
  124. //參數:無
  125. //返回:無
  126. //==============================================================
  127. void OutPut_Data(void)
  128. {
  129.   int temp[4] = {0};
  130.   unsigned int temp1[4] = {0};
  131.   unsigned char databuf[10] = {0};
  132.   unsigned char i;
  133.   unsigned short CRC16 = 0;
  134.   for(i=0;i<4;i++)
  135.    {
  136.    
  137.     temp[i]  = (int)OutData[i];
  138.     temp1[i] = (unsigned int)temp[i];
  139.    
  140.    }
  141.    
  142.   for(i=0;i<4;i++)
  143.   {
  144.     databuf[i*2]   = (unsigned char)(temp1[i]%256);
  145.     databuf[i*2+1] = (unsigned char)(temp1[i]/256);
  146.   }
  147.   
  148.   CRC16 = CRC_CHECK(databuf,8);
  149.   databuf[8] = CRC16%256;
  150.   databuf[9] = CRC16/256;
  151.   
  152.   for(i=0;i<10;i++)
  153.     uart_putchar(databuf[i]);
  154. }
  155. //==============================================================
  156. //函數:void uart_putchar ( unsigned char c)
  157. //描述:發送一個字節
  158. //參數:無
  159. //返回:無
  160. //==============================================================
  161. void uart_putchar ( unsigned char c)
  162. {
  163.   while(!(SCI0SR1&0x80)) ;                     //keep waiting when not empty  
  164.   SCI0DRL=c;
  165. }
  166. //==============================================================
  167. //函數:void main(void)
  168. //描述:工程得主函數
  169. //參數:無
  170. //返回:無
  171. //==============================================================
  172. void main(void)
  173. {

  174.   
  175.    SetBus_64M();  //初始化總線始終64M
  176.    PIT_Init();    //設置定時器中斷1ms
  177.    TimInit ();    //初始化脈沖累加器用于編碼器計數
  178.    UART_Init();   //串口初始化,配置波特率9600
  179.    DDRA_DDRA0=0;  //配置A0口位輸入端口,用于測量編碼器選裝方向
  180.    EnableInterrupts;   //打開所有中斷
  181.    while(1)
  182.    {
  183.     OutPut_Data();   //向上位機發送數據
  184.    }
  185.         EnableInterrupts;


  186.   
  187. }
  188. //==============================================================
  189. //函數Speed_Read(void)
  190. //描述:讀取編碼器脈沖
  191. //參數:無
  192. //返回:無
  193. //==============================================================
  194. void Speed_Read(void)

  195. {
  196. //uint  Motor_Polse=0;
  197. Motor_Polse=PACNT;          //讀取寄存器得脈沖值
  198. if(PORTA_PA0==1)           //判斷編碼器方向
  199.   {
  200.    Motor_Polse=-Motor_Polse;  //反向取反
  201.   }
  202. OutData[0]=Motor_Polse;
  203. _asm(nop) ;
  204. _asm(nop) ;
  205. PACNT=0X0000;              //清楚寄存器得脈沖值
  206. // Motor_Polse=0;
  207. }
  208. #pragma CODE_SEG __NEAR_SEG NON_BANKED

  209. //==============================================================
  210. //函數interrupt VectorNumber_Vpit0 void PIT_ISR (void)
  211. //描述:定時器中斷函數
  212. //參數:無
  213. //返回:無
  214. //==============================================================
  215. interrupt VectorNumber_Vpit0 void PIT_ISR (void)
  216. {
  217.   
  218. num++;
  219. if(num>10)
  220. {
  221.   num=0;
  222.   Speed_Read();
  223. }

  224. PITTF_PTF0=1; //清除中斷ADtransform();


  225. }
復制代碼

0.png

全部資料51hei下載地址:
http://m.zg4o1577.cn/bbs/dpj-109842-1.html


回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲成人一区二区 | 国产精品综合久久 | 激情欧美一区二区三区中文字幕 | 91免费看片| 国产成人精品一区二区在线 | 午夜影院毛片 | 国产中文字幕在线观看 | 网站国产 | 久久久久久久一区 | 网络毛片 | 日日骚网 | 成人国产精品色哟哟 | 欧美在线资源 | 久久久久亚洲视频 | 国产精品自拍一区 | 99精品国产在热久久 | 91福利在线观看视频 | 91久久国产综合久久 | 午夜影院在线播放 | 久久久久久综合 | 欧美一区二区三区久久精品 | 日韩午夜一区二区三区 | 日韩精品成人 | 亚洲精品乱码久久久久久按摩 | 国产1区2区在线观看 | 精品一区二区三区在线播放 | 欧美日韩综合视频 | 国产精品美女久久久久aⅴ国产馆 | 青青草原综合久久大伊人精品 | 国产成人精品免高潮在线观看 | 日韩免费福利视频 | 二区av| 婷婷色在线播放 | 久久综合久色欧美综合狠狠 | 丁香六月伊人 | 国产日韩91 | 三区在线 | 成人一区二区三区在线 | 中文av网站| 日韩国产在线 | 久久久久久久久久性 |