问题描述:由单片机的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. 【Android N 7.1.1】 锁屏之上显示Toast

    package com.android.systemuirom.keyguard; import android.content.Context; import android.view.Gravit ...

  2. Nginx的安装和配置文件

    一.什么是Nginx 反向代理的高手,可以做web服务器.smtp服务器.ftp服务器,也可以做waf等等.原理,反向代理,收集client请求然后转发给自己lan内的服务器,将请求到的资源回转给客户 ...

  3. Python - 字符串的方法及注释

    %r非常有用,他的含义是不管是整形还是字符串,都将打印出来

  4. OC开发_Storyboard——UITableView

    一.tableView 1.datasource数据源 (1 构造每一个tableVIewCell的方法:cellForRowAtIndexPath,这里的 dequeueReusableCellWi ...

  5. nginx集群配置

    一.nginx集群目标 以nginx作为代理服务器,分别在两台部署web站点的机器上面轮询访问. 3台机器IP地址分别为: 1)192.168.189.133   (nginx代理服务器) 2)192 ...

  6. js jquery.pagination.js分页

    1.使用插件为 jquery.pagination.js ,如果没有这个js文件的话,我可以给发个. 首先引用 jquery.pagination.js (分页js),跟pagination.css( ...

  7. oracle权限赋予

    上节讲的创建的software用户能否访问其他用户的表呢 1,创建software用户,密码设置为system create user software identified by system 2, ...

  8. c# BitArray 复制数组 copyto

    C# 点阵列(BitArray) BitArray 类管理一个紧凑型的位值数组,它使用布尔值来表示,其中 true 表示位是开启的(1),false 表示位是关闭的(0). C# 拷贝数组的几种方法

  9. nginx详解之语法规则

    1.location [=|~|~*|^~] /uri/ { … } location  = / {   # 精确匹配 / ,主机名后面不能带任何字符串   [ configuration A ]  ...

  10. Tickets---hdu1260 (简单dp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1260 题意就是有n个人排队买票,每个人需要的时间是a[i] (1=< i <=N),但是现 ...