原创 【博客大赛】步进电机控制

2012-11-28 08:37 1391 6 6 分类: MCU/ 嵌入式

步进电机是将电脉冲信号转变为角位移或线位移的开环控制元步进电机件。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度,称为“步距角”,它的旋转是以固定的角度一步一步运行的。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。

////////////////////////////////////////////////////////////////////////////////
  内容:1、本程序用于测试4相步进电机常规驱动
        2、需要用跳帽或者杜邦线把信号输出端和对应的步进电机信号输入端连接起来
        3、速度不可以调节的过快,不然就没有力矩转动了
  4、按s4(设置成独立按键模式)可以控制正反转
           接口P1.0-P1.3 分别接ABCD
 ------------------------------------------------*/

#include

bit Flag;//定义正反转标志位


unsigned char code F_Rotation[4]={0xf1,0xf2,0xf4,0xf8}; //正转表格
unsigned char code B_Rotation[4]={0xf8,0xf4,0xf2,0xf1}; //反转表格
/******************************************************************/
/*                    延时函数                                    */
/******************************************************************/
void Delay(unsigned int i)//延时
{
 while(--i);
}
/******************************************************************/
/*                   主函数                                       */
/******************************************************************/
main()
{
 
 unsigned char i;

 
  EX1=1;         //外部中断0开
  IT1=1;         //边沿触发
  EA=1;          //全局中断开

 while(!Flag)           
 {
  P0=0x71;//显示 F 标示正转
  for(i=0;i<4;i++)      //4相
     {
     P1=F_Rotation;  //输出对应的相 可以自行换成反转表格
     Delay(500);        //改变这个参数可以调整电机转速 ,数字越小,转速越大
  }
  }
while(Flag)
 {
  P0=0x7C;//显示 b 标示反转
  for(i=0;i<4;i++)      //4相
     {
     P1=B_Rotation;  //输出对应的相
     Delay(500);        //改变这个参数可以调整电机转速 ,数字越小,转速越大
  }
  }
}
/******************************************************************/
/*                   中断入口函数                                 */
/******************************************************************/
void ISR_Key(void) interrupt 2 using 1
{
 Delay(300);
 
 Flag=!Flag;         //s3按下触发一次,标志位取反

 }

 

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
6
关闭 站长推荐上一条 /3 下一条