遥控小车是一项很有趣的小制作,我个人是遥控小车的忠实拥护者,并且已经广泛使用。今天,这些小车中的大多数都提供了巨大的扭矩来应对复杂的地形,但总有一些东西滞后,比如它的速度!! ..因此,在本篇文章中,我们将使用Arduino制作一种完全不同类型的遥控小车,这辆车的目标是达到最高速度,因此我决定为遥控小车尝试无芯直流电机。这些电机通常用于无人机,额定功率为39000 RPM,应该足以满足我们的速度要求。该小车将使用小型锂电池供电,并且可以使用nRF24L01 RF模块进行远程控制。

遥控小车使用的无芯直流电机

下图显示了本文使用的无芯直流电机。您可以轻松找到,因为它们已在微型无人机中广泛使用。只要寻找8520电磁微型无铁芯电机,您就会找到这些。

现在,将直流电机用于遥控小车存在一些不足。首先,它们提供了非常低的启动扭矩,因此我们的遥控小车应尽可能轻巧。第二个问题是它的速度,难以处理39000 RPM,因此我们需要在Arduino端使用MOSFET构建的速度控制电路。第三个问题是,这些电动机将由工作电压在3.6V至4.2V之间的单个锂聚合物电池供电,因此我们必须将电路设计为在3.3V电压下工作。这就是为什么我们将3.3V Arduino Pro mini用作遥控小车的主控的原因。解决了这些问题后,让我们看看制作该项目所需的材料。

所需的材料

●    3.3V Arduino Pro Mini开发板

●    Arduino Nano开发板

●    NRF24L01模块

●    摇杆模块

●    SI2302 MOSFET

●    1N5819二极管

●    无芯无刷直流电机

●    AMS1117-3.3V

●    锂聚合物电池

●    连接导线

遥控小车的RF摇杆模块

如前所述,遥控小车将使用RF摇杆进行远程控制。该摇杆还使用Arduino和nRF24L01 RF模块制作,我们还使用摇杆模块在所需方向上控制小车。要制作您的Arduino RF远程遥杆,您可以按照以下电路图进行操作。

可以使用Nano开发板的USB端口为RF摇杆电路供电。nRF24L01模块在3.3V电压下运行,因此我们在Arduino上使用了3.3V引脚。我已经在面包板上构建了电路,如下所示,如果需要,您也可以为此制作PCB。

RF摇杆的Arduino代码非常简单,我们需要从摇杆读取X值和Y值,然后通过nRF24L01将其发送到遥控小车。该电路的完整程序可在本页底部找到。

Arduino遥控小车电路图

下面显示了我们的遥控Arduino小车的完整电路图。电路图还包括一个向小车添加两个TCRT5000 IR模块的可选项。计划这样做是为了使我们的遥控小车能够像机器人之后的生产线一样工作,以便它可以独立工作而无需外部控制。为了简化构造,我将两个电路都组合在一个PCB上,您可以忽略本文的IR传感器和运算放大器部分。

遥控小车(RC Car)将由连接到端子P1的锂电池供电。AMS117-3.3V用于为我们的nRF24L01和Mini开发板调节3.3V。我们还可以直接在插针上为Arduino开发板供电,但是pro mini上的板载3.3V稳压器将无法为我们的RF模块提供足够的电流,因此我们使用了外部稳压器。

为了驱动两个BLDC电机,我们使用了两个SI2302 MOSFET。重要的是要确保这些MOSFET可以由3.3V驱动。如果找不到完全相同的部件号,则可以寻找具有以下传输特性的等效MOSFET

电机可能消耗高达7A的峰值电流(经负载测试连续电流为3A),因此MOSFET的漏极电流应为7A或更高,并且应在3.3V时完全导通。如您所见,我们选择的MOSFET即使在2.25V电压下也能提供10A电流,因此它是理想的选择。

Arduino遥控PCB制作

建立该项目的有趣之处在于PCB开发。这里的PCB不仅构成电路,而且还充当小车的底盘,因此我们设计了一个类似小车外形,可轻松安装电机。您也可以尝试使用上面的电路设计自己的PCB,下面是我的PCB设计。

如您所见,我将PCB设计为易于安装电池、电动机和其他组件。您可以从链接下载该PCB的Gerber文件。准备好Gerber文件后,就可以制作文件了。

组装PCB

以下是制作的几张PCB电路板的图片。

开始组装电路板。由于封装、焊盘、通孔和丝网印刷都具有正确的形状和大小,因此可以很容易地组装电路板。拆箱后仅需10分钟即可准备好板子。

焊接后的几张图如下所示。

3D打印车轮和马达支架

您可能已经在上图中注意到了,我们需要对小车的电机安装座和轮子进行3D建模。如果您使用了上面共享的PCB Gerber文件,那么也可以通过从该链接下载3D模型来使用它。

我已经使用Cura对模型进行切片,并使用Tevo Terantuala在没有支撑物和0%填充以减轻重量的情况下进行打印。您可以更改设置以适合我们的打印机。由于电动机的旋转速度非常快,因此我发现很难设计出能紧贴电动机轴并紧紧固定的车轮。因此,我决定使用车轮内的无人机叶片,如下所示

编程Arduino

该项目的完整程序(Arduino nano和pro mini)可在此页面底部找到。遥控小车程序说明如下

首先包含所需的头文件。请注意,nRF24l01模块需要将库添加到Arduino IDE,您可以使用此链接从Github下载RF24库。除此之外,我们已经为小车定义了最小速度和最大速度。最小和最大范围分别为0到1024。

#define min_speed 200#define max_speed 800#include #include "RF24.h"RF24 myRadio (7, 8);

然后在setup函数中,我们初始化nRF24L01模块。我们使用了115个频段,并且已将模块设置为低功耗运行,您也可以尝试使用这些设置。

void setup() {  Serial.begin (9600);  myRadio.begin();  myRadio.setChannel(115);  //115 band above WIFI signals  myRadio.setPALevel(RF24_PA_MIN); //MIN power low rage  myRadio.setDataRate( RF24_250KBPS ) ;  //Minimum speed}

接下来,在loop函数中,我们将仅执行ReadData函数,通过该函数我们将不断读取从发送器摇杆模块发送的值。请注意,程序中提到的管道地址应与发送器程序中提到的管道地址相同。我们还打印了我们收到的用于调试的值。成功读取该值后,我们将执行Control Car函数,根据从RF模块接收到的值来控制RC小车。

void ReadData(){  myRadio.openReadingPipe(1, 0xF0F0F0F0AA); //Which pipe to read, 40 bit Address  myRadio.startListening(); //Stop Transminting and start Reveicing  if ( myRadio.available())  {    while (myRadio.available())    {      myRadio.read( &data, sizeof(data) );    }    Serial.print("\nReceived:");    Serial.println(data.msg);    received = data.msg;    Control_Car();  }}

在Control Car函数内,我们将使用模拟写入功能来控制连接到PWM引脚的电机。在我们的发送器程序中,我们已将Nano的A0和A1引脚的模拟值转换为1到10、11到20、21到30以及31到40,以分别控制汽车向前、向后、向左和向右。以下程序用于向前控制小车

if (received>=1 && received <=10) // Move Forward  {    int PWM_Value =  map (received, 1, 10, min_speed, max_speed);    analogWrite(R_MR,PWM_Value);    analogWrite(L_MR,PWM_Value);  }

类似地,我们还可以为反向、向左和向右控制编写另外三个函数,如下所示。

    if (received>=11 && received <=20) // Break  {    int PWM_Value =  map (received, 11, 20, min_speed, max_speed);    analogWrite(R_MR,0);    analogWrite(L_MR,0);  }    if (received>=21 && received <=30) // Turn left  {    int PWM_Value =  map (received, 21, 30, min_speed, max_speed);    analogWrite(R_MR,PWM_Value);    analogWrite(L_MR,0);  }      if (received>=31 && received <=40) // Turn Right  {    int PWM_Value =  map (received, 31, 40, min_speed, max_speed);    analogWrite(R_MR,0);    analogWrite(L_MR,PWM_Value);  }

Arduino遥控小车的工作

完成代码后,将其上传到pro mini开发板。通过FTDI模块取出电池和电路板进行测试。启动代码,打开串口监视器,您应该从发送器的摇杆模块接收到该值。连接电池,电动机也应开始旋转。

欢迎打赏+点赞+留言+转发!

更多内容请点击“” 》》

arduino nano引脚_使用直流电机和RF模块nRF24L01制作Arduino遥控小车相关推荐

  1. arduino nano 蓝牙_用Arduino玩转掌控板(ESP32):ESP32概述与Arduino软件准备

    前言 近年来,掌控板(英文名:mPython)在创客教育中应用越来越广泛.掌控板集成了 ESP32 高性能双核芯片,具备 WiFi 和蓝牙连接功能,同时在板子上又配置了丰富的传感器,最重要的是它是专门 ...

  2. arduino nano引脚号_初识Arduino Nano

    Arduino是一款便捷灵活.方便上手的开源电子原型平台.包含硬件(各种型号的Arduino板)和软件(Arduino IDE,集成开发环境).Arduino是目前世界上最为流行的开源硬件平台之一,越 ...

  3. arduino nano原理图_三种常用的Arduino开发板

    什么是Arduino?相信很多读者都会有这个疑问,甚至有人认为手中的开发板就是Arduino.维基百科上说,"Arduino是一块单板的微控制器和一整套开发软件,它的硬件包含一个以ATMEL ...

  4. arduino nano 蓝牙_基于Arduino的摩尔斯电码练习及无线收发报训练器

    摘要:本文介绍一款基于Arduino NANO开发的,带2.4G无线收发报功能的摩尔斯电码训练器的系统设计思路.发射端通过NANO板的外部中断引脚采集电键输入的脉冲PPM序列同时驱动喇叭播放电键音,然 ...

  5. arduino灯光装置_【pinpong库控制硬件】之Arduino uno-调光台灯

    本帖最后由 _木子_ 于 2020-9-1 15:21 编辑 调光台灯 一.概述-------------------------------------- 在前面的课程中我们学会了如何点亮并控制LE ...

  6. Arduino单片机(五).基于OpenWrt模块的无线视频遥控小车设计

    1.功能介绍 本项目所设计的机器人需要实现的功能为:操作员在操作终端(手机或PC端)通过Wi-Fi连接到小车上Wi-Fi模块所在的网络中,向其发出相关操作指令,在Wi-Fi模块接收相关的数据指令并通过 ...

  7. arduino nano 蓝牙_贸泽开售结合蓝牙5.2与USB 2.0的 Nordic Semiconductor nRF52820多协议SoC...

    专注于引入新品并提供海量库存的电子元器件分销商贸泽电子 (Mouser Electronics) 即日起开售Nordic Semiconductor的nRF52820多协议片上系统 (SoC).此款S ...

  8. arduino nano引脚号_ARDUINO 脚号的命名规则

    ARDUINO  脚号定义: Arduino 官方脚号采用数字序号 1,2,3--:但在大多数非官方arduino 移植版本中, 都增加了更容易记忆及具有具有含义的命名规则,让我们能知道对应的端口和位 ...

  9. arduino nano 蓝牙_掌控板IO接口编程入门 | 用Arduino玩转掌控板(ESP32)系列

    众所周知,掌控板在创客教育中用的非常广泛,它是一块基于 ESP32 的学习开发板.大家对掌控板编程,用的比较多的都是图形化编程的方式,比如 mPython.Mind+ 等.但是,既然掌控板是基于 ES ...

  10. arduino nano 蓝牙_探索 Golang 云原生游戏服务器开发,5 分钟上手 Nano 游戏服务器框架...

    介绍 Nano 是什么? 轻量级,方便,高性能 golang 的游戏服务器框架. nano 是一个轻量级的服务器框架,它最适合的应用领域是网页游戏.社交游戏.移动游戏的服务端.当然还不仅仅是游戏,用  ...

最新文章

  1. Android.mk文件语法规范及使用模板 (转载)
  2. Js操作表格-对表格单元格的添加删除修改
  3. MySQL repeat复制函数示例
  4. 4键电子手表说明书_家有破壁机的要收藏,教你4道早餐食谱,细腻香甜,比喝豆浆舒服...
  5. live555 源码分析:MediaSever
  6. JAVA使用FTPClient类读写FTP
  7. Thrift源码学习二——Server层
  8. HTML5 API详解(14):Notification 实现桌面提醒
  9. 实操案例丨如何实现特定列脱敏
  10. SIA:全球半导体行业销售额7月达到454亿美元 创下月度纪录
  11. Gym - 100783E
  12. EI收录的中国(中文)期刊(2021版)
  13. 方程推导:二阶有源带通滤波器设计!(下载:教程+原理图+视频+代码)
  14. matlab像素矩阵数字,图像的一种处理方式----灰度矩阵运算(matlab)
  15. 矩阵分析与应用 -- 线性方程组
  16. linux mkv转mp4,Linux DVD 转 MP4 – HandBrake – Copy a DVD to MP4 or MKV file
  17. 滴滴2020校招算法笔试 2019.08.27
  18. 什么是基类,什么是父类
  19. ERROR: Invalid subnet : invalid CIDR address: 解决办法
  20. 影响中国软件开发的20人-- 开国元勋篇

热门文章

  1. 机虚拟磁盘附加到计算机上,Hyper-V 怎样拷贝文件至虚拟硬盘并附加到虚拟机上...
  2. VisualVM安装,插件安装,各个面板信息讲解
  3. java filechannel 并发_java.nio中的Channel系列(2)-FileChannel与零拷贝原理
  4. python闹钟界面程序_利用QT写一个极简单的图形化Python闹钟程序
  5. JavaScript中字符串相关总结(附实例)
  6. Linux 配置mail发送邮件
  7. List 与 Map的常用方法
  8. ffmpeg-20160714-git-bin.7z
  9. Fragment中获取Activity的Context
  10. 卓尼斯ZT-180点评