官术网_书友最值得收藏!

02 制作機(jī)器人該用什么單片機(jī)

◇劉天龍

很多接觸機(jī)器人不久的朋友面對種類繁多的單片機(jī)常會感到困惑,到底它們之間有何不同?制作機(jī)器人用哪種單片機(jī)控制比較好?我與大家分享我在制作機(jī)器人過程中使用單片機(jī)的一些經(jīng)驗(yàn),希望能讓初學(xué)者少些迷茫,讓已經(jīng)入門的朋友思維開闊。

撰寫本文時,我僅有3年單片機(jī)實(shí)踐經(jīng)驗(yàn)和機(jī)器人制作經(jīng)驗(yàn),比較了解51系列和AVR系列單片機(jī)(見圖2.1),本文中,我會著重討論AVR單片機(jī),都是我在機(jī)器人制作中一些切身體驗(yàn),錯誤和偏頗可能難免,希望大家指正!

圖2.1 筆者用AVR單片機(jī)做的吸塵機(jī)器人

2.1 入門首選 AT89S51系列單片機(jī)

AT89S51適合做單片機(jī)學(xué)習(xí)板、電子時鐘、超聲波測距儀等不需要采集模擬量和控制大功率外部元件的電路。S51與過去的C51的區(qū)別在于,S51支持ISP在線編程,即C51需要幾百元的編程器編程,而S51僅需一條25針并口線和非常簡單的轉(zhuǎn)換電路,接在臺式電腦打印機(jī)接口上,通過電腦中燒寫程序的小軟件,即可實(shí)現(xiàn)對S51單片機(jī)編程。從這一點(diǎn)看,AT89S51是制作機(jī)器人控制部分的入門之選。

2.2 愛好者制作機(jī)器人首選 AVR系列單片機(jī)

AVR單片機(jī)(見圖2.2)是1997年由Atmel公司研發(fā)出的增強(qiáng)型內(nèi)置Flash的RISC精簡指令集高速8位單片機(jī),具有高可靠性、功能強(qiáng)、高速度、低功耗等特點(diǎn)。AVR單片機(jī)比51單片機(jī)的運(yùn)行速度快得多,其內(nèi)部還集成了多路A/D轉(zhuǎn)換器、電壓比較器、ISP、I2C、JTAG總線電路、UART串口、大功率I/O口、看門狗等實(shí)用電路,并且很多AVR單片機(jī)型號有EEPROM、Flash、SRAM三種存儲器,可以實(shí)現(xiàn)實(shí)時修改程序存儲器中的內(nèi)容,即AVR單片機(jī)可以自己修改自己的程序。同時,AVR單片機(jī)一般能工作在寬電壓范圍(2.7~6.0V),有的居然可以在1.8V電壓下工作。雖然以上這些性能只是AVR眾多性能中的一部分,然而已經(jīng)讓51系列單片機(jī)望塵莫及了。

圖2.2 AVR單片機(jī)的各種封裝形式

如此高性能的單片機(jī),價格居然和51單片機(jī)差不多,比如ATmega8價格為8元左右,ATmega16在13元左右,這是AVR有極高性價比的真實(shí)寫照。

AVR家族人丁興旺,包括ATinyAVR(微小型),低功耗類,ATmegaAVR高、中、低檔5類單片機(jī)。它們都基于同一核心技術(shù),但在內(nèi)部集成的電路多少上有所不同。不論你要做電子手表,還是進(jìn)行視頻處理,都有一款合適的AVR單片機(jī)能滿足你的需要(見圖2.3)。

圖2.3 吸塵機(jī)器人的控制電路板

AVR的I/O口能輸出20mA和吸收40mA的電流,不僅可直接驅(qū)動LED,甚至可直接驅(qū)動微型直流減速電機(jī),而且AVR的I/O口可編程設(shè)置成輸入、輸出、高阻態(tài),是真正的3態(tài)I/O口。

順便提一句,目前非常火熱的開源硬件平臺Arduino也是基于AVR單片機(jī)的。

根據(jù)任務(wù)具體需要,選擇最合適的單片機(jī),使單片機(jī)資源充分利用,使系統(tǒng)性價比達(dá)到最高,同時兼顧未來擴(kuò)展要求,不要一味選用高性能單片機(jī),這就是單片機(jī)的選型原則。

2.3 高級機(jī)器人控制器 ARM

ARM是一個公司名,他們基于同一內(nèi)核設(shè)計了很多高性能處理器,這些處理器都叫ARM。該技術(shù)被很多公司購買后生產(chǎn)出了集成很多功能電路的ARM芯片,使得ARM成為高性能單片機(jī)。ARM一般為32位單片機(jī),適于處理大量復(fù)雜數(shù)據(jù),很多ARM裝上了μCOS2、Windows CE、Linux操作系統(tǒng),能夠同時運(yùn)行多個程序。ARM廣泛應(yīng)用于手機(jī)、MP3、GPS導(dǎo)航儀、吸塵機(jī)器人等產(chǎn)品上。

用ARM+操作系統(tǒng)做超聲波測距儀——?dú)㈦u用了牛刀,用AVR中檔單片機(jī)做機(jī)器視覺——有些吃不消。如果把它們調(diào)換一下,一切就恰到好處了。

2.4 音頻/視頻處理首選 DSP

DSP數(shù)字信號處理(Digital Signal Processing,簡稱DSP),是一種獨(dú)特的微處理器,是以數(shù)字信號來處理大量信息的器件。其工作原理是接收模擬信號,轉(zhuǎn)換為0或1的數(shù)字信號,再對數(shù)字信號進(jìn)行修改、刪除、強(qiáng)化,并在其他系統(tǒng)芯片中把數(shù)字?jǐn)?shù)據(jù)解譯回模擬數(shù)據(jù)或?qū)嶋H環(huán)境格式。它不僅具有可編程性,而且其實(shí)時運(yùn)行速度可達(dá)每秒數(shù)以千萬條復(fù)雜指令程序,遠(yuǎn)遠(yuǎn)超過通用微處理器,是數(shù)字化電子世界中日益重要的電腦芯片。它的強(qiáng)大數(shù)據(jù)處理能力和高運(yùn)行速度,是最值得稱道的兩大特色。

在高速小車循線、語音識別等領(lǐng)域,DSP被廣泛應(yīng)用。但如果僅用DSP檢測幾個碰撞開關(guān)、控制幾個電機(jī),當(dāng)然會顯得大材小用。

2.5 新興控制器 FPGA

FPGA(Field - Programmable Gate Array),即現(xiàn)場可編程門陣列,是在PAL、GAL、CPLD等可編程器件的基礎(chǔ)上進(jìn)一步發(fā)展的產(chǎn)物。它是作為專用集成電路(ASIC)領(lǐng)域中的一種半定制電路出現(xiàn)的,系統(tǒng)設(shè)計師可以根據(jù)需要通過可編輯的連接,把FPGA內(nèi)部的邏輯塊連接起來,就好像一個電路試驗(yàn)板被放在了一個芯片里。簡單來說,如果使用者想開發(fā)一個用簡單數(shù)字邏輯電路就能控制的小車,又嫌搭電路麻煩,他就可以用軟件給一個FPGA編程,讓它實(shí)現(xiàn)數(shù)字電路功能,去控制小車。也就是說,F(xiàn)PGA可被用來模擬各種電路,有的FPGA甚至能模擬51單片機(jī)的運(yùn)行。由于FPGA通過編程即可修改它模擬的電路結(jié)構(gòu),因此在系統(tǒng)實(shí)驗(yàn)、調(diào)試中很方便,很多愛好者正在嘗試用FPGA做機(jī)器人控制器。

2.6 更多可供選擇的單片機(jī)

我們在為機(jī)器人選擇一款單片機(jī)前,首先要考慮自己面對的實(shí)際任務(wù)需要什么性能的單片機(jī)。此時我們要考慮不同單片機(jī)的“應(yīng)用廣泛程度”,比如,當(dāng)我們要做一個電子大賽智能小車,有AVR單片機(jī)和PIC單片機(jī)可滿足任務(wù)需要,如何在兩者中作出選擇,需要考慮哪種單片機(jī)學(xué)起來比較容易、學(xué)習(xí)資料容易獲取、可供參考的程序和案例更加豐富,哪種單片機(jī)更容易獲得編程軟件和下載器等。筆者感覺,要想做智能小車,AVR單片機(jī)的資料比較豐富。

世界上有種類繁多的單片機(jī),它們當(dāng)中絕大多數(shù)都可用來控制機(jī)器人,但存在一個是否合適的問題。比如,PLC是可編程控制器,當(dāng)然可以用來控制愛好者手中的機(jī)器人,但PLC多用于工業(yè)控制領(lǐng)域,設(shè)備龐大,價格昂貴,同時不易獲得用PLC控制小型機(jī)器人的資料。愛好者選擇學(xué)一種單片機(jī)前,首先得明確自己要用單片機(jī)干什么,然后再選最合適的單片機(jī)學(xué)習(xí)。學(xué)單片機(jī)重在學(xué)精一兩種單片機(jī),如果有人泛泛地學(xué)ARM、PLC、PIC、DSP、FPGA等所有有名的單片機(jī),那么他將無法擁有真正的深度開發(fā)能力。所謂深度開發(fā),以AVR單片機(jī)為例,初學(xué)者可以用它實(shí)現(xiàn)小燈交替閃爍,中級技術(shù)人員可以用它控制參加小車比賽的機(jī)器人,而真正的高級開發(fā)人員可以用AVR實(shí)現(xiàn)機(jī)器視覺、無人機(jī)自動駕駛、坦克火控系統(tǒng)……

2.6.1 AVR單片機(jī)過時了嗎?

有初學(xué)者甚至中級開發(fā)人員認(rèn)為,因ARM性能比AVR性能高,因此ARM將代替AVR, AVR將退出歷史舞臺,或者M(jìn)SP430將代替51系列單片機(jī),或者FPGA將取代所有單片機(jī)等。

我個人認(rèn)為這種看法不對,因?yàn)椴煌瑔纹瑱C(jī)都有各自的特點(diǎn)和優(yōu)點(diǎn),沒有哪種單片機(jī)是完美的,在不同場合用最合適的單片機(jī),發(fā)揮它們各自的特長,而不存在ARM一統(tǒng)天下,取代所有其他型號單片機(jī)的可能性。試想,原本十幾元的普通電子表因?yàn)椴捎肁RM控制賣到幾百元,誰能受得了?因此,不要覺得AVR已經(jīng)過時,學(xué)完51就直接學(xué)ARM,或者覺得學(xué)51沒用,直接學(xué)ARM,否則你容易碰壁。

2.6.2 MSP430系列單片機(jī)如何?

這個系列的單片機(jī)也比較適于機(jī)器人開發(fā),是美國德州儀器推向市場的一種16位、具有精簡指令集的、超低功耗的混合信號處理器。MSP430系列單片機(jī)采用的是1.8~3.6V電壓,因而可使其在1MHz的時鐘條件下運(yùn)行時,芯片的電流會在200~400μA,時鐘關(guān)斷模式的最低功耗電流只有0.1μA。MSP430系列單片機(jī)的各成員都集成了較豐富的片內(nèi)外設(shè),分別是看門狗、模擬比較器、定時器、串口0/1、硬件乘法器、液晶驅(qū)動器、10位/12位ADC、16位Sigma-Delta A/D、直接尋址模塊(DMA)、I/O端口、基本定時器等外圍模塊的不同組合。MSP430系列單片機(jī)的開發(fā)工具也比較簡便,價格也相對低廉,并且也可以實(shí)現(xiàn)在線編程。

2.6.3 PIC單片機(jī)如何?

PIC可用于機(jī)器人開發(fā),是8位單片機(jī),產(chǎn)品種類豐富,采用精簡指令集,有不錯的開發(fā)環(huán)境,引腳驅(qū)動能力強(qiáng),可直接連接繼電器控制強(qiáng)電。自帶看門狗,有睡眠和低功耗模式,但很多性能不如AVR和MSP430系列單片機(jī)。

2.6.4 凌陽單片機(jī)如何?

凌陽單片機(jī)比較適合機(jī)器人開發(fā),以16位計算為核心,集成不同規(guī)模的RAM、ROM和其他豐富的功能電路,使用者可以根據(jù)自己需要選擇集成了特定功能電路的凌陽單片機(jī)系列。凌陽單片機(jī)指令系統(tǒng)提供出具有較高運(yùn)算速度的16位,16位的乘法運(yùn)算指令和內(nèi)積運(yùn)算指令,為其應(yīng)用添加了DSP功能,因此更適合進(jìn)行語音識別。在我國,凌陽單片機(jī)在學(xué)校比較常見,應(yīng)用實(shí)例較多,可作為機(jī)器人愛好者選用的單片機(jī)之一。

TIPS:

單片機(jī)誕生前人們用什么控制機(jī)器人

1.模擬計算機(jī)

在數(shù)字計算機(jī)誕生前,人們用電子管、電容器和電感線圈、電阻搭建模擬計算機(jī),能夠完成許多簡單的計算和控制任務(wù)。所謂模擬計算機(jī)(見圖2.4),就是其計算采用的信號不是1、0這樣的數(shù)字信號,而是電壓連續(xù)變換的模擬信號,類似于自動控制原理中的各種控制器采用的運(yùn)算。別小看了模擬計算機(jī),20世紀(jì)80年代第5次中東戰(zhàn)爭時,一些國家使用的前蘇制全自動自行防空炮(見圖2.5)就是采用模擬計算機(jī)來實(shí)現(xiàn)飛機(jī)軌跡的計算,并控制火炮射擊目標(biāo)。

圖2.4 早期模擬計算機(jī)

圖2.5 采用模擬計算機(jī)的防空炮

2.由齒輪和凸輪組成的控制器

在模擬計算機(jī)誕生前,也就是蒸汽機(jī)時代,有些機(jī)械天才硬是用數(shù)百個齒輪和凸輪搭建出機(jī)械計算機(jī),人們通過轉(zhuǎn)動印有數(shù)字的各種齒輪,另一些齒輪就將運(yùn)算結(jié)果顯示出來了。機(jī)械計算機(jī)在人類史上曾經(jīng)是高科技產(chǎn)品,第二次世界大戰(zhàn)時,德國著名的密碼機(jī)(見圖2.6)就是一種機(jī)電混合式計算機(jī),它是當(dāng)時最保密的通信工具。

圖2.6 密碼機(jī)

3.由發(fā)條、秒表和繼電器組成的控制器

在電氣時代開始時,人們用鐘表內(nèi)機(jī)械的旋轉(zhuǎn)分時針控制繼電器的通斷,從而控制一些機(jī)床和生產(chǎn)線的運(yùn)行。這種裝置類似于早期洗衣機(jī)內(nèi)的定時器。

主站蜘蛛池模板: 浦东新区| 大关县| 台东市| 清原| 临清市| 诸暨市| 临夏县| 汤阴县| 三门峡市| 江孜县| 凤阳县| 罗平县| 嘉黎县| 临安市| 临湘市| 贡嘎县| 湾仔区| 饶河县| 宁乡县| 涡阳县| 辉县市| 洞头县| 肥城市| 江陵县| 运城市| 双桥区| 杭锦后旗| 葵青区| 乌拉特前旗| 洛阳市| 什邡市| 新竹市| 罗田县| 岳普湖县| 临颍县| 梁河县| 临泉县| 闽侯县| 石阡县| 依安县| 铜陵市|