第一篇:智能小車實習報告
智能循跡避障小車
設計報告
學院名稱:
機械工程學院
專業班級:
光信息120
2學生姓名:石云杰、李志崗、李召旭 學生學號: 3120303055、54、46
摘要
根據小車各部分功能,模塊化硬件電路,并調試電路。將調試成功的各個模塊逐個地“融合”成整體,再進行軟件編程調試,直到完成小車,使小車智能地循跡、避障。利用紅外線傳感器檢測黑線與障礙物,當左邊傳感器檢測到黑線時,小車往左邊偏轉,右邊的傳感器檢測到黑線時,小車往右邊偏轉。當前邊用于避障的傳感器檢測到障礙物時,小車往左偏轉避開障礙物后,回到原軌道。以STC12C5A60S2單片機為控制芯片控制電動小車的速度及轉向,從而實現自動循跡避障的功能。其中小車驅動由L298N驅動電路完成,速度由單片機控制。
關鍵詞:AT89S52單片機;
;紅外對管;智能小車
L298N
一、背景
隨著汽車工業的迅速發展,關于汽車的研究也就越來越受人關注。全國電子大賽和省內電子大賽幾乎每次都有智能小車這方面的題目,全國各高校也都很重視該題目的研究。
自第一臺工業機器人誕生以來,機器人的發展已經遍及機械、電子、冶金、交通、宇航、國防等領域。近年來機器人的智能水平不斷提高,并且迅速地改變著人們的生活方式。人們在不斷探討、改造、認識自然的過程中,制造能替代人勞動的機器一直是人類的夢想。
隨著科學技術的發展,機器人的感覺傳感器種類越來越多,其中視覺傳感器成為自動行走和駕駛的重要部件。視覺的典型應用領域為自主式智能導航系統,對于視覺的各種技術而言圖像處理技術已相當發達,而基于圖像的理解技術還很落后,機器視覺需要通過大量的運算也只能識別一些結構化環境簡單的目標。視覺傳感器的核心器件是攝像管或CCD,目前的CCD已能做到自動聚焦。但CCD傳感器的價格、體積和使用方式上并不占優勢,因此在不要求清晰圖像只需要粗略感覺的系統中考慮使用接近覺傳感器是一種實用有效的方法。
機器人要實現自動導引功能和避障功能就必須要感知導引線和障礙物,感知導引線相當給機器人一個視覺功能。避障控制系統是基于自動導引小車(AVG—auto-guide vehicle)系統,基于它的智能小車實現自動識別路線,判斷并自動避開障礙,選擇正確的行進路線。使用傳感器感知路線和障礙并作出判斷和相應的執行動作。
該智能小車可以作為機器人的典型代表。它可以分為三大組成部分:傳感器檢測部分、執行部分、CPU。機器人要實現自動避障功能,還可以擴展循跡等功能,感知導引線和障礙物。可以實現小車自動識別路線,選擇正確的行進路線,并檢測到障礙物自動躲避。基于上述要求,傳感檢測部分考慮到小車一般不需要感知清晰的圖像,只要求粗略感知即可,所以可以舍棄昂貴的CCD傳感器而考慮使用價廉物美的紅外反射式傳感器來充當。智能小車的執行部分,是由直流電機來充當的,主要控制小車的行進方向和速度。單片機驅動直流電機一般有兩種方案:第一,勿需占用單片機資源,直接選擇有PWM功能的單片機,這樣可以實現精確調速;第二,可以由軟件模擬PWM輸出調制,需要占用單片機資源,難以精確調速,但單片機型號的選擇余地較大。考慮到實際情況,本文選擇第二種方案。CPU使用STC12C5A60S2單片機,配合軟件編程實現。
二、小車硬件模塊
2.1 STC12C5A60S2單片機
STC12C5A60S2/AD/PWM系列單片機是宏晶科技生產的單時鐘/機器周期(1T)的單片機,是高速/低功耗/超強抗干擾的新一代8051單片機,指令代碼完全兼容傳統8051,但速度快8-12倍。內部集成MAX810專用復位電路,2路PWM,8路高速10位A/D轉換(250K/S),針對電機控制,強干擾場合。
STC12C5A60S2單片機的特點如下: 1.增強型8051 CPU,1T,單時鐘/機器周期,指令代碼完全兼容傳統8051; 2.工作電壓:STC12C5A60S2系列工作電壓:5.5V-3.3V(5V單片機)STC12LE5A60S2系列工作電壓:3.6V-2.2V(3V單片機); 3.用戶應用程序空間8K /16K / 20K / 32K / 40K / 48K / 52K / 60K / 62K字節;
4.片上集成1280字節RAM; 5.通用I/O口(36/40/44個),復位后為:準雙向口/弱上拉(普通8051傳統I/O口),可設置成四種模式:準雙向口/弱上拉,推挽/強上拉,僅為輸入/高阻,開漏,每個I/O口驅動能力均可達到20mA,但整個芯片最大不要超過55Ma;
6.ISP(在系統可編程)/IAP(在應用可編程),無需專用編程器,無需專用仿真器可通過串口(P3.0/P3.1)直接下載用戶程序,數秒即可完成一片;
2.2模擬舵機
按照舵機的轉動角度分有180度舵機和360度舵機。
180度舵機只能在0度到180度之間運動,超過這個范圍,舵機就會出現超量程的故障,輕則齒輪打壞,重則燒壞舵機電路或者舵機里面的電機。360度舵機轉動的方式和普通的電機類似,可以連續的轉動,不過我們可以控制它轉動的方向和速度。
一般來說,我們用的舵機有以下幾個部分組成:直流電動機、減速器(減速齒輪組)、位置反饋電位計、控制電路板(比較器)。舵機的輸入線共有三根,紅色在中間,為電源正極線,黑色線是電源負極(地線)線,黃色或者白色線為信號線。其中電源線為舵機提供6V到7V左右電壓的電源。
在舵機上電后,舵機的控制電路會記錄由位置反饋電位計反饋的當前位置,當信號線接收到PWM信號時會比較當前位置和此PWM信號控制所要轉到得位置,如果相同舵機不轉,如果不同,控制芯片會比較出兩者的差值,這個差值決定轉動的方向和角度。
2.3循跡模塊
輪式智能小車采用3個紅外線傳感器
紅外對管實物圖
紅外巡線模塊
紅外尋跡模塊是利用紅外線反射的原理,根據反射的強度來判定顏色。本尋跡模塊是用來識別黑白線,黑線輸出高電平,白線輸出低電平。由于使用的是紅外線,所以抗干擾能力很強。這樣做更加確保了機器人的穩定性。
三、軟件模塊
3.1 軟件調試平臺
STC單片機是基于51控制核的高速單片機。對于程序的編譯和鏈接,我們可以使用KEIL C 幫助完成。
在對芯片進行編程時,我們使用STC公司提供的燒錄軟件STC_ISP_V3.5 3.1.1 Keil C 我們使用的單片機是STC12C5A60S2,是51的內核。指令周期都優大幅度的縮減,運行速度自然提高。由于我們使用的是51內核,所以我們可以使用支持C51的開發軟件幫助編輯程序和編譯鏈接程序。KEIL C就是這樣一款軟件。
Keil C51是美國Keil Software公司出品的51系列兼容單片機C語言軟件開發系統,與匯編相比,C語言在功能上、結構性、可讀性、可維護性上有明顯的優勢,因而易學易用。Keil提供了包括C編譯器、宏匯編、連接器、庫管理和一個功能強大的仿真調試器等在內的完整開發方案,通過一個集成開發環境(μVision)將這些部分組合在一起。運行Keil軟件需要WIN98、NT、WIN2000、WINXP等操作系統。如果你使用C語言編程,那么Keil幾乎就是你的不二之選,即使不使用C語言而僅用匯編語言編程,其方便易用的集成環境、強大的軟件仿真調試工具也會令你事半功倍。
KEIL C的軟件界面如下:
在項目中我們可以建立自己的工程,根據工程添加編輯程序文件。最終使用“完全編譯”功能完成編譯。在燒錄單片機之前還應該生成對應的“.HEX”INTEL 二進制文件。有了這個文件,我們才能使用STC提供的軟件進行燒寫單片機的操作。
3.1.2 STC_ISP_V3.5 STC _ISP_V3.5是由STC開發的程序燒寫測試綜合軟件。它可以通過普通的串口(COM)燒寫單片機的程序。軟件運行穩定。操作相對方便。軟件的操作界面如下:
下面給出操作的具體步驟: 1.選擇芯片類型;
2.選擇要燒寫的HEX文件;
3.設置串行端口和波特率,這里要注意端口號,波特率的選擇比較任意一般為38400;
4.選擇外部晶振;與下載無關;清FLASH區;
5.點擊下載按鈕后,打開單片機供電電源。在上電后單片機會自動進入編程狀態。通過提示可以判斷是否下載完成。
四、機械模塊
智能小車可以分為三部分——傳感器部分、控制器部分、執行器部分。控制器部分:接收傳感器部分傳遞過來的信號,并根據事前寫入的決策系統(軟件程序),來決定機器人對外部信號的反應,將控制信號發給執行器部分。好比人的大腦。
執行器部分:驅動機器人做出各種行為,包括發出各種信號(點亮發光二極管、發出聲音)的部分,并且可以根據控制器部分的信號調整自己的狀態。對機器人小車來說,最基本的就是輪子。這部分就好比人的四肢一樣。傳感器部分:機器人用來讀取各種外部信號的傳感器,以及控制機器人行動的各種開關。好比人的眼睛、耳朵等感覺器官。
驅動部分:智能小車的直流電機功率較小,而小車上裝有電池、電機、電子器件等,使得電機負擔較重。為使小車能夠順利啟動,且運動平穩,在直流電機和輪車軸之間加裝了三級減速齒輪。
電池的安裝:將電池盒盡量安置在車體的電機前或后位置,降低車體重心,提高穩定性,同時可增加驅動輪的抓地力,減小輪子空轉所引起的誤差。
五、小車特色
此智能小車是基本單片機為核心,設計小車的開發平臺,作品的設計將前沿的電子器件、市場應用熱點與基礎理論有效地結合起來,既能檢驗理論學習效果、又能在動手實踐中檢驗學生對元件的利用程度,設計的創新性、技術復雜度及實用性,激發學生的創新靈感。基于此平臺可以設計出各種各樣的生活實用裝置,如盲人導行車。
硬件方面:采用雙步進控制電動車,利于車轉向,利用光電傳感器與單片機之間的信號傳輸與轉換,實現電動車的智能化。
軟件方面:傳感器在檢測到某物時,輸出信號會發生變化,讓單片機只對此規律的信號作出反應,減少了數據處理量,縮短了系統反應時間,并簡化了程序,提高了系統的控制精度。整個運行過程中通過實時信息采集,利用端口查詢,實現對信號的實時檢測和處理。
小組成員感想
光信1202李召旭3120303046 經過兩周的實際操作和實習,我們小組完成了光電智能小車的組裝和程序調制,實現了光電智能小車的尋跡功能和避障功能,完成了光電智能小車沿給定的軌道行走的任務。
這次課程設計讓我學習并鞏固了光電傳感器的知識,光電傳感器主要利用光信號進行感應和進行信號處理。光電傳感器具有反應靈敏、準確度高和精確度高的特點,光電傳感器廣泛應用于當今的科技領域,在探測、感應和信號處理方面的應用越來越多。
在光電智能小車的組裝和程序調制過程中,我們雖然遇到了一些問題,但經過一次又一次的認真思考,一遍又一遍的修改嘗試終于找出了原因,最終完成了光電智能小車的功能。
通過這次實習,我明白了實踐的重要性。在實習過程中,必須將理論知識和實際情況結合起來。實踐才能出真知,通過我們自己親身實踐親自動手,我們應用掌握的光電傳感器知識,使知識不再是空洞的。在課程設計過程中,我們不斷的發現錯誤,不斷改正,發現問題,不斷探索,并不斷領悟,在解決問題和克服錯誤的過程中最終完成了設計任務。不僅這次實習是這樣,在今后的學習和實踐過程中,我們也不能遇到問題就想到要退縮,一定要不厭其煩的發現問題所在,然后 一一進行解決,只有這樣,才能做成想要做的事情,才能成功。解決問題的方式是多種多樣的,可以向有能力比自己精通的人請教,可以自己去查找資料,可以去網絡上搜索,而解決問題的過程正是一個學習和提升的過程,所以我們應該不錯過任何一個問題,也不應該懼怕問題,而應該迎難而上,盡力去解決問題,只有這樣,我們才能夠真的學習到知識并提升自身的各種能力。
課程設計是一門專業課,它不僅讓我學習到了許多專業知識,也讓我學到了許多書本外的知識。設計過程讓我對抽象的理論有了具體 的認識。通過這次課程設計,我掌握了光電傳感器的識別和功能;了 解了電路的連線方法;掌握了小車的控制方法和技術,通過查詢資料,我也掌握了程序的編寫和小車的調試。而調試及程序的修改過程是最艱難的,但是經過我們小組成員的合作和配合,最后終于使小車完成了任務。
在實習過程中,我們培養了自身的獨 立思考、動手操作的能力,在各種其它能力 上也都有了提高。最重要的是我們還學習到了許多學習的方法,這些方法在我們以后的學習生活中是重要的。
在實習的兩周時間里,雖說時間并不十分長,但是真的可以學到很多很多有用的東西,一方面我們鞏固了以前所學過的知識,另一方面我們培養并提升了自己的合作和動手能力。通過這次課程設計使我懂得實驗過程中團隊合作的重要性,我們在合作起來更加默契,在程序編寫和小車組裝中,我們分工合作,互相幫助,使實習過程變得簡單起來,在成功后一起體會喜悅的心情。這就是團結合作的力量,只 有互相之間默契融洽的配合才能換來最終的成功。
此次設計也讓我明白了思路即出路,有什么不懂不明白的地方要及時請教或上網查詢,只要認真鉆研,動腦思考,動手實踐,就沒 有弄不懂的知識,才能收獲到成功的喜悅。
總之,通過這次課程設計,我收獲了許多,這些收獲對我以后的生活和學習都將產生十分重要作用。
光信息1202 石云杰 3120303054 機器人從誕生之初簡單的機械運動,完成簡單的人類動作,到如今機器人的智能化。現代的機器人不再是當初人類的工友了,而是漸漸成為人類的朋友與伙伴。人們培育機器人的目標是將機器人“修煉”為人。我不知道,機器人技術員這樣做的目的是否有些滑稽。人類不夠用嗎?地球上60億的人類還不夠多嗎?再造一批人類,這又是怎樣的動機?
當然,技術員們雖然想將機器人盡早“修煉成人”,主要是指其中的智能化目標,擁有人類的大腦特性,這樣能自己判斷以實現幫助人類工作,但不需要人類的“費心”指導。人類希望有“人”幫助自己勞動,但卻更希望這種幫助是免費的,而且是一切免費的。不僅不需要付工錢,連說話也沒必要。對比來講,奴隸時代雖然過去,但是人們仍然有天生的惰性,在這個奴隸早被廢除的時代,人類再次在日益發展的機器人身上看到了希望。不少的報道稱機器人是“人類保姆”,但是它既不拿工資,僅僅耗費些電力(但是我想這也會在某天被天才的人類解決),想想這比奴隸還奴隸!
日本的機器人產業是先進的,不僅有強大的技術基礎,而且商業化的程度也很深。機器人已經分離出很多的種類。有針對工業勞動的,有針對家庭服務的,有支持廣播電視播音主持的。最近炒得比較火的,日本甚至造出服務宅男的機器人!機器人分出很多的種類,奴隸也分各種檔次。在大多數國家依法治國的年代,多數人還是不敢逾越法律的紅線,于是人類對著一堆“破鐵”動起腦筋。它就是一個機器而已,不屬于人權范圍!人類的奴隸時代早已經過去,機器人的奴隸時代正悄然來臨!總有一些“智慧”的人類,千方百計地為自己本屬可恥的行為找一個恰當而似乎正當的途徑或借口!
我們是否該為機器人的發展制定一些底線與原則?我們不能讓智能化的機器人的存在為觸犯法律紅線的行為出現與存在。法律的目的是遏制逾越道德與正義的行為,但這不僅僅是人與人之間,即使是在人與機器人之間,但它畢竟是發生了,但我們卻沒有對之同樣的處理與遏制,這難道不是某種程度上對法律的無視嗎?
假如若干年后的某天,家家戶戶、社會的任何角落都是機器人在忙碌,玩命的工作(24小時從不間斷)。多數人可以享受沒有假期的假日(假日中不插播工作),曬沙灘或享受旅行。按照如今的一些跡象,可以推算一下,未來應該是人手一位機器人,機器人女友與男友。到時的屌絲應該非常多(不管是難還是女),因為機器人的定制,容顏可以依照女神或男神的標準制造,而且可以永久不蒼老,終身享用!再者,不光具有男神或女神的外貌氣質,而且具有本屬于機器人的無償服務性,人們又有什么理由不接受呢?而且機器人如果加上商業利益化驅使,這樣的現象總會在某一天出現。人人努力購買一位機器人,總有一天會像現今人人努力購房買房一樣!但是一些現象仍會同時出現,機器人不工作,主人打幾下就好了。一些遺棄的機器人淪落街頭,總有一些閑散人員欺負。或是,別家的機器人與鄰居家的主人形成矛盾,于是鄰居家的主人叫來自家的機器人幫助吵架甚或動手。人類制造機器人的趨勢本就是使之愈加人類化,能保證機器人不會在那一天對這些行為判斷為“危險”動作?
弗蘭克的機器人都學會了說謊,《云圖》中的機器人某天都受到自我尋求解放的鼓勵,機器人的奴隸時代,總有一天奴隸也會選擇成為主人!
以上當然是某種假想,機器人的智能化是必定的趨勢。但是,我們或許更應該清楚,我們使機器人智能化的目的在于使機器人幫助人類完成人類無法做到的事情與任務,而不是作為實現某些人內心可恥行為的途徑!
光信息1202 李志崗 3120303055
附錄:智能循跡小車程序
/*********** ***************************************************
名稱:小車實驗 說明:
1、小車前后左右停止控制+循跡避障控制
2、請注意舵機接線與程序中的一致 注:此版本程序對應反向舵機
***************************************************************/ #include
#define uchar unsigned char /* 預定義*/ #define uint unsigned int #define l_stop 125 #define r_stop 125
uchar i;uchar l_speed;uchar r_speed;/*字符定義,uchar即
unsigned char,l_speed、r_speed左右電機速度*/ uint a,b;//a-left;b-right /*unit即 unsigned int*/
sbit LeftCon=P2^0;/*管腳定義,LeftCon左電機*/ sbit RightCon=P2^1;/*右電機*/ sbit L=P0^0;/*左傳感器及信號*/ sbit R=P0^1;/*右傳感器,對地面有反饋,而對地面的黑色沒有反應,即不反饋。*/ sbit M=P0^2;/*前端傳感器*/
void instate()//初始化 { i=0;a=1750;b=1750;TMOD=0x21;TH1=0xe6;//波特率1200 TL1=0xe6;//波特率1200 PCON=0x00;//SMOD=0 SCON=0x40;//串口工作方式1 REN=1;TH0=-((1500+l_stop*2)/256);TL0=-((1500+r_stop*2)%256);TR0=1;TR1=1;EA=1;ET0=1;ES=1;} void servo()interrupt 1 using 1 { switch(i){
case 0:
{
TH0=-(a/256);//a=l_stop*2+1500
TL0=-(a%256);
RightCon=1;
i++;
break;
}
case 1:
{
TH0=-((2500-a)/256);
TL0=-((2500-a)%256);
RightCon=0;
i++;
break;
}
case 2:
{
TH0=-(b/256);
TL0=-(b%256);
LeftCon=1;
i++;
break;
}
case 3:
{
TH0=-((17500-b)/256);
TL0=-((17500-b)%256);
LeftCon=0;
i=0;
break;
}
} } //_____________________________________________________________________________________________________________ //動作函數庫
void action(uchar num){ switch(num){
case 242://stop
{
a=l_stop*2+1500;
b=r_stop*2+1500;
}
break;
case 243: //forward
{
a=(l_stop+50)*2+1500;
b=(r_stop-50)*2+1500;
}
break;
case 244: //backward
{
a=(l_stop-50)*2+1500;
b=(r_stop+50)*2+1500;
}
break;
case 245: //turn left
{
a=(l_stop+50)*2+1500;
b=(r_stop+50)*2+1500;
}
break;
case 246://turn right
{
a=(l_stop-50)*2+1500;
b=(r_stop-50)*2+1500;
}
break;
default://stop
a=l_stop*2+1500;
b=r_stop*2+1500;
break;} }
//循跡// void xunji(){ if(L==0&&R ==0){ action(243);DelayMs(5000);} /*0及沒有障礙物反饋(在黑色帶的上方),左右都沒有障礙物時前進*/ else if(L==1&&R ==0){ action(246);DelayMs(5000);} /*右有障礙物,左沒障礙,右轉*/ else if(L==0&&R ==1)
{ action(245);DelayMs(5000);} /*左有障礙物,右沒障礙,左轉*/ else action(243);
}
//*************************************************************************************************************** void main(void){
SP=0x70;//堆棧指針初始化(這里的做法和匯編是一樣的)
//這里需要特別注意!在沒有調用任何函數前,就必須初始化堆棧指針。
//如果調用函數后做初始化工作,就會發生指針指向出錯的問題。instate();//初始化單片機(Initialization MCU)
while(1){
xunji();/*先循跡再避障*/
if(M==0)
action(243);
} }
第二篇:智能小車設計報告
機器人控制技術
實驗設計報告書
題
目:基于STC89C52的智能小車的設計 姓
名:李如發 學
號:073321032 專
業:電氣工程及其自動化 指導老師:李東京 設計時間:2010年 6 月
目
錄
1.引 言..............................................1 1.1.設計意義......................................1 1.2.系統功能要求..................................1 1.3.本組成員所做的工作............................1 2.方案設計...........................................1 3.硬件設計...........................................2 4.軟件設計...........................................7 5.系統調試...........................................7 6.設計總結...........................................8 7.附 錄A;源程序.....................................8 8.附 錄B;作品實物圖片...............................10 9.參考文獻..........................................11
16×16點陣LED室內電子顯示屏的設計
單片機原理及應用課程設計
基于STC89C52的智能小車的設計
1.引 言
1.1.設計意義
本智能小車的設計,首先針對大學所有學習的知識是一個很好的回顧和總結。此智能小車是基于單片機所設計的,具有自動尋跡能力,在實際的很多方面有應用。當我們進一步的改進機器人系統時,可實現更重要的功能,如可設計出自動撲火機器人等。1.2.系統功能要求
此智能小車是基于STC89C52設計的具有自動尋跡能力的小車。系統可實現跟隨黑色引導線行走的能力,在行駛過程中,并能用測速傳感器和光電碼盤對小車速度實現實時監測。小車在行駛過程中并能實現播放美妙的音樂。1.3.本組成員所做的工作
本組成員有李如發,汪航,黃建安,韓文龍,羅瑩,明菲菲,鄒珊,江銳,邵進。
李如發:驅動 073321032 汪航: 電源 073522036 黃建安:最小統 073521013 韓文龍:源程序 073522007 羅瑩: 傳感器 073522038 明飛菲:調試 073522012 鄒芬 : 數碼顯示 073521025 邵琎 : 焊接 073522017 江銳 : 蜂鳴器 073522032
2.方案設計
智能小車主要分為傳感器部分,最小系統部分,電機驅動部分,電源部分。根據功能要求,提出合理的設計方案,畫出方案方框圖,并對系統工作原理進行闡述。
原理,本系統的重要部分是傳感器,它對整個小車的定位起到很重要的作用,由傳感器檢測黑線的位置,其中黑線對光能吸收,白線對光反射。利用此原
16×16點陣LED室內電子顯示屏的設計
單片機原理及應用課程設計
理將紅外線傳感器采集到的信號轉換為數字信號并送入單片機,單片機根據收到的信號實時的控制小車的方向。控制小車的方向主要是運用pwm原理來控制電機的平均電壓,從而來控制電機的轉速,實現小車對黑線的實時跟蹤。
3.硬件設計
硬件設計各模塊電路圖及原理描述 傳感器模塊
方案1:用光敏電阻組成光敏探測器。光敏電阻的阻值可以跟隨周圍環境光線的變化而變化。當光線照射到白線上面時,光線發射強烈,光線照射到黑線上面時,光線發射較弱。因此光敏電阻在白線和黑線上方時,阻值會發生明顯的變化。將阻值的變化值經過比較器就可以輸出高低電平。
但是這種方案受光照影響很大,不能夠穩定的工作。因此我們考慮其他更加穩定的方案。
方案2:用RPR220型光電對管。RPR220是一種一體化反射型光電探測器,其發射器是一個砷化鎵紅外發光二極管,而接收器是一個高靈敏度,硅平面光電三極管。
方案3:用紅外發射管和接收管自己制作光電對管尋跡傳感器。紅外發射管發出紅外線,當發出的紅外線照射到白色的平面后反射,若紅外接收管能接收到反射回的光線則檢測出白線繼而輸出低電平,若接收不到發射管發出的光線則檢測出黑線繼而輸出高電平。我們選擇了此方案。
傳感器是整個系統的眼睛,這部分主要運用紅外線傳感器采集信號送給單片機處理。由于黑色車道對紅外線傳感器發出的光有吸收能力,白色地方對發出的光反射,從而當傳感器在不同的地方產生不同的信號,傳送個單片機。單片機根據采集的信號做出實時的處理。
16×16點陣LED室內電子顯示屏的設計
單片機原理及應用課程設計
最小系統
最小系統是整個系統的心臟,我們采用的是AT89C52芯片。
80C52單片機是把那些作為控制應用所必需的基本內容都集成在一個尺寸有限的集成電路芯片上[2]。如果按功能劃分,它由如下功能部件組成,即微處理器、數據存儲器、程序存儲器、并行I/O口、串行口、定時器/計數器、中斷系統及特殊功能寄存器。它們都是通過片內單一總線連接而成,其基本結構依舊是CPU加上外圍芯片的傳統結構模式。但對各種功能部件的控制是采用特殊功能寄存器的集中控制方式。
驅動模塊
方案1:采用專用芯片L298N作為電機驅動芯片。L298N是一個具有高電壓大電流的全橋驅動芯片,它相應頻率高,一片L298N可以分別控制兩個直流
16×16點陣LED室內電子顯示屏的設計
單片機原理及應用課程設計
電機,而且還帶有控制使能端。用該芯片作為電機驅動,操作方便,穩定性好,性能優良。
方案2:對于直流電機用分立元件構成驅動電路。由分立元件構成電機驅動電路,結構簡單,價格低廉,在實際應用中應用廣泛。但是這種電路工作性能不夠穩定。
因此我們選用了方案1。
由于最小系統和電機驅動部分的電壓幅值不一樣,而且電機是感性負載,在制動時可能反饋電流,因此要在最小系統和驅動模塊之間采用光電隔離,所以用到了光電隔離芯片,TPL521-4
由于光耦芯片的引腳不夠所以在之后采用了一片反相器74HCT14,反相器圖如下
L298是雙H橋高電壓大電流功率集成電路,直接采用TTL邏輯電平控制,可用來驅動繼電器、線圈、直流電動機、步進電動機等電感性負載。它的驅動電壓可達46V,直流電流總和可達4A。其內部具有2個完全相同的PWM功率放大回路。由L298構成的PWM功率放大器的工作形式為單極可逆模式。12個H橋的下側橋晶體管發射極連在一起,其輸出腳(1和15)用來連接電流檢測電阻。第9腳接邏輯控制部分的電源,常用+5V,第4腳為電機驅動電源,本系統中為40V,第5,7,10,12腳輸入標準TTL邏輯電平,用來控制H橋的開和關,16×16點陣LED室內電子顯示屏的設計
單片機原理及應用課程設計
第6,II腳則為使能控制端。當Vs=40V時,最高輸出電壓可達35V,連續電流可達2A。
L298可驅動2個電動機,OUT1,OUT2和OUT3,OUT4之間可分別接電動機,本實驗裝置我們選用驅動兩臺電動機。5,7,10,12腳接輸入控制電平,控制電機的正反轉。EnA,EnB接控制使能端,控制電機的停轉。電動 機的轉速由單片機調節PWM信號的占空比來實現。
L298驅動電路圖
16×16點陣LED室內電子顯示屏的設計
單片機原理及應用課程設計
PWM調速器的硬件組成
在整個PWM調速器中,CPU既是運算處理中心,又是控制中心,是最關鍵的器件。本系統中選用與MCS-51系列完全兼容的AT89C52單片機,它是一種低功耗、高性能、CMOS八位微處理器。片內具有8K字節的在線可重復編程快擦快寫程序存儲器,128x8位內部RAM,AT89C52可構成真正的單片機最小應用系統,縮小系統體積,提高系統可靠性,降低系統成本。
電源模塊
電源中我們采用LM7805穩壓芯片將12v直流電源穩壓成5v直流源。方案1: 采用10節1.5V干電池供電,電壓達到15V,經7812穩壓后給支流電機供電,然后將12V電壓再次降壓、穩壓后給單片機系統和其他芯片供電。但干電池電量有限,使用大量的干電池給系統調試帶來很大的不便,因此,我們放棄了這種方案。
方案2:采用3節4.2V可充電式鋰電池串聯共12.6V給直流電機供電,經過7812的電壓變換后給支流電機供電,然后將12V電壓再次降壓、穩壓后給單片機系統和其他芯片供電。鋰電池的電量比較足,并且可以充電,重復利用,因此,這種方案比較可行。但鋰電池的價格過于昂貴,使用鋰電池會大大超出我們的預算,因此,我們放棄了這種方案。
方案3:采用12V蓄電池為直流電機供電,將12V電壓降壓、穩壓后給單片機系統和其他芯片供電。蓄電池具有較強的電流驅動能力以及穩定的電壓輸出性能。雖然蓄電池的體積過于龐大,在小型電動車上使用極為不方便,但由于我們的車體設計時留出了足夠的空間,并且蓄電池的價格比較低。因此我們選擇了此方案。下:
16×16點陣LED室內電子顯示屏的設計
單片機原理及應用課程設計
4.軟件設計
程序流程圖
5.系統調試
本系統的設計是首先完成每一小部分的設計,因此我們在沒完成一個模塊時就回檢測調試該模塊。在初次調試時我們采用的電源是又單片機開發板所帶的的電源來調試的。調試過程中我們就發現了很重要的問題,由于對本設計的很多模塊的沒有共同的接地使得很多模塊無法工作,我們的解決辦法是12v的直流源穩壓來供給所以的模塊,然后將所以的模塊連接共同的地。在驅動模塊的調試中發現當光耦芯片給定信號時對lm298的輸出沒有反應。我們在檢驗時發現是由于在光耦芯片后部焊接沒有焊好,出現了虛焊。在重新焊接好后,芯片正常工作。分
16×16點陣LED室內電子顯示屏的設計
單片機原理及應用課程設計
塊調試傳感器時,我們將傳感器導通,用黑色物體將傳感器發射部分蓋住檢測輸出,在將黑色物體移開,再檢測輸出。
6.設計總結
本文是關于基于單片機的智能小車的設計,在共同的努力下,各部分的設計均成功,在調試過程中都無誤。本次設計最終實現了直流電機的動態調壓,電源正常輸出供電,數碼管動態顯示數據,蜂鳴器播放美妙的音樂,小車實現簡單的轉彎功能。由于本次設計中尚存在些缺陷和對尋跡程序編寫困難,實現的功能不是很完美,但要求的所有功能基本實現。
本次設計中,從中的體會很多
1、本次的設計可以說設計到大學所學到的所有專業知識,是對大學所學知識的一個整體的回顧。
2、在設計中,不能一氣呵成,因為所有的電路圖都是自己設計的,圖中尚存在不足,所以要反復的琢磨和修改。
3、設計中要注意對每焊完一部分,都要獨立的進行檢查調試,及時的發現錯誤,及時的修改
4、本次最重要的收獲是從中我們看到了團隊合作的重要性,任何事都不是一個人所能完成的,需要大家的共同努力才能獲得最后的成功。
7.附 錄A;源程序
源程序代碼(主要語句要有注釋)。循跡的程序 #include
sbit R=P2^0;//右邊傳感器 sbit L=P2^1;//左邊傳感器 sbit RM1=P1^1;sbit RM2=P1^2;//右邊電機 sbit LM1=P1^3;sbit LM2=P1^4;//左邊電機 void main(){
16×16點陣LED室內電子顯示屏的設計
單片機原理及應用課程設計
RM1=1;
RM2=0;
LM1=1;
LM2=0;
delay(5);
while(1)
{
if((L==1)&&(R==1))//小車前進 {
RM1=1;
RM2=0;
LM1=1;
LM2=0;
delay(5);
}
else if((L==1)&&(R==0))//小車右偏
{
RM1=1;
RM2=0;
LM1=0;
LM2=1;
//左邊的電機停止轉動,右邊的電機轉動,這樣就實現了左轉
delay(10);
}
else if((L==0)&&(R==1))//小車左偏
{
RM1=0;
RM2=1;
LM1=1;
LM2=0;
//右邊的電機停止轉動,左邊的電機轉動,這樣就實現了右轉
delay(10);}
else if((L==0)&&(R==0))//小車停車
{
RM1=0;
RM2=1;
LM1=0;
LM2=1;delay(5);
}
16×16點陣LED室內電子顯示屏的設計
單片機原理及應用課程設計
else
//左右兩個電機同時啟動,直線前進
{
RM1=1;
RM2=0;
LM1=1;
LM2=0;
}
}
delay(10);
}
void delay(uint z)
{
uint a,b;for(a=z;a>0;a--)for(b=120;b>0;b--);}
8.附 錄B;作品實物圖片
16×16點陣LED室內電子顯示屏的設計
單片機原理及應用課程設計
9.參考文獻
[1] Mark Nelson著.瀟湘工作室譯.串行通信開發指南[M].中國水利水電出版社,2002.[2] 王宜懷.單片機原理及其嵌入式應用教程[M].北京希望電子出版社,2002.[3] 張毅剛.單片機原理及應用.高等教育出版社,2009 [4] 康華光.電子技術基礎(模擬部分).高等教育出版社.2006
第三篇:智能小車設計報告
智能小車設計報告
魏旭峰、孔凡明、陳夢洋
(河北科技大學 電氣信息學院)摘要:
AT89S52單片機是一款八位單片機,他的易用性和多功能性受到了廣大使用者的好評。該設計是結合科研項目而確定的設計類課題。本系統以設計題目的要求為目的,采用89S52單片機為控制核心,利用紅外線傳感器檢測道路上的黑線,控制電動小汽車的自動尋路,快慢速行駛。整個系統的電路結構簡單,可靠性能高。實驗測試結果滿足要求,本文著重介紹了該系統的硬件設計方法及測試結果分析。
采用的技術主要有:
通過編程來控制小車的速度及方向; 傳感器的有效應用; 1602液晶顯示的應用;
關鍵詞: 89S52單片機、光電檢測器、PWM調速、電動小車
第一章 方案設計與論證
一 供電系統
二 光電檢測系統
三 單片機最小應用系統設計
四 液晶顯示1602的應用
五 電機驅動
第二章 軟件設計
第二章 方案設計與論證
根據要求,小車應在規定的賽道上行駛,賽道中央黑線寬為25MM,確定如下方案: 在現有玩具電動車的基礎上,加裝光電檢測器,實現對電動車的位置的實時測量,并將測量數據傳送至單片機進行處理,然后由單片機根據所檢測的各種數據實現對電動車的轉向和速度的智能控制.這種方案能實現對電動車的運動狀態進行實時控制,控制靈活、可靠,精度高,可滿足對系統的各項要求。
一 供電系統
本模塊使用LM2940芯片輸出+5V的電壓,為89S52單片機光電檢測電路供電,采用LM1117可控變壓芯片輸出+6V電壓為舵機供電.而電機則由單片機來控制,當單片機輸出的電壓不同時,電機的轉速不同,以此來達到控制小車速度的目的.電路如圖:
二 光電檢測系統
本模塊采用七對紅外線發射和接收對管,來檢測小車前方黑線位置和模擬車站停車位置.發射管發射管出紅外線,當對管正下方為白色跑道時,發射管發射出去的紅外線會被反射回來, 接收因接收到紅外線而導通,兩端電壓為零,當對管正下方為黑色線時,黑線將吸收紅外線,接收管因接收不到紅外線而無法導通,兩端電壓為+4V左右,將接收管端電壓與一個給定電壓經LM324比較后輸出0和+5V兩固定個值,當對管正下方為白色時輸出+5V電壓,當對管正下方為黑線時輸出0V,輸出的電壓交給單片機,以此來確定黑線的位置.電路如圖:
三 單片機最小應用系統設計
89S52單片機是本系統的核心所在,自動尋跡和調速都是它控制, 七對光電對管經比較器輸出的電壓輸入單片機,單片機根據電壓的高低來判斷黑線位置,進而調整速度和方向,電路如下:
四 舵機的應用
舵機是一種位置(角度)伺服的驅動器,適用于那些需要角度不斷變化并可以保持的控制系統。目前在高檔遙控玩具,如航模,包括飛機模型,潛艇模型;遙控機器人中已經使用得比較普遍。舵機是一種俗稱,其實是一種伺服馬達。
其工作原理是:單片機放的控制信號由接收機的通道進入信號調制芯片,獲得直流偏置電壓。它內部有一個基準電路,產生周期為20ms,寬度為1.5ms的基準信號,將獲得的直流偏置電壓與電位器的電壓比較,獲得電壓差輸出。最后,電壓差的正負輸出到電機驅動芯片決定電機的正反轉。當電機轉速一定時,通過級聯減速齒輪帶動電位器旋轉,使得電壓差為0,電機停止轉動。
舵機的控制一般需要一個20ms左右的時基脈沖,該脈沖的高電平部分一般為0.5ms~2.5ms范圍內的角度控制脈沖部分。
五 電機驅動
電機驅動電路是根據單片機的控制型號來控制電機的轉動的,電路如下:
第二章 軟件設計 #include
#define uchar unsigned char//宏定義 uchar duoj,dianj,time0=0,time1=0,L=0,e=30;void timer0()interrupt 1 //定時器零 控制舵機 { time0++;
if(time0==duoj)moto=0;if(time0==80){ time0=0;
moto=1;} TH0=(65536-313)/256;TL0=(65536-313)%256;} void timer1()interrupt 3 ///定時器一 控制電機 { time1++;if(time1==dianj)in1=1;if(time1==80){
time1=0;
in1=0;} TH1=(65536-340)/256;TL1=(65536-340)%256;}
void main()/////主函數開始 { TMOD=0x11;TH0=(65536-313)/256;TL0=(65536-313)%256;TH1=(65536-340)/256;TL1=(65536-340)%256;EA=1;ET0=1;
ET1=1;in1=0;moto=1;TR0=1;TR1=1;while(1)//////檢測黑線位置
{
while(1)
{
if(P1==0xff){duoj=8;dianj=55;break;} 全白時緩進
if(L1==0){duoj=10;dianj=37;L=1;break;} //L1
if(L7==0){duoj=6;dianj=37;L=7;break;} //L7
if(L2==0){duoj=10;dianj=22;L=2;break;} //L2
if(L6==0){duoj=6;dianj=22;L=6;break;} //L6
//
if(L3==0){duoj=9;dianj=27;L=3;break;} //L3
if(L5==0){duoj=7;dianj=27;L=5;break;}
//L5
if(L4==0){duoj=8;dianj=70;L=4;break;}
//l4
//else {duoj=8;dianj=17;break;}
}
while(P1==0xff)當檢測不到信號時保持最后的狀態
{
switch(L)
{
case 1:duoj=10;dianj=39;break;
case 2:duoj=10;dianj=22;break;
// case 3:duoj=9;dianj=25;break;
// case 4:duoj=8;dianj=70;break;
// case 5:duoj=7;dianj=25;break;
case 6:duoj=6;dianj=22;break;
case 7:duoj=6;dianj=39;break;
}
} } }////////主函數結束
第四篇:電磁智能小車設計報告
標題:電磁感應智能電動車
摘要:本系統以AVR單片機MEGAl6為核心器件,實現對驅動電路的控制,使電動小車自動行駛。利用電磁原理,在車模前上方水平方向固定兩個相距為L的電感,通過比較兩個電感中產生的感應電動勢大小即可判斷小車相對于導線的位置,進而做出調整,引導小車大致循線行駛。用PWM技術控制小車的直流電動機轉動,完成小車位置、速度、時間等的控制。利用干簧管來檢測跑道的起始和終點位置從而完成小車的起步及停車。
系統總體設計:
AVR單片機MEGAl6(該芯片能夠不需要外圍晶振和復位電路而獨立工作,非常適合智能尋跡車模的要求。)為核心,由單片機模塊、路徑識別模塊、直流電機驅動模塊、舵機驅動模塊等組成,如下圖所示。基于電磁感應的智能尋跡車模系統以
直流電動機為車輛的驅動裝置,轉向電動機用于控制車輛行駛方向。智能尋跡車模利用電磁感應在跑道上自主尋跡前進,轉向。
單片機模塊(控制模塊):
尋跡車模采用AVR內核的ATMEGAl6。該芯片能夠不需要外圍晶振和復位電路而獨立工作,非常適合智能尋跡車模的要求。
路徑識別模塊:
本方案就是在車模前上方水平方向固定兩個相距為L的電感。左邊的線圈的坐標為(x,h,z),右邊的線圈的位置(x-L,h,z)。由于磁場分布是以z軸為中心的同心圓,所以在計算磁場強度的時候我們僅僅考慮坐標(x,y)。由于線圈的軸線是水平的,所以感應電動勢反映了磁場的水平分量。計算感應電動勢:
圖 1 線圈中感應電動勢與它距導線水平位置x 的函數
如果只使用一個線圈,感應電動勢E 是位置x 的偶函數,只能夠反映到水平位置的絕對值x 的大小,無法分辨左右。為此,我們可以使用相距長度為L 的兩個感應線圈,計算兩個線圈感應電動勢的差值:
對于直導線,當裝有小車的中軸線對稱的兩個線圈的小車沿其直線行駛,即兩個線圈的位置關于導線對稱時,則兩個線圈中感應出來的電動勢大小應相同、且方向亦相同。若小車偏離直導線,即兩個線圈關于導線不對稱時,則通過兩個線圈的磁通量是不一樣的。這時,距離導線較近的線圈中感應出的電動勢應大于距離導線較遠的那個線圈中的。根據這兩個不對稱的信號的差值,即可調整小車的方向,引導其沿直線行駛。
對于弧形導線,即路徑的轉彎處,由于弧線兩側的磁力線密度不同,則當載有線圈的小車行駛至此處時,兩邊的線圈感應出的電動勢是不同的。具體的就是,弧線內側線圈的感應電動勢大于弧線外側線圈的,據此信號可以引導小車拐彎。
另外,當小車駛離導線偏遠致使兩個線圈處于導線的一側時,兩個線圈中感應電動勢也是不平衡的。距離導線較近的線圈中感應出的電動勢大于距離導線較遠的線圈。由此,可以引導小車重新回到導線上。
由于磁感線的閉合性和方向性,通過兩線圈的磁通量的變化方向具有一致性,即產生的感應電動勢方向相同,所以由以上分析,比較兩個線圈中產生的感應電動勢大小即可判斷小車相對于導線的位置,進而做出調整,引導小車大致循線行駛。
驅動模塊:
簡易智能小車有兩個電動機。其中一個小電動機控制前輪轉向,給電動機加正反向電壓,實現前輪的左右轉向;另一電動機控制后輪驅動力。控制轉向電動機需要較小的驅動力,經過實驗,選L293作為驅動芯片;由于后輪驅動功率較大,所以選用L298N,經過實驗發現小車行使過程中負載較大,導致L298N發熱較大,故給芯片添加散熱片以保護芯片正常工作。為了優化控制性能,采用PWM脈寬調速,并利用數模轉換芯片產生 模擬電壓,控制555生成占空比可調的脈沖從而控制L293B與L298N進行脈寬調速。
具體設計方案:
本設計使用一普通玩具小車作為車模,采用P W M 信號驅動,當PWM信號脈寬處于(1ms,1.5ms)區間時舵機控制小車向左行駛,脈寬處于(1.5ms,2ms)時小車向右行駛,脈寬約為1.5ms時小車沿直線行駛。本方案使用兩個10mH的電感置于車模頭部作為確定小車位置的傳感器。然后,設計了一個模擬電路,采集、調理、放大由電感得到的電動勢信號。具體電路如圖2所示。
該電路采用電壓并聯負反饋電路,電感信號從PL進入。考慮到單獨電感感應出的電動勢很小,本設計使用電感和電容諧振放大感應電動勢。由于使用的是10mH的電感,導線中電流頻率為20kHz,因此使用6.3nF的電容。這樣在電容上得到的電壓將會比較大,便于三極管進行放大。整個電路的具體放大倍數需要根據實際負載進行計算。本設計的小車控制電路如圖3所示。
首先,把由兩個電感得到的感應電動勢經調理、放大后得到的電壓輸出u1和u2送入由運放組成的減法器中進行減法運算,然后再經由運放組成的電壓跟隨器送給下一級電路。經過分析,這一級電路的輸出大致可由下式進行計算:
后一級電路由兩個555定時器組成,其中下方的555構成一個占空比非常接近于1的脈沖發生器,作為上方555的觸發脈沖。因為此觸發脈沖的低電平信號非常窄,所以能很好的保證上方555構成的單穩態電路正常運行。該脈沖信號頻率為:
上方的555定時器構成一個單穩型壓控振蕩器,它的脈寬受輸入V1的控制,輸出即PWM信號。當V1較大時,即兩個電感線圈中的感應電動勢相差較大時,亦即小車偏離導線向左行駛時,則脈寬較大,舵機將控制小車向右行駛;當V1適中時,接近,即小車沿導線行駛時,則脈寬接近1.5ms,小車按直線行駛;當V1較小時,即小車偏離導線向右行駛時,則脈寬較小,舵機將控制小車向左行駛。從而,控制小車大致循著導線行駛。另外,改變構成減法器的電阻的值,可以調整小車反應的靈敏度,進而防止出現小車以導線為中軸線左右搖擺的現象。
補充說明:跑道上的起始位置及終點位置用干簧管來檢測。
程序設計流程圖:
第五篇:智能小車單片機課程設計報告
單片機課程設計
題 目: 專 業: 班 級: 組長 成員 成員 成員 成員
智能小車設計 計算機科學與技術
14級2班
姓名 學號
年 12 月 23 日
2016
打開命令行終端的快捷方式: ctr+al+t:默認的路徑在家目錄
ctr+shift+n:默認的路徑為上一次終端所處在的路徑.linux@ubuntu:~$ linux:當前登錄用戶名.ubuntu:主機名
:和$之間:當前用戶所處在的工作路徑.windows下的工作路徑如C:IntelLogs linux下的工作路徑是:/.../..../ ~:代表的是/home/linux這個路徑.(家目錄).ls(list):列出當前路徑下的文件名和目錄名.ls-a(all):列出當前路徑下的所有文件和目錄名,包括了隱藏文件..:當前路徑..:上一級路徑
ls-l:以橫排的方式列出文件的詳細信息
total 269464(當前這個路徑總計所占空間的大小,單位是K)drwxr-xr-x 3 linux linux 4096 Dec 4 19:16 Desktop
chmod u-或者+r/w/x 文件名 chmod g-或者+r/w/x 文件名 chmod o-或者+r/w/x 文件名(3).cd /home/linux 進入到1目錄里并創建一個2普通文件,再退回上一級,并且刪除1目錄 6.拷貝文件.cp(copy)路徑1/源文件 路徑2:把路徑1下的文件拷貝到路徑2下
cp 路徑1/源文件 路徑2/目標文件:把路徑1下的文件拷貝到路徑2下并且重命名位目標文件.cp(copy)-r 路徑1/目錄名 路徑2:把路徑1下的目錄拷貝到路徑2下 7.剪切文件
mv(move)路徑1/源文件 路徑2:把路徑1下的文件剪切到路徑2下
mv 路徑1/源文件 路徑2/目標文件:把路徑1下的文件剪切到路徑2下并且重命名位目標文件
mv 源文件 目標文件:重命名文件
mv 路徑1/目錄名 路徑2:把路徑1下的目錄剪切到路徑2下 8.clear:清屏 9.exit 退出終端 vi編輯器.vi 文件名:如果文件不存在則創建并打開 如果文件已存在,則直接打開
VI編輯器的三種模式
1.命令行模式:剛進入編輯器的時候,默認處在這種模式下
2.編輯模式(插入模式):輸入a/i/o即可進入,按下esc鍵退回命令行模式,再輸入冒號 ,即可進入底行模式.3.底行模式下:w(保存),q(退出),wq(保存并退出),q!(強制退出不保存)按下退格鍵,刪除冒號,即可進入命令行模式.終極保存法;w!sudo tee %d回車再回車即可
命令行模式下的快捷操作: 1.整行復制:光標移動想要復制的那一行,輸入yy即可,再把光標移動到你想要粘貼位置的上一行,輸入p即可
2.多行復制:光標移動想要復制的那幾行的 6.多行剪切:光標移動想要剪切的那幾行的 再編譯一個c應用程序,在程序中來調用庫里實現的函數
gcc 應用程序名-l庫名(注意是去掉lib和.so的庫名)
文件IO linux系統下一切設備皆文件
操作文件: open():打開一個文件
read()://從文件里邊讀出數據 write()//向文件里寫入數據 close()//關閉文件
man手冊: man 2 函數名
open: 頭文件
#include
1.int open(const char *pathname, int flags);//僅限于打開一個已存在文件
參數1:文件的路徑 參數2:打開方式的標志
O_RDONLY,//只讀方式打開
O_WRONLY,//只寫方式打開
O_RDWR.//可讀可寫方式打開 返回值: 打開成功:返回一個正數(文件描述符)打開失敗:-1
2.int open(const char *pathname, int flags, mode_t mode);//可以打開一個不存在的文件 參數1:文件的路徑 參數2:打開方式的標志
O_RDONLY,//只讀方式打開
O_WRONLY,//只寫方式打開
O_RDWR.//可讀可寫方式打開
如果文件不存在必須|O_CRAET,創建該文件 參數3:權限 數 比如:0666
返回值: 打開成功:返回一個正數(文件描述符)打開失敗:-1
write: 頭文件: #include
typedef int ssize_t
ssize_t write(int fd, const void *buf, size_t count);參數1:就是open函數的返回值,文件描述符 參數2:你想要寫入的數據
參數3:你想要寫入的數據的字節大小
返回值: 寫入成功:返回的是寫入的字節大小 寫入失敗:-1
strlen:實際長度 sizeof:數組的大小
arduino viod setup(){ 端口的配置;}
void loop(){ 任務的執行;
}
arduino之呼吸燈實驗: int led=13;void setup(){ pinMode(led,OUTPUT);} void loop(){ digitalWrite(led,HIGH);delay(1000);digitalWrite(led,LOW);delay(1000);} 漸變燈: 暗->亮->暗
PWM波:可調脈沖寬度波.3,5,6,9,10,11這幾個端口可以輸出pwm波 analogWrite(pin, value)//輸出pwm波 pin:管腳號:3,5,6,9,10,11中的任意一個 value:0~255中的任何一個數: 0:占空比為0% 255:占空比位100%
遠程視頻監控步驟: 1.將jpegsrc.v8b.tar.gz(圖片庫)和mjpg-streamer-code-182.tar.gz(視頻查看軟件)拷貝到ubuntu的家目錄
2.解壓縮
tar xvf jpegsrc.v8b.tar.gz 3.cd jpeg-8b 4../configure //創建Makefile文件 5.make 6.sudo make install //安裝
程序運行時,默認尋找的頭文件的路徑在/usr/include,庫文件的路徑/lib
cd /usr/local/include sudo cp * /usr/include cd /usr/local/lib
sudo cp libjpeg* /lib
7.切換到家目錄:cd 移植查看視頻的軟件:
tar xvf mjpg-streamer-code-182.tar.gz cd mjpg-streamer-code-182 cd mjpg-streamer make clean //清除已經編譯過的程序
make
運行查看視頻的軟件:sudo./start.sh 打開火狐瀏覽器
在地址欄輸入127.0.0.1:8080 若發現視頻綠屏
先強制結束程序運行:ctl+c.解決方法:
修改start.sh
將 要對uboot環境信息進行設置
首先把撥碼開關撥到0000位置.選擇uboot的啟動方式.uboot從外存啟動.1.找到自己的COM端口號;打開putty 2.選中Serial,把波特率改為115200,端口號改為自己的端口號,Flow contrlo選擇none 3.開啟電源,會出現一個倒計時,在倒計時完成之前,隨便敲一個鍵盤.4.輸入命令print可以顯示uboot的打印信息
確保: ipaddr=192.168.1.100//代表開發板的ip地址 serverip=192.168.1.200//代表ubuntu的IP地址 bootargs=root=nfs nfsroot=192.168.1.200:/source/rootfs ip=192.168.1.100 init=/linuxrc console=ttySAC0,115200//
打開虛擬機: 1.進入到/tftpboot目錄下.把zImage拖到虛擬機,前加cp ,后加./ 使用ls查看一下是否出現zImage 2.cd /source 把rootfs這個壓縮包拖到虛擬機,前加cp ,后加./ 使用ls查看一下是否出現rootfs.tgz 3.解壓命令: sudo tar-xvf rootfs.tgz 要讓你輸入密碼;輸入1回車即可,密碼是不可見的.再用ls查看是否多了一個藍色的文件rootfs.4.修改ubuntu的ip地址.找到wiffi圖標,點擊選中edit connection->IPV4 seting->manual->add ip netmask gateway 192.168.1.200 255.255.255.0 192.168.1.1 點擊保存.關閉窗口.再打開圖標選中wired connection1 再看ip是否改回來了.5.網線連接開發板和電腦
在putty界面輸入:ping 192.168.1.200 如果host 192.168.1.200 is alive,這是掛載系統很好的征兆.not alive的話需要關閉電腦的無線網
輸入boot或者重啟開發板不要再按下任何鍵了,如果出現
####很快就要掛載成功了 如果出現TTTTTTTTTTTTTT 在ubuntu輸入命令:sudo service tftpd-hpa restart 其中sudo的作用是暫時將用戶的權限提升到超級用戶(root)的權限.如果出現Please press Enter to activate this console.代表系統掛載成功.通過gcc編譯生成的程序不能在開發板上運行.通過命令file a.out看到文件的格式為intel 30386,說明這是X86格式的程序,只能PC上運行
而不能在arm板上運行,解決措施,使用交叉編譯器來編譯.交叉編譯器的配置: 將arm-cortex_a8-linux-gnueabi.tar.bz2拖到ubuntu的家目錄
解壓命令tar-xvf arm-cor+tab鍵自動補齊,用ls查看是否生成arm-cortex_a8個目錄.配置交叉編譯器: sudo vi /etc/bash.bashrc文件
在最后一行添加export PATH=$PATH:/home/linux/arm-cortex_a8/bin 保存并退出文件
保存完成后重啟文件:source /etc/bash.bashrc
重啟成功后輸入arm-cor+tab鍵會自動補齊成arm-cortex_a8-linux-gnueabi-代表交叉編譯器配置成功.利用交叉編譯器編譯程序: arm-cortex_a8-linux-gnueabi-gcc 文件名,并將生成的可執行程序拷貝到/source/rootfs下
然后再到putty上執行./a.out就可以在開發板上運行程序了.
相關代碼
Che.c
#include “cgic.h” #include
void zigbee_serial_init(int fd){ struct termios options;
tcgetattr(fd, &options);options.c_cflag |=(CLOCAL | CREAD);options.c_cflag &= ~CSIZE;options.c_cflag &= ~CRTSCTS;options.c_cflag |= CS8;options.c_cflag &= ~CSTOPB;options.c_iflag |= IGNPAR;options.c_iflag &= ~(BRKINT | INPCK | ISTRIP | ICRNL | IXON);
//options.c_cc[VTIME] = 2;options.c_cc[VMIN] = 12;
options.c_oflag = 0;options.c_lflag = 0;
cfsetispeed(&options, B115200);cfsetospeed(&options, B115200);
tcsetattr(fd,TCSANOW,&options);
} int cgiMain(){ int fd;char a='1';cgiHeaderContentType(“text/htmlnn”);fprintf(cgiOut,“n”);fprintf(cgiOut,“
n”);fprintf(cgiOut,“n”);fprintf(cgiOut,“
n”);fprintf(cgiOut,“n”);
fd=open(“/dev/ttyUSB0”,O_RDWR);if(-1==fd)
fprintf(cgiOut,“open usart failedn”);
}
zigbee_serial_init(fd);if(cgiFormSuccess==cgiFormSubmitClicked(“up”)){ a='2';write(fd,&a,1);} if(cgiFormSuccess==cgiFormSubmitClicked(“down”)){ a='1';write(fd,&a,1);} if(cgiFormSuccess==cgiFormSubmitClicked(“right”)){ a='4';write(fd,&a,1);} if(cgiFormSuccess==cgiFormSubmitClicked(“left”)){ a='3';write(fd,&a,1);} if(cgiFormSuccess==cgiFormSubmitClicked(“stop”)){ a='0';write(fd,&a,1);} fprintf(cgiOut,"
![下載智能小車實習報告[精選多篇]word格式文檔](http://static.xiexiebang.com/skin/default/images/icon_word.png)

文檔為doc格式
聲明:本文內容由互聯網用戶自發貢獻自行上傳,本網站不擁有所有權,未作人工編輯處理,也不承擔相關法律責任。如果您發現有涉嫌版權的內容,歡迎發送郵件至:645879355@qq.com 進行舉報,并提供相關證據,工作人員會在5個工作日內聯系你,一經查實,本站將立刻刪除涉嫌侵權內容。
關于智能小車的調研報告
調研報告中國是一個玩具車生產大國,但并不是一個玩具車生產強國。缺乏規模大的玩具車生產商,缺乏玩具車開發人才,缺乏品牌效應是最大的問題。盡管中國玩具的出口量很大(全球75%的......
智能循跡小車___設計報告
智能循跡小車設計 專 業: 自動化 班 級: 自動化132 姓 名:羅植升 莫柏源 梁桂賓 指導老師: 2014年4月——2010年6月 摘要: 本課題是基于STC89C52單片機的智能小車的設計與實現......
智能小車實訓報告
智能小車實訓報告 摘要: 本課題是基于AT89C52單片機的智能小車的設計與實現,小車完成的主要功能是能夠自主識別黑色引導線并根據黑線走向實現快速穩定的尋線行駛。小車系統以......
智能尋跡小車實訓報告[大全]
目錄 1、引言 1.1智能小車的設計意義和作用………………………3 2、系統總體設計……………………………………………4 3、硬件設計 3.1循線模塊………………………………......
智能小車課程設計(五篇模版)
智能循跡小車 【摘要】 本課題是基于低功耗單片機的智能小車的設計與實現,小車完成的主要功能是能夠自主識別黑色引導線并根據黑線走向實現快速穩定的尋線行駛。小車系統以......
智能小車實驗報告[全文5篇]
課程設計報告 (嵌入式技術實踐(一)) 學院:電氣工程與自動化學院 題 目:智能小車的電路設計與制作 專業班級:自動化123班 學 號: 21 學生姓名:謝斌 指導老師: 王祖麟、張振利 日 期:......
智能循跡小車實驗報告
摘要 本設計主要有單片機模塊、傳感器模塊、電機驅動模塊以及電源模塊組成,小車具有自主尋跡的功能。本次設計采用STC公司的89C52單片機作為控制芯片,傳感器模塊采用紅外光電......
智能循跡小車(推薦閱讀)
專業創新實踐實訓報告 課題名稱 成員 院系 專 業 指導教師 智能循跡小車 *** 航空工程學院 電子信息科學與技術專業 *** 2016年5月28日 目錄 1 實訓任務與內容 ...............