电子说
步骤1:脉宽调制(PWM) )
对于那些不熟悉PWM的人来说,它并不像听起来那样可怕。对于我们简单的电机控制应用程序而言,它真正的意思是生成一定频率的方波,然后更改占空比。占空比定义为输出与波形周期相比为逻辑高电平的时间比率。您可以在上图中清楚地看到,顶部波形为10%占空比,中间波形为50%占空比,底部波形为90%占空比。每个波形上覆盖的虚线表示电机看到的等效直流电压。鉴于Arduino具有内置的PWM功能,生成这种类型的DC电机控制确实非常简单。使用PWM的另一优点是,它有助于防止电动机在使用直直流电时可能发生的突然启动。 PWM的一个缺点是有时在PWM的频率下会听到来自电动机的声音。
步骤2:硬件
第一张图片显示了开关和LM298电机驱动器模块的Arduino连接。 Arduino内部有弱上拉电阻,因此开关不需要上拉电阻。方向开关是一个简单的SPST(单刀单掷)开关。油门和制动开关显示为常开,瞬时接触按钮。
第二张图显示了蓝牙模块和LM298电机驱动器模块的Arduino连接。蓝牙TXD输出直接连接到Arduino RX串行输入。
第三张图片是L298N双H桥模块。 LM298模块具有一个板载5伏调节器,可通过跳线将其启用。 Arduino和蓝牙需要+5伏特,但我们需要+12伏特来驱动电机。在这种情况下,我们将+12伏特施加到L298N的“ + 12V电源”输入,我们将保留“ 5V使能”跳线。这允许5伏调节器输出到模块上的“ +5功率”连接。将其连接到Arduino和蓝牙。别忘了将+12输入和+5输出的接地线连接到模块“电源GND”。
我们希望电机的输出电压根据产生的PWM变化。 Arduino,而不仅仅是完全打开或关闭。为此,我们从“ ENA”和“ ENB”上移除跳线,并将我们的Arduino PWM输出连接至模块上的“ ENA”。请记住,实际的使能引脚是最靠近板边缘的引脚(“输入”引脚旁边)。每个使能的背面引脚为+5伏,因此我们要确保不连接该引脚。
模块上的“ IN1”和“ IN2”引脚分别连接到各自的Arduino引脚。这些引脚控制电机方向,是的,有充分的理由让Arduino控制它们,而不是简单地将开关连接到模块。
第3步:蓝牙模块
此处显示的图片是蓝牙的典型图片可用模块。在寻找要购买的产品时,您可以搜索“ HC-05”和“ HC-06”。两者之间的差异在于固件,通常是板上的引脚数。上图是HC-06模块的图片,带有简化的固件,仅允许进行非常基本的配置。它也被设置为“从属”蓝牙设备。简单来说,这意味着它只能响应来自“主”设备的命令,而不能自行发出命令。 HC-05模块具有更多配置可能性,可以设置为“主”设备或“从”设备。 HC-05通常具有六个插针,而不是上面为HC-06所示的四个插针。 State引脚并不是很重要,但是如果要进行任何配置,则需要Key引脚(有时会使用“ EN”之类的其他名称)。通常,如果您可以使用默认的9600波特率,并且不需要为模块指定具体名称,则无需对模块进行任何配置。我在几个项目中都使用了这些项目,因此我要相应地命名它们。
配置蓝牙模块需要您购买或构建RS-232串行端口或USB端口的接口。我不会在这篇文章中介绍如何构建一个,但是您应该可以在网上找到信息。或者只是购买一个接口。配置命令使用的AT命令有点像过去电话调制解调器中使用的命令。我在此处随附了一个用户手册,其中包含每种模块类型的AT命令。要注意的一件事是HC-06需要大写命令,并且命令字符串必须在1秒内完成。这意味着某些较长的字符串(例如更改波特率)将需要剪切并粘贴到终端程序中,或者您需要设置要发送的文本文件。仅当您尝试发送配置命令时,才需要大写。常规通信模式可以接受任何8位数据。
步骤4:软件
对于手动版本和蓝牙而言,该软件都非常简单版。要选择蓝牙版本,只需取消对“ #define BT_Ctrl”语句的注释即可。
当我编写PIC代码时,我尝试使用PWM频率并最终稳定在500 Hz。我发现如果频率太高,则LM298N模块无法对脉冲做出足够迅速的反应。这意味着电压输出不是线性的,可能会发生较大的变化。 Arduino内置了PWM命令,但它们仅允许您更改占空比而不是频率。幸运的是,该频率约为490 Hz,因此足够接近我在PIC上使用的500 Hz。
火车油门的“特征”之一是具有加速和制动的动量感模拟真实火车的工作方式。为此,在软件的手动版本的循环中插入一个简单的时间延迟。使用所示的值,从0到12伏或从12伏回到零大约需要13秒钟。可以很容易地将延迟更改为更长或更短的时间。动量无效的唯一情况是更改方向开关。为了保护起见,只要更改此开关,PWM占空比就会立即设置为0%。实际上,这使得“方向”开关也可以用作紧急制动器。
为确保立即处理“方向”开关,我将其代码放入了中断处理程序中。这也使我们可以使用“更改时中断”功能,因此更改从低到高还是从高到低都没有关系。
该软件的蓝牙版本使用单字母命令来启动前进,倒车,刹车和油门功能。实际上,收到的命令将替换手动开关,但会导致相同的响应。我用于蓝牙控制的应用程序被Next Prototypes称为“蓝牙串行控制器”。它使您可以配置虚拟键盘并为每个按键设置自己的命令字符串和名称。它还允许您设置重复频率,因此我将“制动”和“油门”按钮设置为50ms,以提供约14秒的动量。我禁用了“前进”和“后退”按钮的重复功能。
全部0条评论
快来发表一下你的评论吧 !