问题描述:由单片机的VCC引脚供电,使用L298N控制两个电机,发现左右两个轮子的转速老是不一样,更多的情况是左轮转速高(左轮电机接OUT1和OUT2),右轮转速低(右轮电机接OUT3和OUT4)甚至不转(需要用手戳一下才转)。
 
    在这种情况下,如果让下车前行,它很有可能走的不是直线,甚至会以右轮为圆心原地打转。为了解决这个问题,我做了以下几种猜想并加以验证:
猜想1:右电机卡壳或其他原因造成其电阻过大。
实验:交换左右轮
结果:情况与问题描述没有区别。这说明不是电机的问题。
 
猜想2:这个L298N的OUT3和OUT4输出有问题。
实验:更换一个L298N
结果:为了完成这个猜想,我在淘宝上买了另一家的L298N模块。按照之前的正确的接线方法,发现结果仍然没有改善,这说明不是L298N的问题。
 
猜想3:我的单片机扩展了RFID模块,4路红外寻迹模块,他们都需要供电,这导致单片机对L298N的输入电压过低
实验:在左右轮转动的过程中,插上RFID模块、4路红外寻迹模块的电源,观测轮子的转速是否发生变化。
结果:发现虽然有影响,但是似乎不大。但是在这个过程中我发现当红外寻迹模块的四个接受器都能收到反射的红外信号时,右轮会明显得卡住不动,由此我认为其他模块的确会对L298N的输入电压产生影响。
 
猜想4:L298N对左右两个电机的输出的电压不同
实验:利用万用表测量输出电压。
结果:由于我这里没有买万用表,所以没有具体结果。不过我百度发现也有人遇到这个问题并且也说明了是两个输出电压不同的原因;我查阅了电机的说明书,发现电机的转速的确和输入电压有正相关关系。这一切都表明电机的转速不同是由于电压不同引起的。
总结猜想3与猜想4,得出的结论是:L298N的输入电流过低,两侧的输出电压不同,导致两个电机转速不同。
 
解决方案:在网上我查到可以给L298N添加PWM调速模块,但是我觉得不仅会增添我在硬件上的麻烦,也会增加我在编程上的工作量,并且我也了解到PWM调速系统的价格并不比一个额外的L298N便宜,所以我做起了一个L298N带动一个电机的想法,这两个L298N以并联的方法接一个独立电源(给单片机供电的也有一个电源)。
 
接线方法:具体如下图所示其实接线方法很简单,只是有一点需要注意,就是左右两个L298N的GND口要与单片机的GND共线,并且最后连接到独立电源的负极上。其中由P14、P15引脚控制左轮的正反转,P16、P17控制右轮的正反转。
至于这样接对独立电源或单片机是否会造成损害,目前我不得而知,希望读者大佬能不理赐教,在评论区留下您的评价~
 
使用代码调速:

按照我的经验,如果你的独立电源电压比较大,则两个电机的转速会比较快。有时为了调试程序,我们需要车速放慢一些以方便我们观察小车的情况。这里仍然不用调速系统这个硬件,我已经用纯代码的方式做到了调速这一点,下面给大家分享:

假设你已经实现了:前进run()函数 和 停车stop()函数,这里我们只需要额外一个延迟函数delay_ms()即可。
while() {
  run(); delay_ms(M);
  stop();delay_ms(N);
}
  • 在上面的代码中,若M=N,则车速就会降为全速的一半。为了使车看上去不是很卡顿的样子,一般这里的M和N比较小,例如M=N=2.
  • 延迟函数delay_ms()的具体代码可以参考这里:http://www.cnblogs.com/stxs/p/8878088.html
 
 
 
 

[问题解决]不使用PWM调速系统,彻底解决一个L298N带动两个电机却转速不同的问题的更多相关文章

  1. 直流电机PWM调速系统中控制电压非线性研究_控制元件_工业自动化控制_文章

    直流电机PWM调速系统中控制电压非线性研究_控制元件_工业自动化控制_文章_e-works数字化企业网 http://articles.e-works.net.cn/Component/Article ...

  2. 直流调速系统Modelica基本模型

    为了便于在OpenModelica进行仿真,形成一个完整的仿真模型,没有使用第三方的库,参照了DrModelica的例程,按照Modelica库的开源模型定义了所用的基本元件模型. 首先给出一些基本类 ...

  3. PLECS_晶闸管调速系统_9w

    3. 直流电机开环调压调速系统模型搭建 (1)电路图 (2)仿真 当 α = pi / 2.7 的时候,直流电机的稳定转速大约保持很低的速度. 随着α的减少,直流电机的速度逐渐增大.当α = pi / ...

  4. 51单片机 小车 L298N pwm调速 串口控制 按键控制

    难点:1.串口定时器T1,和T0定时器优先级 2.pwm频率与占空比的设置 按键控制 按键1——前进 按键2——后退 按键3——加速 按键4——减速 (板子上只有四个按键) 串口控制 ‘1’——前进 ...

  5. 51单片机—使用PWM对直流电机调速

    文章目录 - 什么是PWM - PWM是怎么对直流电机进行调速的 - 通过定时器中断实现PWM调速 - 上代码 - 什么是PWM PWM(脉宽调制),是靠改变脉冲宽度来控制输出电压,通过改变周期来控制 ...

  6. 玩转X-CTR100 l STM32F4 l TB6612直流电机调速控制

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍X-CTR100控制器的直流调速电机控制,X ...

  7. 用STM32玩L298N(正反转、调速)

    目录 用STM32玩L298N(正反转.调速) 控制直流电机正反转 使用PWM调速 用STM32玩L298N(正反转.调速) 开发板:STM32F103ZET6(正点原子F103核心板)/STM32F ...

  8. 通过PROFINET网络实现SINAMICS 120的PN IO OPC通讯,起动及调速控制 | OPC通讯

    1 概述 TCP/IP 通讯的传输时间可能太长,并且该时间具有不确定性,无法满足生产自动化领域的要求.因此,在进行时间要求苛刻的IO 有效载荷数据通讯时,PROFINET IO 不使用TCP/IP,而 ...

  9. 过渡与动画 - steps调速函数&CSS值与单位之ch

    写在前面 上一篇中我们熟悉五种内置的缓动曲线和(三次)贝塞尔曲线,并且基于此完成了缓动效果. 但是如果我们想要实现逐帧动画,基于贝塞尔曲线的调速函数就显得有些无能为力了,因为我们并不需要帧与帧之间的过 ...

随机推荐

  1. 从TCP三次握手说起--浅析TCP协议中的疑难杂症(1)

    版权声明:本文由黄日成原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/73 来源:腾云阁 https://www.qclou ...

  2. 《FPGA那些事儿》原创教程总结

    经过我们黑金工程师多年的不断努力,黑金原创教程已经达到了14部,包括: 第一部:[黑金原创教程]NIOSII那些事儿 http://www.heijin.org/forum.php?mod=viewt ...

  3. android极光推送

    版权声明:本文为博主原创文章,未经博主允许不得转载. Android开发记录18-集成推送服务的一点说明 关于推送服务,国内有很多选择,笔者也对它们进行了一个详细的对比,一般我们产品选择推送服务主要考 ...

  4. jenkins之构建maven项目

    新建java项目 修改列子的pop.xml提交 在git的web界面打一个tag 再次修改代码 再次push 5.38

  5. HDU 4597 Play Game(DFS,区间DP)

    Play Game Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others) Total Sub ...

  6. Eclipse Tomcat插件的使用

    目录 Eclipse Tomcat插件的使用 Eclipse Tomcat插件的使用 我使用的Eclipse版本是:4.6.3 Eclipse已经自带Tomcat插件,不需要再自己进行安装 1.新建T ...

  7. php中函数preg_match或preg_match_all 第三个参数$match的解释

    理解自:http://www.cnblogs.com/vicenteforever/articles/1623137.html php手册中是这样解释的 matches 如果提供了参数matches, ...

  8. MySQL怎样存储IP地址 IP转数字 互转

    MySQL怎样存储IP地址 - cn三少 - 博客园 https://www.cnblogs.com/cnsanshao/p/3326648.html

  9. PROPAGATION_REQUIRES_NEW VS PROPAGATION_NESTED

    PROPAGATION_REQUIRES_NEW, in contrast to PROPAGATION_REQUIRED, uses a completely independent transac ...

  10. docker 离线环境安装oracle

    因测试需要,需在内网的测试环境搭建一套docker Oracle 11g环境进行测试,测试环境为redhat 6.6 安装docker 1.7,本机windows 7 环境,安装docker 17.1 ...