标题:
旋转编码器通过单片机控制步进电机怎么编程?
[打印本页]
作者:
阿联520
时间:
2018-1-26 19:49
标题:
旋转编码器通过单片机控制步进电机怎么编程?
怎么编程用旋转编码器控制步进电机,就是编码器转动,步进电机也跟着转动(主从控制),编码器有A,B两相
作者:
perfect_co
时间:
2018-1-27 18:00
简单:利用芯片正交编码功能(通常DSP等芯片具有),计数和旋转方向,利用测速方法测量出当前编码器的速度,然后作为电机的速度给定,闭环控制即可。
作者:
AFFF
时间:
2018-2-11 18:19
uchar min=0; //定义分钟和秒变量
uchar jizhun=0;
/* 定义编码开关控制引脚 */ //中间脚(第2脚)接地
sbit CodingsWitch_B=P3^3; //A脚定义(即1脚) 这两脚必须接10K上拉电阻
sbit CodingsWitch_A=P3^4; //B脚定义(即3脚)
/********以下是步进电机1相励磁法正转函数********/
void motor_up(uint n)
{
uchar i;
uint j;
for (j=0; j<1*n; j++) //转n圈
{
for (i=0; i<4; i++) //4次共转7.5°×4=30度,这样,转12次可转360°(即1圈)
{
P1 = up_data[i]; //取正转数据
Delay_ms(3); //转一个角度停留的时间,可调节转速
}
}
}
/********步进电机1相励磁法反转函数********/
void motor_down(uint n)
{
uchar i;
uint j;
for (j=0; j<1*n; j++) //转n圈
{
for (i=0; i<4; i++) //4次共转7.5°×4=30度,这样,转12次可转360°(即1圈)
{
P1 = down_data[i]; //取反转数据
Delay_ms(3); //转一个角度停留的时间,可调节转速
}
}
}
/********************旋转编码开关判断函数***********************************************/
void CodingsWitch(void)
{
static uchar Aoid,Boid;
static uchar st=0;
if(CodingsWitch_A&&CodingsWitch_B)
st=1;
if(st)
{
if(CodingsWitch_A==0&&CodingsWitch_B==0)
{
if(Boid)
{
st=0;
if(min>=90)
min=90;
else
min++;
}
if(Aoid)
{
st=0;
if(min<1)
min=0;
else
min--;
}
}
}
Aoid=CodingsWitch_A;
Boid=CodingsWitch_B;
}
//以下是编码器控制步进电机方法
CodingsWitch(); //调旋转编码开关函数
if(min>jizhun)
{
motor_up(min-jizhun);
jizhun=min;
}
if(min<jizhun)
{
motor_down(jizhun-min);
jizhun=min;
}
作者:
阿联520
时间:
2018-3-6 15:40
AFFF 发表于 2018-2-11 18:19
uchar min=0; //定义分钟和秒变量
uchar jizhun=0;
/* 定义编码开关控制引脚 */ //中间脚(第2脚)接地 ...
谢谢,我看的有点懵。我的意思是:编码器旋转一周能发出600个脉冲,步进电机旋转一周需要255个脉冲(步距角1.6°),步进电机驱动器只有使能、脉冲、方向、电源4条线接单片机.我的想法是单片机每接收编码器的600/255个脉冲,就给步进电机1个脉冲。
作者:
981860764
时间:
2018-5-13 00:33
那你的要求不高嘛
作者:
jjwangxu2008
时间:
2018-5-13 01:58
就是一个多轴的同步控制
作者:
木禾
时间:
2018-12-21 14:03
有代码能给学习一下吗?
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1