Aceb1shmael 发表于 2016-4-28 23:28:28

L298P,每次把PWM调到最大都会出问题

就是我弄了一个履带底盘然后做了个遥控小车,现在各个功能基本都正常,用蓝牙HC06连安卓控制,app用的是 Bluetooth RC Controller,小车能正常走。一般的调速都没问题,但是把速度条拉到最大的话小车就会不动,然后再按键,比如应该是两个电机都正转,但是实际L298P接线柱之后的LED只会短暂闪一下,然后电机不会动。之后再把电池拔掉或者按Reset之后可以恢复正常。
app发送的信息也测试过,都是相互对应的。
这个问题是什么造成的呢?是程序写的有问题还是板子出问题了呢?
int PWMA = 3;
int PWMB = 11;
int BREAKA = 9;
int BREAKB = 8;
int DIRA = 12;
int DIRB = 13;
int Vpwm = 0;
int Vpwma = 0;
int Vpwmb = 0;
int dira = 0;
int dirb = 0;



void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(PWMA,OUTPUT);
pinMode(PWMB,OUTPUT);
pinMode(DIRA,OUTPUT);
pinMode(DIRB,OUTPUT);
pinMode(BREAKA,OUTPUT);
digitalWrite(BREAKA,LOW);
pinMode(BREAKB,OUTPUT);
digitalWrite(BREAKB,LOW);
}



void f(int n)
{
dira=0;
dirb=0;
if(n=='F')
{
    Vpwma=Vpwm;
    Vpwmb=Vpwm;
}
else if(n=='G')
{
    Vpwma=0;
    Vpwmb=Vpwm;
}
else if(n=='I')
{
    Vpwma=Vpwm;
    Vpwmb=0;
}
}



void b(int n)
{
dira=1;
dirb=1;
if(n=='B')
{
    Vpwma=Vpwm;
    Vpwmb=Vpwm;
}
else if(n=='H')
{
    Vpwma=0;
    Vpwmb=Vpwm;
}
else if(n=='J')
{
    Vpwma=Vpwm;
    Vpwmb=0;
}
}



void s(int n)
{
if(n=='S')
{
    Vpwma=0;
    Vpwmb=0;
    dira=0;
    dirb=0;
}
else if(n=='L')
{
    Vpwma=Vpwm;
    Vpwmb=Vpwm;
    dira=1;
    dirb=0;
}
else if(n=='R')
{
    Vpwma=Vpwm;
    Vpwmb=Vpwm;
    dira=0;
    dirb=1;
}
}



void sp(int n)
{
switch(n)
{
    case'0':Vpwm=65;break;
    case'1':Vpwm=85;break;
    case'2':Vpwm=103;break;
    case'3':Vpwm=122;break;
    case'4':Vpwm=141;break;
    case'5':Vpwm=160;break;
    case'6':Vpwm=179;break;
    case'7':Vpwm=198;break;
    case'8':Vpwm=217;break;
    case'9':Vpwm=236;break;
    case'q':Vpwm=250;break;
}
}



void choice(int n)
{
switch(n)
{
    case'F':f(n);break;
    case'B':b(n);break;
    case'L':s(n);break;
    case'R':s(n);break;
    case'G':f(n);break;
    case'I':f(n);break;
    case'H':b(n);break;
    case'J':b(n);break;
    case'S':s(n);break;
    case'0':sp(n);break;
    case'1':sp(n);break;
    case'2':sp(n);break;
    case'3':sp(n);break;
    case'4':sp(n);break;
    case'5':sp(n);break;
    case'6':sp(n);break;
    case'7':sp(n);break;
    case'8':sp(n);break;
    case'9':sp(n);break;
    case'q':sp(n);break;
}
}



void loop() {
// put your main code here, to run repeatedly:
if(Serial.available())
{
    choice(Serial.read());
}
digitalWrite(DIRA,dira);
digitalWrite(DIRB,dirb);
analogWrite(PWMA,Vpwma);
analogWrite(PWMB,Vpwmb);
}

cjnt007 发表于 2016-4-29 08:37:21

会不会是供电问题,电机和控制板电源尽量分开

Aceb1shmael 发表于 2016-4-29 09:01:16

cjnt007 发表于 2016-4-29 08:37 static/image/common/back.gif
会不会是供电问题,电机和控制板电源尽量分开

是分开的,驱动板用的是COROBOT光耦隔离的,以前用过一个杂牌子的板子,结果出了次问题,把Arduino都给烧了。

Aceb1shmael 发表于 2016-4-29 09:01:41

cjnt007 发表于 2016-4-29 08:37 static/image/common/back.gif
会不会是供电问题,电机和控制板电源尽量分开

是分开的,驱动板用的是COROBOT光耦隔离的,以前用过一个杂牌子的板子,结果出了次问题,把Arduino都给烧了。
页: [1]
查看完整版本: L298P,每次把PWM调到最大都会出问题