极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 12287|回复: 3

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

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



  12. void setup() {
  13.   // put your setup code here, to run once:
  14.   Serial.begin(9600);
  15.   pinMode(PWMA,OUTPUT);
  16.   pinMode(PWMB,OUTPUT);
  17.   pinMode(DIRA,OUTPUT);
  18.   pinMode(DIRB,OUTPUT);
  19.   pinMode(BREAKA,OUTPUT);
  20.   digitalWrite(BREAKA,LOW);
  21.   pinMode(BREAKB,OUTPUT);
  22.   digitalWrite(BREAKB,LOW);
  23. }



  24. void f(int n)
  25. {
  26.   dira=0;
  27.   dirb=0;
  28.   if(n=='F')
  29.   {
  30.     Vpwma=Vpwm;
  31.     Vpwmb=Vpwm;
  32.   }
  33.   else if(n=='G')
  34.   {
  35.     Vpwma=0;
  36.     Vpwmb=Vpwm;
  37.   }
  38.   else if(n=='I')
  39.   {
  40.     Vpwma=Vpwm;
  41.     Vpwmb=0;
  42.   }
  43. }



  44. void b(int n)
  45. {
  46.   dira=1;
  47.   dirb=1;
  48.   if(n=='B')
  49.   {
  50.     Vpwma=Vpwm;
  51.     Vpwmb=Vpwm;
  52.   }
  53.   else if(n=='H')
  54.   {
  55.     Vpwma=0;
  56.     Vpwmb=Vpwm;
  57.   }
  58.   else if(n=='J')
  59.   {
  60.     Vpwma=Vpwm;
  61.     Vpwmb=0;
  62.   }
  63. }



  64. void s(int n)
  65. {
  66.   if(n=='S')
  67.   {
  68.     Vpwma=0;
  69.     Vpwmb=0;
  70.     dira=0;
  71.     dirb=0;
  72.   }
  73.   else if(n=='L')
  74.   {
  75.     Vpwma=Vpwm;
  76.     Vpwmb=Vpwm;
  77.     dira=1;
  78.     dirb=0;
  79.   }
  80.   else if(n=='R')
  81.   {
  82.     Vpwma=Vpwm;
  83.     Vpwmb=Vpwm;
  84.     dira=0;
  85.     dirb=1;
  86.   }
  87. }



  88. void sp(int n)
  89. {
  90.   switch(n)
  91.   {
  92.     case'0':Vpwm=65;break;
  93.     case'1':Vpwm=85;break;
  94.     case'2':Vpwm=103;break;
  95.     case'3':Vpwm=122;break;
  96.     case'4':Vpwm=141;break;
  97.     case'5':Vpwm=160;break;
  98.     case'6':Vpwm=179;break;
  99.     case'7':Vpwm=198;break;
  100.     case'8':Vpwm=217;break;
  101.     case'9':Vpwm=236;break;
  102.     case'q':Vpwm=250;break;
  103.   }
  104. }



  105. void choice(int n)
  106. {
  107.   switch(n)
  108.   {
  109.     case'F':f(n);break;
  110.     case'B':b(n);break;
  111.     case'L':s(n);break;
  112.     case'R':s(n);break;
  113.     case'G':f(n);break;
  114.     case'I':f(n);break;
  115.     case'H':b(n);break;
  116.     case'J':b(n);break;
  117.     case'S':s(n);break;
  118.     case'0':sp(n);break;
  119.     case'1':sp(n);break;
  120.     case'2':sp(n);break;
  121.     case'3':sp(n);break;
  122.     case'4':sp(n);break;
  123.     case'5':sp(n);break;
  124.     case'6':sp(n);break;
  125.     case'7':sp(n);break;
  126.     case'8':sp(n);break;
  127.     case'9':sp(n);break;
  128.     case'q':sp(n);break;
  129.   }
  130. }



  131. void loop() {
  132.   // put your main code here, to run repeatedly:
  133.   if(Serial.available())
  134.   {
  135.     choice(Serial.read());
  136.   }
  137.   digitalWrite(DIRA,dira);
  138.   digitalWrite(DIRB,dirb);
  139.   analogWrite(PWMA,Vpwma);
  140.   analogWrite(PWMB,Vpwmb);
  141. }
复制代码
回复

使用道具 举报

发表于 2016-4-29 08:37:21 | 显示全部楼层
会不会是供电问题,电机和控制板电源尽量分开
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-4-29 09:01:16 | 显示全部楼层
cjnt007 发表于 2016-4-29 08:37
会不会是供电问题,电机和控制板电源尽量分开

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

使用道具 举报

 楼主| 发表于 2016-4-29 09:01:41 | 显示全部楼层
cjnt007 发表于 2016-4-29 08:37
会不会是供电问题,电机和控制板电源尽量分开

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

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-15 03:21 , Processed in 0.034856 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表