单片机控制单片机步进电机程序,声音太大怎么处理?

21ic官方微信-->
后使用快捷导航没有帐号?
请完成以下验证码
查看: 11252|回复: 6
请教一下步进电机转动抖动很大的问题。
&&未结帖(20)
主题帖子积分
中级技术员, 积分 180, 距离下一级还需 120 积分
中级技术员, 积分 180, 距离下一级还需 120 积分
主题帖子积分
专家等级:结帖率:80%
主题帖子积分
中级技术员, 积分 180, 距离下一级还需 120 积分
中级技术员, 积分 180, 距离下一级还需 120 积分
本人在用39系列的两相四线的步进电机,有几个问题一直不知道怎么解决:
(1):电机转动的时候抖动很大。
(2):每次启动电机的时候都是来回转一下然后在转动起来。(ps:以用了加减速的方法去启动步进电机了,还是会出现这种情况)
(3):步进的角度很难控制,要让它转动一定角度的时候,都是来回的转动。根本达不到要求。
求高手帮忙解决。小弟不甚感激!!!
主题帖子积分
主题帖子积分
专家等级:结帖率:84%
主题帖子积分
估计你软件有问题哦
主题帖子积分
中级技术员, 积分 180, 距离下一级还需 120 积分
中级技术员, 积分 180, 距离下一级还需 120 积分
主题帖子积分
专家等级:结帖率:80%
主题帖子积分
中级技术员, 积分 180, 距离下一级还需 120 积分
中级技术员, 积分 180, 距离下一级还需 120 积分
大道至简 软件吗?应该不会吧!
#include &c.h&
#include &intrins.h&
#define uchar unsigned char
#define uint unsigned int
sbit key1=P0^4;
sbit key2=P0^5;
sbit key3=P0^6;
sbit key4=P0^7;
uchar code CCW[]={0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1,0xf9}; //逆时钟旋转相序表
uchar code CW[]={0xf9,0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8}; //正时钟旋转相序表
uchar num=4;
/********************延时********************************/
void delayms(uint z)& & //延时ms
for(x=z;x&0;x--)
&&for(y=10;y&0;y--);
void f410_init()
PCA0MD=0X00;
OSCICN=0XC0;//设置时钟振荡,为内部时钟,并且为16分频
XBR0=0X00;
XBR1=0X40;//交叉开关使能,弱上拉使能。
& && && & //XBARE=1;//使能交叉开关。
P0MDIN=0XF0;
/*********************/
uchar keyscan()
if(key1==0)
&&delayms(2);
&&if(key1==0)
& &&&num=0; //正转45
& & while(!key1);
&&if(key2==0)
&&delayms(2);
&&if(key2==0)
& &&&num=1; //正转90
&&while(!key2);
&&if(key3==0)
&&delayms(2);
&&if(key3==0)
& &&&num=2; //反转45
& &&&while(!key3);
&&if(key4==0)
&&delayms(2);
&&if(key4==0)
& &&&num=3; //反转90
&&while(!key4);
/*********************/
void zheng()
uint b,a,i,j=100;
for(a=0;a&25;a++)
for(i=0;i&8;i++)
delayms(j);
else {j=10;b=10;}
/********************/
void zheng1()
uint b,a,i,j=100;
for(a=0;a&150;a++)
for(i=0;i&8;i++)
delayms(j);
else {j=10;b=10;}
/**********************/
void fan()
uint b,a,i,j=100;
for(a=0;a&50;a++)
for(i=0;i&8;i++)
delayms(j);
else {b=10;j=10;}
/**********************/
void fan1()
uint b,a,i,j=100;
for(a=0;a&25;a++)
for(i=0;i&8;i++)
delayms(j);
else {b=10;j=10;}
/**********************/
void ting()
/**********************/
void zhuansu(uchar c)
case 0:zheng();num=4;
case 1:zheng1();num=4;
case 2:fan();num=4;
case 3:fan1();num=4;
case 4:ting();
/**********************/
void main()
f410_init();
zhuansu(keyscan());
这个是我写的一个按键控制步进电机转过角度的程序,可是电机就只是来回的抖动,
软件的话我也用了“加减速”的方法。
主题帖子积分
主题帖子积分
专家等级:结帖率:97%打赏:9.18受赏:110.10
主题帖子积分
用一个专门的驱动电路试试,单片机只要输出两个信号就可以了,一个方波用来控制转动角度,一个高低用来控制正反转。
21ic公开课,21ic网友共同的学习圈子!
主题帖子积分
---------------------
主题帖子积分
---------------------
专家等级:结帖率:97%打赏:0.00受赏:58.00
主题帖子积分
---------------------
(1):电机转动的时候抖动很大。
这是驱动的问题, 楼主整步驱动方法解决不了问题, 可以采用恒流型的驱动器, 可大大减少振动
(2):每次启动电机的时候都是来回转一下然后在转动起来。(ps:以用了加减速的方法去启动步进电机了,还是会出现这种情况)
除了加减速的问题, 更重要的是, 要记忆起动前的电机电气位置.
(3):步进的角度很难控制,要让它转动一定角度的时候,都是来回的转动。根本达不到要求。
恐怕上面的问题解决了, 这个问题也迎刃而解了.
用好步进电机也不是那么容易的, 看来楼主还是新手呢, 先好好钻研钻研步进电机再做控制吧
欢迎进入 !
主题帖子积分
中级技术员, 积分 180, 距离下一级还需 120 积分
中级技术员, 积分 180, 距离下一级还需 120 积分
主题帖子积分
专家等级:结帖率:80%
主题帖子积分
中级技术员, 积分 180, 距离下一级还需 120 积分
中级技术员, 积分 180, 距离下一级还需 120 积分
airwill 是啊,刚开始研究步进电机,没有想象的那么简单,特别是控制小角度转动的时候,老是来回的抖动。不好控制
主题帖子积分
中级技术员, 积分 180, 距离下一级还需 120 积分
中级技术员, 积分 180, 距离下一级还需 120 积分
主题帖子积分
专家等级:结帖率:80%
主题帖子积分
中级技术员, 积分 180, 距离下一级还需 120 积分
中级技术员, 积分 180, 距离下一级还需 120 积分
ningling_21 专门的驱动电路吗?我用的是两相四线的步进电机,有没有比较好的驱动电路。
技术新星奖章
人才类勋章
时间类勋章
荣誉元老奖章
等级类勋章
技术奇才奖章
人才类勋章
坚毅之洋流
发帖类勋章
时间类勋章
核心会员奖章
等级类勋章
技术领袖奖章
人才类勋章
热门推荐 /4本帖子已过去太久远了,不再提供回复功能。}

我要回帖

更多关于 单片机控制步进电机 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信