Arduino DC电机控制教程 - L298N |PWM |h桥

在这个Arduino教程中,我们将学习如何使用Arduino控制DC电机。我们很好地看一下用于控制DC电机的一些基本技术,并制作两个示例,我们将学习如何使用L298N驱动器和Arduino板控制DC电机。

概述


我们可以通过简单地控制电机的输入电压以及使用PWM信号来控制直流电机的速度。

直流电机转速控制输入电压

PWM直流电机控制

PWM或脉冲宽度调制是一种技术,其允许我们通过以快速速率接通和关闭电力来调节到电子设备的电压的平均值。平均电压取决于占空比,或者信号的时间量与信号在单个时间段内关闭的时间量相比。

PWM工作原理 - 脉冲宽度调制它如何运作betway

因此,根据电机的尺寸,我们可以简单地将Arduino PWM输出连接到晶体管的基部或MOSFET的栅极,并通过控制PWM输出来控制电动机的速度。低功耗Arduino PWM信号在MOSFET上开启和关闭栅极,通过该MOSFET驱动电动机。

Arduino PWM直流电机控制电路图

注:Arduino GND与电机电源GND应连接在一起。

h桥直流电机控制

另一方面,为了控制旋转方向,我们只需要反向电流通过电机的方向,而最常见的方法是使用h桥。一个h桥电路包含四个开关元件,晶体管或Mosfets.,电机位于中心,形成h型结构。通过同时激活两个特定的开关,我们可以改变电流的流向,从而改变电机的旋转方向。

h -桥结构如何工作betway

因此,如果我们结合这两种方法,PWM和h桥,我们可以有一个完全控制直流电机。有许多直流电机驱动器有这些特点,L298N是其中之一。

L298N驾驶员

L298N是双H桥电机驱动器,其允许同时对两个直流电动机的速度和方向控制。该模块可以驱动5到35V之间的直流电动机,峰值电流高达2a。

L298N双H桥电机驱动器

让我们仔细看看L298N模块的引脚,并解释它是如何工作的。betway该模块具有用于电动机A和B的两个螺钉接线端子,以及用于接地引脚的另一螺钉接线端子,电动机的VCC和5V引脚,可以是输入或输出。

L298N引出线

这取决于电机VCC使用的电压。该模块有一个板载5V调节器,可以使用跳线启用或禁用。如果电机供电电压高达12V,我们可以使5V稳压器和5V引脚可以用作输出,例如为我们的Arduino板供电。但是如果电机电压大于12V,我们必须断开跳线,因为这些电压会对板载5V调节器造成损坏。在这种情况下,5V引脚将被用作输入,因为我们需要将其连接到一个5V电源,以便IC正常工作。

我们可以注意到,这个IC产生大约2V的电压降。例如,如果我们使用12V的电源,电机端子的电压将是10V左右,这意味着我们将无法获得12V直流电机的最大速度。

L298N电压降

接下来是逻辑控制输入。使能A和使能B引脚用于启用和控制电动机的速度。如果此引脚上存在跳线,则电机将以最大速度启用并工作,如果我们卸下跳线,我们可以将PWM输入连接到该引脚,以这种方式控制电机的速度。如果我们将此引脚连接到地面,电机将被禁用。

L298N框图电流流如何工作betway

接下来,输入1和输入2销用于控制电动机A的旋转方向,以及用于电动机B的输入3和4。使用这些销我们实际控制L298N IC内的H桥的开关。如果输入1为低电平,输入2高电平电机将向前移动,反之亦然,如果输入1是高并且输入2低电平电机将向后移动。如果两个输入相同,电机将停止低或高。这同样适用于输入3和4和电机B.

Arduino和L298N

现在让我们做一些实际应用。在第一个例子中,我们将使用电位器控制电机的速度,并使用按钮改变旋转方向。这是电路原理图。

Arduino和L298N电路图直流电机控制

所以我们需要一个L298N驱动器,一个直流电机,一个电位器,一个按钮和一个Arduino板。

您可以从下面的链接获取此Arduino教程所需的组件:

必威外围提钱披露:这些是联盟链接。作为亚马逊助理,我从合格购买中获得。

Arduino Code.

这是Arduino代码:

/* Arduino直流电机控制- PWM | H-Bridge | L298N -示例01 by Dejan Nedelkovski, www.HowToMechatronics.cbet188官方网站om */ #define enA 9 #define in1 6 #define in2 7 #define button 4 int rotDirection = 0;Int pressed = false;void setup() {pinMode(enA, OUTPUT);pinMode(三机一体、输出);pinMode (in2、输出);pinMode(按钮,输入);//设置初始旋转方向digitalWrite(in1, LOW);digitalWrite (in2、高);} void loop() {int potValue = analogRead(A0);//读取电位器值int pwmOutput = map(potValue, 0, 1023, 0, 255); // Map the potentiometer value from 0 to 255 analogWrite(enA, pwmOutput); // Send PWM signal to L298N Enable pin // Read button - Debounce if (digitalRead(button) == true) { pressed = !pressed; } while (digitalRead(button) == true); delay(20); // If button is pressed - change rotation direction if (pressed == true & rotDirection == 0) { digitalWrite(in1, HIGH); digitalWrite(in2, LOW); rotDirection = 1; delay(20); } // If button is pressed - change rotation direction if (pressed == false & rotDirection == 1) { digitalWrite(in1, LOW); digitalWrite(in2, HIGH); rotDirection = 0; delay(20); } }

描述:因此,首先我们需要定义程序所需的引脚和一些变量。在设置部分中,我们需要设置电机的引脚模式和初始旋转方向。In the loop section we start by reading the potentiometer value and then map the value that we get from it which is from 0 to 1023, to a value from 0 to 255 for the PWM signal, or that’s 0 to 100% duty cycle of the PWM signal. Then using the analogWrite() function we send the PWM signal to the Enable pin of the L298N board, which actually drives the motor.

接下来,我们检查是否按下了按钮,如果按下了按钮,我们将通过反向设置Input 1和Input 2状态来改变电机的旋转方向。按下按钮作为切换按钮,每次按下按钮,都会改变电机的旋转方向。

基于L298N驱动的Arduino机器人小车控制

所以一旦我们学到了这一点,我们现在可以建立自己的Arduino机器人车。这是电路原理图:

Arduino机器人小车控制采用L298N驱动电路原理图

我们只需要2个直流电机,L298N驱动器,Arduino板和一个操纵杆控制。至于电源,我选择使用三个3.7V锂离子电池,提供11V。我用3毫米蜱胶合板制成了底盘,用金属支架将电机连接到它,将轮子连接到电机上,并附在旋转轮上。

Arduino机器人车DIY底盘

现在让我们来看看Arduino代码,看看它是如何工作的。betway(下面您可以找到完整的代码)

int xaxis = analogread(a0);//读取操纵杆x轴int yAxis = analogRead(A1);//读取操纵杆y轴

在循环部分定义引脚后,我们从读取操纵杆x和y轴值开始。操纵杆实际上由两个电位器组成,它连接到Arduino的模拟输入,它们的值为0到1023.当操纵杆停留在其中心位置时,电位计或轴的值为512。

Arduino机器人汽车操纵杆运动控制

我们将增加一些宽容,并将价值观从470到550视为中心。因此,如果我们向后移动Y轴的操纵杆,值低于470,我们将使用四个输入引脚向后设置两个电机旋转方向。然后,我们将将下降的值从470转换为0到从0到255的PWM值增加,这实际上是电机的速度。

// Y轴用于向前和向后控制if(yaxis <470){//设置电机反向数字写词(In1,高);digitalWrite (in2、低);//设置电机B向后digitwrite (in3, HIGH);digitalWrite (in4、低);//将下降的y轴读数从470到0转换为0到255值,用于增加电机速度的PWM信号motorSpeedA = map(yAxis, 470, 0,0, 255);motorSpeedB = map(yAxis, 470, 0,0, 255);}

类似,如果我们向前移动操纵杆的Y轴并且值超过550以上,我们将设置电机向前移动并将550到1023的读数转换为从0到255的PWM值。如果操纵杆留在其中心电机速度为零。

接下来,让我们看看我们如何在汽车的左右控制中使用X轴。

//用于左右控制的x轴if (xAxis < 470){//将下降的x轴读数从470到0转换为从0到255的值int xMapped = map(xAxis, 470, 0,0, 255);//向左移动-减少左电机速度,增加右电机速度motorSpeedB = motorSpeedB + xMapped;//如果(motorSpeedA < 0) {motorSpeedA = 0;} if (motorSpeedB > 255) {motorSpeedB = 255;}}

同样,首先,我们需要将X轴读数转换为0到255的速度值。对于移动左侧,我们使用该值来降低左电机速度并提高右电机速度。这里,由于算术函数,我们使用两种附加的“if”语句将电机速度的范围限制在0到255。

Arduino机器人小车左右控制

同样的方法也用于向右移动汽车。

有关的:如何使用555定时器IC进行PWM直流电机速度控制器

根据所施加的电压和电动机本身,在较低速度下,电机无法开始移动并且它产生嗡嗡声。在我的情况下,如果PWM信号的值低于70,电机无法移动。因此,使用这两个陈述我实际限制在70到255的速度范围内。最后,我们只需发送最终电机速度或PWM信号到L298N驱动器的启用引脚。

//防止低速嗡嗡声(根据您的电机调整。如果PWM值低于70),如果(Motorspeeda <70){motorspeeda = 0;} if (motorSpeedB < 70) {motorSpeedB = 0;} analogWrite (enA, motorSpeedA);//发送PWM信号到电机A模拟写(enB, motorSpeedB);//将PWM信号发送到电机B.

这是Arduino机器人车的完整代码示例:

/* Arduino直流电机控制- PWM | H-Bridge | L298N示例02 - Arduino机器人小车控制由Dejan Nedelkovski, www.HowToMechatronics.com */ #define bet188官方网站enA 9 #define in1 4 #define in2 5 #define enb10 #define in3 6 #define in4 7 int motorSpeedA = 0;int motorSpeedB = 0;void setup() {pinMode(enA, OUTPUT);pinMode (enB、输出);pinMode(三机一体、输出);pinMode (in2、输出);pinMode (in3、输出);pinMode (in4、输出);} void loop() {int xAxis = analogRead(A0);//读取操纵杆x轴int yAxis = analogRead(A1); // Read Joysticks Y-axis // Y-axis used for forward and backward control if (yAxis < 470) { // Set Motor A backward digitalWrite(in1, HIGH); digitalWrite(in2, LOW); // Set Motor B backward digitalWrite(in3, HIGH); digitalWrite(in4, LOW); // Convert the declining Y-axis readings for going backward from 470 to 0 into 0 to 255 value for the PWM signal for increasing the motor speed motorSpeedA = map(yAxis, 470, 0, 0, 255); motorSpeedB = map(yAxis, 470, 0, 0, 255); } else if (yAxis > 550) { // Set Motor A forward digitalWrite(in1, LOW); digitalWrite(in2, HIGH); // Set Motor B forward digitalWrite(in3, LOW); digitalWrite(in4, HIGH); // Convert the increasing Y-axis readings for going forward from 550 to 1023 into 0 to 255 value for the PWM signal for increasing the motor speed motorSpeedA = map(yAxis, 550, 1023, 0, 255); motorSpeedB = map(yAxis, 550, 1023, 0, 255); } // If joystick stays in middle the motors are not moving else { motorSpeedA = 0; motorSpeedB = 0; } // X-axis used for left and right control if (xAxis < 470) { // Convert the declining X-axis readings from 470 to 0 into increasing 0 to 255 value int xMapped = map(xAxis, 470, 0, 0, 255); // Move to left - decrease left motor speed, increase right motor speed motorSpeedA = motorSpeedA - xMapped; motorSpeedB = motorSpeedB + xMapped; // Confine the range from 0 to 255 if (motorSpeedA < 0) { motorSpeedA = 0; } if (motorSpeedB > 255) { motorSpeedB = 255; } } if (xAxis > 550) { // Convert the increasing X-axis readings from 550 to 1023 into 0 to 255 value int xMapped = map(xAxis, 550, 1023, 0, 255); // Move right - decrease right motor speed, increase left motor speed motorSpeedA = motorSpeedA + xMapped; motorSpeedB = motorSpeedB - xMapped; // Confine the range from 0 to 255 if (motorSpeedA > 255) { motorSpeedA = 255; } if (motorSpeedB < 0) { motorSpeedB = 0; } } // Prevent buzzing at low speeds (Adjust according to your motors. My motors couldn't start moving if PWM value was below value of 70) if (motorSpeedA < 70) { motorSpeedA = 0; } if (motorSpeedB < 70) { motorSpeedB = 0; } analogWrite(enA, motorSpeedA); // Send PWM signal to motor A analogWrite(enB, motorSpeedB); // Send PWM signal to motor B }

这就是本教程的全部内容,在下一个视频中我们将升级Arduino机器人车,添加一个蓝牙收音机设备启用智能手机和无线控制

欢迎在评论区提出任何问题,不要忘记查看我的Arduino项目的集合bet188me

69回应

  1. 现场Arif

    非常好的教程先生请展示我们如何使用4个电机I-e。,轮子与它有哪两个电机将平行也显示接线......,谢谢你!

    回复
  2. adilson.

    你给的第一个例子有一些错误,如果它们不修正就不会起作用:
    1.在原理图中:外部电源接地也必须连接到Arduino地面,在那里指示时不会被隔离。
    2.变量in1/in2是OUTPUT而不是INPUT。
    3.(不是很重要),你永远不会使用ButtonState变量;它可以删除。
    您是否可以修改该示例的代码/原理图?
    谢谢你。

    回复
      • RCA.

        L298D-Arduino地面Shematic未显示在Arduino和L298N中,在FrItzz方案中显示。我尝试过的电机嗡嗡声,直到我理解地面连接缺失。请修改它。
        感谢所有这些教程…

  3. Petar Stojanovski.

    这是一个很棒的项目。我喜欢这一切如何解释,而不仅仅是一个普通的代码和原理图。
    保持良好的工作!

    回复
  4. 我必须为学校项目做类似的事情,但我必须通过实现外部电压源放大Arduino的输出电压为25V。任何关于我该怎么做的想法?

    回复
  5. Ranulfo de Oliveira e Silva

    朋友você estar de parabéns pelo计划。
    Só我确认UMAS Coisas。Posso Utherizar o arduino nano?EssesúltimoCódigo,Éo计划决赛?ou tenho que juntar todos os outros一个cima mencionado com esseúltimo?
    我是你的朋友。

    朋友你祝贺这个项目。
    只是确认一些东西。我可以使用Arduino nano吗?那些最后的代码是最后的程序?或者我必须加入上面提到的所有其他人的后者吗?
    谢谢,谢谢,兄弟。

    回复
  6. 蒂格塔

    嗨,谢谢你分享这个非常有用的教程。你能帮我的代码给一半的enA输出(0~4.6V)。我试着改代码

    " to " motorSpeedA = map(yAxis, 550, 1023, 0, 120); "

    但是,看起来操纵杆的范围有点大,所以很难平稳地增加速度。我需要电机以最低速度1.4V工作,最高速度2.1v(约78~120)

    回复
    • Dejan Nedelkovski.

      嘿,如果你像我一样使用操纵杆,你可能会遇到一个问题,平稳地增加速度,操纵杆不是那么好。你可以试着用电位器代替操纵杆,让工作更顺畅。

      回复
  7. 萨拉

    这是一个非常有用的网站,谢谢!帮我省了一笔大学设计项目的钱。

    回复
  8. Abdulrahman Shaplel.

    关于这个项目我有几个问题,德扬。

    图片中你好像用了Arduino UNO,但是在Amazon的链接中,你链接了Arduino MEGA。这有区别吗?可以用吗?

    手柄也是Arduino的吗?我们可以使用操纵杆吗?

    另外,我想知道你用过的电线的链接。

    我正在做这个项目,我只是不知道如何得到确切的组件,你已经使用。

    P.S,这个项目很棒!非常感谢!

    回复
  9. Kasalian

    这是一个非常好的项目,我喜欢它。但是正面临着小挑战。除非触摸MOSFET的散热器,否则H Bridge Motor Controller正在使用NITS驱动电机。我也尝试另一个H桥仍然是一样的。我正在使用12伏适配器为H桥通电。

    回复
  10. tetos

    我可以使用这个IC l298驱动220v直流电机与PWM,或不?
    感谢帮助。

    回复
  11. 纳森

    感谢信息,我想问,因为规范说5V到35V和最大电流2a,这是否意味着它可以驱动为24伏的线性执行器,最大电流为0.65A或1.1A?如果我用24 volts为H桥电?

    回复
  12. 杰,

    谢谢你的工作,真的很有帮助。
    一个问题:我需要连接PWM-Signal到哪个引脚?我似乎只有得到一个输出如果我连接两个引脚到pwm信号,这对我来说没有意义。
    此外,现在我在12V,但我需要为其他项目连接24V电机。只需拆下电源输入上方的跳线并使用外部5V供电,右侧电源5V在哪里连接到GND?谢谢!

    回复
    • Dejan Nedelkovski.

      谢谢。如果使用两个电机,那么你需要使用两个PWM引脚,因为他们是独立的通道,A和b。如果你使用24V,那么你必须移除5V调节器的跳线,因为24V对那个板上调节器来说太多了,但现在你还需要连接一个单独的5V电源驱动器上的+5V引脚,以控制工作。

      回复
      • 卢卡斯

        在我的模块上,有78M05 LDO作为5V稳压器。根据数据表,输入电压高达35V。因此,限制仅是芯片的功耗。
        那么为什么在12V高于12V的电压是有必要断开调节器?
        我错过了什么?

  13. 瑞克恩尼斯

    我非常喜欢你的教程。你把事情解释得很好,我得到了真正的理解。你总是给我有用的信息。谢谢!

    回复
  14. 甘尼·佩雷拉

    非常好的解释,程序和优秀的图表。
    W. D. Gamini Perera
    加勒
    斯里兰卡

    回复
  15. 大卫

    如果我使用24V电源,我应该调整哪些调整?我所拥有的一切都与你的原理化相同。它会损坏董事会吗?另外,谢谢你的有用文章。

    回复
  16. 尼古拉斯雷诺斯

    如果我只需要驱动1.5V直流电机,会推荐什么?较低的电压驱动器?

    回复
    • 德扬

      嗯,这取决于你想要实现的什么样的控制。您在此处看到用于控制旋转方向,您需要类似于H-Bridge的东西,或者控制您需要PWM信号的速度。至于这种低电压电机,您可以使用1.5V电池供电,并且只需控制晶体管,如第一电路所示。

      回复
  17. 蒲山

    伟大的文章和良好的项目,感谢您的部署工作。
    我用的是24V直流电压,额定电流为4.5 a,最大电流为2A。因此,我们该如何处理这个问题呢?你知道其他选择吗?
    要获得24 V,我们可以使用12V适配器加上LM2596降压转换器将12V转换为24V。
    但我们要怎么对付这股水流呢?

    提前致谢。
    蒲山

    回复
    • 德扬

      谢谢。L298N绝对无法处理强大的电机。也许您应该尝试构建自己的电路,以便使用更高的额定晶体管或MOSFET驱动此电动机,这将与此驱动器类似的方式工作。

      回复
  18. 凯莉

    德州,
    这是一个惊人的网站和优秀的项目描述。我用2个SYREN控制器来驱动2-24伏电机。SYREN只需要1针来控制前驱和rev.所以我只使用“in1”和“in3”来控制方向。相信它工作作为编码然而,当我移动操纵杆向左或向右只有一个马达将旋转。基于代码是如何写的,我希望电机A向前旋转的同时,电机B将向后旋转一个左转弯?但是当我向左移动操纵杆时,只有右边的马达会向前移动,而当我向右移动操纵杆时,只有左边的马达会向前移动?似乎xmapped代码不能正确工作?这里的任何输入都会有帮助。谢谢. .

    回复
    • 德扬

      嘿,谢谢凯莉!如果操纵杆只向右或向左移动,这是正常的,左边或右边的马达会向前移动而另一个马达不会移动。我猜你的问题来自于我加减操纵杆值的两行。在纯左或右运动的情况下,一个PWM值将是负的,但这并不意味着电机将向后旋转,它实际上意味着什么,没有PWM信号。从上面的例子中我们可以看到,为了改变旋转方向,我们实际上使用了L298N驱动器的In1和In2控制引脚。
      我希望这是你想要问和理解的东西。

      回复
      • 凯莉

        非常感谢您的回复。我其实不用L298N驱动。使用SYREN控制器,只需要1个引脚来控制前进和加速。

        所以是的,试图了解这个代码实际上是什么;

        //移动到左侧 - 减少左电机速度,提高右电机速度
        motorSpeedA = motorSpeedA - xMapped;
        motorspeedb = motorspeedb + xmapped;

        当我读到这篇文章时,我想这款车的转弯半径可以为零,因为当向左或向右移动操纵杆时,一个发动机会向前加速,而另一个会向后加速。我通过以下方法实现了这一点;

        // 右转
        if(xaxis 550){
        //将电机A往后调
        DigitalWrite(In1,低);

        //电机B前进
        digitalWrite (in3、高);

        //转换下降X轴读数,以便向后向0到0到0到25​​5的PWM信号,以增加电机速度
        motorSpeedA = map(xAxis, 550, 1023, 0, 255);
        motorSpeedB = map(xAxis, 550, 1023, 0, 255);
        }

  19. Chatch

    德扬,卓越的工作!非常感谢。这对我很有用。
    您是否使用Flysky等遥控器具有DC电机的Arduino和L298N控制代码?
    从泰国非常感谢。

    回复
  20. 埃德加多·埃尔南德斯梅尔

    我在哥伦比亚,非常感谢你们花这么长时间来解释这些问题。他们的视频质量和他们的解释是不可逾越的,我继续关注你的频道。埃尔南德斯(Edgardo Hernandez)

    回复
  21. 埃里克

    期待尝试这一点 - 这将是我在“基础知识”(LED眨眼等)之后的第一个真正的Arduino项目。我希望购买所有部分,但是在轮到车轮时偶然发现 - 你可以为我能得到它们的地方提供一个链接还是两个?我不介意更多地花一点,因为质量很好。
    尽管对这一切仍然很陌生,但是,正如许多人所说,我真的很欣赏你教授这些项目的方式!bet188me

    回复
    • 德扬

      好吧,我用的轮子,从一个玩具汽车,碰巧适合发动机轴完美。你可以使用直流电机来与塑料轮胎车轮,我刚刚更新的帖子,包括一个链接到他们在零件列表部分。

      回复
  22. 塞萨尔

    伟大的解释!在第二个原理图(其中你控制电机的速度使用电位器和旋转使用按钮),你能告诉电阻欧姆额定值吗?另外,arduino如何在5V连接器上供电?

    回复
  23. 沃尔特格洛弗

    连接电路为变速以上。电机的电压为11.5伏,速度不变。方向可以改变,这样按钮就可以工作了。锅将电压从0到5伏变化到A0。任何建议都非常感谢
    沃尔特

    回复
    • 德扬

      嗯,您应该向驱动程序发送PWM信号,确保将这些引脚连接到Arduino上的PWM功能引脚。

      回复
  24. Jaleel

    Hi, I just followed your instructions but to control a kid motor bike, which has two 12v motors, run by 12v battery, unfortunately when I try to run the motor the l293 heate up above 80deg, and motor won’t run , just a jerk only. What can be the reason. Thank you.

    回复
    • 德扬

      那些马达的电流可能比司机能承受的要大得多所以它会很快变热。还要确保你仔细检查了所有的连接。

      回复
  25. 轩先生

    亲爱的先生
    我开始学习Adruino。
    我有小项目。
    我想使用1个电位计控制器直流电机A和B,但电动机左转,B向右右转。
    当电位器输出符号为2.5电压2时电机停止。
    当输出符号电位计为2.5-5电压电机时,左转,电机B右转。快速速度速度慢。
    当输出符号电位器为2.5- 0电压时,电机A右转,电机B左转。快速速度速度慢。
    你能帮帮我吗?
    谢谢

    回复
    • 德扬

      这和操纵杆的例子几乎是一样的。操纵杆轴只是一个简单的电位器。当它在中间休息时,它保持在2.5V,当它前进或后退时,电压值前进到5V或后退到0V。
      因此,您只需读取模拟输入,并使用地图功能您可以根据您的需求调整接收值。

      回复
  26. 唠叨

    嗨,德扬,
    伟大的教程!我修改了设置有两个操纵杆控制器。机器人响应几秒钟,然后停止对操纵杆控制的反应。可能是什么问题?我一直在想这可能是一个权力问题,但我试过的任何东西似乎都没有工作。
    感谢您的帮助。

    回复
    • 德扬

      嘿,谢谢!是的,它可能是一个权力问题。你能在你的项目中有所了解更多信息,您使用的是哪些电机,您使用的是电源柔软的?

      回复
  27. c

    伟大的教程!我只是有个小问题。
    当我将两个12V DC电机连接到L298N和Arduino时,左侧的电机略快地略微比右侧的电机。这是一个连接问题,还是对所有情况都这样?顺便说一下,我不使用PWM,所以两个电机都应该以相同的速度运行。如果L298N内的电源电路是串联电路而不是平行的电源,那么一个电机可以接收比另一个电动机更少的动力有意义,但我不这么认为......

    回复
    • 德扬

      嘿,谢谢!好吧,我没有注意到这样的行为。您只需用其他一些电机和/或其他L298N测试它,以弄清楚这是问题,它是电机或司机,但我肯定无法知道。如果你发现,请告诉我。

      回复
  28. ED Gennetten.

    谢谢你的优秀教程。我的问题涉及从您网站连接的伟大DC 12V齿轮电机。这是什么意思;单程?
    “你也可以调整速度,但只能减少电机速度,不能升高。”

    回复
    • 德扬

      嗯,特定电机的最大速度为100 rpm,所以是的,你只能通过施加较低的电压来降低速度。

      回复
  29. 弗里茨Peyerl

    我发现了你的教程,喜欢你解释事情的方式。
    我完成了你的#1教程,电机运行了一段时间一段时间,而不是快速改变方向,而不是推动按钮,再次稍后它再次切换方向。
    速度控制工作正常。
    我在H Bridge上使用7.1伏输入,Adruino插入我的电脑。从Adruino的7.1伏电源(5 AA电池)将H桥接接地。如果我卸下此接地电缆停止运行。

    谢谢你的建议
    弗里茨

    回复
  30. 塞尔吉奥

    我不确定这是否有帮助或只是我的一个错误,但在你的图表中,你没有显示从Arduino板的5v到L298N的5v之间的连接,我的意思是在电池的12v顶部。经过无数次尝试和隔离问题,当我最终连接这两个电路工作正常,我的理论是,L298N“逻辑”设备需要电压(5v)工作,如果这是合理的。我没有阅读之前所有的帖子,看看这是否已经引起了你的注意。
    谢谢!

    回复
    • Dheenadayalan

      亲爱的塞吉奥,
      谢谢你的解决方案。
      如果可以的话,请让我有进一步的澄清
      1)“I mean on the top of the 12v from the battery”,意思是电机的供电电压是12v ?此电源电压是否带有跨接器(电压跨接器)?
      由于连接Arduino 5 V供应到H-Bridge Logic 5 V,因此可以假设移除跳线引脚。

      回复
  31. 刘荷娜

    你好,我有个问题。前轮是由什么控制的?我的意思是,是什么导致汽车左右行驶?

    回复

留下一个回复

您的电子邮件地址将不会被公布。

受到推崇的

2019年面向初学者和爱好者的最佳入门级示波器

为初学者和爱好者最好的示波器

受到推崇的

2019年针对初学者的8个最佳Arduino入门工具包

初学者的8个最佳Arduino Starter Kits

受到推崇的

最佳3D打印机初学者和爱好者- 3D打印

最好的3d打印机初学者和爱好者