在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

使用無芯直流電機和nRF24L01構建最快Arduino遙控車

科技觀察員 ? 來源:circuitdigest ? 作者:Aswinth Raj ? 2022-08-18 16:50 ? 次閱讀

遙控車玩起來總是很有趣,我個人是這些遙控車的忠實粉絲, 并且已經(仍然)廣泛地玩過它們。如今,這些汽車中的大多數都提供了巨大的扭矩來應對崎嶇的地形,但有些東西總是滯后,它的速度!!。。 所以,在這個項目中,我們將 使用 Arduino 構建一個完全不同類型的 RC 汽車,主要這輛車的目標是達到最高速度,因此我決定為遙控車試用 無芯直流電機。這些電機通常用于無人機,額定轉速為 39000 RPM 這應該足以滿足我們對速度的渴望。該車將由一塊小型鋰電池供電,并可使用 nRF24L01 射頻模塊進行遠程控制。

遙控車用無芯直流電機

該項目中使用的無芯直流電機如下圖所示。您可以輕松找到它們,因為它們廣泛用于迷你無人機。只需尋找 8520 磁性微型空心杯電機,您就會找到這些。

poYBAGL9_JWALcksAAVbPlJfG4U266.png

現在,將直流電機用于遙控車存在某些缺點。首先是它們提供非常低的啟動扭矩,因此我們的遙控車應該盡可能輕巧。這就是為什么我決定使用 SMD 組件在 PCB 上構建整個汽車并盡可能減小電路板尺寸的原因。第二個問題是它的高速,39000 RPM(軸的 RPM)很難處理,所以我們需要在 Arduino 端使用 MOSFET 構建的速度控制電路。第三件事是這些電機將由單個鋰聚合物電池供電,工作電壓在 3.6V 至 4.2V 之間,因此我們必須將電路設計為在 3.3V 上工作。這就是我們使用3.3V Arduino Pro mini的原因作為我們遙控車的大腦。理清了這些問題,我們來看看搭建這個項目所需要的材料。

所需材料

3.3V Arduino Pro Mini

Arduino納米

NRF24L01 – 2 個

操縱桿模塊

SI2302 MOSFET

1N5819 二極管

無鐵芯 BLDC 電機

AMS1117-3.3V

鋰聚合物電池

電阻器、電容器、

連接線

使用 Arduino 的遙控車射頻操縱桿

如前所述,遙控車將使用射頻操縱桿進行遠程控制。該操縱桿也將使用 Arduino 和 nRF24L01 RF 模塊構建,我們還使用操縱桿模塊在所需方向控制我們的 RC。如果您對這兩個模塊完全陌生,您可以考慮閱讀使用 nRF24L01 連接 Arduino和使用 Arduino 連接操縱桿的文章,以了解它們的工作原理以及如何使用它們。要構建您的Arduino RF 遠程操縱桿,您可以按照下面的電路圖進行操作。

poYBAGL9_JCAH8BHAAGbistnfBA808.png

RF 操縱桿電路可以使用納米板的 USB 端口供電。nRF24L01 模塊僅在 3.3V 上運行,因此我們在 Arduino 上使用了 3.3V 引腳。我在面包板上構建了電路,如下所示,如果需要,您也可以為此創建一個 PCB。

pYYBAGL9_I2AJrikAAUILtkgNYs461.png

RF 操縱桿電路的Arduino 代碼非常簡單,我們必須從操縱桿中讀取 X 值和 Y 值并通過 nRF24L01 將其發送到 RC 車。該電路的完整程序可以在本頁底部找到。我們不會對此進行解釋,因為我們已經在上面共享的接口項目鏈接中討論了它。

Arduino RC 汽車電路

我們的遙控 Arduino 汽車的完整電路圖如下所示。電路圖還包括向我們的汽車添加兩個 TCRT5000 IR 模塊的選項。這是為了讓我們的遙控車能夠作為線跟隨機器人工作,這樣它就可以獨立工作而不受外部控制。但是,為了這個項目,我們不會專注于它,請繼續關注另一個項目教程,我們將在其中嘗試構建“Fastest Line Follower Robot”。為了便于構建,我將兩個電路組合在一個 PCB 上,您可以忽略該項目的 IR 傳感器運算放大器部分。

pYYBAGL9_IiAGqLRAAEWeuxNNt8614.png

遙控車將由連接到終端 P1 的鋰電池供電。AMS117-3.3V用于為我們的 nRF24L01 和我們的專業迷你板調節 3.3V。我們也可以直接在原始引腳上為 Arduino 板供電,但 pro mini 上的板載 3.3V 穩壓器將無法為我們的射頻模塊提供足夠的電流,因此我們使用了外部穩壓器。

poYBAGL9_IGAGcT1AAbH5KQwmQY545.png

為了驅動我們的兩個 BLDC 電機,我們使用了兩個 SI2302 MOSFET。確保這些 MOSFET 可由 3.3V 驅動非常重要。如果您找不到完全相同的部件號,您可以尋找具有以下傳輸特性的等效 MOSFET

pYYBAGL9_H2Ab9p-AAGN-WRl46o503.png

電機可以消耗高達 7A 的峰值電流(在負載下連續測試為 3A),因此 MOSFET 漏極電流應為 7A 或更高,并且應在 3.3V 時完全開啟。正如您在此處看到的,我們選擇的 MOSFET 即使在 2.25V 下也可以提供 10A,因此它是一個理想的選擇。

為 Arduino 遙控車制造 PCB

構建這個項目的有趣部分是 PCB 開發。這里的 PCB 不僅形成電路,而且還充當我們汽車的底盤,因此我們為它設計了一個看起來像汽車的形狀,并且可以選擇輕松安裝我們的電機。您也可以嘗試使用上面的電路設計自己的 PCB,或者您可以使用我的 PCB 設計,完成后如下所示。

poYBAGL9_HmAEvmcAAQipE_uNAY926.png

如您所見,我設計的 PCB 可以輕松安裝電池、電機和其他組件。

組裝印刷電路板

我打開焊條并開始組裝電路板。由于腳印、焊盤、通孔和絲網印刷的形狀和尺寸都非常完美,因此組裝電路板沒有問題。從開箱開始,僅用了 10 分鐘,電路板就準備好了。

焊接后的幾張電路板圖片 如下所示。

poYBAGL9_HWASLQwAAbg0sGCKIE365.png

3D 打印輪子和電機支架

正如您在上圖中可能已經注意到的那樣,我們需要對機器人的電機支架和輪子進行 3D 建模。如果您使用了我們上面共享的 PCB Gerber 文件,那么您不妨從這個thingiverse 鏈接下載它來使用 3D 模型。

poYBAGL9_HGAPi2XAAKbgmr5U-Y886.png

我使用 Cura 對我的模型進行切片并使用 Tevo Terantuala 打印它們,沒有支撐和 0% 填充以減輕重量。您可以更改適合我們打印機的設置。由于電機旋轉得非???,我發現設計一個與電機軸緊密貼合的輪子非常困難。因此,我決定在輪子內使用無人機葉片,如下所示

pYYBAGL9_G6AfnJDAAMT0IzN2C4887.png

我發現這更可靠和堅固,但是,嘗試不同的車輪設計,并在評論部分告訴我什么對你有用。

對 Arduino 進行編程

該項目的完整程序(Arduino nano 和 pro mini)可以在本頁底部找到。你的RC程序的解釋如下

我們通過包含所需的頭文件來啟動程序。請注意,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 個頻段,因為它不擁塞,并且已將模塊設置為低功耗運行,您也可以使用這些設置。

無效設置(){
  串行.開始(9600);
  myRadio.begin();
  myRadio.setChannel(115); //115頻段以上WIFI信號
  myRadio.setPALevel(RF24_PA_MIN); //MIN 功率低范圍
  myRadio.setDataRate(RF24_250KBPS); //最低速度
}

接下來在主循環函數中,我們將只執行 ReadData 函數,我們將使用該函數不斷讀取從 Transmitter 操縱桿模塊發送的值。注意程序中提到的管道地址應該和發射器程序中提到的一樣。我們還打印了我們收到的用于調試目的的值。成功讀取值后,我們將執行 Control Car 功能,根據從
Rf 模塊接收到的值來控制我們的 RC 汽車。

無效讀取數據()
{
  myRadio.openReadingPipe(1, 0xF0F0F0F0AA); //讀取哪個管道,40位地址
  myRadio.startListening(); //停止傳輸并開始接收
  if (myRadio.available())
  {
    而(myRadio.available())
    {
      myRadio.read( &data, sizeof(data) );
    }
    Serial.print("\n收到:");
    序列號.println(data.msg);
    收到 = data.msg;
    控制車();
  }
}

在 Control Car 函數中,我們將使用模擬寫入函數控制連接到 PWM 引腳的電機。在我們的發射器程序中,我們將 Nano 的 A0 和 A1 引腳的模擬值轉換為 1 到 10、11 到 20、21 到 30 和 31 到 40,分別用于控制汽車的前進、后退、左轉和右轉。下面的程序用于控制機器人的前進方向

if (received>=1 && received <=10) // 前進
  {
    int PWM_Value = map (收到, 1, 10, min_speed, max_speed);
    模擬寫入(R_MR,PWM_Value);
    模擬寫入(L_MR,PWM_Value);
  }

同樣的,我們也可以多寫三個函數來進行反向、左、右控制,如下圖。

    if (received>=11 && received <=20) // 中斷
  {
    int PWM_Value = map (收到, 11, 20, min_speed, max_speed);
    類比寫入(R_MR,0);
    類比寫入(L_MR,0);
  }
    if (received>=21 && received <=30) // 左轉
  {
    int PWM_Value = map (收到, 21, 30, min_speed, max_speed);
    模擬寫入(R_MR,PWM_Value);
    類比寫入(L_MR,0);
  }
      if (received>=31 && received <=40) // 右轉
  {
    int PWM_Value = map (收到, 31, 40, min_speed, max_speed);
    類比寫入(R_MR,0);
    模擬寫入(L_MR,PWM_Value);
  }

Arduino 遙控車的工作

完成代碼后,將其上傳到您的專業迷你板上。通過 FTDI 模塊取出電池和電路板進行測試。啟動您的代碼,打開串行電池,您應該會收到來自發射器操縱桿模塊的值。連接你的電池,你的電機也應該開始旋轉。

poYBAGL9_GWAV4fIAAbCzQmUFMQ965.png

射頻遙控操縱桿


/*將射頻值傳輸到 Arduino 的代碼

*

* 引腳連接

* CE - 7

MISO - 12

MOSI - 11

SCK - 13

CS - 8

A0 - JoyX

A1 - JoyY

*/

#include

#include "RF24.h "

RF24 myRadio (7, 8);

結構包

{

int msg = 0;

};

字節地址[][6] = {"0"};

typedef struct package 封裝;

包裝資料

無效設置()

{

序列.開始(9600);

myRadio.begin();

myRadio.setChannel(115); //115頻段以上WIFI信號

myRadio.setPALevel(RF24_PA_MAX); //MAX power long 憤怒

myRadio.setDataRate(RF24_250KBPS); //最小速度

延遲(500);

Serial.print("遠程初始化");

}

向前詮釋;

逆向;

int左;

詮釋正確;

無效循環()

{

int xValue = 模擬讀?。ˋ0);//讀取JoyX值

int yValue = analogRead(A1); //讀取JoyY值

//Serial.print(xValue); 序列號.print(" , "); Serial.println(yValue);

if (xValue>560 && xValue<1000) // 為向上過濾 JoyX

{

forward = map (xValue, 560, 1000, 1, 10); //將 Joyx-up 轉換為 0-10

//Serial.print("F="); Serial.println(轉發);

data.msg = 轉發;寫入數據();延遲(50);

}

if (xValue<500 && xValue > 10) // 過濾 JoyX 的 break

{

reverse = map (xValue, 10, 500, 20, 11); //將JoyX-down轉換為11-20

//Serial.print("B="); Serial.println(反向);

data.msg = 反向;寫入數據();延遲(50);

}

else if (yValue>600 && yValue<1000) // 為右過濾 JoyY

{

right = map (yValue, 600, 1000, 21, 30); //將 JoyY-right 轉換為 21-30

//Serial.print("R="); Serial.println(右);

data.msg = 對;寫入數據();延遲(50);

}

else if (yValue<450 && yValue > 10) // 過濾 JoyY 為 left

{

left = map (yValue, 10, 450, 40, 31); //將JoyY-left轉換為31-40

//Serial.print("

data.msg = 左;寫入數據();延遲(50);

}

/* else

{

Serial.println("Rest");

數據.msg = 0; 寫入數據();延遲(50);

}

*/

}

void WriteData()

{

myRadio.stopListening(); //停止接收并開始發送

myRadio.openWritingPipe(0xF0F0F0F0AA); //在這個 40 位地址上發送數據

myRadio.write(&data, sizeof(data));

//Serial.print("\nSent:");

//Serial.println(data.msg);

延遲(50);

}

void ReadData()

{

myRadio.openReadingPipe(1, 0xF0F0F0F066); // 讀取哪個管道,40 位地址

myRadio.startListening(); //停止傳輸并開始接收

if ( myRadio.available())

{

while (myRadio.available())

{

myRadio.read( &data, sizeof(data) );

}

Serial.print("\n收到:");

序列號.println(data.msg);

}

}





無刷直流電機


/*CE - 7

MISO - 12

MOSI - 11

SCK - 13

CS - 8

最近用 nano 測試

*/

/*PIN DEFANITIONS*/

#define R_IR 3

#define L_IR 4

#define L_MR 5

#define R_MR 6

#define min_speed 200

#定義 max_speed 800

#include

#include "RF24.h"

RF24 myRadio (7, 8);

結構包

{

int msg;

};

typedef struct package 封裝;

包裝資料;

字節地址[][6] = {"0"};

無效設置(){

pinMode(R_IR,輸入);

pinMode(L_IR,輸入);

pinMode(L_MR,輸出);

pinMode(R_MR,輸出);

串行.開始(9600);

myRadio.begin();

myRadio.setChannel(115); //115頻段以上WIFI信號

myRadio.setPALevel(RF24_PA_MIN); //MIN 功率低

范圍 myRadio.setDataRate( RF24_250KBPS ) ; //最低速度

}

int received;

無效循環(){

讀取數據();

}

void Control_Car()

{

if (received>=1 && received <=10) // 向前移動

{

int PWM_Value = map (received, 1, 10, min_speed, max_speed);

模擬寫入(R_MR,PWM_Value);

模擬寫入(L_MR,PWM_Value);

}

if (received>=11 && received <=20) // 中斷

{

int PWM_Value = map (收到, 11, 20, min_speed, max_speed);

類比寫入(R_MR,0);

類比寫入(L_MR,0);

}

if (received>=21 && received <=30) // 右轉

{

int PWM_Value = map (received, 21, 30, min_speed, max_speed);

模擬寫入(R_MR,PWM_Value);

類比寫入(L_MR,0);

}

if (received>=31 && received <=40) // 右轉

{

int PWM_Value = map (received, 31, 40, min_speed, max_speed);

類比寫入(R_MR,0);

模擬寫入(L_MR,PWM_Value);

}

}

void ReadData()

{

myRadio.openReadingPipe(1, 0xF0F0F0F0AA); //讀取哪個管道,40位地址

myRadio.startListening(); //停止傳輸并開始接收

if ( myRadio.available())

{

while (myRadio.available())

{

myRadio.read( &data, sizeof(data) );

}

Serial.print("\n收到:");

序列號.println(data.msg);

收到 = data.msg;

控制車();

}

else //如果不是來自 RF 的數據

{

//analogWrite(R_MR,0);

//analogWrite(L_MR,0);

}

}

void WriteData()

{

myRadio.stopListening(); //停止接收并開始發送

myRadio.openWritingPipe(0xF0F0F0F066);//在這個 40 位地址上發送數據

myRadio.write(&data, sizeof(data));

Serial.print("\n已發送:");

序列號.println(data.msg);

延遲(300);

}

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • nRF24L01
    +關注

    關注

    17

    文章

    330

    瀏覽量

    69475
  • 遙控車
    +關注

    關注

    9

    文章

    81

    瀏覽量

    23729
  • Arduino
    +關注

    關注

    188

    文章

    6469

    瀏覽量

    187070
收藏 人收藏

    評論

    相關推薦

    NRF24L01

    誰有NRF24L01無線模塊收發程序,51單片機的,我想做個遙控車 非常感謝
    發表于 04-17 20:50

    nrf24l01遙控小車

    一個nrf24l01遙控小車 可以當做學習NRF24L01的學習資料哦 我找了很多才找到的
    發表于 06-17 20:16

    如何使用NRF24L01Arduino控制伺服電機?

    如何使用NRF24L01Arduino控制伺服電機
    發表于 09-29 08:52

    基于NRF24L01Arduino Nano制作遠程無線工業溫度監測系統

    NRF24LO1 PA+LNA 收發器模塊來控制RC Jet Plane。我能夠控制 RC 飛機的上下左右移動。我還能夠控制直流電機的速度。 所以在本教程中,我將使用小型 NRF24L0
    發表于 08-03 06:18

    nrf24l01是什么模塊_nrf24l01工作原理

    本文首先闡述了nrf24l01概念,其次介紹了nrf24l01的性能參數,最后介紹了nrf24l01的工作原理。
    發表于 04-24 08:47 ?2w次閱讀

    nrf24l01發射功率測試_nrf24l01可以做什么

    本文主要闡述了nrf24l01發射功率測試步驟及nrf24l01的應用領域。
    發表于 04-24 08:55 ?7556次閱讀

    Arduino直流電機調速

    Arduino直流電機調速(深圳市核達中遠通電源技術有限公司招聘電話)-基于Arduino直流電機調速? ? ? ? ? ? ? ? ? ? ? ??
    發表于 09-18 16:12 ?61次下載
    <b class='flag-5'>Arduino</b>的<b class='flag-5'>直流電機</b>調速

    DIY Arduino nRF24L01遙控

    電子發燒友網站提供《DIY Arduino nRF24L01遙控器.zip》資料免費下載
    發表于 07-22 09:49 ?10次下載
    DIY <b class='flag-5'>Arduino</b> <b class='flag-5'>nRF24L01</b><b class='flag-5'>遙控</b>器

    如何在Arduino中使用NRF24L01模塊

    電子發燒友網站提供《如何在Arduino中使用NRF24L01模塊.zip》資料免費下載
    發表于 10-19 09:16 ?13次下載
    如何在<b class='flag-5'>Arduino</b>中使用<b class='flag-5'>NRF24L01</b>模塊

    通過連接鋰聚合物電池和小型直流電機制造遙控車

    電子發燒友網站提供《通過連接鋰聚合物電池和小型直流電機制造遙控車.zip》資料免費下載
    發表于 11-21 10:16 ?0次下載
    通過連接鋰聚合物電池和小型<b class='flag-5'>直流電機</b>制造<b class='flag-5'>遙控車</b>

    NRF24L01遙控LED開源分享

    電子發燒友網站提供《NRF24L01遙控LED開源分享.zip》資料免費下載
    發表于 01-31 14:48 ?1次下載
    <b class='flag-5'>NRF24L01</b><b class='flag-5'>遙控</b>LED開源分享

    直流電機和有刷直流電機的區別

      直流電機和有刷直流電機是兩種不同類型的直流電機。
    發表于 03-17 18:20 ?7987次閱讀

    arduino直流電機

    這一期我們來學習如何控制直流電機。 需要材料:Arduino UNO 直流電機——本文以12V額定電機為例 電機驅動——本文以
    發表于 03-30 13:46 ?3次下載
    <b class='flag-5'>arduino</b><b class='flag-5'>直流電機</b>

    ros與arduino通信控制直流電機

    前言:在成功通過arduino開發板控制直流電機后,開始嘗試用ros與arduino通信來控制直流電機,為無人小車作準備 硬件 arduino
    發表于 03-31 11:45 ?4次下載
    ros與<b class='flag-5'>arduino</b>通信控制<b class='flag-5'>直流電機</b>

    使用NRF24L01Arduino構建無線傳感器網絡

    電子發燒友網站提供《使用NRF24L01Arduino構建無線傳感器網絡.zip》資料免費下載
    發表于 06-09 10:07 ?3次下載
    使用<b class='flag-5'>NRF24L01</b>和<b class='flag-5'>Arduino</b><b class='flag-5'>構建</b>無線傳感器網絡
    主站蜘蛛池模板: 9久久99久久久精品齐齐综合色圆 9久热久re爱免费精品视频 | 欧洲三级网站| 中国成人免费视频| 久色乳综合思思在线视频| 在线看一区二区| 色激情综合网| 性试验k8经典| vvvv98国产成人综合青青| 色婷婷综合久久久| 最新看片网址| 天天操夜夜摸| 日本不卡一区| 老色鬼久久综合第一| 日本最黄视频| 中文字幕11页| 国产色综合一区二区三区| 国产精品bdsm在线调教| 亚洲天堂资源| 成人av在线播放| eeuss影院www影院夜场| 日韩精品一级a毛片| 天天爱天天做天天爽| 不卡免费在线视频| 国产女人在线观看| 免费观看视频高清www| 色丁香六月| 日本tv欧美tv天堂| 一级片视频在线| 艹逼视频软件| 午夜.dj高清在线观看免费8| 免费黄色小视频| 国产呦在线观看视频| 日本不卡高清免费| 久久青草国产免费观看| 白浆喷射| 奇米米奇777| 嘿嘿午夜| 色噜噜狠狠色综合欧洲selulu| 天天干天天色综合| 亚洲人成毛片线播放| 午夜影视免费完整高清在线观看网站 |