?? 圓夢小車(尋跡小車 ) step by step 之一.htm
字號:
href="http://www.robotdiy.com/article.php?sid=263"
target=_blank>軌跡采樣及邏輯控制部分硬件設計</A>;
<LI><A
href="http://www.robotdiy.com/article.php?sid=264"
target=_blank>開環控制功能</A>;
<LI><A
href="http://www.robotdiy.com/article.php?sid=265"
target=_blank>電機測速及轉速控制</A>;
<LI><A
href="http://www.robotdiy.com/article.php?sid=267"
target=_blank>電機驅動部分調試</A>;
<LI><A
href="http://www.robotdiy.com/article.php?sid=271"
target=_blank>單MCU控制的程序設計</A>;
<LI><A
href="http://www.robotdiy.com/article.php?sid=279"
target=_blank>尋跡小車 FollowMe—— 之八:“圓夢”之旅</A> </LI></OL>
<P>“圓夢小車DIY套件”推出后,受到了許多愛好者的青睞,深感欣慰!</P>
<P>但是,也感到有一些初學者拿到后不知該如何入手?咨詢了許多問題。為了減少困惑,我決定逐步基于小車平臺寫一些示例程序供大家參考,更主要的是期望起到“拋磚引玉”的作用,營造出一個良好的氛圍,讓“高手”有展示的機會,讓初學者有嘗試的可能。<BR></P>
<P>因為是第一篇,所以順便將反饋的問題予以回復。</P>
<H2>一、 裝配注意事項</H2>
<H3>小車裝配時,結構部分要注意:</H3>
<P>A. 輪轂由三個部分疊裝而成,形成兩個槽 ——
皮帶槽和輪胎槽,注意兩個槽的寬度不同,不要配錯了!!!主要是中間那一層的方向。<BR>B.
電機的小皮帶輪裝配要按照“裝配說明”所示,不要裝錯方向。<BR>C.
電機安裝時,注意電機皮帶輪和車輪的皮帶槽位置,要在一條直線上。<BR>D.
電機安裝時,建議將螺母放在上面,使用M3*8螺絲。<BR>E.
碼盤采樣器先裝,車輪后裝,會方便一些;安裝碼盤采樣器用M3*16螺絲,螺母放在上面,這樣便于調整。(見上圖)<BR>F.
車輪安裝后,要調整碼盤采樣器,避免與車輪碰擦。<BR>G.
車輪軸安裝使用M3*16帶飛邊的螺絲,注意,半圓頭處的差別!</P>
<P align=center><A
href="http://www.robotdiy.com/images/FollowMe_robot/robot_step_by_step/image003.jpg"><IMG
height=224
src="圓夢小車(尋跡小車 ) Step by Step 之一.files/image004.jpg"
width=331 border=0></A></P>
<P><BR>H. 如果使用配套的控制板,碼盤采樣器引出線可剪去4cm;電機引出線可剪去2cm。</P>
<H3>控制部分焊接、裝配注意:</H3>
<P>a)
焊接時可使用一個開口盒子將PCB墊起,便于插件,電阻、電容插件后可先在正面焊一個引腳,固定住器件,之后再在反面焊接。<BR>b)
焊接插座時要對照安裝說明,注意插座方向,并且對照原理圖,以及連接的對象,檢查是否正確,以原理圖為準。一定要做這一步,因為這樣可以幫助你將實物和原理圖對應,理解設計,便于調試。<BR>c)
焊接后不要急于插上芯片,裝上電池后,打開開關,檢查電源指示燈是否正常,正常后再關閉電源,插上芯片。<BR>d)
焊接驅動三極管D772、D882時,應先用M3*8螺絲固定后再焊接,固定要松緊適度,不要將三極管壓碎了。<BR>e)
發光二極管焊接時要注意正、負極,如果沒有把握不要貼著PCB焊接。<BR>f)
控制板的晶振(22.1184MHz)在焊好22p電容及單排插座后再焊,不要落底。</P>
<P align=center><A
href="http://www.robotdiy.com/images/FollowMe_robot/robot_step_by_step/image005.jpg"><IMG
height=267
src="圓夢小車(尋跡小車 ) Step by Step 之一.files/image006.jpg"
width=357 border=0></A></P>
<P><BR>g) 擴展板上的晶振也不要落底焊接,避免引起其它部分短路。<BR>h)
5V電源注意原理圖上的說明和裝配說明的提示!<BR>i)
焊接時,最好在原理圖中尋找對應器件時,也思考一下該器件的功能、所起的作用,這樣調試遇到問題時就能準確找到癥結,如果只是簡單“依樣畫葫蘆”,那DIY就沒有意義了。搞過PC機DIY的應該有所體驗,那個過程對你理解PC機原理有多大幫助!</P>
<P>如果能認真看原理圖以及裝配說明,DIY應該沒有障礙。</P>
<H2>二、 小車功能介紹</H2>
<P>為了便于后面文章敘述,不產生歧義,這里在介紹功能的同時,將一些常需要涉及的部分約定一個名稱,算是“術語定義”吧!這在工程上是基礎,看過技術標準的一定注意到,在技術標準中一定有“術語定義”部分,以確保標準的描述準確無誤。<BR></P>
<H3>結構部分:<BR></H3>
<P align=center><A
href="http://www.robotdiy.com/images/FollowMe_robot/robot_step_by_step/image007.jpg"><IMG
height=296
src="圓夢小車(尋跡小車 ) Step by Step 之一.files/image008.jpg"
width=360 border=0></A></P>
<P align=center>(點擊看大圖)</P>
<P><BR>底盤 —— 安裝所有部件的基礎;<BR>電機固定卡 —— 固定電機;<BR>小皮帶輪 ——
電機轉動輸出;<BR>碼盤采樣器 —— 一種遮斷式光電采樣器,間隙4mm;<BR>碼盤 ——
由50個約1mm的齒組成,和碼盤采樣器配合,實現對車輪轉動的檢測;<BR>輪胎 ——
增加摩擦力,使用5mm粗的O型圈;<BR>皮帶 ——
傳動用,將電機轉動傳遞到車輪,使用1.8mm粗的O型圈;<BR>軌跡采樣器安裝空隙 ——
為軌跡采樣器安裝提供方便;<BR>GP2D12安裝位置 —— 因為GP2D12
是最常用的紅外測距傳感器,所以預留了一個安裝位置,便于用戶使用;<BR>控制板安裝孔 ——
用于固定4個六角銅柱,提供控制板的安裝位置。</P>
<P align=center><A
href="http://www.robotdiy.com/images/FollowMe_robot/robot_step_by_step/image009.jpg"><IMG
height=253
src="圓夢小車(尋跡小車 ) Step by Step 之一.files/image010.jpg"
width=312 border=0></A></P>
<P align=center>(點擊看大圖)</P>
<P><BR>球形萬向輪 —— 小車的第三點支撐;<BR>輪轂 ——
由三部分組成,構成了皮帶槽、輪胎槽以及碼盤,中間還夾有滾珠軸承,以改善轉動性能;<BR>輪軸 —— 由M3*16
帶飛邊半圓頭螺絲構成;<BR>電機皮帶張緊槽 ——
為4個固定電機的螺絲提供的腰圓孔,便于調節皮帶的松緊。</P>
<H3>控制部分 —— 主控板:</H3>
<P align=center><A
href="http://www.robotdiy.com/images/FollowMe_robot/robot_step_by_step/image011.jpg"><IMG
height=393
src="圓夢小車(尋跡小車 ) Step by Step 之一.files/image012.jpg"
width=432 border=0></A></P>
<P align=center>(點擊看大圖)</P>
<P>電源開關 —— 只控制控制部分的電源,不控制H橋的電源;<BR>電源指示 ——
監測3V電源(MCU工作電源),正常則亮;<BR>左、右側H橋保護電路 ——
使用組合邏輯電路,確保H橋的同側驅動三極管不同時導通,造成短路。<BR>左、右側電機正、反轉指示 ——
調試時可以不接電機,降低耗電,同時也方便在小車運動時監測電機輸出狀態;<BR>主控工作指示 ——
這個LED是控制部分唯一的“人機界面”,可作為程序正常工作指示,以及調試時監測所期望知道的程序運行狀態,是Debug的主要手段之一。<BR>主控UART
——
控制MCU的UART接口,用于下載程序,與無線接口配合可以實現無線數據通訊,與USB轉UART接口配合可以與PC機通訊;<BR>4路軌跡采樣電路
—— 帶有背景光消除的反射式采樣電路,其功能不一定局限于軌跡采樣,后面再詳細描述;<BR>碼盤采樣電路 ——
左右兩路碼盤采樣預處理,主要是提供了可調整回差的施密特輸入處理,以避免采樣器停留在碼盤齒邊沿時造成誤信號。<BR>擴展插座
—— 將MCU的28個引腳及5V電源引到擴展板上,為擴充提供方便,同時使替換控制MCU成為可能。</P>
<P align=center><A
href="http://www.robotdiy.com/images/FollowMe_robot/robot_step_by_step/image013.jpg"><IMG
height=252
src="圓夢小車(尋跡小車 ) Step by Step 之一.files/image014.jpg"
width=288 border=0></A></P>
<P align=center>(點擊看大圖)</P>
<P>主控電源插座 —— 提供控制部分的工作電源;<BR>電機電源插座 ——
提供H橋驅動電源,這樣設計一是為了降低干擾,二是為改變電機工作電壓提供可能(注意:改變電機工作電壓時要相應修改H橋驅動三極管基極電阻);<BR>碼盤輸入插座
—— 兩路碼盤采樣器輸入,注意焊接引線時與電原理圖對應;<BR>電機輸出插座 ——
使用普通2針,主要是為了方便調整電機的轉動方向。</P>
<H3><BR>控制部分 —— 擴展板:</H3>
<P align=center><IMG height=360 src="" width=480> </P>
<P>USB插口 —— 因為目前的筆記本電腦已基本無串口,所以使用USB與PC連接;<BR>USB工作指示 ——
如果焊接正確,且在PC上安裝了相應的驅動程序,則連接到PC機后,此LED應亮;<BR>USB轉換芯片 ——
這是一個USB轉UART芯片,和PC機上的驅動程序配合,可以利用USB口形成一個虛擬的串口,既避免了沒有串口的困惑,也回避了編寫USB控制程序的困難。由于STC的MCU下載程序對串口時序有要求,不是每款USB轉換芯片都可以使用。<BR>USB轉UART接口
——
TTL電平串口,可以和主控電路連接,實現PC機與小車的通訊,以及控制MCU程序下載。也可以和無線接口連接,構建一個PC機的無線收發接口,還可以對無線接口的MCU編程;<BR>無線接口控制MCU
——
為了方便實現無線通訊,通過此MCU實現UART通訊向無線通訊的轉換,使得控制MCU收發程序不需要任何改動即可實現無線通訊;<BR>無線接口工作指示
—— 作為無線控制MCU的人機界面,方便監測其工作狀態;<BR>無線轉UART口 ——
與控制部分的主控UART相連,可以實現小車無線通訊;與USB轉UART相連,可以為PC機增加一個無線收發適配器;<BR>無線收發模塊
—— 433MHz的FSK無線收發模塊,價廉物美,十分適合于這種學習性的應用。<BR>MEGA64/128
轉換部分 ——
因為AVR已漸流行,低端的AVR芯片和所選用的控制MCU相差不大,無替換價值;但是MEGA64/128
功能強許多,但其封裝限制了學習者,所以此處提供了一個轉換區域,便于學習者選用。(買一塊單獨得轉換PCB價格也不菲)<BR>DIP40/窄DIP28MCU焊接區
—— 因為PIC單片機也廣為使用,其多為DIP40 封裝,且DIP40
封裝的其它MCU也很多,所以設計了一個裝換區,以方便選用。<BR>擴展接口 ——
控制板上的MCU所有引腳都接至此,可方便的適用和測試;<BR>GP2D12預留接口 ——
因為底盤上設計了GP2D12 的安裝位置,所以此處也為其預留的插座位置,以方便使用。<BR>擴展焊盤區 ——
余下的空間均布滿焊盤,以提供發揮的空間。</P>
<P>以上所有術語會在后面的敘述中使用,如遇到且不清楚含義時可查看以確定其位置和功能,幫助理解所描述的內容。</P>
<H2>三、 小車的第一個程序</H2>
<P>前面介紹小車各部分功能時說過,只有主控工作指示是作為“人機界面”設計的,相當于PC機的顯示器,而學過C語言的都知道,開始的第一個程序通常是顯示:<BR>Hello
World !</P>
<P>所以小車的第一個程序也想控制這唯一的“顯示”。</P>
<P>要實現控制主控工作指示,先看一下硬件是如何連接的:</P>
<P align=center><IMG height=399 src="" width=480></P>
<P>從圖中可以看出,主控工作指示由MCU的P3.4控制,低電平亮、高電平滅。根據這個首先編一個簡單的程序以實現對它的控制。<BR>這里順便探討一個問題:是用C語言開始學習還是用匯編?<BR>我傾向于使用C語言,至少對學過計算機原理的大學生而言如此,因為單片機應用學習主要是掌握這種智能器件的使用特點和過程,而非關注其內部工作原理,使用C語言可以方便的轉向任何一種單片機,而不會過多的被某種單片機所羈絆。<BR>匯編語言可以適當了解,在集成開發環境(IDE)下,多留意C語言編譯后的匯編代碼,看看是如何實現的即可。<BR>言歸正傳,首先,做一個最簡單的程序,控制主控工作指示燈閃爍:</P>
<P>/*******************************************************/<BR>/*
圓夢小車StepbyStep 程序之一 */<BR>/* —— 控制“主控工作指示” */<BR>/*
20070609 by Dingqi
*/<BR>/*******************************************************/<BR>//
注:以下文檔的 TAB 為 2
個字符!<BR>/*-----------------------------------------------------<BR>這段程序用最簡單的方式控制&quot;主控工作指示&quot;
,<BR>目的是示意一下如何裝載一段有效的 C 語言程序。</P>
<P>因為程序簡單,故所有內容合并在一個文件中。<BR>-------------------------------------------------------*/</P>
<P>#include &lt;STC12C5410AD.h&gt; <BR>/*
STC12C5410AD 的頭文件,為MCU中各個硬件寄存器定個名稱,以便C語言中使用*/</P>
<P>sbit Work_Display = P3^4; <BR>//
根據硬件設計用與“主控工作指示”接近的名稱取代硬件名稱,使程序減少與硬件的相關性</P>
<P>#define LIGHT 0 <BR>//
亮邏輯值,用直觀的符號化常數替換與硬件密切相關的邏輯值,增加程序的可讀性、可移植性。<BR>#define
DARK 1 <BR>// 暗邏輯值</P>
<P>#define LIGHT_TIME 1000 //
亮時間,使用符號化常數,便于修改,增加程序可讀性<BR>#define DARK_TIME 1000 //
暗時間</P>
<P>#define P3MODE0 0x10 // 00010000,P3.4 設置為開漏輸出,其余均為標準
51 口;<BR>#define P3MODE1 0x10 // 00010000,</P>
<P>/*********** 主程序 *****************/</P>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -