在这个项目中,我们使用Arduino和两个继电器控制24v大电流电机的方向和速度。该电路无需电源开关,只需两个按钮和电位器即可控制直流电动机的方向和速度。一个按钮将使电动机顺时针旋转,另一按钮将使电动机逆时针旋转。需要一个n沟道MOSFET来控制电动机的速度。继电器用于切换电动机的方向。它类似于H桥电路。
所需组件:
- Arduino Uno
- 两个12v继电器(也可以使用5v继电器)
- 两个晶体管;BC547
- 两个按钮
- IRF540N
- 10k电阻
- 24伏电源
- 10K电位器
- 三个二极管1N4007
- 连接线
电路图和说明:
下图显示了该双向电动机控制项目的电路图。根据它进行连接:
- 将两个继电器的常闭端子连接到电池的正极。
- 将两个继电器的常开端子连接到MOSFET的漏极端子。
- 将MOSFET的源极连接至电池的负极端子,并连接至Arduino UNO的接地引脚。
- Arduino的PWM引脚6的栅极端子。
- 从栅极到源极连接10k电阻,从源极到漏极连接1N4007二极管。
- 将电动机插入继电器的中间端子之间。
- 在剩下的两个端子中,一个连接到Arduino Uno的Vin引脚,另一个连接到晶体管的集电极端子(每个继电器)。
- 将两个晶体管的发射极端子连接到Arduino的GND引脚。
- Arduino的数字引脚2和3(分别与按钮串联)连接到晶体管的基极。
- 如图所示,将二极管跨接在继电器上。
- 将电位器的终端分别连接到Arduino的5v引脚和Gnd引脚。并将抽头端子连接到A0引脚。
- **如果您有两个单独的12 V电池,则将一个电池的正极连接到另一电池的负极,然后将剩余的两个端子用作正极和负极。
晶体管的用途:
Arduino的数字引脚无法提供打开正常5v继电器所需的电流量。此外,我们在该项目中使用12v继电器。Arduino的Vin引脚无法轻松地为两个继电器提供这么大的电流。因此,晶体管被用来将电流从Arduino的Vin引脚传导到继电器,而继电器是通过从数字引脚连接到晶体管基极的按钮来控制的。
Arduino的目的:
- 提供打开继电器所需的电流量。
- 打开晶体管。
- 通过编程用电位计控制直流电动机的速度。最后检查完整的Arduino代码。
MOSFET的用途:
需要MOSFET来控制电动机的速度。MOSFET在高频电压下导通和关断,并且由于电动机与MOSFET的漏极串联连接,因此电压的PWM值决定了电动机的速度。
当前计算:
继电器线圈的电阻使用万用表测量,结果为= 400欧姆
Arduino的Vin引脚给出= 12v
因此需要打开继电器的电流= 12/400 Amps = 30 mA
如果两个继电器都通电,则电流= 30 * 2 = 60 mA
** Arduino的Vin引脚可以提供最大电流= 200mA。
因此,Arduino中不存在过时的问题。
Arduino控制的双向电机的工作:
这种2路电机控制电路的操作很简单。Arduino的两个引脚(2,3)将始终保持高电平。
当没有按下任何按钮时:
在这种情况下,没有电流流向晶体管的基极,因此晶体管保持关闭状态(就像开路开关一样),因此没有电流从Arduino的Vin引脚流到继电器线圈。
当按下一个按钮时:
在这种情况下,一些电流通过按下的按钮流到晶体管的基极,从而将其导通。现在,电流很容易从Vin引脚通过该晶体管流向继电器线圈,从而使该继电器(RELAY A)导通,并且该继电器的开关置于NO位置。当其他继电器(RELAY B)仍处于NC位置时。因此电流从电池的正极通过电动机流向负极,即电流从继电器A流向继电器B。这导致电动机顺时针旋转。
当按下其他按钮时:
这次另一个继电器接通。现在,电流很容易从Vin引脚通过晶体管流到继电器线圈,从而打开该继电器(RELAY B),并将该继电器的开关置于NO位置。而其他继电器(RELAY A)保持在NC位置。因此,电流从电池的正极通过电动机流向电池的负极。但这一次电流从继电器B流到继电器A。这导致电动机逆时针旋转
。
同时按下两个按钮时:
在这种情况下,电流流到两个晶体管的基极,因此两个晶体管都导通(起到闭合开关的作用)。这样两个继电器现在都处于NO位置。因此电流不会通过电动机从电池的正极流到负极,因此不会旋转。
控制直流电动机的速度:
MOSFET的栅极连接到Arduino UNO的PWM引脚6。Mosfet在高PWM频率电压下打开和关闭,并且由于电机与mosfet的漏极串联连接,因此电压的PWM值决定了电机的速度。现在,电位计的抽头端子和Gnd之间的电压决定了引脚6上的PWM电压,并且随着抽头端子的旋转,模拟引脚A0上的电压发生变化,从而导致电动机速度变化。
以下视频中的Arduino代码显示了此基于Arduino的双向电动机速度和方向控制的完整工作。