如何用Matlab連接控制Arduino:GUI界面製作與電機控制

2020-12-11 OFweek維科網

  MATLAB是用於算法開發、數據可視化、數據分析以及數值計算的高級技術計算語言和交互式環境。而Arduino開發板是一種越來越受到歡迎的開源硬體。

  一個是什麼都能算的軟體,一個是最火爆的開源硬體,兩者結合能碰撞出什麼樣的火花呢?筆者以Matlab軟體研究如何控制Arduino,將從Matlab製作Arduino的GUI界面和simulink應用出發,探索如何使用Matlab連接和控制Arduino。

  Matlab與Arduino聯合應用——GUI界面

  首先介紹如何安裝配置一個基於Matlab的GUI界面,能夠實現對ArduinoIO口的操作。

  下圖所示為matlab中Arduino相關程序的下載界面

  下載後為壓縮文件,解壓縮為ArduinoIO的文件夾,打開Matlab(筆者為2012版本),將當前工作目錄至於ArduinoIO文件夾下。

  打開Matlab的GUIDE

  安裝下面方法,拖放兩個按鈕,按鈕的顯示文字可以通過雙擊後,在屬性頁下的「string」一欄下面修改,我們用兩隻按鈕分別控制直流電機的轉動

  至此,我們已經完成必要的程序的燒寫和界面的初步編寫,下面將繼續介紹如何添加按鈕的響應函數,實現上位機的控制功能。

  我們利用Matlab已經初步設計了一個GUI界面,下面將添加必要的響應函數,演示時間的控制功能。

  下圖展示如何從GUIDE進入按鈕的編輯界面,在這裡我們將添加對Arduino相應的IO口或者串口的操作。

  下面是基本的操作函數實例匯總

  a=arduino('COM9')

  設置引腳為輸入或者輸出

  a.pinMode(4,'input');

  a.pinMode(13,'output');

  讀寫引腳的狀態

  a.digitalRead(4)

  a.digitalWrite(13,0)

  模擬量輸入或者輸出操作

  a.analogRead(5)

  a.analogWrite(9,155)

  串口操作

  a.serial%getserialport

  a.flush;%flushesPC'sinputbuffer

  a.roundTrip(42)%sends42tothearduinoandback

  本例中若使用按鈕「Right-Motor」點擊實現IO口8置為高電平,驅動直流電機全速轉動,則添加

  globala;

  a=arduino('COM7');

  a.pinMode(8,'output');

  在按鈕「Right-Motor」的響應函數中添加代碼段

  globala;

  a.digitalWrite(8,(get(hObject,'Value')))

  Arduino端準備

  想要arduino端的控制,還需要向Arduino中燒寫已經下載的pde文件,其位置位於加壓縮後的ArduinoIO文件夾下的pde文件中。通過usb線纜將Arduinouno與電腦連接,點擊GUI中添加的按鈕,即可實現遠端控制功能。

  我們介紹了,在Matlab中建立一個ArduinoGUI的過程。下面將繼續介紹如何在Arduino端進行軟體準備。

  軟體調試可以在Arduino連接至電腦端就可以進行。

  下面將作者自己在其中遇到或者大家可能會遇到的問題一一總結如下:

  (1)已經編寫完成的Matlab程序已經綁定了通信口COM8,執行Matlab程序出現如下提示

  Errorusingarduino(line83)

  Couldnotopenport:COM8

  ErrorinArduinomatlab>Arduinomatlab_OpeningFcn(line60)

  a=arduino('COM8');

  首先保證你的開發板已經連接至PC機,而且通過設備管理器查看埠是否與程序中設置的相同。

  (2)在保證上述已經完成的情況下,依然提示出錯

  Errorusingarduino(line54)

  PortCOM8alreadyusedbyMATLAB

  這很可能是你中間斷開了Arduino的連線或者重新編譯了程序,你需要在Matlab中執行

  delete(instrfind({'Port'},{'COM8'}))

  然後重新連接即可。

  (3)Arduino連接至PC端,但是不能燒寫上期Blogger中的pde文件,這時候要排除IDE編譯環境中可能存在的問題

  1下載最新的IDE環境(http://arduino.cc/en/Main/Software#toc2)

  2安裝手動方式更新驅動

  3注意更改軟體中TOOLs下面的「Board」和「serialport」選項,按照自己所使用Arduino進行修改。

  下面將介紹如何配置硬體外圍電路,來為實驗做最後準備。

  為ArduinoUNO開發板連接外圍電路,包括直流電機、led燈等外圍器件。

  使用到的元器件

  下圖是Arduino與直流電機的接口電路。

  我們再分析各部分功能

  1開關

  2直流電機

  3二極體

  4MOSFE管

  5電機驅動電源(9V)

  由於Arduino的最大驅動電流是40mA,遠遠小於電機驅動所需的電流。這裡我們使用一個MOSFET(當然可以使用三極體代替),來使Arduion的小電流來控制電機的通斷

  而電機屬於電感性負載,在啟停階段可能會由於電感存在產生一個很大反向電壓,可能會損害我們的MOSFET,這裡使用一個二極體來使電流沿著一個方向流動,從而保證電機對其餘電路的影響。

  9V電源為電機轉動供電,當我們直接將其連接至直流電機兩側時,會發現電機將會全速轉動。

  在實驗中,我們手上只有一個直流電機,所以另外一隻的控制我們使用led燈來模擬,注意要接上一隻220歐的電阻進行限流。

  在完成基本的軟體和硬體的準備工作後,我們現在進入最終的測試階段。

  操作順序:

  1將Arduino通過usb線纜連接至PC

  2打開Matab,將當前文件夾設為我們從matlab官網下載的並解壓縮的ArduinoIO

  3雙擊打開Arduinomatlab.fig,彈出控制界面

  4點擊按鈕觀察電機的轉動,如果在Matlab提示出錯信息,請嘗試下面解決方法

  5執行「clear」清除變量;執行「delete(instrfind({'Port'},{'COM8'}))」,並重新拔掉再插上線纜以創建新的通信連接,重複操作步驟1。

相關焦點

  • 如何製作一個Android控制的機器人
    1.arduino nano 什麼是Arduino? Arduino是一個基於易用硬體和軟體的開源電子平臺。該系統包括: ·控制器板的移動圖形界面編輯器,位於站點remotexy.com ·行動應用程式RemoteXY,允許連接到控制器並通過控制它圖形界面。下載應用程式。 ·特色功能: 接口結構存儲在控制器中。連接後,無法與伺服器交互以下載界面。接口結構從控制器下載到行動應用程式。 一個行動應用程式可以管理您的所有設備。
  • 招收學徒—如何製作matlab的GUI界面?
    4、通過選取Edit Text,Static Text,Axes按鍵,布局如下界面各字體、字樣可通過雙擊相應選體進行修改。7、點擊運行按鈕(綠色三角按鈕),出現如下界面   親愛的學弟學妹,如果你對matlab之GUI感興趣,可QQ:609553134聯繫我,我很樂意教會您如何製作輸入自己的圖形用戶界面,有償遠程教會您一個簡單課題的製作,讓您融會貫通,舉一反三。
  • 基於Arduino與LabVIEW的直流電機轉速控制系統
    直流電機是Arduino機器人製作中的主要動力來源,但是由於電機的參數一致性有所差別,即使是相同型號的電機在相同電壓下的轉速都不完全相同,而且在帶負載或負載不同的情況下,更加會導致電機轉速發生變化,這就會導致製作的Arduino輪式機器人不能實現直線行走,因為這是一個開環控制,沒有任何反饋信號返回。
  • 輕聊智能拋石車電控——基於Arduino的控制
    智能拋石車這個題目,機械部分比重相當大,大部分隊伍用了一個多月時間加工機械,留給電控的時間少之又少,認為就是一個簡單的循跡程序。的確,主要就是一個循跡控制,玩過單片機的都知道,這是最最基礎的電控,用arduino控制小車輪子正反轉,「分分鐘」完事一點也不誇張。
  • 如何控制步進電機?
    在控制電機時如果需要對電機轉動角度進行定位,步進電機是非常合適的選擇。下面是對單極和雙極步進電機以及如何從微控制器控制它們做詳細的介紹。閱讀下面的這些內容,可以先了解電機是如何工作的、微控制器是如何工作的、如何使用電晶體來控制大電流負載以及直流電動機是如何工作的。
  • 伺服電機與控制電機有什麼不同?如何選擇電機?
    步進電機開環控制的方式簡單、易於實現、價格較低,但在這種控制方式下,轉子實時位置對整個控制系統沒有反饋作用,使得步進電機一度不適合在精度要求更加苛刻、高速運行和響應能力快的一些領域中的應用。伺服系統是以變頻技術為基礎發展起來的產品,是一種以機械位置或角度作為控制對象的自動控制系統。伺服系統除了可以進行速度與轉矩控制外,還可以進行精確、快速、穩定的位置控制。伺服驅動器屬於自動化控制系統中的驅動層,伺服電機屬於執行層,編碼器通常內置在伺服電機末端。
  • Arduino_集合Arduino教程、Arduino IDE及設計應用的技術專題
    27# 活詞典 說:2014-05-19 21:15 回答26# 雲端:Arduino能通過各種各樣的傳感器來感知環境,通過控制燈光、馬達和其他的裝置來反饋、影響環境。 17# 活詞典 說:2013-08-30 22:19 如何用arduino控制110v 的普通電燈閃爍? 很容易做,用繼電器,低電壓信號控制高電壓。
  • 「資料分享」41款GUI實例助你隨心所欲玩轉matlab GUI開發
    matlab愛好者今天給大家帶來由Matt Fig收集整理開發的GUI界面編程實例以及相關GUI編程問題錦集,資料包含41個GUI開發實例以及47個GUI開發問題,所有實例均在非詳見實例:GUI_1112 如何使用GUI控制滑鼠指針?
  • 怎樣製造一個藍牙控制的RC汽車
    用黑色和紅色線焊接每個電機,並將其與機箱連接,如視頻所示。 然後將電機驅動的四個控制引腳連接到arduino 9號,10號,11號和12號插座。 步驟7:將藍牙模塊連接到Arduino 將BT模塊連接到arduino as: VCC - 》 5V 和 GND - 》 GND 步驟8:將電機驅動器連接到電池
  • 如何使用樹莓派控制直流電機
    通過使用Raspberry Pi成功控制直流電機,我們可以將它用於各種其他應用,如機器人,遙控(RC)汽車,風扇和其他相關的電機這個項目的目的是將電機安全地連接到Raspberry Pi並控制它,即使其向前或向後旋轉。 注意 :我將在這個項目中使用電機驅動器,最多可以處理兩個電機。因此,可以單獨控制兩臺電機。
  • 一文看懂arduino驅動uln2003操作步進電機的方法
    arduino驅動uln2003操作步進電機的方法   1、網上買的步進電機,很多接線順序都不對。   2、ULN2003步進電機驅動板可以讓你方便的用Arduino控制28BYJ-48步進電機。
  • 機器人編程之平臺篇什麼是Arduino
    Arduino作為全球電子愛好者使用最多的單片機平臺,開源,接口簡單實用,功能強大,通用性和定製性一流,在機器人編程控制、電子製作、硬體編程學習方面的首選!Arduino包含硬體(各種型號的Arduino板)和軟體(Arduino IDE)。
  • 基於Arduino UNO開發板無線連接伺服電機方案設計
    基於Arduino UNO開發板無線連接伺服電機方案設計 風箏 發表於 2021-01-09 11:47:36 在機器人中使用伺服電機進行精確控制很常見。
  • 怎樣用樹莓派和L298N電機驅動器模塊控制步進電機
    概述 如果您還記得以前的Raspberry Pi教程,我們已經看到如何使用RASPBERRY PI控制直流電機以及如何使用RASPBERRY PI控制伺服電機。 步進電機可以分為伺服電機和直流電機,因為您可以控制角度位置軸以及沿任一方向自由旋轉軸。
  • 十個中文例程教會你輕鬆上手製作Arduino智能小車
    當時的想法是設計一款基於Arduino的入門級機器人,可以和三五好友在有限的空間裡進行踢足球等互動,而且要做到取材容易製作簡單,在設計的上採用了模塊化的接插結構,同時還要注重外觀擁有個性。2、基於Arduino的自平衡遙控小車車模平衡控制也是通過負反饋來實現的。因為車模有兩個輪子著地,車體只會在輪子滾動的方向上發生傾斜。
  • 如何使用藍牙模塊從Android設備控制Arduino
    打開APP 如何使用藍牙模塊從Android設備控制Arduino 發表於 2019-10-11 14:41:23 http://www.dealextreme.com/p/jy-mcu-arduino-bluetooth-wireless-serial-port-module-104299 或搜索「藍牙模塊」 「在ebay 我以$ 8.20的價格在Dealextreme上買了我的。 2。具有藍牙功能的Android設備。 3。
  • 怎樣控制步進電機
    單極電機包含連接所有線圈的公共電源,而雙極電機具有分離的線圈。 本文僅介紹單極電機,因為雙極電機需要以不同的方式驅動。 由Digikey提供(原理圖) 單極輸入和步進 單極電機通常有5根輸入線 - 兩根成對線控制線圈,第五根線連接到為每個線圈提供公共分接頭。
  • 任務發布--直流減速電機控制
    《直流減速電機控制》教學單元設計任務書一、教學單元基本情況教學內容:直流減速電機控制學時安排:4學時(4節連上) 適應專業:電子信息工程二、項目設計的意義、目標與要求>直流減速電機正反轉與調速控制   利用單片機IO產生方向信號與PWM信號,完成對電機正反轉與轉速的控制。
  • matlab流程控制(二)
    感謝大家關注matlab愛好者公眾號,今天給大家介紹matlab流程控制語句第二部分。
  • 怎樣用樹莓派控制直流電機的方向和速度
    使用RPi控制直流電機 我們的下一個任務是使用樹莓派上的python腳本和GPIO頭控制直流電動機,這將在我們的腦海中產生一幅「機器人如何工作」的圖景。 警告:請勿將電機直接連接到Raspberry Pi,否則會損壞Raspberry Pi。 顯然,我們將需要一個電動機控制器IC來控制電動機的功能(順時針或逆時針旋轉)。最好從L293D電機控制器IC開始。