我用L298N驱动俩个电机时,使能端电压不相同,导致俩个电机速度不一样。 请问是不是程序的原因?急急急

#include<reg51.h>
#include<math.h>
#define uchar unsigned char
#define uint unsigned int
sbit enA=P2^4; /* L298的Enable A */
sbit s1=P2^2; /* L298的Input 1 */
sbit s2=P2^3; /* L298的Input 2 */
sbit enB=P2^5; /* L298的Enable B*/
sbit s3=P2^6; /* L298的Input 3 */
sbit s4=P2^7; /*L298的Input 4 */
sbit leftIR1=P1^7; //定义前方左侧红外接收端口
sbit rightIR1=P1^6; //定义前主右侧红外接收端口
void ControlCar(uchar CarType) //定义小车控制子程序
{
enA=0;
enB=0;

switch(CarType) //判断小车控制指令类=型
{ case 1: //前进 //判断是否是前进
{enA=1;
s1=1;
s2=0;
enB=1;
s3=1;
s4=0;
break; //退出判断
}
case 2: //后退 //判断是否是后退
{enA=1;
s1=0;
s2=1;
enB=1;
s3=0;
s4=1;
break; //退出判断
}
case 3: //左转 //判断是否是左转
{ enA=1;
s1=1;
s2=0;
enB=0;
s3=0;
s4=1;
break; //退出判断
}
case 4: //右转 //判断是否是右转
{ enA=0;
s1=0;
s2=1;
enB=1;
s3=1;
s4=0;
break; //退出判断
}
default: //默认情况下的判断
{
break; //直接退出判断
}
}
}
void delay(uint j) /* 简易延时函数 */
{
for(j;j>0;j--);
}
void main(void) //主程序入口
{ ControlCar(1);
while(1)
{
if(leftIR1 && rightIR1)
{ControlCar(1);}
if((!rightIR1) && leftIR1)
{
ControlCar(4);
}
if(rightIR1 && (!leftIR1))
{
ControlCar(3);
}
if(!(rightIR1 || leftIR1))
{
break;}

}
ControlCar(1);

}

应该不是程序的原因,原因是两个电机的性能不一致,实际上型号一样的电机在相同的控制信号和电压下,转速也可能不一样。
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-08-04
使能端不是问题 , 因为使能端想当于一个,(选中/打开)开关作用只要电压高于低电平的值就会被认为是高电平,电压高低不是问题所在,但是如果驱动2个一样的电机的电压不同也会导致转速不一,追问

没有接电机的时候电 压基本是一样的啊,接上之后就一个是5伏 一个是2伏,而且随红外的探测情况而变化,波动极大,当俩个红外都有反应时,俩个电机到达十二伏。。。大侠请问这是为什么呢??????????

追答

能描述能详细些不,说明哪个与哪个在变化等

相似回答