標題: 請教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;

//延時函數(shù)
void delay(unsigned int k)
{
unsigned int x,y;
for(x=0;x<k;x++)
for(y=0;y<2000;y++);
}
/************************************************************************/
/*--主函數(shù)--*/
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是否使能?
電源供電接口有無接錯?電源是否穩(wěn)壓?不要用單片機直接去做電源。
驅動與單片機共地了沒有。。。。

作者: gh001    時間: 2019-2-23 15:35
298可驅動兩個電機,對于每個電機來說,三根線輸入298(in1,in2,ena)輸出兩根(out1,out2)接電機,另外一個電機類似
你先檢查電路
然后再分析程序
作者: 清明-    時間: 2019-2-23 20:39
1835886 發(fā)表于 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 發(fā)表于 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 發(fā)表于 2019-2-23 14:58
L298N是否使能?
電源供電接口有無接錯?電源是否穩(wěn)壓?不要用單片機直接去做電源。
驅動與單片機共地了 ...

接了使能的,供電接口這些也沒問題。

作者: 清明-    時間: 2019-2-23 20:46
gh001 發(fā)表于 2019-2-23 15:35
298可驅動兩個電機,對于每個電機來說,三根線輸入298(in1,in2,ena)輸出兩根(out1,out2)接電機,另 ...

好,電路應該沒有問題,我再看看程序。謝謝
作者: 清明-    時間: 2019-2-23 20:47
鳳姐438 發(fā)表于 2019-2-23 13:04
1.LN298N 使能引腳沒有接
2.驅動電機的電源 電流不足

接了,我再看下電源問題




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1