第2章 能力風(fēng)暴機(jī)器人的結(jié)構(gòu)_第1頁(yè)
第2章 能力風(fēng)暴機(jī)器人的結(jié)構(gòu)_第2頁(yè)
第2章 能力風(fēng)暴機(jī)器人的結(jié)構(gòu)_第3頁(yè)
第2章 能力風(fēng)暴機(jī)器人的結(jié)構(gòu)_第4頁(yè)
第2章 能力風(fēng)暴機(jī)器人的結(jié)構(gòu)_第5頁(yè)
已閱讀5頁(yè),還剩195頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第二章 能力風(fēng)暴機(jī)器人的結(jié)構(gòu)(綜述)n打開(kāi)包裝箱,里面有:能力風(fēng)暴機(jī)器人一臺(tái),串口通信線一根,充電器一只。n小心地拿出機(jī)器人,放在桌子上。n機(jī)器人下部的碰撞環(huán)是柔性部件,拿的時(shí)候要小心,盡量不要接觸碰撞環(huán)。n拿機(jī)器人的姿勢(shì)如圖 (a) 所示。圖 (b) 的拿法要避免,否則會(huì)使碰撞傳感器失靈。n 連接能力風(fēng)暴n接線。接線。取出串口連接線,一頭接在機(jī)器人的下載插口,另一頭接PC機(jī)機(jī)箱后的9針串口。記?。翰灰獛щ姴灏巍打開(kāi)能力風(fēng)暴的主開(kāi)關(guān)。打開(kāi)能力風(fēng)暴的主開(kāi)關(guān)。注意:能力風(fēng)暴可能開(kāi)機(jī)就運(yùn)動(dòng),請(qǐng)把它托在手上,不要讓它從高處摔下來(lái)。連接能力風(fēng)暴n按下機(jī)器人的電源開(kāi)關(guān),您會(huì)聽(tīng)到“嘟”的一聲,同時(shí)綠色電源

2、指示燈亮,說(shuō)明電源開(kāi)關(guān)已經(jīng)打開(kāi),機(jī)器人的電源接通了。這時(shí)可看到機(jī)器人液晶顯示屏上出現(xiàn)“ASOS2002 Grandar Ability Storms”的字樣,并且液晶屏右下角有“太極圖”在跳動(dòng)。n如果看不到“太極圖”跳動(dòng),則說(shuō)明機(jī)器人里沒(méi)有了操作系統(tǒng)ASOS,請(qǐng)您為機(jī)器人下載操作系統(tǒng) 檢測(cè)是否連接成功檢測(cè)是否連接成功n如果程序不能正常下載,可能有以下6個(gè)方面的原因:n1)能力風(fēng)暴的主開(kāi)關(guān)未打開(kāi)。 2)電池電壓不足。 3)機(jī)器人型號(hào)設(shè)置不正確。n4)該串口硬件有問(wèn)題。n5)能力風(fēng)暴操作系統(tǒng)被破壞。n6)串口線頭過(guò)松,接觸不好。 檢測(cè)能力風(fēng)暴n下載自檢程序selftest.jc。n自檢項(xiàng)目。給機(jī)器

3、人檢查身體,共有九個(gè)項(xiàng)目,如下表所示:n 逐項(xiàng)檢查 n按下機(jī)器人的運(yùn)行鍵,機(jī)器人就開(kāi)始自檢了,LCD 液晶屏上顯示“AS-UII Inteligent Robot Test”,緊接著就開(kāi)始了第一個(gè)自檢項(xiàng)目:n1)檢查 LCD 液晶屏nLCD 液晶顯示屏安裝在機(jī)器人的外殼上,作用是顯示各種信息,便于了解程序執(zhí)行中的情況。顯示屏可以顯示 162 個(gè)字符(每行 16 個(gè)字符,共 2 行),機(jī)器人與我們之間的交流可以通過(guò)顯示屏反映出來(lái)。顯示屏可以告訴您機(jī)器人運(yùn)行的信息,這一點(diǎn)在以后調(diào)試程序時(shí)尤其顯得重要。自檢開(kāi)始后,LCD 顯示屏標(biāo)明的測(cè)試項(xiàng)目為“Now Test NO.1”,接著提示“LCD Tes

4、t”,然后就開(kāi)始顯示字符,如數(shù)字、符號(hào)、字母等。注意觀察 LCD 顯示屏有沒(méi)有出現(xiàn)黑屏(出現(xiàn)整排蘭色條紋)或無(wú)字符等現(xiàn)象,如果沒(méi)有,說(shuō)明機(jī)器人的 LCD顯示屏是正常的。n2)喇叭檢測(cè)n第二次按下“運(yùn)行”鍵,機(jī)器人就開(kāi)始了第二項(xiàng)檢查工作,LCD顯示屏標(biāo)明的測(cè)試項(xiàng)目為“Now Test NO.2”,接著提示“Piezo Test”,請(qǐng)注意聽(tīng)機(jī)器人是否在為你“唱歌”,聲音是否清晰響亮。機(jī)器人是用喇叭發(fā)聲,喇叭是機(jī)器人的“嘴巴”,它裝在主板上。顯示屏上的數(shù)字會(huì)伴隨著機(jī)器人的聲音不斷變化,顯示的數(shù)字是機(jī)器人發(fā)出的聲音頻率。音調(diào)越高,顯示的數(shù)字就越大。 n3)光敏檢測(cè)n機(jī)器人的光敏傳感器安裝在外殼上,兩只

5、光敏傳感器一左一右,用來(lái)識(shí)別外界光線的強(qiáng)弱。再按一下“運(yùn)行”鍵,機(jī)器人就開(kāi)始了第三項(xiàng)檢查工作,LCD標(biāo)明的測(cè)試項(xiàng)目為“Now Test NO.3”,其后在 LCD 上有類似“Photo L242 R248”的提示,其中 L 表示“左光敏”,R 表示“右光敏”,字母后面的數(shù)字表示機(jī)器人檢測(cè)到的光線強(qiáng)度值。隨著光強(qiáng)的不同,光敏傳感器的感應(yīng)數(shù)值也不同,其變化范圍為 0255。光強(qiáng)越弱,數(shù)值越大,光強(qiáng)越強(qiáng),數(shù)值越小。在相同光強(qiáng)條件下,左右兩邊光敏傳感器的數(shù)值偏差應(yīng)當(dāng)小于 10。 n4)紅外檢測(cè) n紅外傳感系統(tǒng)也安裝在機(jī)器人的外殼上,左右兩側(cè)一邊一只紅外發(fā)射管,中間一只紅外接收模塊。紅外傳感器的作用是檢

6、測(cè)機(jī)器人前方、左前方、右前方是否有障礙物。再按下“運(yùn)行”鍵,機(jī)器人就開(kāi)始了第四項(xiàng)檢查工作,LCD標(biāo)明的測(cè)試項(xiàng)目為“Now Test NO.4”,其后在 LCD 出現(xiàn)“IR Test”提示。剛出廠時(shí),紅外檢測(cè)的距離設(shè)置在 30cm 左右。將 A4 紙大小的障礙物分別放在機(jī)器人的正前方、左側(cè)、右側(cè)時(shí),觀察 LCD 的變化。n5)話筒檢測(cè) n再按一下“運(yùn)行”鍵,機(jī)器人就開(kāi)始了第五項(xiàng)檢查工作,LCD標(biāo)明的測(cè)試項(xiàng)目為“Now Test NO.5”,其后出現(xiàn)“Microphone Test”提示。對(duì)著 AS-U的話筒槽孔(蜂窩狀小孔)說(shuō)話,看 LCD 上的“”號(hào)是否增加。 n6)檢測(cè)碰撞傳感器 n機(jī)器人的

7、碰撞傳感器,相當(dāng)于我們?nèi)祟惖挠|覺(jué)。它雖然只用了四只碰撞傳感器,卻能感知全身碰撞的方位。再按一下“運(yùn)行”鍵,機(jī)器人就開(kāi)始了第六項(xiàng)檢查工作,LCD標(biāo)明的測(cè)試項(xiàng)目為“Now Test NO.6”,其后出現(xiàn)“Bumper Test”字樣。當(dāng)你用手從不同方向觸動(dòng)碰撞環(huán)時(shí),LCD 就會(huì)相應(yīng)地顯示出機(jī)器人受到碰撞的方向: n用手從正前方擠壓碰撞環(huán),LCD 顯示屏上顯示“Front”; n用手從正后方擠壓碰撞環(huán),LCD 顯示屏上顯示“Back”; n你也可以試試其他方向,如左、右、左前、右前、左后、右后n方等。 7)檢測(cè)運(yùn)動(dòng)系統(tǒng) n再把機(jī)器人放到開(kāi)闊的平地上(有 2 米2 米大小即可),按一下“運(yùn)行”鍵,n機(jī)

8、器人就開(kāi)始第七項(xiàng)檢查工作。液晶屏標(biāo)明的測(cè)試項(xiàng)目為“Now Test NO.7”,接著提示“Motor Test”,其后機(jī)器人將會(huì)移動(dòng)、轉(zhuǎn)彎,同時(shí)在 LCD 上顯示機(jī)器人移動(dòng)的累計(jì)“距離”和瞬時(shí)電機(jī)轉(zhuǎn)速。如: nMotor 30 L 100 nTest 31 R 100 n表示左電機(jī)速度 100,右電機(jī)速度 100,左輪轉(zhuǎn)過(guò) 30 個(gè)單位,右輪轉(zhuǎn)過(guò) 31 個(gè)單位。n 可能碰到的問(wèn)題: n 1) 機(jī)器人運(yùn)動(dòng)突然停止,可能是機(jī)器人電量不足,請(qǐng)給機(jī) 器人充電。 n 2) 另外,注意不要讓機(jī)器人運(yùn)動(dòng)時(shí)頂住障礙物,否則會(huì)造 成電機(jī)堵轉(zhuǎn),容易損壞驅(qū)動(dòng)芯片。 n8)檢測(cè)光電編碼器 n第七項(xiàng)檢測(cè)完成后,把機(jī)器人

9、從地上拿起來(lái),再按一下“運(yùn)行”n鍵,機(jī)器人就開(kāi)始了第八項(xiàng)檢查工作,LCD 標(biāo)明的測(cè)試項(xiàng)目為“Now Test NO.8”,接著提示“Encoders Test”。機(jī)器人的輪子每轉(zhuǎn)動(dòng) 1 圈,碼盤(pán)也隨著轉(zhuǎn)動(dòng) 1 圈,LCD 上顯示的光電編碼器的計(jì)數(shù)值約等于 33。即輪子轉(zhuǎn)動(dòng) 1 周,光電計(jì)數(shù)為 33。我們可以用手分別轉(zhuǎn)動(dòng)左、右兩側(cè)的輪子,觀察顯示屏上的數(shù)字變化情況。n9)檢測(cè)擴(kuò)展電機(jī) n再按一下運(yùn)行鍵,顯示屏標(biāo)明的測(cè)試項(xiàng)目為“Test No.9”,接著提示“DC Motor 3”,這時(shí)就開(kāi)始檢測(cè)擴(kuò)展電機(jī)了。擴(kuò)展電機(jī)通常接在機(jī)器人主板的 MDCA3 接口上。此項(xiàng)檢測(cè)在此不多介紹,我們只要知道有這項(xiàng)

10、功能就行了。n自檢程序全部完成后,按一下復(fù)位鍵,機(jī)器人就會(huì)停止運(yùn)行。最后關(guān)閉電源開(kāi)關(guān)。也可以不按復(fù)位鍵,直接關(guān)閉電源開(kāi)關(guān)。 自檢程序selftest.jcn/* Definitions of the registers in the MC68HC11E1 */nint porta = 0 x1000;nint pioc = 0 x1002;nint portc = 0 x1003;nint portb = 0 x1004;nint portcl = 0 x1005;nint ddrc = 0 x1007;nint portd = 0 x1008;nint ddrd = 0 x1009;nint

11、 porte = 0 x100A;nint cforce = 0 x100B;nint oc1m = 0 x100C;nint oc1d = 0 x100D;nint tcnt = 0 x100E;nint tic1 = 0 x1010;nint tic2 = 0 x1012;nint tic3 = 0 x1014;nint toc1 = 0 x1016;nint toc2 = 0 x1018;nint toc3 = 0 x101A;nint toc4 = 0 x101C;nint toc5 = 0 x101E;nint tctl1 = 0 x1020;nint tctl2 = 0 x1021

12、;nint tmsk1 = 0 x1022;nint tflg1 = 0 x1023;nint tmsk2 = 0 x1024;nint tflg2 = 0 x1025;nint pactl = 0 x1026;nint pacnt = 0 x1027;nint spcr = 0 x1028;nint spsr = 0 x1029;nint spdr = 0 x102A;nint baud = 0 x102B;nint sccr1 = 0 x102C;nint sccr2 = 0 x102D;nint scsr = 0 x102E;nint scdr = 0 x102F;nint adctl

13、= 0 x1030;nint adr1 = 0 x1031;nint adr2 = 0 x1032;nint adr3 = 0 x1033;nint adr4 = 0 x1034;nint option = 0 x1039;nint coprst = 0 x103A;nint pprog = 0 x103B;nint hprio = 0 x103C;nint init = 0 x103D;nint test1 = 0 x103E;nint config = 0 x103F;n/* Fundamental freq of this octave. Ohters: 220, 440, 880, 1

14、760 */nfloat octave = 440.0;nfloat a0 = octave * 1.000;nfloat b0 = (octave * 1.143);nfloat c = (octave * 1.218);nfloat d = (octave * 1.375);nfloat e = (octave * 1.542);nfloat f = (octave * 1.628);nfloat g = (octave * 1.810);nfloat a = (octave * 2.000);nfloat b = (octave * 2.0 * 1.143);nfloat c2 = (o

15、ctave * 2.0 * 1.218);n/* Note times: q - quarter, h - half, w - whole */nfloat tempo = 0.25;/* Duration of a quarter note */nfloat q = tempo;/* Quarter note */nfloat h = (2.0 * tempo);/* Half note */nfloat dh = (3.0 * tempo);/* Dotted half */nint note_display = 0;/* Global chooses whether to display

16、 note or not */nvoid note(float freq, float dur)n if (note_display)n printf(Piezo Test freq%fn, freq);n tone(freq,dur);n nvoid speaker()n note(c,q);n note(f,h); n note(g,q); n note(a,h);n note(g,dh);n note(e,5.0 * q);nn/* Piezo test */nvoid piezo_test()n int ctr = 0;n while (1)n printf( n);n ctr+;n

17、note_display = 1;/* Enable note frequency display */n speaker();n note_display = 0;/* Disable display */n n/* LCD test - should exercise all characters at all positions (but dosent for now) */nvoid lcd_test()n int j;n int chr = 32;n printf(nLCD Testn);n sleep (1.5);n while(1)n for (j = 1; j 4) + (1

18、& (val 3);/* Divide with round off */n for (j = 1; j);n for (j = blks; j 16; j+)n printf(-);nn/* Microphone test */nvoid mic_test()n int sum, i;n while (1)n sum = 0; /* Collect some samples */n for (i = 0; i 5 );/* Divide by 64 to average samples and multiply by */n printf(Microphone Testn); /*

19、2 to convert therm() range from 128 to 256 */n nn/* IR Test */nvoid ir_test()n int ir_val;n while (1)n ir_val = ir_detector();n if (ir_val = 0)nprintf( );/* Clear */n else if (ir_val = 4)nprintf( );/* Both */n else if (ir_val = 1)n printf( ); /* Right */n printf(IR Testn);n sleep(0.35);n n/* Print a

20、 3 digit 8-bit integer that takes up exactly 3 characters */nvoid p_byte(int val)n if (val 10) printf( %d, val); /* .n */n else if (val : 4 */n/* : -6 */n/* therm_diff is for displaying the difference between two quantities */nvoid therm_diff (int val)n if (val = 0)n printf( );/* Zero */n else if (v

21、al -8)n printf(%c ,127);/* Less than -8 */n else if (val 0)n repeat_char(32,8 + val);/* 32 = space */n repeat_char(60,abs(val);/* 60 = 8)n printf( %c,126);/* More than +8 */n elsen printf( );n repeat_char(62,val);n repeat_char(32,8 - val);n n/*photo test*/nvoid photo_test()n int pc_left, pc_right;n

22、while(1)n pc_left = photo(1);n pc_right = photo(2);n therm_diff(pc_left - pc_right);/* Diff thermometer points toward brighter light */n printf(Photo L); p_byte(pc_left);n printf( R); p_byte(pc_right); printf( n);n sleep(0.25);n nn/* Motor Test n 0123456789ABCDEFn Motor cc L vvvv Where cc is the num

23、ber of clicks during the past intervaln Test cc R vvvv* and vvvv is the commanded velocity (as a percentage of max)n*/n/* Count the number of digits in an integer (negative numbers add 1 for - sign) */nint digits(int signed_val)n int digs, val;n val = abs(signed_val);n if (val 100)n if (val 10)ndigs

24、 = 1;n else digs = 2; n else if (val 10000)n if (val = 0)n return digs;n else return (digs + 1);nn/* Print character ch, rep times */nvoid repeat_char(int ch, int rep)n int j = 0;n for (j = 0; j = cols)n printf(%d, val);/* May not be possible to print in required number of cols */n elsen repeat_char

25、(32,cols - digs);n printf(%d,val); nnvoid display_mot_test(int lvel, int rvel)n printf(Motor ); printn(rotation(1),2); printf( L ); printn(lvel,4); printf( );n printf(Test ); printn(rotation(2),2); printf( R ); printn(rvel,4); printf( );n printf( n);nnvoid set_show_motors(int left, int right)n motor

26、(1, left);n motor(2, right);n display_mot_test(left, right);nnvoid motor_test()n int i;n float interval = 0.4;n init_motors();n rotation(1);n rotation(2);n while(1)n n for (i = 0; i = 200; i = i + 10)/* Reverse direction while spinning */n set_show_motors(100 - i), (100 - i); wait(0.05); n stop();wa

27、it(0.5);n for (i = 0; i 9) | (test_number 1) test_number = 1;n printf(AS-UII Intelligent Robot Testn);n wait(1.5);n printf(Push RUN to nexttestn);n wait(1.5);n printf(n);n printf(Now test No.%d ,test_number);n for( i = 0; i ); n printf(n);nwhile(1)n nif(!run_keyflag) run_keyflag = runbutton();nwait(

28、0.2);nif(run_keyflag & !runbutton() run_keyflag = 2;nif(run_keyflag = 2)n run_keyflag = 0; nif(pid)n kill_process(pid); test_number +;n if (test_number 9) | (test_number 1) test_number = 1;n bit_clear(0 x1000, 8);bit_clear(0 x1020, 0b00000001); bit_clear(0 x100c,0 x60);n printf(n);n printf(Now t

29、est No.%d ,test_number);n for( i = 0; i ); n printf(n);n nif(test_number = 1)n pid=start_process(lcd_test();n else if (test_number = 2)n pid=start_process(piezo_test(); nelse if (test_number = 3)n pid=start_process(photo_test();nelse if (test_number = 4)n pid=start_process(ir_test();nelse if (test_n

30、umber = 5)n pid=start_process(mic_test();nelse if (test_number = 6)n pid=start_process(bumper_test();nelse if (test_number = 7)n pid=start_process(motor_test();nelse if (test_number = 8)n pid=start_process(encoder_test();nelse if (test_number = 9)n pid=start_process(dcmotor3_test();n nn幾種常用的操作n如何更新操

31、作系統(tǒng) n如何為機(jī)器人配置型號(hào) n如何給機(jī)器人充電 n如何下載自檢程序 n如何下載當(dāng)前程序 n如何正確使用“復(fù)位/ASOS”按鈕 n如何讓機(jī)器人走的直線更好 機(jī)器人的構(gòu)成的三大要素能力風(fēng)暴機(jī)器人對(duì)信息的處理過(guò)程:五種傳感器,使它能象人一樣,有了視覺(jué)、聽(tīng)覺(jué)、觸覺(jué)等感覺(jué)器官;然后這些 “感覺(jué)器官”將感覺(jué)到的外界信號(hào)送給機(jī)器人的大腦微控制器;微控制器根據(jù)裝載的JC程序進(jìn)行思維,最后由執(zhí)行器來(lái)執(zhí)行相應(yīng)的動(dòng)作。 機(jī)器人的身體結(jié)構(gòu)n控制部分:機(jī)器人的核心組成部分,包括主板和控制按鍵1.主板:由很多電子元器件組成,跟人的大腦一樣,主要完成接收信息、處理信息、和發(fā)出指令等。2.控制按鍵:機(jī)器人的運(yùn)行控制部件。

32、包括開(kāi)關(guān)按鈕、電源指示燈、充電指示燈、充電口、下載口、復(fù)位/ASOS按鈕、運(yùn)行鍵、通信指示燈n傳感器部分:包括五種基本的傳感器(P10)n執(zhí)行部分:揚(yáng)聲器、LCD、主動(dòng)輪及其驅(qū)動(dòng)機(jī)構(gòu)、從動(dòng)輪、直流電機(jī)前后后前4只碰撞傳感器2只紅外傳感器2只光敏傳感器2只光電編碼器1只麥克風(fēng)外部存儲(chǔ)器單片機(jī)穩(wěn)壓與低電壓復(fù)位系統(tǒng)2只直流電機(jī)LCD喇叭1只直流電機(jī)或伺服電機(jī)電機(jī)驅(qū)動(dòng)喇叭驅(qū)動(dòng)直流驅(qū)動(dòng)BUS各種外部擴(kuò)展卡ASBUS總線串口通訊PC微控制器n擁有8個(gè)模擬口,5個(gè)輸入捕捉,3個(gè)輸出, 16位地址,8位數(shù)據(jù)總線,串口,以及4個(gè)通用I/O。n68HC11具有自下載功能,既可用于開(kāi)發(fā)高層應(yīng)用軟件,又便于開(kāi)發(fā)底層驅(qū)

33、動(dòng),還能交互調(diào)試n微控制器68HC11由CPU、片內(nèi)存儲(chǔ)器、定時(shí)器系統(tǒng)、串行口、A/D、并行I/O口、中斷和復(fù)位系統(tǒng)組成。(原理結(jié)構(gòu)圖參見(jiàn)P34)PORT A:PA0-PA2輸入捕捉通道(input capture IC) PA3-PA6輸出比較通道(output compare OC) PA7通用的I/O口能力風(fēng)暴機(jī)器人中:光電編碼器利用PA0,PA7口捕 捉計(jì)碼盤(pán)信號(hào); 直流電機(jī)驅(qū)動(dòng)采用PA5,PA6發(fā)出 PWM信號(hào); 喇叭由PA3控制。PORT B:端口功能受68HC11E的工作模式的影響,單獨(dú)工作模式下,提供普通的8條輸出信號(hào)通道,擴(kuò)展工作模式下,提供8位地址通道。能力風(fēng)暴機(jī)器人中:P

34、ORT B與PORT C提供16條地址線, PORT B做為地址的高8位。PORT C:?jiǎn)为?dú)工作模式下,提供普通的8條輸入/輸出信號(hào)通道,擴(kuò)展工作模式下,提供8位地址/數(shù)據(jù)復(fù)合通道。能力風(fēng)暴機(jī)器人中:PORT B與PORT C提供16條地址線,8條數(shù)據(jù)線(PORT C做為地址的低8位,地址/數(shù)據(jù)時(shí)分多用) PORT D:PD0-PD1作為串行通信口(SCI),PD2-PD5 串行外設(shè)接口(SPI); 能力風(fēng)暴機(jī)器人中:用PD0,PD1 與PC機(jī)進(jìn)行通信; PD0(RXD)接收數(shù)據(jù); PD1(TXD)發(fā)送數(shù)據(jù)。紅外傳感器:利用PD2,PD3設(shè)置發(fā)光二極管的狀態(tài);直流電機(jī):利用PD4,PD5給驅(qū)動(dòng)

35、電機(jī)芯片提供輸入脈沖。 PORT E:A/D口 能力風(fēng)暴機(jī)器人中:光敏傳感器利用PE0,PE1口采集光敏電阻上的電壓值; 麥克風(fēng)利用PE2口采集電壓值; 碰撞傳感器利用PE3口采集電壓值; 紅外傳感器利用PE4口采集紅外探測(cè)器的當(dāng)前值; 外部存儲(chǔ)器外部存儲(chǔ)器n機(jī)器人擴(kuò)展了32KB的低功耗靜態(tài)RAM,其優(yōu)點(diǎn)是既有靜態(tài)RAM的速度和方便(70 ns),又有E2PROM或Flash ROM的掉電不丟失性,從而能令程序和數(shù)據(jù)合用一個(gè)芯片。AS62256寫(xiě)入的數(shù)據(jù)可保存10年以上,同時(shí)具有可靠的上電、掉電、強(qiáng)靜電等數(shù)據(jù)保護(hù)功能。(1)存儲(chǔ)體(2)地址譯碼器(3)數(shù)據(jù)緩沖器(4)控制邏輯電路62256引腳

36、圖選址和并行口擴(kuò)展n32KRAM用了A0-A14共15根地址線,構(gòu)成32K的地址空間,A15為高電平時(shí),和E、RESET等信號(hào)復(fù)合片選32KRAM;n32KRAM的地址空間為0X8000-0XFFFF。另一根地址線A15和其余地址線及讀/寫(xiě) 線復(fù)合擴(kuò)展4個(gè)輸入控制線,4個(gè)輸出控制線。nOX4000-0X4FFF:OS0(寫(xiě)操作) 、ISO(讀操作)n0X5000-0X5FFF:OS1(寫(xiě)操作) 、IS1(讀操作)n0X6000-0X6FFF:0S2(寫(xiě)操作) 、IS2(讀操作)n0X7000-0X7FFF:OS3(寫(xiě)操作) 、IS3(讀操作)復(fù)位系統(tǒng)和電源復(fù)位系統(tǒng)和電源n計(jì)算機(jī)有多種復(fù)位方式:

37、上電自動(dòng)復(fù)位、外部RE-SET復(fù)位、看門(mén)狗復(fù)位(軟件工作不正常時(shí))、時(shí)鐘監(jiān)視復(fù)位。機(jī)器人采用前兩種復(fù)位方式。n電源:機(jī)器人底盤(pán)下安裝有電池。滿電壓8.4V,額定工作電壓7.2V,最低工作電壓5V。采用的是鋰電池,沒(méi)有記憶和充爆問(wèn)題。機(jī)器人的傳動(dòng)機(jī)構(gòu)n齒輪傳動(dòng)機(jī)構(gòu):將齒輪作為主要傳動(dòng)件的傳動(dòng)機(jī)構(gòu)。工作時(shí),首先有一只主動(dòng)輪先動(dòng)起來(lái),轉(zhuǎn)動(dòng)過(guò)程中與另一個(gè)從動(dòng)輪的齒一個(gè)一個(gè)的咬和下去,這個(gè)與它咬和的齒輪也會(huì)跟著旋轉(zhuǎn),這樣運(yùn)動(dòng)主動(dòng)輪傳遞到從動(dòng)輪。n傳動(dòng)類型示意圖參見(jiàn)P13齒輪箱n齒輪箱里的傳動(dòng)系統(tǒng)采用多級(jí)傳動(dòng)。如果采用一級(jí)傳動(dòng),為了改變速度,就必須一個(gè)齒輪很小,一個(gè)齒輪很大,這樣不僅會(huì)造成空間上的浪費(fèi),并

38、且對(duì)小齒輪性能指標(biāo)的要求也很高,所以,為了達(dá)到一定的傳動(dòng)比,節(jié)省空間,采用多級(jí)傳動(dòng),一級(jí)一級(jí)的改變速度,直到將輸出軸的速度調(diào)整到所需要的指標(biāo)。齒輪箱結(jié)構(gòu)圖P14機(jī)器人的動(dòng)力n電動(dòng)機(jī):電動(dòng)機(jī)是以電為原動(dòng)力產(chǎn)生機(jī)械旋轉(zhuǎn)動(dòng)力的裝置。機(jī)器人的動(dòng)力來(lái)源于位于機(jī)器人底盤(pán)內(nèi)的電池,電池提供電能,電動(dòng)機(jī)則將電能轉(zhuǎn)化為動(dòng)能。n直流電機(jī):電動(dòng)機(jī)依靠直流電源工作,稱為直流電機(jī)。直流電機(jī)將軸的旋轉(zhuǎn)運(yùn)動(dòng)輸入到齒輪箱,然后齒輪箱的輸出軸控制輪子轉(zhuǎn)動(dòng),從而驅(qū)動(dòng)機(jī)器人運(yùn)動(dòng)。機(jī)器人的驅(qū)動(dòng)方式n差動(dòng)驅(qū)動(dòng)方式:是指將兩個(gè)有差異的或獨(dú)立的運(yùn)動(dòng)合成為一個(gè)運(yùn)動(dòng)。當(dāng)我們把兩個(gè)電機(jī)的運(yùn)動(dòng)合成為一個(gè)運(yùn)動(dòng)時(shí),這就成了差動(dòng)運(yùn)動(dòng)。(參見(jiàn)P16-17

39、) n問(wèn)題:為什么要采用差動(dòng)驅(qū)動(dòng)方式?如何進(jìn)行差動(dòng)驅(qū)動(dòng)方式?執(zhí)行器n直流電機(jī)n液晶顯示器n喇叭n可擴(kuò)展其它執(zhí)行器。例如再擴(kuò)展一個(gè)直流電機(jī),驅(qū)動(dòng)滅火風(fēng)扇裝置;安裝伺服電機(jī)來(lái)驅(qū)動(dòng)機(jī)械手,讓機(jī)器人取東西等等。基本的執(zhí)行器(一)直流電機(jī):由直流電機(jī)驅(qū)動(dòng)芯片SN754410來(lái)驅(qū)動(dòng),這里采用改變電機(jī)電壓的方式來(lái)改變電機(jī)的轉(zhuǎn)速。(直流電機(jī)的TN圖P15)脈寬調(diào)制 :直流電機(jī)驅(qū)動(dòng)芯片提供給電機(jī)的信號(hào)是方波,不同的方波它的平均電壓不同。這樣采用不同的脈寬調(diào)節(jié)平均電壓的高低,進(jìn)而調(diào)節(jié)電機(jī)的轉(zhuǎn)速。n調(diào)節(jié)好的電機(jī)的轉(zhuǎn)速,經(jīng)過(guò)減速器傳給主動(dòng)輪,將高速轉(zhuǎn)化為低速,以滿足所需的運(yùn)行速度。 機(jī)器人速度的調(diào)節(jié)n直流電機(jī)上電壓的

40、大小影響主動(dòng)輪的轉(zhuǎn)速和轉(zhuǎn)矩(見(jiàn)P40圖3.34)n脈寬調(diào)制PWM:PA5、PA6分別給SN754410發(fā)脈寬調(diào)制信號(hào),通過(guò)改變脈沖寬度來(lái)調(diào)節(jié)輸入到電機(jī)的平均電壓。(參見(jiàn)P41圖3.35)基本的執(zhí)行器(一) drive()同時(shí)設(shè)定兩個(gè)電機(jī)的速度 ,控制能力風(fēng)暴的平移和旋轉(zhuǎn)。trans_vel為平移速度,rot_vel為旋轉(zhuǎn)速度,其中,左輪速度設(shè)為trans_vel+rot_vel,右輪速度設(shè)為trans_vel-rot_vel,也就是說(shuō),rot_vel 0,機(jī)器人順時(shí)針旋轉(zhuǎn),rot_vel 0,機(jī)器人逆時(shí)針旋轉(zhuǎn)。nvoid drive(int trans_vel, int rot_vel)n m

41、otor(1,trans_vel + rot_vel);n motor(2,trans_vel - rot_vel);n基本的執(zhí)行器(二)喇叭:喇叭是能力風(fēng)暴的嘴,可發(fā)出多種聲音,對(duì)應(yīng)的庫(kù)函數(shù)為 beep() 和 tone() 等。(參見(jiàn)P93)nvoid beep()nn tone(1000., .3);nLCD:用于顯示能力風(fēng)暴的實(shí)時(shí)運(yùn)行信息,在狀態(tài)檢測(cè)和故障診斷時(shí)特別有用 例題:perform/dance.jc nvoid tone(float frequency, float length)nn if(frequency 3) | (val1 & val3) 4); n msl

42、eep(2L); /* 等待 2毫秒 */n if(result=3) result=4;n return result;n二進(jìn)制表示二進(jìn)制表示n返回值: 0b00:沒(méi)有障礙 0b01:左方有障礙 0b10:右方有障礙 0b100:前方有障礙。即當(dāng)左右兩方向都有障礙時(shí)就認(rèn)為前方有障礙。紅外傳感器對(duì)應(yīng)的庫(kù)函數(shù)是ir_detector()。 自編簡(jiǎn)短程序:n請(qǐng)用紅外傳感器檢測(cè)障礙,并用液晶顯示器顯示,無(wú)障礙,顯示0,左邊有障礙顯示1,右邊有障礙顯示2,前方有障礙顯示4nvoid main()nint ir;nwhile(1)nir=ir_detector();n printf(“ir=%dn”,i

43、r);n wait(0.5);n專題項(xiàng)目專題項(xiàng)目 n紅外避障。機(jī)器人前進(jìn),發(fā)現(xiàn)障礙物就轉(zhuǎn)向。(相關(guān)模塊:紅外測(cè)障、條件判斷、永遠(yuǎn)循環(huán)、直行、轉(zhuǎn)向)拓展項(xiàng)目:跟人走。n自己制作硬件,并進(jìn)行軟件編程。n撰寫(xiě)論文。內(nèi)容包括:相關(guān)的研究資料;硬件設(shè)計(jì)、制作詳細(xì)說(shuō)明,并畫(huà)出硬件電路圖;詳細(xì)的軟件驅(qū)動(dòng)程序,附加必要的軟件說(shuō)明;測(cè)試運(yùn)行效果圖,或者運(yùn)行的錄象;工作總結(jié)與展望。參考的硬件電路及程序參考程序(main.h)n#includereg52.hn#includen#define uchar unsigned charn#define uint unsigned intn#define left_inf

44、rare 0n#define right_infrare 1nuchar flage =0 x00;nuchar display_flage=0 x00;n#define state1 0X5F /前進(jìn)n#define state2 0X4F /右轉(zhuǎn)n#define state3 0X1F /左轉(zhuǎn)n#define state4 0X0F /后退n#define state5 0XfF /停車n#define light_off 0 x0f /關(guān)轉(zhuǎn)向燈n#define left_light 0X1F /左轉(zhuǎn)向燈n#define right_light 0X2F /右轉(zhuǎn)向燈n#define bac

45、k_light 0XcF /剎車燈n#define front_light 0 x3f /前燈n#define light_on 0 xff /開(kāi)所有燈n#define true 1 n#define false 0nuchar code Product = Create-RBcar ; nuchar code webcom = www.create.cc; nuchar code talk1=Mastor: please;/14 charactersnuchar code talk2=touch my head; /12 charactersnuchar code talk3=thank y

46、ou!; /10 charactersnuchar code talk4=Im running; /11 charactersnextern void LCMInit(void);nextern void WriteCommandLCM(unsigned char WCLCM,BuysC); /BuysC為0時(shí)忽略忙檢測(cè)nextern void DisplayListChar(uchar X, uchar Y,uchar ListLength, uchar *DData,uchar n);n/*nsbit ledcs=P12; /74H573的片選信號(hào)nsbit left_led=P02; /

47、左紅外發(fā)射管nsbit right_led=P03; /右紅外發(fā)射管n*/ main.c文件n/*n程序名稱:小車避障程序n程序說(shuō)明:硬件原理,小車左右兩個(gè)紅外二極管發(fā)射38KHz載波的信號(hào)(P02,P03),n 一個(gè)一體化的紅外接收頭接收載波信號(hào)(p32)。n*/n n/*n 紅外線接收子程序 n*/n#include main.hnvoid infrared_ray()interrupt 0using 3nn flage=0 x01;n display_flage=1;n IE &= 0Xfe; /EX0 =0; nn/ 延時(shí)子程序nvoid delay(uint n)nnwhil

48、e(-n);nnvoid Init0(void)nn IE |=0X80; /EA=1;n TCON |=0 x01; /IT0=1;nnvoid seng_wave(uchar timer,bit n)/timer -通過(guò)載波發(fā)射信號(hào)的時(shí)間,n-左右發(fā)射管的選擇nn uchar i;n P1 |= 0X04; /ledcs=1; n IE |= 0X01; /EX0 =1;n P0 |=0 x04;nfor(i=timer;i0;i-)n n if(n) P0 =0 x08; / 右發(fā)射管通過(guò)載波發(fā)射信號(hào)n else P0 =0 x04; / 左發(fā)射管通過(guò)載波發(fā)射信號(hào)n delay(1000

49、0);n n P1 &= 0Xfb; /ledcs=0;n IE &= 0Xfe; /EX0 =0; n nvoid light_control(uchar op)/轉(zhuǎn)向燈控制子程序nn P1 |=0X04; /ledcs=1; n P0 =op;n P1 &=0XFB; /ledcs=0;nnvoid control(uchar n,uchar state,uchar light)nn uchar i;n light_control(light);/轉(zhuǎn)向指示燈n P2 =state; /行使方向改變n for(i=n;i0;i-)n delay(5000);n P2=

50、state5;n delay(2000);n light_control(light_off);/關(guān)閉n P2=state1;nnvoid move_car(void)nn uchar temp =0 x00;n /*檢測(cè)程序段*/ n seng_wave(2,left_infrare); /左邊紅外管發(fā)射n if(flage=0 x01)temp |=0 x01;flage=0 x00;nseng_wave(2,right_infrare); /右邊紅外管發(fā)射n if(flage=0 x01)temp |=0 x02;flage=0 x00;n /*控制程序段*/n /左邊有障礙物,右轉(zhuǎn)n

51、if(temp=0 x01) control(5,state2, right_light);n /右邊有障礙物,左轉(zhuǎn)n else if(temp=0 x02) control(5,state3,left_light ); n /兩個(gè)方向都有障礙物,后退,右轉(zhuǎn)n else if(temp=0 x03) control(10,state4,back_light );control(5,state2,right_light );n temp =0 x00;nnvoid main(void)nn uchar dis_flage=0 x00;n Init0();n P1 |= 0X04; /ledcs=

52、1; n P0 = 0 xFf;n P1 &=0XFB; /ledcs=0;n LCMInit(); /LCM初始化 n n DisplayListChar(0,0,14,Product,true);n DisplayListChar(0,1,15,webcom,false);n delay(50000);n WriteCommandLCM(0 x01,1); /顯示清屏n delay(100);n DisplayListChar(0,0,14,talk1,false);n DisplayListChar(0,1,13,talk2,false);nwhile(1)n n move_ca

53、r();n if(display_flage=0 x01 )&(dis_flage =0 x00)n n P1 |= 0X04; /ledcs=1; n P0 = 0 x0f;n P1&=0XFB;n dis_flage=0 x01;n WriteCommandLCM(0 x01,1); /顯示清屏n delay(100);n DisplayListChar(0,0,10,talk3,false);n DisplayListChar(0,1,11,talk4,false);n n delay(20000);n n能力風(fēng)暴機(jī)器人 聲音傳感器聲音傳感器 問(wèn)題n麥克風(fēng)如何采集聲音信息

54、,并如何將采集到的信息傳遞給微控制器的?麥克風(fēng)n它是能夠識(shí)別聲音聲強(qiáng)大小的聲音傳感器。n麥克風(fēng)采集到的信號(hào)通過(guò)放大,輸出信號(hào)至PE2口。沒(méi)有聲音時(shí),電壓為2.5V左右,轉(zhuǎn)換為8位二進(jìn)制數(shù)后得到的十進(jìn)制整數(shù)為127左右。當(dāng)有聲音時(shí),輸出電壓在2.5V上下波動(dòng),PE2測(cè)得的電壓和2.5V相減的絕對(duì)值越大,則聲音越大。n麥克風(fēng)對(duì)應(yīng)的庫(kù)函數(shù)是 microphone()。n在JC窗口中輸入如下程序塊:while(1) printf(“mic=%dn”, analogport(2); wait(0.1); 當(dāng)周圍環(huán)境很安靜時(shí),LCD上顯示mic=127,對(duì)著麥克風(fēng)發(fā)出聲音,可以看到顯示的值不斷變化,其變化

55、范圍為0255。n如MIC=100=(127-27)與MIC=154=(127+27)表示兩次采集的瞬時(shí)聲強(qiáng)是相同的,只是波動(dòng)的方向不同。nMicrophone()對(duì)數(shù)據(jù)進(jìn)行了處理,使返回值在 0255 之間。n/*讀麥克風(fēng),返回值0255,聲音越響數(shù)值越大*/nint microphone()nn return abs(analogport(2)-127)*2;n工作原理分析n通常聲音傳感器內(nèi)置一個(gè)對(duì)聲音敏感的電容式駐極體話筒。聲波使話筒內(nèi)的駐極體薄膜振動(dòng),導(dǎo)致電容的變化,而產(chǎn)生與之對(duì)應(yīng)變化的微小電壓。這一電壓隨后被轉(zhuǎn)化成05V的電壓,經(jīng)過(guò)A/D轉(zhuǎn)換被數(shù)據(jù)采集器接受,并傳送給單片機(jī)。 n能力

56、風(fēng)暴機(jī)器人麥克風(fēng)采集到的信號(hào)通過(guò)LM386(IC5)進(jìn)行放大,放大倍數(shù)為200(由C25確定)。n音訊放大器LM386是專為低損耗電源所設(shè)計(jì)的功率放大器。它的內(nèi)建增益為20,透過(guò)pin1和pin8腳位間的電容的搭配,增益最高可達(dá)200。 LM386特別適用于電池供電的場(chǎng)合。nLM386輸出信號(hào)接至PE2。沒(méi)有聲音時(shí),電壓為25V左右,轉(zhuǎn)換為8位二進(jìn)制數(shù)后得到的十進(jìn)制整數(shù)為127左右 n具體硬件電路圖如下:自編簡(jiǎn)短程序:n請(qǐng)用麥克風(fēng)檢測(cè)聲音,讓機(jī)器人第一次聽(tīng)到聲音時(shí),全速前進(jìn);第二次聽(tīng)到聲音時(shí),停下來(lái);如此循環(huán)。(有效聲音標(biāo)志microphone()返回值大于180) nVoid main()n

57、n int I=0;n int mic;n while(1)n n mic=microphone();n if (mic180) I+=1;n if (I=1) drive(100,0);n else n stop(); I=0;n 自編簡(jiǎn)短程序:n把幾個(gè)機(jī)器人放在一起,編寫(xiě)程序并下載運(yùn)行,試一試機(jī)器人你叫我應(yīng)的場(chǎng)面是不是很有趣。n一部分機(jī)器人先發(fā)音,一部分機(jī)器人先偵聽(tīng)。發(fā)音的機(jī)器人發(fā)音完畢后轉(zhuǎn)入偵聽(tīng),聽(tīng)到聲音的機(jī)器人回應(yīng)(發(fā)音)。n/*初始化b=1時(shí),設(shè)置該機(jī)器人先偵聽(tīng);初始化b= -1時(shí),設(shè)置該機(jī)器人先發(fā)出聲音。*/nvoid main()nint b=1;nint mic;nwhile(

58、1)nmic=microphone();nprintf(mic=%dn,mic);nwait (0.5);nif(b=1&mic140)nb=b*(-1);nbeep ( );nwait (2.0);nif(b=-1)nnbeep();nwait (1.0);nb=b*(-1);n 聲音檢測(cè)n用機(jī)器人檢測(cè)自己的聲音,并顯示數(shù)值(相關(guān)模塊:聲音檢測(cè)、顯示、延時(shí)等待、永遠(yuǎn)循環(huán))。n拓展項(xiàng)目 1:百米賽跑。 n拓展項(xiàng)目 2:寵物。 討 論 課n通過(guò)前段時(shí)間的課程的學(xué)習(xí),大家有什么收獲?n大家對(duì)這門(mén)課的感受如何?n對(duì)這門(mén)課的學(xué)習(xí),有什么想法?n有些什么實(shí)驗(yàn)心得?有些什么體會(huì)?n通過(guò)軟件編程,來(lái)

59、對(duì)實(shí)物進(jìn)行控制,與以前學(xué)過(guò)的純理論上的編程,有些什么不一樣的地方?n如何理解“實(shí)踐是檢驗(yàn)真理的唯一標(biāo)準(zhǔn)”這句話?n設(shè)計(jì)制作機(jī)器人的想法呢? 光敏傳感器光敏傳感器 n1、樓梯聲控?zé)鬾2、自動(dòng)調(diào)光臺(tái)燈n3、自動(dòng)控制路燈n4、樓道應(yīng)急燈n光敏傳感器(光敏電阻)其實(shí)是一個(gè)可調(diào)電阻器,只是它的阻值因照射在它上面的光線強(qiáng)弱的變化而變化。n功能:檢測(cè)周圍環(huán)境光線的強(qiáng)弱。n在光傳感器中,感應(yīng)光強(qiáng)度不同,光敏電阻值就會(huì)有變化。它只對(duì)可見(jiàn)光有效,光敏電阻值近似與光強(qiáng)度成反比。光線越強(qiáng),返回值越小。使用時(shí)應(yīng)取其多次平均值,因?yàn)榉祷刂稻哂须S機(jī)性。n平常用的最多的有受光照后阻值急劇下降的CDS(硫化鎘)光敏電阻、受光照

60、射后能夠產(chǎn)生光電流的光敏二極管、以及用光電流替代基極電流制成的光敏三極管。n還可以采用光敏三極管作為光敏傳感器的感光電路。如果光敏傳感器受到光照,電路的輸出電壓就會(huì)降低。 光敏電阻在強(qiáng)光下阻值只有幾十;在很暗的環(huán)境下阻值可達(dá)幾百K。有的光敏電阻的特性剛好相反,它的阻值隨光線的加強(qiáng)而增大 。能力風(fēng)暴機(jī)器人上的光敏電阻屬于前者。 兩個(gè)光敏電阻分別與模擬輸入口PE0,PE1相連,系統(tǒng)中采集的是光敏電阻上的電壓值。光暗時(shí),電阻上的電壓接近5V;光強(qiáng)時(shí),接近0V。光敏電阻的阻值變化是連續(xù)的,因此PE0,PE1的電壓變化也是連續(xù)的,電壓信號(hào)經(jīng)過(guò)模數(shù)轉(zhuǎn)換變成8位二進(jìn)制數(shù),即十進(jìn)制0-255。0表示光線最強(qiáng);255表示光線最弱。n在JC中,光敏傳感器的庫(kù)函數(shù)是:n 左光敏:photo (1); 右光敏: photo (2)n 在程

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論