找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3910|回复: 9
打印 上一主题 下一主题
收起左侧

求助,怎么让单片机精确控制步进电机

[复制链接]
跳转到指定楼层
楼主
ID:88960 发表于 2015-8-27 14:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我想让51单片机精确控制步进电机运动,步距角是18度,用的是8拍程序,为什么精度只有0.6毫米,理论上是0.075毫米啊,到底错在哪里了,,求助
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:88960 发表于 2015-8-27 14:15 | 只看该作者
源程序请大神看一下
void PositiveTurn(float length)   //length为要移动的距离
{
        while (1)
        {
                Xa = 1; Xa_ = 0; Xb = 0; Xb_ = 0; //第一拍
                length = length - 0.075;
                if (length <= 0)
                   return;
                delay();
                Xa = 1; Xa_ = 0; Xb = 1; Xb_ = 0; //第二拍
                length = length - 0.075;
                if (length <= 0)
                   return;
                delay();
                Xa = 0; Xa_ = 0; Xb = 1; Xb_ = 0; //第三拍
                length = length - 0.075;
                if (length <= 0)
                   return;
                delay();
                Xa = 0; Xa_ = 1; Xb = 1; Xb_ = 0; //第四拍
                length = length - 0.075;
                if (length <= 0)
                   return;
                delay();
                Xa = 0; Xa_ = 1; Xb = 0; Xb_ = 0; //第五拍
                length = length - 0.075;
                if (length <= 0)
                   return;
                delay();
                Xa = 0; Xa_ = 1; Xb = 0; Xb_ = 1; //第六拍
                length = length - 0.075;
                if (length <= 0)
                   return;
                delay();
                Xa = 0; Xa_ = 0; Xb = 0; Xb_ = 1; //第七拍
                length = length - 0.075;
                if (length <= 0)
                   return;
                delay();
                Xa = 1; Xa_ = 0; Xb = 0; Xb_ = 1; //第八拍
                length = length - 0.075;
                if (length <= 0)
                   return;
                delay();
               
        }
}
回复

使用道具 举报

板凳
ID:88960 发表于 2015-8-27 14:16 | 只看该作者
不知道为什么length设定为的时候才动一下 设定比0.6小的值只是抖动,并不走
回复

使用道具 举报

地板
ID:88960 发表于 2015-8-27 14:17 | 只看该作者
有人吗   求助啊
回复

使用道具 举报

5#
ID:74784 发表于 2015-8-27 20:54 | 只看该作者
步距角是18度???
换电机吧~~~~~~~~~~~~~~~~~`
回复

使用道具 举报

6#
ID:77282 发表于 2015-8-29 15:53 | 只看该作者
我觉得你这种控制方式,不细分的话,只能控制电机18度18度的转,不可能有其他的度数,也就不可能有其他的精度。个人观点
回复

使用道具 举报

7#
ID:110225 发表于 2016-12-2 19:36 | 只看该作者
失步了吧
回复

使用道具 举报

8#
ID:153199 发表于 2016-12-17 15:13 | 只看该作者
需要加细分,否则容易丢步
回复

使用道具 举报

9#
ID:137676 发表于 2016-12-17 19:46 | 只看该作者
我只知道利用PWM控制电机角度,我也不知道怎么写程序,希望你考虑选用PWM进行确定角度。
回复

使用道具 举报

10#
ID:137676 发表于 2016-12-17 19:49 | 只看该作者
PWM的占空比为50%就能达到9°。25%就能达到4.5°。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表