问题描述:由单片机的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. JSTL中<c:set>标签的用法

    <c:set>标签有两种不同的属性设置:var和target. var“版本”用于设置作用域属性,target“版本”用于设置bean属性或Map值. 这两个版本都有两种形式:有标签体和没 ...

  2. saltstack之syndic的配置

    author: headsen  chen date: 2018-08-04   22:22:09 1,架构 2,配置 2.1,配置master: yum  -y install epel-relea ...

  3. 【BZOJ3551】[ONTAK2010]Peaks加强版 最小生成树+DFS序+主席树

    [BZOJ3545][ONTAK2010]Peaks Description 在Bytemountains有N座山峰,每座山峰有他的高度h_i.有些山峰之间有双向道路相连,共M条路径,每条路径有一个困 ...

  4. flex弹性布局属性详解!

    详细看下flex弹性布局具体属性: flex容器属性详解:flex-direction:row/column:(横排/竖排) 决定元素的排列方向:flex-wrap:nowrap/wrap/wrap- ...

  5. 最短路和次短路的条数(dijstra算法或spfa算法)POJ3463

    http://poj.org/problem?id=3463 Sightseeing Time Limit: 2000MS   Memory Limit: 65536K Total Submissio ...

  6. 利用aspose-words 实现 java中word转pdf文件

    利用aspose-words  实现 java中word转pdf文件 首先下载aspose-words-15.8.0-jdk16.jar包 引入jar包,编写Java代码 package test; ...

  7. thymeleaf 学习笔记-基础篇(中文教程)

    (一)Thymeleaf 是个什么?      简单说, Thymeleaf 是一个跟 Velocity.FreeMarker 类似的模板引擎,它可以完全替代 JSP .相较与其他的模板引擎,它有如下 ...

  8. Yii2框架添加API Modules

    原文链接:http://www.itnose.net/detail/6459353.html : 一.环境部署 1. read fucking Yii Documents. http://www.yi ...

  9. Maven安装(linux系统)

    解压: 修改配置: export JAVA_HOME=/usr/java/jdk1..0_80 export MAVEN_HOME=/software/apache-maven- export PAT ...

  10. 特定于类的内存管理---《C++必知必会》 条款36

    我们可以量身定制 operator new 和 operator delete 用于某个类类型,而不是必须使用标准版的 operator new 和 operator delete. 注意:我们不可以 ...