名称:步进电机搏御
------------------------------------------------*/
#include <基清岩reg52.h>
sbit step=P1^0//步进脉冲,一个正行正脉冲就转一个步距角
sbit dir=P1^1//1为正转,0为反转。
sbit sleep=P1^2
sbit res=P1^3
unsigned char sum=0
unsigned char i=200
/********************毫秒延时函数***************************/
void Delay(unsigned int xms)
{
unsigned int i,j
for(i=xmsi>0i--)
for(j=110j>0j--)
}
void ISR_Key(void) interrupt 2 //外部中断1
{
Delay(20)
sum++
if(sum==1)
{
dir=~dir
}
if(sum==1) sum=0
}
/******************************************************************/
/* 主函数 */
/******************************************************************/
main()
{
dir=1//正转
sleep=1//休眠无效
res=1//复位无效
step=1
EX1=1//外部中断1开
IT1=1//边沿触发
EA=1//全局中断开
while(i)
{
step=~step
Delay(2)
i--
//需要延时,不延时电机不动,延时太久也不动。改变这个参数可以调整电机转速 ,数字越小,转速越大。
}
dir=1//反转
while(1)
{
step=~step
Delay(2)
}
}
这看你的驱动模式和要求了。还有你玩单片的情度了!ULN2003只是可控功率器件,并无其它功能,与分立元件无什么分别。现在我忽略其最高工作电压、最大输出电流等因素来说事。
下面就拿驱动二相步进电机为例:
1、采用底边驱动方式筒单地驱动二相五线步进电机应无问题。但步进电机驱动还要刹车、半流刹车等功能,要具备槐培旦这些功能,单片机的程序和内部运算就复杂了。
2、如果采用桥式驱动方式驱动二相四线步进电机,上桥的驱动电压要很高(Vgs),单片机的输出电压无法打开上桥电路,
3、如果需要细分、过流保护、热保护、半流等功能那其配套电路或单中猛片机程序和内部运算也大复杂了。
4、步进电机专用芯片一般功能齐全,许多还有限流功能(或叫恒流)。每个电机的驱动只需要两路输入信号:一个是步进脉冲、一个正反转信号就能工作。这铅扰样单片机的程序就简单了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)