使用步进电机为小的28BYJ-48,驱动芯片为ULN2003A,单片机为STC15F2K60s2,驱动步进电机旋转时转速不可控,是通过延时程序来使不同的绕组通电,步进电机旋转,通过speed变量改变延时时间,Proteus里面89C51仿真时改变变量值就可控,但是实际上手就不行了,自己改了时间就震动,不转动。请问有大佬做过吗? 询问一个15单片机适合的延时时间,万分感谢。调用程序为:
- void qiangxi_motor(void)
- {
- speed=2; //200 测试:(1)600 (2)400 (3)200 (4)60 (5)40 (6)25 2时才能转动
- for(i=0;i<120;i++) //.2. 845 120
- MotorCW(); //顺时针转动
- // for(i=0;i<60;i++) // 845 60
- // MotorCW(); //顺时针转动
- delayms(500);delayms(500);
- for(i=0;i<120;i++)
- MotorCCW();
- delayms(500);delayms(500);
- }
- void MotorCW(void)
- {
- uchar i;
- for(i=0;i<4;i++)
- {
- MotorData=phasecw[i];
- delayms(speed);//转速调节
- }
- }
- void MotorCCW(void)
- {
- uchar i;
- for(i=0;i<4;i++)
- {
- MotorData=phaseccw[i];
- delayms(speed);//转速调节
- }
- }
- void delayms(int n)
- {
- int i,j;
- for(i=n;i>0;i--)
- for(j=845;j>0;j--); //2/3 = 564 4/5 = 676 5/6 704
- }
复制代码
步进电机:
|