智能車制作全過程(飛思卡爾).doc
《智能車制作全過程(飛思卡爾).doc》由會(huì)員分享,可在線閱讀,更多相關(guān)《智能車制作全過程(飛思卡爾).doc(43頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
智能車制作全過程(飛思卡爾) 如果我寫得好,請(qǐng)頂我一下,我將再接再厲! (本人在很久以前做的一輛用來比賽的智能車--獲得華北一等獎(jiǎng),全國(guó)二等獎(jiǎng),有許多可改進(jìn)地方.) 下面我們來立即開始我們的智能車之旅: 首先,一個(gè)系統(tǒng)中,傳感器至關(guān)重要. "不管你的CPU的速度如何的快,通信機(jī)制如何的優(yōu)越,系統(tǒng)的精度永遠(yuǎn)無法超越傳感器的精度" .是的,在這個(gè)系統(tǒng)中,傳感器的精度,其準(zhǔn)確性就顯得至關(guān)重要.如果你問我傳感器的電路,呵呵,我早就和大家分享了,在我發(fā)表的日志中,有一篇<<基于反射式距離傳感器>>的文章就詳細(xì)的說明了傳感器的硬件電路以及可以采取的信號(hào)采樣方式. 傳感器安裝成一排,如上面排列.(就是個(gè)一字排列,沒有什么特別) 接下來,看看我們?nèi)绾翁幚韨鞲衅鞯玫降男畔? 大家看到了.結(jié)構(gòu)很簡(jiǎn)單,我們已經(jīng)搞定了傳感器通路.下面我們來看看多機(jī)的控制方面的問題: 其實(shí),不管是便宜還是比較貴的舵機(jī),都是一樣的用法.舵機(jī)的特點(diǎn)就是不同的占空比方波就對(duì)應(yīng)著舵機(jī)的不同轉(zhuǎn)角.當(dāng)然不同的舵機(jī)有不同的頻率要求.比如我用的這個(gè)舵機(jī):方波頻率50HZ.怎么改變占空比?這個(gè)不就是PWM模塊的功能嘛.PWM模塊可以輸出任意占空比的方波.只要你控制其中的占空比寄存器,就可以直接控制舵機(jī)的轉(zhuǎn)角.你只要將傳感器的狀態(tài)和這個(gè)占空比對(duì)應(yīng)上,不就OK了?就這么簡(jiǎn)單,做到這里,你就可以讓你的車在跑道上跑了! 接下來,我們的工作是讓智能車更加完善:速度要穩(wěn)定. 在當(dāng)前的系統(tǒng)結(jié)構(gòu)中,要使一個(gè)系統(tǒng)更穩(wěn)定更可靠,閉環(huán)系統(tǒng)是一個(gè)選擇.(如果你不知道什么是閉環(huán)系統(tǒng),可以參照我的文章里面的一篇"基于單片機(jī)的PID電機(jī)調(diào)速"),既然是一個(gè)閉環(huán)系統(tǒng),速度傳感器是必不可少的,用什么樣的傳感器做為速度反饋呢: 仔細(xì)看,和后輪之間有一條皮帶的這個(gè)貌似電機(jī)的東西,就是我的速度傳感器,它的學(xué)名叫"旋轉(zhuǎn)編碼器".這個(gè)器件的特點(diǎn)就是:每轉(zhuǎn)一圈,就會(huì)從輸出端輸出一定的脈沖,比如我這個(gè)旋轉(zhuǎn)編碼器是500線的,就是轉(zhuǎn)一圈輸出500個(gè)脈沖.因此,我只要在單位時(shí)間內(nèi)計(jì)數(shù)輸出端輸出的脈沖數(shù),我就可以計(jì)算出車輛的速度.顯然,這個(gè)速度可以用來作為PID速度調(diào)節(jié)的反饋. 現(xiàn)在有了反饋,我們需要的是調(diào)節(jié)智能車驅(qū)動(dòng)電機(jī)的速度了,如何來調(diào)速,就成了必須解決的問題了.我用的是驅(qū)動(dòng)芯片MC33886. 其實(shí),這個(gè)芯片就是一個(gè)功率放大的模塊. 我們知道,單片機(jī)輸出的PWM信號(hào)還是TTL信號(hào),是不能直接用來驅(qū)動(dòng)電機(jī)的.非要通過功率模塊的放大不可.這個(gè)道理其實(shí)很簡(jiǎn)單,就像上次我給大家畫的哪個(gè)電子琴電路的放大電路一樣: 看上面的那個(gè)三極管,就是將TTL電路的電流放大,才能夠來驅(qū)動(dòng)蜂鳴器.其實(shí)這里的這個(gè)MC33886就是這樣的一個(gè)作用.而且我們自己也完全可以用三極管自己搭建一個(gè)這樣的功率放大電路,當(dāng)然,驅(qū)動(dòng)能力肯定不如這里的這個(gè)MC33886(如我們用三極管就搭建了超過MC33886的電路,摩托羅拉就不會(huì)賣幾十塊錢一個(gè)了.呵呵.)知道了這個(gè)MC33886的工作原理,就好說了,一句話,通過PWM來調(diào)節(jié)電機(jī)的速度.當(dāng)方波中高電平占的比例大,電機(jī)的平均電壓肯定高,轉(zhuǎn)速肯定快.也就是說,PWM的占空比越大,電機(jī)轉(zhuǎn)速越高. 看,就這么簡(jiǎn)單,這個(gè)智能車就做好了.接下來,我們就把我們知道的PID知識(shí)放到舵機(jī)和直流驅(qū)動(dòng)電機(jī)的控制中去.就可以達(dá)到一個(gè)比較好的控制效果. 如果要達(dá)到更高的水平,肯定機(jī)械方面的改造也少不了.當(dāng)然,這不屬于本文的討論范圍.呵呵. 智能車制作全過程(飛思卡爾---舵機(jī)篇 發(fā)表于 2008/11/28 10:00:55 感謝大家的支持!如果我寫得好,請(qǐng)頂我一下! 智能車的制作中,看經(jīng)驗(yàn)來說,舵機(jī)的控制是個(gè)關(guān)鍵.相比驅(qū)動(dòng)電機(jī)的調(diào)速,舵機(jī)的控制對(duì)于智能車的整體速度來說要重要的多. PID算法是個(gè)經(jīng)典的算法,一定要將舵機(jī)的PID調(diào)好,這樣來說即使不進(jìn)行驅(qū)動(dòng)電機(jī)的調(diào)速(勻速),也能跑出一個(gè)很好的成績(jī). 機(jī)械方面: 從我們的測(cè)試上來看,舵機(jī)的力矩比較大,完全足以驅(qū)動(dòng)前輪的轉(zhuǎn)向.因此舵機(jī)的相應(yīng)速度就成了關(guān)鍵.怎么增加舵機(jī)的響應(yīng)速度呢?更改舵機(jī)的電路?不行,組委會(huì)不允許.一個(gè)非常有效的辦法是更改舵機(jī)連接件的長(zhǎng)度.我們來看看示意圖: 從上圖我們能看到,當(dāng)舵機(jī)轉(zhuǎn)動(dòng)時(shí),左右輪子就發(fā)生偏轉(zhuǎn).很明顯,連接件長(zhǎng)度增加,就會(huì)使舵機(jī)轉(zhuǎn)動(dòng)更小的轉(zhuǎn)角而達(dá)到同樣的效果.舵機(jī)的特點(diǎn)是轉(zhuǎn)動(dòng)一定的角度需要一定的時(shí)間.不如說(只是比喻,沒有數(shù)據(jù)),舵機(jī)轉(zhuǎn)動(dòng)10度需要2ms,那么要使輪子轉(zhuǎn)動(dòng)同樣的角度,增長(zhǎng)連接件后就只需要轉(zhuǎn)動(dòng)5度,那么時(shí)間是1ms,就能反應(yīng)更快了.據(jù)經(jīng)驗(yàn),這個(gè)舵機(jī)的連接件還有必要修改.大約增長(zhǎng)0.5倍~2倍. 在今年中,有人使用了兩個(gè)舵機(jī)分別控制兩個(gè)輪子.想法很好.但今年不允許使用了. 接下來就是軟件上面的問題了. 這里的軟件問題不單單是軟件上的問題,因?yàn)槲覀円獱可娴絺鞲衅鞯牟季謫栴}.其實(shí),沒有人說自己的傳感器布局是最好的,但是肯定有最適合你的算法的.比如說,常規(guī)的傳感器布局是如下圖: 這里好像說到了傳感器,我們只是略微的一提.上圖只是個(gè)示意圖,意思就是在中心的地方傳感器比較的密集,在兩邊的地方傳感器比較的稀疏.這樣做是有好處的,大家看車輛在行駛到轉(zhuǎn)彎處的情況: 相信看到這里,大家應(yīng)該是一目了然了,在轉(zhuǎn)彎的時(shí)候,車是偏離跑道的,所以兩邊比較稀疏還是比較科學(xué)的,關(guān)于這個(gè),我們將在傳感器中在仔細(xì)討論。 在說到接下來的舵機(jī)的控制問題,方法比較的多,有人是根據(jù)傳感器的狀態(tài),運(yùn)用查表法差出舵機(jī)應(yīng)該的轉(zhuǎn)角,這個(gè)做法簡(jiǎn)單,而且具有較好的濾波"效果",能夠?qū)㈠e(cuò)誤的傳感器狀態(tài)濾掉;還有人根據(jù)計(jì)算出來的傳感器的中心點(diǎn)(比如第四個(gè)和第五個(gè)傳感器檢測(cè)到黑線,中心點(diǎn)就是4.5),計(jì)算出舵機(jī)需要的轉(zhuǎn)角,這個(gè)做法也比較的簡(jiǎn)單,但是必須有一個(gè)濾波的過程,必須要濾掉錯(cuò)誤的傳感器狀態(tài).比如說:現(xiàn)在傳感器第四個(gè),第五個(gè)和第11個(gè)檢測(cè)到了黑線,顯然第11個(gè)應(yīng)該是個(gè)傳感器檢測(cè)錯(cuò)誤.應(yīng)該把它濾掉.關(guān)于這個(gè)如何濾波,我們待會(huì)在后面將進(jìn)行討論.還有人的做法就是采用PID算法,這個(gè)方法比較的好,其實(shí)也不是很難,就是PID參數(shù)整定的時(shí)候有些麻煩. 大家可以自己選擇喜歡的方法. 關(guān)于濾波,有些許的方法: 1.平均值排序法. 這個(gè)方法大家肯定一聽就知道是怎么回事.就是不急于執(zhí)行,先多次檢測(cè)被測(cè)傳感器,累加,求平均值.這個(gè)方法不錯(cuò),特別在單片機(jī)中.比如:你如果連續(xù)采集8次,累加,最后你只要右移三位(value=value>>3;)就是value=value/8的結(jié)果.畢竟,在單片機(jī)中,右移比除法要快嘛. 2.中間值算法. 這個(gè)算法也簡(jiǎn)單,顧名思義,就是取不大不小的中間的值.這個(gè)算法就需要把幾次采集的值排序,然后使用中間的那個(gè)值. 3.遞推濾波. 這個(gè)濾波方法比較的受認(rèn)可,但是執(zhí)行起來也有風(fēng)險(xiǎn)所在.先說這個(gè)算法,就是根據(jù)當(dāng)前值(傳感器的中心點(diǎn)所在值),推算接下來的傳感器中心點(diǎn)的量,如果發(fā)現(xiàn)前后變化劇烈,就視為干擾因素,忽略.這個(gè)算法看起來比較的好.但是風(fēng)險(xiǎn)就在于:如果出現(xiàn)了錯(cuò)誤,并且錯(cuò)誤的中心點(diǎn)成為的當(dāng)前值,那么以錯(cuò)誤的中心點(diǎn)為基準(zhǔn),正確的中心點(diǎn)就成了干擾.這樣就會(huì)出現(xiàn)極端情況.為了避免這個(gè)情況,我們應(yīng)該有一個(gè)檢查的模塊,檢查當(dāng)前的中心點(diǎn)是否有效.這個(gè)檢查,我們也許可以結(jié)合前面兩種方法,在一定時(shí)間對(duì)中心點(diǎn)的有效性進(jìn)行檢查. 4.限幅濾波. 這個(gè)在舵機(jī)的控制中,特別是使用計(jì)算的方法獲得PWM信號(hào)占空比的(用來控制舵機(jī)的轉(zhuǎn)角),更是尤為重要.這個(gè)濾波的思路就是規(guī)定一個(gè)最大值和一個(gè)最小值,當(dāng)計(jì)算出的值低于最小值時(shí),令其等于最小值;大于最大值時(shí),令其等于最大值. 智能車制作全過程(飛思卡爾) 發(fā)表于 2008/11/15 22:28:01 如果我寫得好,請(qǐng)頂我一下,我將再接再厲! (本人在很久以前做的一輛用來比賽的智能車--獲得華北一等獎(jiǎng),全國(guó)二等獎(jiǎng),有許多可改進(jìn)地方.) 下面我們來立即開始我們的智能車之旅: 首先,一個(gè)系統(tǒng)中,傳感器至關(guān)重要. "不管你的CPU的速度如何的快,通信機(jī)制如何的優(yōu)越,系統(tǒng)的精度永遠(yuǎn)無法超越傳感器的精度" .是的,在這個(gè)系統(tǒng)中,傳感器的精度,其準(zhǔn)確性就顯得至關(guān)重要.如果你問我傳感器的電路,呵呵,我早就和大家分享了,在我發(fā)表的日志中,有一篇<<基于反射式距離傳感器>>的文章就詳細(xì)的說明了傳感器的硬件電路以及可以采取的信號(hào)采樣方式. 傳感器安裝成一排,如上面排列.(就是個(gè)一字排列,沒有什么特別) 接下來,看看我們?nèi)绾翁幚韨鞲衅鞯玫降男畔? 大家看到了.結(jié)構(gòu)很簡(jiǎn)單,我們已經(jīng)搞定了傳感器通路.下面我們來看看多機(jī)的控制方面的問題: 其實(shí),不管是便宜還是比較貴的舵機(jī),都是一樣的用法.舵機(jī)的特點(diǎn)就是不同的占空比方波就對(duì)應(yīng)著舵機(jī)的不同轉(zhuǎn)角.當(dāng)然不同的舵機(jī)有不同的頻率要求.比如我用的這個(gè)舵機(jī):方波頻率50HZ.怎么改變占空比?這個(gè)不就是PWM模塊的功能嘛.PWM模塊可以輸出任意占空比的方波.只要你控制其中的占空比寄存器,就可以直接控制舵機(jī)的轉(zhuǎn)角.你只要將傳感器的狀態(tài)和這個(gè)占空比對(duì)應(yīng)上,不就OK了?就這么簡(jiǎn)單,做到這里,你就可以讓你的車在跑道上跑了! 接下來,我們的工作是讓智能車更加完善:速度要穩(wěn)定. 在當(dāng)前的系統(tǒng)結(jié)構(gòu)中,要使一個(gè)系統(tǒng)更穩(wěn)定更可靠,閉環(huán)系統(tǒng)是一個(gè)選擇.(如果你不知道什么是閉環(huán)系統(tǒng),可以參照我的文章里面的一篇"基于單片機(jī)的PID電機(jī)調(diào)速"),既然是一個(gè)閉環(huán)系統(tǒng),速度傳感器是必不可少的,用什么樣的傳感器做為速度反饋呢: 仔細(xì)看,和后輪之間有一條皮帶的這個(gè)貌似電機(jī)的東西,就是我的速度傳感器,它的學(xué)名叫"旋轉(zhuǎn)編碼器".這個(gè)器件的特點(diǎn)就是:每轉(zhuǎn)一圈,就會(huì)從輸出端輸出一定的脈沖,比如我這個(gè)旋轉(zhuǎn)編碼器是500線的,就是轉(zhuǎn)一圈輸出500個(gè)脈沖.因此,我只要在單位時(shí)間內(nèi)計(jì)數(shù)輸出端輸出的脈沖數(shù),我就可以計(jì)算出車輛的速度.顯然,這個(gè)速度可以用來作為PID速度調(diào)節(jié)的反饋. 現(xiàn)在有了反饋,我們需要的是調(diào)節(jié)智能車驅(qū)動(dòng)電機(jī)的速度了,如何來調(diào)速,就成了必須解決的問題了.我用的是驅(qū)動(dòng)芯片MC33886. 其實(shí),這個(gè)芯片就是一個(gè)功率放大的模塊.我們知道,單片機(jī)輸出的PWM信號(hào)還是TTL信號(hào),是不能直接用來驅(qū)動(dòng)電機(jī)的.非要通過功率模塊的放大不可.這個(gè)道理其實(shí)很簡(jiǎn)單,就像上次我給大家畫的哪個(gè)電子琴電路的放大電路一樣: 看上面的那個(gè)三極管,就是將TTL電路的電流放大,才能夠來驅(qū)動(dòng)蜂鳴器.其實(shí)這里的這個(gè)MC33886就是這樣的一個(gè)作用.而且我們自己也完全可以用三極管自己搭建一個(gè)這樣的功率放大電路,當(dāng)然,驅(qū)動(dòng)能力肯定不如這里的這個(gè)MC33886(如我們用三極管就搭建了超過MC33886的電路,摩托羅拉就不會(huì)賣幾十塊錢一個(gè)了.呵呵.)知道了這個(gè)MC33886的工作原理,就好說了,一句話,通過PWM來調(diào)節(jié)電機(jī)的速度.當(dāng)方波中高電平占的比例大,電機(jī)的平均電壓肯定高,轉(zhuǎn)速肯定快.也就是說,PWM的占空比越大,電機(jī)轉(zhuǎn)速越高. 看,就這么簡(jiǎn)單,這個(gè)智能車就做好了.接下來,我們就把我們知道的PID知識(shí)放到舵機(jī)和直流驅(qū)動(dòng)電機(jī)的控制中去.就可以達(dá)到一個(gè)比較好的控制效果. 如果要達(dá)到更高的水平,肯定機(jī)械方面的改造也少不了.當(dāng)然,這不屬于本文的討論范圍.呵呵. 基于單片機(jī)的電子琴設(shè)計(jì) 發(fā)表于 2008/11/14 11:02:11 如果我寫得好,請(qǐng)頂我一下,我將再接再厲 很多朋友喜歡搞一些聲光的東西,因?yàn)槟芸吹?能聽到,比搞個(gè)什么通信濾波要好玩多了.好!我們就開始做個(gè)電子琴.甚至做一個(gè)簡(jiǎn)單的"MP3",呵呵,從簡(jiǎn)單開始.我們先做電子琴,下一節(jié)再做"MP3". 首先,因?yàn)槭前l(fā)聲裝置,我們得先了解發(fā)聲的原理是什么,這有助于我們接下來的編程: 1.聲音是由于物體震動(dòng)產(chǎn)生的. 2.電流的變化通過線圈就可以使磁場(chǎng)發(fā)聲變化. 上圖是一個(gè)喇叭的工作原理.不知道大家看明白了沒有.喇叭的電磁鐵的電源是接到我們的發(fā)聲電路上.當(dāng)電路中的電路發(fā)生變化時(shí),電磁鐵的吸引力也發(fā)生變化.因此就會(huì)吸合鐵皮.吸合鐵皮的時(shí)候也帶動(dòng)了薄膜的運(yùn)動(dòng).如果這個(gè)吸合過程非常的快.那么薄膜就會(huì)發(fā)生高頻的震動(dòng).這個(gè)震動(dòng)就會(huì)發(fā)出聲音. 上面只是一個(gè)示意圖.實(shí)際上的喇叭并不是磁鐵吸音鐵框的問題,鐵框往往也會(huì)換成一個(gè)磁鐵,不過是永磁鐵,這樣不但可以吸引,還可以排斥.聲音幅度更大. 好了,總而言之一句話,就是來來回回的震動(dòng)就會(huì)產(chǎn)生聲音. 接下來,我們開始制作吧:電路相當(dāng)?shù)暮?jiǎn)單: 看到了吧,電路非常的簡(jiǎn)單.下面是四個(gè)鍵盤的按鍵開關(guān).上面就是一個(gè)三極管的放大.有人說,我直接接到單片機(jī)上就不行.完全可以!我為什么說是個(gè)電流放大呢,就是要發(fā)生的功率大,聲音大.如果你將蜂鳴器直接接到單片機(jī)的IO口上,當(dāng)然是可以的.但是只是用來驗(yàn)證用的,聲音太小,實(shí)際中是沒有用處的. 不過,我可得提醒你: 你如果這樣接,那就不對(duì)了.為什么?問題就在于,單片機(jī)的IO口的驅(qū)動(dòng)能力是絕對(duì)有限的,你現(xiàn)在讓它直接驅(qū)動(dòng)一個(gè)功率比較大(比較LED而言)蜂鳴器,是比較吃力的.但是你卻可以這樣設(shè)計(jì): 什么?沒有發(fā)現(xiàn)有什么不同?呵呵,看看,蜂鳴器的電壓方向變了.為什么這樣做,這就是一個(gè)開發(fā)經(jīng)驗(yàn)問題了:單片機(jī)的IO口吸收電流的能力要遠(yuǎn)遠(yuǎn)大于其提供電流的能力.所以不管是驅(qū)動(dòng)蜂鳴器還是驅(qū)動(dòng)LED發(fā)光二極管,都要做成低電平有效的這種形式,切實(shí)有效! (本人的實(shí)驗(yàn)板,具備上述模塊,其原理圖和上述完全一致.有實(shí)驗(yàn)板的朋友可以接著往下做了) 好了,硬件連接OK了,我們趕緊開始我們的編程吧: 我先說說算法,要實(shí)現(xiàn)一定頻率的震動(dòng),不就是將IO端口進(jìn)行一定頻率的開和關(guān)就是了.要進(jìn)行一定頻率的開和關(guān),就必須有一個(gè)計(jì)數(shù).在這里,定時(shí)計(jì)數(shù)器就比較合適了.自動(dòng)重裝載模式顯然比較合適.我們來看看程序吧(鑒于c語言良好的可閱讀性,我們先用c語言來編寫): #include- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國(guó)旗、國(guó)徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 智能 制作 全過程 卡爾
鏈接地址:http://www.820124.com/p-6616605.html