女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

電子發燒友App

硬聲App

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

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

3天內不再提示
電子發燒友網>電子資料下載>電子資料>通過藍牙對直流電機進行PWM和方向控制

通過藍牙對直流電機進行PWM和方向控制

2022-11-16 | zip | 0.07 MB | 次下載 | 免費

資料介紹

描述

啟示

我們最初的項目是從頭開始構建一個電動滑板,我們可以通過手機應用程序中的滑塊來控制它。然而,這首先需要能夠通過藍牙Arduino 發送 PWM 信號,以及反轉電機方向的命令。作為一個 Arduino 新手,我首先必須在互聯網上搜索可以作為創建自己項目的墊腳石的項目,以便學習和應用關鍵概念。這是從一開始就學習 Arduino 幾周的結果,我很高興知道這是否反過來幫助任何人學習了一兩件事!

這個構建是滑板上使用的小規模原型,只需稍作修改即可擴展。我將首先給出所需的部分以及它們背后的一些解釋,然后是電路以及隨附的代碼,最后將說明如何自定義應用程序以使用該程序。

所需零件

你會需要:

  • 一個 Arduino Uno 或 Nano;
  • 藍牙低功耗 (BLE) 模塊,例如僅作為從機的 HC-06,或者可以作為主機或從機的 HC-05。兩者都可以工作,因為該模塊將用作從站。它們還共享相同的四個中間引腳,這是我們唯一需要的;
pYYBAGNy7riAPoYlAAGuq6E79Vw259.png
橫向對比。信用:eggelectricunicycle.bitbucket.io
?
  • L293D電機驅動IC。這個 16 針雙 H 橋電機驅動器可以讓我們控制電機的旋轉方向和速度;
?
?
?
poYBAGNy7ruAahNdAABiES_ZGaU740.png
?
1 / 2 ? L293D 引腳布局。信用:components101.com
?
  • 12V直流電機;
  • 12V電池組;
  • 跳線和面包板。

電路

HC-06 將接收從主藍牙設備發出的串行數據,這些數據將通過連接到板的引腳 5 和 4 的接收/發送引腳 RX/TX 與 Arduino 通信它的 GND 和 VCC 引腳將分別連接到 GND 和 +5V。

L293D 中的 H 橋將允許我們通過打開或關閉一對開關來控制電機的旋轉方向,其中 4 個開關呈 H 形排列,因此得名。

pYYBAGNy7r2AQ-YrAABfgs1bLBs922.png
信用:http://axotron.se/
?

該電機驅動器還能夠以不同的速度驅動兩臺電機,但本項目僅使用一臺。

要啟用電機,請將“ Enable 1, 2 ”(引腳 1)和“ Vcc1 ”(引腳 16)連接到 +5V。將“ Vcc2 ”(引腳 8)連接到 12V 電池組的正極。將引腳 4、5、12 和 13 連接到 GND。將“輸入 1 ”(引腳 2)連接到 Arduino 的引腳 10,它將傳輸pwm2信號,將“輸入 2 ”(引腳 7)連接到引腳 9,用于pwm1. 在這些之間切換將允許我們切換旋轉方向。最后,將直流電機連接到輸出 1 和 2(引腳 3 和 6)。

pYYBAGNy7sCAXlg2AADzWcALois192.jpg
電路示意圖(用 Fritzing 制作)。
?

這是連接到面包板上時應該是什么樣子的圖片:

?
?
?
poYBAGNy7sKAIoNGAADx7pKw24g017.jpg
?
1 / 2 ?電路圖(在 Tinkercad 上制作)。
?

該程序

已添加注釋以幫助解釋代碼,但可能需要更多說明。

pwm1并且pwm2是相反的,并允許我們切換旋轉方向。應用程序發送的串行數據是一個字符串,c,這是速度和方向數據的位置。為了完成這項工作,速度位于字符串c[1]c[2]c[3]中,這就是為什么它必須作為 3 位數字接收的原因。這就是為什么在應用程序中,我們自定義滑塊以發送 100 到 255 之間的數字。然后可以將其映射到 Arduino 中的 [0:255] 下的新速度變量,如下所示:

new_speed = map(speed_value,100,255,0,255) 

然而,我們決定簡單地從 speed_value 中減去 100,以使速度屬于區間 [0:155],因為 155 對于我們的原型來說已經足夠快了。

#include
SoftwareSerial bt_ser(4,5); //connected to RX and TX pins for serial data communication
char c[6];
int i=0,speed_value=0,send_value;
#define pwm1     9   //input 2
#define pwm2    10   //input 1
boolean motor_dir = 0;
void setup()
{
 Serial.begin(9600);
 bt_ser.begin(9600);
 pinMode(pwm1,   OUTPUT);
 pinMode(pwm2,   OUTPUT);
}
void loop()
{
  while(bt_ser.available())   //when data is transmitted
    {
      if(bt_ser.available()>0)
      {
        c[i] = bt_ser.read();   //reading the string sent from master device
        Serial.print(c[i]); 
        i++;  
      }
      if(c[i-1]=='N')    //if button is pressed
       {
         motor_dir = !motor_dir;     //toggle direction variable
         if(motor_dir)               //setting direction, pwm1 and pwm2 are opposites
           digitalWrite(pwm2, 0);
         else
           digitalWrite(pwm1, 0); 
       }
     }
      speed_value = (c[1]-48)*100+(c[2]-48)*10+(c[3]-48)*1;  //interpreting speed from string
      if(motor_dir)   //for a given direction
         {
           if(c[i-1]=='#'){   //if data has been transmitted from slider
             analogWrite(pwm1, speed_value-100);  //-100 so that when slider is on "0" speed is 0
             i=0;
           }
         }
       else{       //for opposite direction
         if(c[i-1]=='#'){
           analogWrite(pwm2, speed_value-100);
           i=0;
         }
       }
}   

該應用程序

我們決定使用我們在 Play 商店中找到的名為 Bluetooth Electronics 的應用程序,因為它提供了創建儀表板以及自定義儀表板上組件發送的數據或它們如何相互交互的選項。

pYYBAGNy7sWAG4QVAABasy6do-s901.jpg
創建的儀表板的屏幕截圖。
?

為了創建這個界面,您需要編輯一個新的儀表板,并從編輯菜單中選擇一個滑塊、一個按鈕和一個文本框。

滑塊必須這樣編輯:

  • 最小值:100
  • 最大值:255
  • 在滑塊更改時發送字符串
  • 字符串以 : * 開頭
  • 字符串以 : # 結尾

按鈕應該這樣編輯(釋放文本留空):

  • 新聞正文:N
  • 發布文本:

然后,您可以添加文本以闡明儀表板。

結果

?

我作為初學者學到的一些教訓

在我們創建這個項目時,我獲得了一些我認為可以與其他 Arduino 初學者分享的智慧,因為雖然其中一些可能聽起來很明顯,但對我來說這是一條陡峭的學習曲線。

1. 使用在線提供的程序構建項目時,始終確保調整代碼并對其進行測試以了解所有部分的作用。我經常剝離代碼以嘗試隔離某些功能并了解如何以不同的方式執行它們,通過這樣做,我了解這些代碼的工作方式要好得多,并且能夠從它們中獲得靈感來自己創造一些新的東西,而不是只需復制和粘貼整個程序。

2. 這聽起來很明顯,但我犯了很多次這個錯誤:看起來相似的組件并不總是相同的!在使用晶體管和雙列直插式封裝(如 L293D)時,我尤其犯了這個錯誤。手頭有類似的組件,我嘗試構建電路,但它們從未工作過,并且必須訂購正確的組件才能使它們發揮作用。

3. 當你卡在某件事上時,有針對性的互聯網研究可以解決大多數問題,只是需要一些耐心閱讀和理解,無論是關于代碼元素還是電子元件。

結論

如果您受到啟發來構建這個項目,我建議您隨意修改它以更好地滿足您的目標并了解有關如何創建自己的 Arduino 項目的更多信息由于它是電動滑板電機控制系統的原型,以下是我們認為可以實施的一些潛在想法和示例:

  • 開/關開關;
  • 在能夠激活反向按鈕之前將滑塊拖動到“0”位置的要求;
  • 剎車命令(逐漸停止,而不是從關閉或倒車按鈕立即停止,或者必須手動逐漸降低速度);
  • 甚至創建您自己的移動應用程序來控制電機,因為我們使用了應用程序商店中提供的一個。麻省理工學院應用程序發明者似乎是創建此類應用程序的好平臺;
  • 手持遙控器也可以代替手機,如果是電動滑板,肯定是更安全的選擇;
  • 我們還認為,在滑板甲板上添加一個壓力傳感器可以在用戶摔倒時實現緊急停止,盡管遙控器和 Arduino 之間的距離讀數也可以實現該目標,一旦遙控器/用戶停止它太遠。

永遠記住是安全的,這只是電動滑板電機控制系統的一個小規模原型,我們沒有嘗試在實際中使用它,我們不建議將其用于此目的,因為它未經測試真正的滑板,可能很危險。

我們希望這對您有所幫助,并且您會在該項目中獲得樂趣!


評論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數據手冊
  2. 1.06 MB  |  532次下載  |  免費
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費
  5. 3TC358743XBG評估板參考手冊
  6. 1.36 MB  |  330次下載  |  免費
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費
  9. 5元宇宙深度解析—未來的未來-風口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費
  11. 6迪文DGUS開發指南
  12. 31.67 MB  |  194次下載  |  免費
  13. 7元宇宙底層硬件系列報告
  14. 13.42 MB  |  182次下載  |  免費
  15. 8FP5207XR-G1中文應用手冊
  16. 1.09 MB  |  178次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關電源設計實例指南
  8. 未知  |  21549次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數字電路基礎pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅動電路設計》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉中文版)
  4. 78.1 MB  |  537798次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191187次下載  |  免費
  13. 7十天學會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費