登录|立即注册|使用QQ帐号登录
论坛 > 24小时必答区
发帖|
看2599|回9|收藏
楼主 ID:482449 只看他
2019-3-12 16:33
//——————————————单四拍        ————————————————————
        for(j=0;j<64;j++)//内部电机转64圈=输出轴转1圈
        {
        for(i=0;i<16;i++)//16×4=64,64个脉冲内部电机转一圈
        {
                        for(index=0;index<3;index++)//一轮4个脉冲
                        {
                                        switch(index)
                                        {
                                                        case 0:MOTOA=1;MOTOB=0;MOTOC=0;MOTOD=0;break;
                                                        case 1:MOTOA=0;MOTOB=1;MOTOC=0;MOTOD=0;break;  
                                                        case 2:MOTOA=0;MOTOB=0;MOTOC=1;MOTOD=0;break;
                                                        case 3:MOTOA=0;MOTOB=0;MOTOC=0;MOTOD=1;break;
                                        }
                                delay(4);        
                        }
                }
        }
这是步进电机转一圈的程序,问题是我这延时4毫秒,总延时有4*4*16*64毫秒大约等于16秒,但电机转一圈只花了11秒,为什么呀,光光延时就要16秒,都没算上程序运行的时间,是芯片问题还是步进电机的问题,电机型号是28BYJ48。
想不通想不通,晕了


沙发 ID:404160 只看他
2019-3-12 18:33
软件延时精度不够。
板凳 ID:479969 只看他
2019-3-12 20:08
for(index=0;index<3;index++)//一轮4个脉冲
地板 ID:479969 只看他
2019-3-12 20:11
for(index=0;index<3;index++)//一轮4个脉冲
改为
for(index=0;index<4;index++)//一轮4个脉冲
不然index只要0,1,2这3个状态。当然时间少啦!能转就不错了,正常丢相不能转动。
5# ID:332366 只看他
2019-3-12 21:10
能不能看看你的延时函数?
6# ID:265635 只看他
2019-3-12 22:41
延时跟晶振有关系。
7# ID:482449 只看他
2019-3-13 16:59

引用:

飞云居士 发表于 2019-3-12 18:33
软件延时精度不够。

我试过了,延时大了不转,延时小了也不转,现在这个范围差不多刚好
8# ID:482449 只看他
2019-3-13 17:00

引用:

ly143 发表于 2019-3-12 21:10
能不能看看你的延时函数?

void delay(unsigned int t)
{
  unsigned int i, j;
  for(i=0; i<t; i++)
  {
    for(j=845;j>0;j--);
  }
}
晶振使用内部晶振12M,请问我这个对吗
9# ID:482449 只看他
2019-3-13 17:01

引用:

liu_kl 发表于 2019-3-12 22:41
延时跟晶振有关系。

晶振是12M,程序在楼上,希望大佬指点迷津
10# ID:482449 只看他
2019-3-13 17:09

引用:

webuserzhy 发表于 2019-3-12 20:11
for(index=0;index

原来如此,太久没用接触编程真的忘了好多,感谢

51黑电子论坛

Powered by Discuz! X3.1

首页|标准版|触屏版|电脑版