找回密码
 立即注册

QQ登录

只需一步,快速开始

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

请教51单片机控制电机转动的问题

[复制链接]
跳转到指定楼层
楼主
ID:479025 发表于 2019-2-22 19:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
小弟最近开始学做一个基于51单片机的循迹小车,却在第一步遇上了麻烦。
我用L298n步进电机驱动
OUT1,OUT2接左边电机;
OUT3,OUT4接右边电机;
然后写了一个让两个电机转动的程序:

#include <reg51.h>

sbit IN1=P1^0;
sbit IN2=P1^1;
sbit IN3=P1^2;
sbit IN4=P1^3;

//延时函数
void delay(unsigned int k)
{
unsigned int x,y;
for(x=0;x<k;x++)
for(y=0;y<2000;y++);
}
/************************************************************************/
/*--主函数--*/
void main(void)
{

delay(100);
while(1)
{
IN1=1;
IN2=0;
IN3=1;
IN4=0;
}
}

问题是接好线后电机不转了。
对于左边的电机,我将IN1和IN2分别与P1.0和P1.1相接,电机不转;
当我将其中一个断开(只将IN1与P1.0相接,IN2断开),电机就转动了;反过来只接IN2也是这样。
IN1,IN2其中任意一个与单片机的IO口的任意一只引脚相接,另外一个断开,都会让电机转动;
两个同时接上就不动了。IN3和IN4的情况也是这样。


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

使用道具 举报

沙发
ID:479615 发表于 2019-2-23 12:27 | 只看该作者
#include "reg52.h"                         //&acute;&Euml;&Icirc;&Auml;&frac14;&thorn;&Ouml;&ETH;&para;¨&Ograve;&aring;&Aacute;&Euml;&micro;&yen;&AElig;&not;&raquo;ú&micro;&Auml;&Ograve;&raquo;&ETH;&copy;&Igrave;&Oslash;&Ecirc;&acirc;&sup1;&brvbar;&Auml;&Uuml;&frac14;&Auml;&acute;&aelig;&AElig;÷
#include<intrins.h>                //&Ograve;ò&Icirc;&ordf;&Ograve;&ordf;&Oacute;&Atilde;&micro;&frac12;×ó&Oacute;&Ograve;&Ograve;&AElig;&ordm;&macr;&Ecirc;&yacute;&pound;&not;&Euml;ù&Ograve;&Ocirc;&frac14;&Oacute;&Egrave;&euml;&Otilde;&acirc;&cedil;&ouml;&Iacute;·&Icirc;&Auml;&frac14;&thorn;

typedef unsigned int u16;          //&para;&Ocirc;&Ecirc;&yacute;&frac34;&Yacute;&Agrave;à&ETH;&Iacute;&frac12;&oslash;&ETH;&ETH;&Eacute;ù&Atilde;÷&para;¨&Ograve;&aring;
typedef unsigned char u8;

sbit MOTOA = P1^0;
sbit MOTOB = P1^1;
sbit MOTOC = P1^2;
sbit MOTOD = P1^3;        

#define SPEED 200

/*******************************************************************************
* &ordm;&macr; &Ecirc;&yacute; &Atilde;&ucirc;         : delay
* &ordm;&macr;&Ecirc;&yacute;&sup1;&brvbar;&Auml;&Uuml;                   : &Ntilde;&Oacute;&Ecirc;±&ordm;&macr;&Ecirc;&yacute;&pound;&not;i=1&Ecirc;±&pound;&not;&acute;ó&Ocirc;&frac14;&Ntilde;&Oacute;&Ecirc;±10us
*******************************************************************************/
void delay(u16 i)
{
        while(i--);       
}


/*******************************************************************************
* &ordm;&macr; &Ecirc;&yacute; &Atilde;&ucirc;       : main
* &ordm;&macr;&Ecirc;&yacute;&sup1;&brvbar;&Auml;&Uuml;                 : &Ouml;÷&ordm;&macr;&Ecirc;&yacute;
* &Ecirc;&auml;    &Egrave;&euml;       : &Icirc;&THORN;
* &Ecirc;&auml;    &sup3;&ouml;             : &Icirc;&THORN;
*******************************************************************************/
void main()
{       
        P1=0X00;
        while(1)
        {       
                MOTOA = 1;
                MOTOB = 0;
                MOTOC = 1;
                MOTOD = 1;
                delay(SPEED);

                MOTOA = 1;
                MOTOB = 1;
                MOTOC = 1;
                MOTOD = 0;
                delay(SPEED);

                MOTOA = 0;
                MOTOB = 1;
                MOTOC = 1;
                MOTOD = 1;
                delay(SPEED);

                MOTOA = 1;
                MOTOB = 1;
                MOTOC = 0;
                MOTOD = 1;
                delay(SPEED);       
        }
}
试一下这个
回复

使用道具 举报

板凳
ID:69072 发表于 2019-2-23 13:04 | 只看该作者
1.LN298N 使能引脚没有接
2.驱动电机的电源 电流不足
回复

使用道具 举报

地板
ID:461179 发表于 2019-2-23 14:58 | 只看该作者
L298N是否使能?
电源供电接口有无接错?电源是否稳压?不要用单片机直接去做电源。
驱动与单片机共地了没有。。。。
回复

使用道具 举报

5#
ID:317383 发表于 2019-2-23 15:35 | 只看该作者
298可驱动两个电机,对于每个电机来说,三根线输入298(in1,in2,ena)输出两根(out1,out2)接电机,另外一个电机类似
你先检查电路
然后再分析程序
回复

使用道具 举报

6#
ID:479025 发表于 2019-2-23 20:39 | 只看该作者
1835886 发表于 2019-2-23 12:27
#include "reg52.h"                         //&acute;&Euml;&Icirc;&Auml;&frac14;&thorn;&Ouml;&ETH;&para;¨&Ograve;&aring;& ...

好的,谢谢
回复

使用道具 举报

7#
ID:479025 发表于 2019-2-23 20:41 | 只看该作者
1835886 发表于 2019-2-23 12:27
#include "reg52.h"                         //&acute;&Euml;&Icirc;&Auml;&frac14;&thorn;&Ouml;&ETH;&para;¨&Ograve;&aring;& ...

不用管ENA,ENB吗?
回复

使用道具 举报

8#
ID:479025 发表于 2019-2-23 20:44 | 只看该作者
dadaguai11 发表于 2019-2-23 14:58
L298N是否使能?
电源供电接口有无接错?电源是否稳压?不要用单片机直接去做电源。
驱动与单片机共地了 ...

接了使能的,供电接口这些也没问题。
回复

使用道具 举报

9#
ID:479025 发表于 2019-2-23 20:46 | 只看该作者
gh001 发表于 2019-2-23 15:35
298可驱动两个电机,对于每个电机来说,三根线输入298(in1,in2,ena)输出两根(out1,out2)接电机,另 ...

好,电路应该没有问题,我再看看程序。谢谢
回复

使用道具 举报

10#
ID:479025 发表于 2019-2-23 20:47 | 只看该作者
凤姐438 发表于 2019-2-23 13:04
1.LN298N 使能引脚没有接
2.驱动电机的电源 电流不足

接了,我再看下电源问题
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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