我的12位磁性绝对值编码器角度值的采集续 点击:2125 | 回复:4



huoujhy

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 2回
  • 年度积分:0
  • 历史总积分:2
  • 注册:2014年10月08日
发表于:2017-01-17 11:50:15
楼主

这个编码器的型号为BMQ380605SP。图片


我旋转编码器的轴,直到显示4095或0001,证实这个编码器为12位的,测量范围在0000—4095,不旋转时,数据是连续的,表明编码器的稳定性很好。


这是我编写的角度采集程序

#include <STC15F2K60S2.H>

//#include "STC15W4K.H"     // 包含STC115F2K60S2单片机寄存器定义文件

#include <stdio.h>  // 为使用KEIL自带的库函数printf而加入

void delay500ms(void); 

void Delay1us();  //@22.1184MHz

void UART_init(void);

sbit CSn=P4^0;          //使能控制 

sbit CLK=P4^1;            //时钟脉冲

sbit DO=P4^2;             //串口数据


void Delay1us()

{

   unsigned char i;

   i = 3;

   while (--i);

}


void delay500ms(void)

{

 unsigned char i,j,k;

   for(i=93;i>0;i--)     

   for(j=235;j>0;j--)    

   for(k=125;k>0;k--);    

}


void UART_init(void)

{  

//下面代码设置定时器1

TMOD = 0x20;// 0010 0000 定时器1工作于方式2(8位自动重装方式)

TH1  = 0xFA;// 波特率:9600 /22.1184MHZ 

TL1  = 0xFA;// 波特率:9600 /22.1184MHZ 


TR1  = 1;

//下面代码设置定串口

AUXR = 0x00;             // 很关键,使用定时器1作为波特率发生器,S1ST2=0

SCON = 0x50;         // 0101 0000 SM0.SM1=01(最普遍的8位通信),REN=1(允许接受)

TI=1; // 串口发送完标志,很关键,使用printf函数时必须有此命令



unsigned int ReadAngle12Code()   //只读取12位角度位数,后面的5位状态数据位忽略

{

unsigned int angle;//12位数据

char i;

angle=0;

//启动CSn线

CLK=1;

CSn=1;

Delay1us();  //延时时间应等于或大于1us,加大延时时间有利于抗干扰

CSn=0;

Delay1us();

CLK=0;

Delay1us();

//开始读数据

for(i=11;i>=0;i--)     //连续读取12次位数据

{

CLK=1;

Delay1us();

angle|=DO;   //读取位数据,并保留上一次的位数据

if(i)

{

angle<<=1;  //将刚读取的位左移1位并存入angle,SSI串行数据是从高位开始

CLK=0;

Delay1us();

}

}

Delay1us();

CSn=1;

Delay1us();

return(angle);

}


void main(void)

{

unsigned int jdz ;               //角度值变量

UART_init();        // 串口初始化9600/22.1184MHz

while(1)

{  

      jdz=ReadAngle12Code();    // 获取12位角度值  

 printf("%.4D ",jdz);       //打印(显示)4位数的十进制数(0-4095)对应(0—360)

 delay500ms();              //间隔500ms的读取一次角度值,无限反复

}                              




楼主最近还看过



CZ198841

  • [版主]
  • 精华:0帖
  • 求助:0帖
  • 帖子:622帖 | 8548回
  • 年度积分:26
  • 历史总积分:335297
  • 注册:2011年4月25日
发表于:2017-02-15 14:47:32
1楼

楼主单片机技术真的和牛逼,有机会跟你学习一下

xp529118593

  • 精华:0帖
  • 求助:9帖
  • 帖子:35帖 | 261回
  • 年度积分:7
  • 历史总积分:117
  • 注册:2011年1月27日
发表于:2018-08-28 15:46:36
2楼

楼主单片机技术真的和牛逼,有机会跟你学习一下

a86892244

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 165回
  • 年度积分:0
  • 历史总积分:0
  • 注册:1900年1月01日
发表于:2018-10-13 09:59:47
3楼

好东西 顶起来!!好好学习学习

大洋先生

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 8回
  • 年度积分:5
  • 历史总积分:63
  • 注册:2018年11月06日
发表于:2018-11-21 15:34:31
4楼

需要磁电绝对值编码器可以联系我,单多圈都有。


热门招聘
相关主题

官方公众号

智造工程师