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 static/image/common/back.gif
会不会是供电问题,电机和控制板电源尽量分开
是分开的,驱动板用的是COROBOT光耦隔离的,以前用过一个杂牌子的板子,结果出了次问题,把Arduino都给烧了。 cjnt007 发表于 2016-4-29 08:37 static/image/common/back.gif
会不会是供电问题,电机和控制板电源尽量分开
是分开的,驱动板用的是COROBOT光耦隔离的,以前用过一个杂牌子的板子,结果出了次问题,把Arduino都给烧了。
页:
[1]