标题: 请教51单片机控制电机转动的问题 [打印本页]

作者: 清明-    时间: 2019-2-22 19:55
标题: 请教51单片机控制电机转动的问题
小弟最近开始学做一个基于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的情况也是这样。



作者: 1835886    时间: 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);       
        }
}
试一下这个
作者: 凤姐438    时间: 2019-2-23 13:04
1.LN298N 使能引脚没有接
2.驱动电机的电源 电流不足
作者: dadaguai11    时间: 2019-2-23 14:58
L298N是否使能?
电源供电接口有无接错?电源是否稳压?不要用单片机直接去做电源。
驱动与单片机共地了没有。。。。

作者: gh001    时间: 2019-2-23 15:35
298可驱动两个电机,对于每个电机来说,三根线输入298(in1,in2,ena)输出两根(out1,out2)接电机,另外一个电机类似
你先检查电路
然后再分析程序
作者: 清明-    时间: 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;& ...

好的,谢谢
作者: 清明-    时间: 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吗?
作者: 清明-    时间: 2019-2-23 20:44
dadaguai11 发表于 2019-2-23 14:58
L298N是否使能?
电源供电接口有无接错?电源是否稳压?不要用单片机直接去做电源。
驱动与单片机共地了 ...

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

作者: 清明-    时间: 2019-2-23 20:46
gh001 发表于 2019-2-23 15:35
298可驱动两个电机,对于每个电机来说,三根线输入298(in1,in2,ena)输出两根(out1,out2)接电机,另 ...

好,电路应该没有问题,我再看看程序。谢谢
作者: 清明-    时间: 2019-2-23 20:47
凤姐438 发表于 2019-2-23 13:04
1.LN298N 使能引脚没有接
2.驱动电机的电源 电流不足

接了,我再看下电源问题




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1