[如何製作機器人 4] 了解微控制器

這次推薦的是另一系列非常經典的製作機器人入門教學文章 。一共分成十個單元,每單元介紹一個主題 。我們將陸陸續續和各位分享!

課程目錄

目錄連結:
第1課 - 入門
第2課 - 選擇機器人平台
第3課 - 了解制動器
第4課 - 了解微控制器
第5課 - 選擇馬達控制器
第6課 - 控制你的機器人
第7課 - 使用感知器
第8課 - 獲得正確的工具
第9課 - 機器人組裝
第10課 - 機器人控制程式編寫

第4課 – 了解微控制器

microcontrollers

什麼是微控制器?

你可能會問自己什麼是微控制器,它能做什麼?

微控制器是能夠執行程式(指令序列)的計算裝置,通常在機器人中被稱為“大腦”或“控制中心”,因為它負責所有計算,決策和通信。

為了與外部世界進行交互,微控制器具有一系列接腳(電子訊號連接),可以通過編程指令其變為高電壓(1 / ON)或低電壓(0/ OFF)。這些接腳還可用於讀取電子訊號(來自傳感器或其他零件),並判斷它們是高電壓還是低電壓。

大多數新版本的微控制器還可以通過使用類比數位轉換器(ADC)來測量類比電壓信號(可以具有全範圍值而不是僅僅兩個定義的狀態訊號)。通過使用ADC,微控制器可以將數值分配給既不是高電壓也不是低電壓的類比電壓。

microcontroller-detail-560x348

微控制器可以做什麼?

儘管微控制器乍看起來功能相當有限,但是通過利用接腳的高/低電壓整合應用,可以實現許多複雜的動作。然而要注意的是,由於其硬體資源和速度的限制,微控制器無法執行複雜的演算法(諸如複雜視覺處理和智能行為)。

例如,讓燈產生閃爍,可以重複程式指令,先將微控制器接腳電壓拉高,等待一會兒,將其變為低電壓,等待一小段時間後再重複這個動作。然後,連接到所述接腳的燈將無限地閃爍。

以類似的方式,微控制器可以用來控制諸如致動器(當連接到馬達控制器時),存儲設備(例如SD卡),WiFi或藍牙接口等其他電器零件。由於這種令人難以置信的通用性,微控制器可以在許多常見的日常產品中找到。實際上,每個家用電器或電子設備使用至少一個(通常是許多)微控制器。例如電視機,洗衣機,遙控器,電話,手錶,微波爐,當然還有機器人需要它來運作。

與微處理器(例如,個人電腦中的CPU)不同,微控制器不需要諸如外部的RAM或外部存儲裝置的週邊設備來操作。雖然微控制器的功能可能比PC的功能更少,不過應用微控制器的開發電路和產品要簡單得多,並且成本更低,因為只需要很少的附加零件。

要特別注意的是,微控制器僅能通過其接腳輸出非常少的電力; 這也意味著微控制器一般不能直接驅動馬達,螺線管,大燈或任何其他大負載的需求供電。若嘗試這樣做,很可能會對控制器造成損壞。

微控制器的特性是什麼?

微控制器內建的特殊硬體可以讓微控制器做出比常用的數位I / O,基礎運算,基本數學和邏輯判斷等等。許多微控制器可以支援常用的的通訊協議,如UART(又名RS232),SPI和 I2C與其他裝置,例如電腦,先進的傳感器或其它微控制器通訊。這個特性是非常有用的。雖然可以手動實現這些協議,有專門的硬體內置來處理這些細節還是很讓人高興。它可以讓微控制器專注於其他任務,程式更精簡。

類比-數位轉換器(ADC),用來將類比電壓信號轉換為一個 數位成比例的電壓的大小數字,這個數字可以在微控制器程式中被使用。為了輸出功率從HIGH和LOW不同的中間量,某些微控制器使用脈衝寬度調變(PWM) 。例: 該方法可以平滑地對LED進行調光。

最後,有些微控制器在其開發板中加入了電壓調節器。這相當方便,因為它允許微控制器的供電電壓有較寬的範圍,不需要提供確準工作電壓。同時也可以供電給傳感器和其他零件,而不需要透過外部穩壓電源。

類比還是數位?

digital-analog-arduino-example-schem-300x257

下面你可以找到兩個例子來說明何時使用數位或類比接腳:

數位:數位信號被用來控制開關切換(二進制)。如下所示(在免焊接麵包板的左側),瞬時開關或按鈕在按下時會閉合電路,並允許電流流動(圖中也可看到上拉電阻/pull-up resister)。數位接腳(通過圖中的綠線)連接到該電路並回傳低電壓或0(表示接腳電壓處於低電壓範圍,在這種情況下為0V)或高電壓(表示按下按鈕並且電壓在高電壓範圍,在這種情況下為5V)。

 

類比:可變電阻器或電位器(如所示朝下方板的右邊)被用於提供一個和旋轉成比例的類比電信號(例如音響的音量旋鈕)。如下圖所示,當電位器連接到5V電源並且軸被轉動時,輸出將在0和5V之間變化,與旋轉角度成比例。微控制器上的ADC讀到電壓並將其轉換為數值。例如,10位ADC將0V轉換為值“0”,2.5V轉換為“512”,將5V轉換為“1023”。因此,如果您懷疑準備要連接的設備將提供與其他參數成比例的值(例如溫度,力,位置),則可能需要一個類比接腳。

digital-analog-arduino-example-jpg-560x205

什麼是程式編輯?

120px-autoconf-svg

讓人害怕的微控制器程式編寫已經是過去式了。不同於“過去的日子”,光是要讓一個光源產生閃爍, 就需要對微控制器有豐富的專業知識, 並還需要寫幾十行程式(更不用說在巨大的開發板上連接一堆串聯或併聯電路了),現在的微控制器控制程式非常容易上手, 這都要感謝好用的整合式開發環境(IDE),使用最新的程式語言,功能齊全的程式庫,涵蓋的許多最常見的動作(甚至有些不那麼常見的動作),以及許多現成的程式範例,讓初學者很容易開始使用。

現在,微控制器以經可以使用各種高階程式語言編寫,包括C,C ++,C#,Processing(C ++的變體),Java,Python,.Net和Basic等等。當然,組合語言(Assembler)中對所有的應用進行程式開發,但是使用這個語言的特權時至今日只保留給具有非常特殊需求的進階的用戶(及一些有被虐的傾向用戶)。換句話說,任何人都應該能夠找到最適合自己的品味和可以應用過去程式開發經驗的程式語言。

隨著製造商開發出了圖形程式開發環境,IDE變得更加簡單。過去需要數行程式的序列被簡化為圖型介面並可以連接到其他“圖型”。例如,某個圖型可以表示馬達控制,用戶僅需要將它放置在他/她想要的位置並且指定方向和轉速即可。

在硬體方面,微控制器開發板變得更加精簡, 讓使用著越來越方便來應用它。這些控制板增加了許多微控制器實用的接腳,讓使用著更容易操作並快速板子上驗證新的想法。它們還提供了方便的USB電源和程式傳輸接口,可直接和任何電腦做連結。

對於那些不熟悉該術語的人來說,開發板是一種電路板,板上有微控制器晶片及支援控制板順利運作的電子元件(例如穩壓器,振盪器,限流電阻器和USB插頭等等)。如果你不打算設計自己的支援電路,購買開發板會比單買一個微控制器晶片更加實用。
注:機器人程式開發在第10課有更深入的介紹。

為什麼不使用一般的電腦

很明顯地,微控制器非常類似於個人電腦中的中央處理器(CPU)或微處理器,開發板則類似於電腦主機板。如果是這樣,為什麼不直接使用電腦來控制機器人呢?

desktopcomputervsmicrocontroller-300x163
事實上,在更進階的機器人,特別是涉及復雜的計算和視覺演算的機器人,電腦是常被使用的而不是微控制器。桌上型電腦包括主板,處理器,主存儲設備(例如硬盤驅動器),視頻處理(板上或外部),RAM以及週邊設備,例如監視器,鍵盤,滑鼠等。這種類型的系統通常比較貴,體型較大,功耗更大。主要差異整理如下:

comp

 

選擇正確的微控制器

您所有的機器人設計都需要一個微控制器, 除非你是到微型機器人(BEAM robot)或計劃使用線控或遙控(R/C)系統(基於我們的在第1課中的定義, 將不被視為一個機器人)。對於初學者,選擇正確的微控制器似乎是一項艱鉅的任務,特別是考慮到產品,規格和潛在應用的範圍。目前市場上可用的許多不同的微控制器:Arduino,BasicATOM,BasicX,POB技術, Pololu,Parallax等等。當選擇微控制器時,不彷可以問自己以下問題:

  1. 那個微控制器在我應用領域上是最常用的?
    當然,製作機器人或電子專題比的不是流行的程度. 但實際上,如果微控制器有廣大的社群支持或曾經被成功的使用在類似(或是相同)的應用上, 這可以大大簡化您的設計階段。如此一來,你也可以從其他用戶的經驗和愛好者中受益。機器人製造商通常會共享結果,代碼,圖片,視頻和詳細的成功,甚至失敗案例。所有這些可用的材料和資深玩家那裡得到的建議是非常有價值的。
  2. 它有機器人需要的所有特殊功能嗎?
    就像選擇多人使用的微控制器一般,它必須能夠正常地執行機器人所需的所有特殊功能。有些功能所有微控制器都有包含(例如: 數位輸入和輸出,能夠執行簡單的數學運算,比較值和做決定),而有些功能則需要特定的硬體做搭配才能達到(例如ADC,PWM和通訊協議的支援)。另外, 還需要考慮記憶體和速度的要求 , 當然還有接腳數。
  3. 是否找得到所選定微控制器可以搭配的相關零件?
    如果您的機器人有特殊要求,或者有一個特定的配件或組件對於您的設計至關重要,選擇一個可以兼容的微控制器是非常重要的。雖然大多數傳感器和零件可以直接與微控制器連接,但仍有些零件只能和特定規格型號的的微控制器來連接甚至提供開箱即用的功能或範例程式。

下一步呢?

隨著電腦的價格下降,以及技術的進步能讓它們變得更小,更節能,單板電腦已成為機器人應用上一的很吸引人的選項。這些單板電腦基本上就是你大約5年前所使用的電腦,並把很多零件整合到一張板子上(所以不能換零件)。它們可以執行完整的作業系統(Windows和Linux最常見),並可以連接到外部設備,如USB週邊設備,LCD等等. 不像早期的電腦, 這些單板電腦往往更省電。

實際示例

為了選擇一個微控制器,我們製做了一個需要功能表:

  1. 微控制器必須低成本,包括開發板(低於50 $)
  2. 它必須易於使用並有很好的支援。同時擁有大量可參考的文件。
  3. 它應該使用C或以C為基礎的程式語言。
  4. 它必須很普遍,並擁有活躍的用戶社群。
  5. 由於機器人將為一個通用的平台,因此微控制器應具有非常完整的功能來確保在控制板上能驗正測試不同的設計。因此,它應該要有多組類比和數位接腳,以及整合的電壓調節器。

由於我們的機器人將使用兩個馬達,微控制器會需要使用兩個數位接腳來控制方向,兩個PWM接腳來控制速度(這將在第5課中詳細說明)。我們的機器人也將發送和接收數據,因此將需要支持的UART通信協議(或 RS232)。我們還希望在未來可以添加其他傳感器和零件,所以類比接腳和許多額外的數位接腳是需要的。

即將推出的RobotShop微控制器比較表可以讓我們比較兩個微控制器間的主要特性差異。Pololu和Arduino的微控制器似乎最滿足上述標準。為了從這兩個製造商中選擇出一個合適的微控制器,它們都被仔細研究評估包含: 可用的材料,程式碼,用戶社群,谷歌點擊數等等。

arduino-uno-560x559

Arduino的Duemilanove最終勝出(最近已由Arduino的Uno所替代)根據價格與功能和他”外接”的(能外接專用功能板來增加微控制器功能)”。此外,Arduino相當受歡迎,有著很多的範例程式,其社群也非常活躍。

 原著: Coleman Benson/譯者: 阿里哥

文章出處: RobotShop

目錄連結:
第1課 - 入門
第2課 - 選擇機器人平台
第3課 - 了解制動器
第4課 - 了解微控制器
第5課 - 選擇馬達控制器
第6課 - 控制你的機器人
第7課 - 使用感知器
第8課 - 獲得正確的工具
第9課 - 機器人組裝
第10課 - 機器人控制程式編寫

發表迴響