步进电机控制器

步进电机控制器
任务与要求:
(1) 用边沿 D 触发器或主从 JK 触发器设计一个兼有三相六拍、三相三拍两种工作方式的脉冲分配器;
(2) 能控制步进电机作正向和反向运转;
(3) 设计驱动步进电机工作的脉冲放大电路,使之能驱动一个相电压为 24V 、相电流为 0.2A 的步进电机工作;
(4) 设计步数显示和步数控制电路,能控制电机运转到预置的步数时即停止转动,或运转到预定圈数时停转;
(5) 设计电路工作的时钟信号,频率为 10Hz~10KHz 且连续可调。
说明:设计思路越详细越好,设计说明越详细越好,设计过程越简单越好。不要写那种到哪个网址去找的答案。。如果本人感觉设计很好,还会追加悬赏积分,跪求,邮箱:[email protected]

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

#include <reg52.h>

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[i]; //输出对应的相 可以自行换成反转表格
Delay(500); //改变这个参数可以调整电机转速 ,数字越小,转速越大
}
}
while(Flag)
{
P0=0x7C;//显示 b 标示反转
for(i=0;i<4;i++) //4相
{
P1=B_Rotation[i]; //输出对应的相
Delay(500); //改变这个参数可以调整电机转速 ,数字越小,转速越大
}
}
}
/******************************************************************/
/* 中断入口函数 */
/******************************************************************/
void ISR_Key(void) interrupt 2 using 1
{
Delay(300);

Flag=!Flag; //s3按下触发一次,标志位取反

}本回答被网友采纳
相似回答