找回密码
 立即注册

QQ登录

只需一步,快速开始

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

51单片机控制的步进电机不转动

[复制链接]
跳转到指定楼层
楼主
ID:382600 发表于 2018-9-16 09:55 来自手机 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
我用51单片机做控制器,连接驱动器和步进电机,但是不转动,程序是这样的
#include "reg51.h"

typedef unsigned int u16;
typedef unsigned char u8;

sbit SN=P0^2;
sbit FX=P0^1;
sbit MC=P0^0;





void delay(u16 z)
{        
      

        while(z--);        
}

void main()
{   
      
   while(1)
   {
                 FX=1;
                 delay(10);
                 SN=1;
                 delay(10);

                 MC=1;
                 delay(10);
                 MC=0;


   }
}
有谁可以帮我看看哪里错了吗,求解,谢谢!

1537062722339.jpg (86.44 KB, 下载次数: 32)

1537062722339.jpg

1537062777566.jpg (76.18 KB, 下载次数: 22)

1537062777566.jpg
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:310519 发表于 2018-9-16 19:40 | 只看该作者
不知道你的线路接得对不对。

如果你是由IO口直接输出控制信号,那可能要开启强上拉,最好串个1K左右的电阻。
回复

使用道具 举报

板凳
ID:211052 发表于 2018-9-16 21:11 | 只看该作者
进入调试模式,看看单片机发的信号对不对。用示波器看下波形
回复

使用道具 举报

地板
ID:382600 发表于 2018-9-16 22:20 来自手机 | 只看该作者
diy1997 发表于 2018-9-16 19:40
不知道你的线路接得对不对。

如果你是由IO口直接输出控制信号,那可能要开启强上拉,最好串个1K左右的电 ...

开启强上拉是什么意思啊,还有为什么要串个电阻呢 求解。
回复

使用道具 举报

5#
ID:398191 发表于 2018-9-17 10:38 | 只看该作者
仔细检查检查,io口和接线端是否都接正确且牢固了,上拉电阻很重要,注意哦!还有单片机是否已损坏或插反了,建议你编个小灯的程序,检测一下。
回复

使用道具 举报

6#
ID:398191 发表于 2018-9-17 10:40 | 只看该作者
检测一下单片机是否正常可用;各个IO口及接线端是否都接正确且牢固了。
回复

使用道具 举报

7#
ID:310519 发表于 2018-9-17 11:58 | 只看该作者
111252 发表于 2018-9-16 22:20
开启强上拉是什么意思啊,还有为什么要串个电阻呢 求解。

IO口默认情况下,输出的电流都很小(弱上拉),可能不足以推动步进电机驱动器。

所以要增加输出电流:

1, 可以外接一个上拉电阻,具体值要根据实际算出,要更大的电流,可以加管子。

2,你用的单片机是STC的吧,它的IO口可以配置成强上拉(推挽输出),

开启后,输出电流相对(弱上拉)比较大,可能要根据实际情况串联一个限流电阻。

回复

使用道具 举报

8#
ID:398948 发表于 2018-9-17 12:25 | 只看该作者
看你代码,里面只有MC会高低切换,FX、SN置位代码虽然也在循环里,但是始终只会是高。
步进电机一般都是两组脉冲控制的,根据脉冲数来决定转过的角度,根据两组脉冲的相位来决定转的方向。
你这个还需要提供更详细的资料大家才能帮你。比如电机的相关资料、接线图等等。
回复

使用道具 举报

9#
ID:382600 发表于 2018-9-17 21:15 来自手机 | 只看该作者
diy1997 发表于 2018-9-17 11:58
IO口默认情况下,输出的电流都很小(弱上拉),可能不足以推动步进电机驱动器。

所以要增加输出电流:
...

我这个驱动器上连接的有24v的电源,

1537190021135.jpg (80.48 KB, 下载次数: 26)

1537190021135.jpg

1537190103594.jpg (81.09 KB, 下载次数: 29)

1537190103594.jpg
回复

使用道具 举报

10#
ID:382600 发表于 2018-9-17 21:23 来自手机 | 只看该作者
zorange 发表于 2018-9-17 12:25
看你代码,里面只有MC会高低切换,FX、SN置位代码虽然也在循环里,但是始终只会是高。
步进电机一般都是两 ...

单片机是51的,下图是我连的线路图,驱动器是DM320型号,下图有步进电机的介绍,你看看一下,还有那个FX和SN为什么会一直是高呢?我在程序设定值了啊

1537190488402.jpg (43.05 KB, 下载次数: 31)

1537190488402.jpg

1537190521891.jpg (56.72 KB, 下载次数: 33)

1537190521891.jpg
回复

使用道具 举报

11#
ID:388197 发表于 2018-9-17 22:15 | 只看该作者
驱动器两个EN都悬空了吗?虽然没用过这款驱动器,但两个EN都悬空感觉不对,画的草图驱动器脉冲输入引脚好像是共阴接法,没有5V输入,如果是光耦隔离,开漏的P0口上拉电流肯定不能驱动一个光耦,还有你驱动器电源跟单片机电源是否共地?
另外程序里只有FX = 1,SN = 1没看到置0. FX SN当然只能是1
用的是什么型号的51,如果是老型号的,P0只能开漏并且没有内部上拉,需要外接上拉电阻
新型号的,IO模式有没有设置成浮空?
还有DELAY函数里面就1个变量自减,时间较短,会不会频率过高?
类似功能建议使用中断,像DELAY函数在学习的时候可以用用,真正的项目尽量不要用.
回复

使用道具 举报

12#
ID:382600 发表于 2018-9-18 09:05 来自手机 | 只看该作者
cjm82 发表于 2018-9-17 22:15
驱动器两个EN都悬空了吗?虽然没用过这款驱动器,但两个EN都悬空感觉不对,画的草图驱动器脉冲输入引脚好像是 ...

这个是共阴接法,我在网上查的是共阳会接一个5v电源,这个单片机p0口有外部上拉电阻,可以直接用,还有那个驱动器电源和单片机电源为什么要共地呢,昨天实验的时候用的是中断,但是还不转
回复

使用道具 举报

13#
ID:388197 发表于 2018-9-18 11:13 | 只看该作者
111252 发表于 2018-9-18 09:05
这个是共阴接法,我在网上查的是共阳会接一个5v电源,这个单片机p0口有外部上拉电阻,可以直接用,还有那 ...

搜索了一下该驱动器的手册,PUL+与PUL-(包括EN+ EN- DIR+ DIR-)之间是一个光耦串一个200多欧的电阻,直接用上拉开漏的IO口驱动肯定不行,应该用IO口驱动三极管扩流,你参考下该驱动的手册,里面描述的很详细.
回复

使用道具 举报

14#
ID:310519 发表于 2018-9-18 11:56 | 只看该作者
111252 发表于 2018-9-17 21:15
我这个驱动器上连接的有24v的电源,

我是说,那个IO口的电流可能驱动不了驱动器的信号开关(光藕)。

并不是说驱动器输出的电流不够。
回复

使用道具 举报

15#
ID:396426 发表于 2018-9-18 13:41 | 只看该作者
强烈建议你先查接线方式,算一下你的时钟,再看看你的delays函数看看输出频率对不对,最好找个示波器看一下!!!
回复

使用道具 举报

16#
ID:382600 发表于 2018-9-20 17:51 来自手机 | 只看该作者
谢谢大家了,学到了跟多
回复

使用道具 举报

17#
ID:400726 发表于 2018-9-20 21:33 | 只看该作者
111252 发表于 2018-9-16 22:20
开启强上拉是什么意思啊,还有为什么要串个电阻呢 求解。

上拉电阻
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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