极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 29933|回复: 15

用l298n做pwm,out1和out2同时亮

[复制链接]
发表于 2012-11-4 00:51:24 | 显示全部楼层 |阅读模式
我用l298n调节小车马达的速度,做了一个最简单的pwm实验:


  1. int in1 = 8;
  2. int in2 = 7;
  3. int ena=6;


  4. void setup() {
  5.   pinMode(in1, OUTPUT);     
  6.   pinMode(in2, OUTPUT);  
  7.   pinMode(ena, OUTPUT);        
  8. }

  9. // the loop routine runs over and over again forever:
  10. void loop() {
  11.     digitalWrite(in1, HIGH);
  12.     digitalWrite(in2, LOW);
  13.       analogWrite(ena, 250);   
  14.       
  15.       delay(4000);
  16. }
复制代码


结果是速度确实慢下来了,但是我发现l298n上面的out1和out2两个灯都亮着,正常应该是只有一个灯亮才对,这难道说明out1和out2都有电流通过?pwm发的应该是0-5.5v的电平,不应该出现倒转的情况吧

卖298n的老板说应该只有一个灯亮的,所以我觉得很奇怪,不应该是代码问题吧?
回复

使用道具 举报

发表于 2012-11-4 11:04:39 | 显示全部楼层
应该是你的程序问题  一般的话en是用高低电平控制的,pwm控制的是in1-4,
回复 支持 反对

使用道具 举报

发表于 2012-11-4 16:42:08 | 显示全部楼层
共地没有????
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-11-4 23:31:57 | 显示全部楼层
smfox10 发表于 2012-11-4 16:42
共地没有????

奇怪的就是这个,我将arduino和l298n共地之后,l298n的开关就不起作用了(就是即使关的时候,也会响应arduino的指令转动马达,并且led灯都亮),我问了老板,说是没关系,所以没有共地...

难不成是298n做工不行吗
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-11-4 23:47:11 | 显示全部楼层
smfox10 发表于 2012-11-4 16:42
共地没有????

奇怪的就是这个,我将arduino和l298n共地之后,l298n的开关就不起作用了(就是即使关的时候,也会响应arduino的指令转动马达,并且led灯都亮),我问了老板,说是没关系,所以没有共地...

难不成是298n做工不行吗
回复 支持 反对

使用道具 举报

发表于 2012-11-5 23:15:30 | 显示全部楼层
你那板子是不是有4个灯啊?那四个灯可能用来指示IN1~4的工作状态,我的是不共地不工作...估计模块不同,你把图发上来让论坛的大大指点下咯,可能有人用过你那模块。我的两个直流电机分别接到IN1、IN2和IN3、IN4。
例如控制左边电机正转
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
反转
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);

当然使能脚还要接,我是直接接5V
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-11-8 10:27:29 | 显示全部楼层
smfox10 发表于 2012-11-5 23:15
你那板子是不是有4个灯啊?那四个灯可能用来指示IN1~4的工作状态,我的是不共地不工作...估计模块不同,你把 ...


l298n模块应该都是一样的吧?也是in1和in2控制左轮正反转,in3和in4控制右轮。

好像跟接地没太大关系,接了地之后还是一样的问题,以左轮为例,描述如下

如果pwm给的值比较小(如10),左轮不转,in1和in2亮,并l298n发声,且pwm值越小,声音越大。

如果pwm值越大(如250),左轮转动很快,声音也小了,in1和in2亮,当pwm为255时,in1亮in2不亮,没有声音。

灯亮的规律是pwm值越小,in1和in2亮度越接近,反之差别越大,当pwm为255时in1亮in2不亮。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-11-8 10:28:14 | 显示全部楼层
339388279 发表于 2012-11-4 11:04
应该是你的程序问题  一般的话en是用高低电平控制的,pwm控制的是in1-4,

哦?那淘宝的老板说的有问题了,我回去试一下
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-11-8 10:34:24 | 显示全部楼层
339388279 发表于 2012-11-4 11:04
应该是你的程序问题  一般的话en是用高低电平控制的,pwm控制的是in1-4,

我买的地址是这个,他的说明是ena是pwm输入,难道这东西标准还不一样吗。。。 晕

http://trade.taobao.com/trade/de ... eID=162524416612491
回复 支持 反对

使用道具 举报

发表于 2012-11-8 11:09:06 | 显示全部楼层
marvel 发表于 2012-11-8 10:34
我买的地址是这个,他的说明是ena是pwm输入,难道这东西标准还不一样吗。。。 晕

http://trade.taobao ...

这个一看就是ena是使能端,in1-4是pwm控制
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-11-10 23:46:33 | 显示全部楼层
339388279 发表于 2012-11-8 11:09
这个一看就是ena是使能端,in1-4是pwm控制

你是说
in1为low
ena为high
然后in2为pwm就能实现慢速?

但是我实验的结果是:
in2用pwm置100时轮子不动,置200和250时均快速运动

不知道为什么
回复 支持 反对

使用道具 举报

发表于 2012-11-10 23:52:12 | 显示全部楼层
marvel 发表于 2012-11-10 23:46
你是说
in1为low
ena为high

100-200之间呢?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-11-18 22:19:32 | 显示全部楼层
swim 发表于 2012-11-10 23:52
100-200之间呢?

抱歉这么久才回,我试了一下

    digitalWrite(in1, LOW);
    digitalWrite(ena, HIGH);  
   
    analogWrite(in2, x);

当x=126时,轮子不转,当x=127时,轮子全速转。。。


当代码下面的时候,轮子是慢速转动
    digitalWrite(in1, LOW);
    digitalWrite(in2, HIGH);  
   
    analogWrite(ena, 100);
回复 支持 反对

使用道具 举报

发表于 2012-11-18 22:23:50 | 显示全部楼层
marvel 发表于 2012-11-18 22:19
抱歉这么久才回,我试了一下

    digitalWrite(in1, LOW);


你试试  只接in1和ena,然后ena高电平或者低电平,in1 pwm能控制否?
回复 支持 反对

使用道具 举报

发表于 2013-2-2 21:03:24 | 显示全部楼层
  额  我跟楼主买的是同一款.... 我说打开淘宝链接看图怎么这么眼熟.  
回复 支持 反对

使用道具 举报

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

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-5-4 18:21 , Processed in 0.039434 second(s), 20 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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