步进电机旋转一定角度用单片机控制的程序怎么写?

2019-07-18 15:04发布

两相步进电机,步距角1.8度,每次旋转120度,停10s,转速60rad/min,步进电机驱动器SH2034D,单片机控制,程序怎么写,求大神指点。。。。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
19条回答
wsh418
1楼-- · 2019-07-19 12:49
jiciwi 发表于 2016-9-27 16:44
不是,整步的话,200个脉冲,你1.8°的电机转一圈,2细分的话,就要400个脉冲。你需要60rad/min,可以算出你需要给的频率是200*n, n就是细分数,然后转120度的话,需要给的个数就是200*n/3.然后定时延迟10s

#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit FREE=P2^1;
sbit CP=P2^2;
sbit DIR=P2^3;
sbit key=P1^0;
uchar i,j,z;
void delay()
{
        uint y;
        for(y=114;y>0;y--)
           {}
}
void main()
{
        if(key==0)
        {
                CP=0;
                FREE=1;
                for(i=0;i<400;i++)
                {   
                    CP=1;
                        delay();
                        CP=0;
                        delay();       
                }
                if(i==400)
          {
           CP=0;
           FREE=1;
           }

           for(j=10000;j>0;j--)
               for(z=110;z>0;z--);
        }

}
这个程序怎么停不下来,用的6细分,120度脉冲不是400个吗?求指点

jiciwi
2楼-- · 2019-07-19 13:12
 精彩回答 2  元偷偷看……
wsh418
3楼-- · 2019-07-19 15:50
jiciwi 发表于 2016-9-28 08:51
uchar i,j,z;
是几位的?

uint i,j,z;这个我改了,然后还是不行。。
jiciwi
4楼-- · 2019-07-19 19:53
wsh418 发表于 2016-9-28 09:25
uint i,j,z;这个我改了,然后还是不行。。

我的意思是你的单片机是几位的?如果是8位就有问题,如果是32位就没问题。然后,你的程序应该在重复在转吧,中间有停一段时间么
阿飞7812
5楼-- · 2019-07-19 20:49
谢谢分享
wsh418
6楼-- · 2019-07-20 01:13
jiciwi 发表于 2016-9-28 09:36
我的意思是你的单片机是几位的?如果是8位就有问题,如果是32位就没问题。然后,你的程序应该在重复在转吧,中间有停一段时间么

8位的单片机,所以改过了,,,中间有个for(i=0;i<400;i++)循环,目的不就是到400次结束循环吗,应该转过的是120度吧(细分6,,400个脉冲转120度),这儿停不下来。

一周热门 更多>