步驟1:收集物品
《表樣式=“ border-collapse:折疊;”》 ?Arduino Nano x1 ?加速度計(ADXL335) x1 ?5V直流電機+車輪 每個x2 ?牛車輪* x1 ?L293D電機驅動器+ 16針IC插座 每個x1 ?434 MHz射頻發送器 x1 ? 434 MHz射頻接收器 x1 ?HT-12E編碼器IC + 18針IC插座 每個x1 ?HT-12D解碼器IC + 18針IC插座t 每個x1 ?LM7805穩壓器 x1 ?按鈕開關 x2 ?紅色LED + 330O電阻器 每個x2 ?黃色LED + 330O電阻器 每個x1 ?綠色LED + 330O電阻器(可選) 每個x4 ?51kO和1MO電阻器 每個x1 ?10μF徑向電容器 x2 電池,電池連接器,USB電纜,跳線,母接頭,2針螺絲端子,PCB,機箱和常用的焊接配件
如果您想知道為什么我們為什么要使用事實是,射頻發射器和接收器模塊只有4個數據引腳,這意味著我們只能驅動2個電機,因此使用牛輪來支撐結構。但是,如果您覺得四輪摩托看起來更酷一點,請放心,這是可以解決的!在這種情況下,只需從列表中刮出牛輪,添加另一對5V DC電機,每個電機都帶一個輪,,并注意在步驟3結束時討論的簡單技巧。/p》
最后,對于勇敢的人來說,可以在設計中進行其他一些小的修改,其中包括對您自己的Arduino進行設計。前往下一步的“獎金”部分,親自看看。您還需要一些額外的電源: ATmega328P , 28pin IC插座, 16Mhz晶體振蕩器,兩個 22pF陶瓷電容,另一個 7805穩壓器,另外兩個10μF徑向電容和10kΩ,680Ω,330Ω電阻,是的,減去Arduino !
步驟2:連接變送器
我們將把項目分解為兩個組成部分:發射器和接收器電路。發射器由一個加速度計,一個Arduino和一個射頻發射器模塊以及一個HT-12E編碼器IC組成,所有模塊均按照所附的原理圖進行接線。
如前所述,該加速度計用于識別我們的加速度計。手勢。我們將使用三軸加速度計(基本上是三個單軸加速度計)來滿足我們的需求。它可以用來測量所有三個維度上的加速度,并且您可能已經猜到了,它不會產生一個,而是相對于三個軸(x,y和z)的三個模擬值的集合。實際上,我們只需要沿x和y軸加速,因為我們只能沿四個方向驅動流動站:向前或向后(即,沿y軸)和向左或向右(即,沿x軸)。如果要構建無人機,我們將需要z軸,以便我們也可以通過手勢控制它的上升或下降。在任何情況下,加速度計產生的這些模擬值都必須轉換為數字信號,以便能夠驅動電動機。 Arduino負責解決這一問題,Arduino也將這些信號轉換后通過RF發送器模塊發送到流動站。
RF發送器只有一項工作: 將天線3處的“串行”數據發送到天線1處。提倡使用 HT-12E ,這是一種12位并行/串行數據編碼器,它可以從Arduino在AD8至AD11行收集多達4位并行數據,從而使我們能夠為多達24 = 16種不同的I/O組合騰出空間,而不是RF發射器上的單個數據引腳。從編碼器上的A0到A7線提取的其余8位構成地址字節,這有助于將RF發送器與相應的RF接收器配對。然后將這12位組合在一起并進行序列化,然后傳遞到RF發送器的數據引腳,后者再將ASK將數據調制到434MHz載波上,并通過天線在引腳1處發射出去。
從概念上講,任何以434Mhz監聽的RF接收器都應該能夠攔截,解調和解碼該數據。但是,HT-12E和HT-12D對應地址線(12位串行到并行數據解碼器)上的地址線允許我們通過路由數據來使射頻收發器對唯一。僅與目標接收者進行通信,從而限制了與所有其他接收器的通信。我們要做的就是在兩個前端上完全相同地配置地址線。例如,由于我們已將HT-12E的所有地址線都接地,因此必須在接收端對HT-12D進行同樣的處理,否則流動站將無法接收信號。 通過這種方式,我們還可以通過在每個接收器的HT-12D上相同地配置地址線,用單個發射器電路控制多個流動站。或者,我們可以戴上兩副手套,每只手套上都貼有包含不同地址線配置的發射器電路(例如,一根接地,所有地址線都接地,另一根接地的線都保持高電平,或者一根接地的線,而其余七根保持著。高,另一條接地兩根線,而其余六根保持高電平,或它們的任何其他組合),每根轉向操縱多個相同構造的漫游車。
組裝電路時要注意的一件事是 Rosc的值。 HT-12E在引腳15和16之間有一個內部振蕩器電路,可通過在這些引腳之間連接一個稱為Rosc的電阻來使能該振蕩器。實際上,為 Rosc選擇的值確定了振蕩器頻率,該頻率可以根據電源電壓而變化。為Rosc選擇合適的值對于HT-12E的功能至關重要!理想情況下,HT-12E的振蕩器頻率應為HT-12D振蕩器頻率的1/50倍。因此,由于我們使用5V電壓工作,因此我們分別為HT-12E和HT-12D電路選擇1MΩ和51kΩ電阻作為Rosc。如果您打算在不同的電源電壓下操作電路,請參考隨附的HT-12E數據表的“振蕩器頻率與電源電壓”圖第11頁,以確定確切的振蕩器頻率和電阻。
此外,作為附帶說明,我們將使用母頭(與IC插座具有類似目的)來插入加速度計,RF發射器和電路中的Arduino,而不是直接將它們焊接到PCB上。目的是為了適應組件的可重用性。假設您已經設計了一段時間,因為您已經設計好了手勢控制的流動站,而現在它正坐在那里,一半被灰塵覆蓋,位于獎杯架的頂部,您偶然發現了另一個利用加速度計功能的出色指導。所以你會怎么做?您只需將其從流動站中拉出,然后推入新電路即可。無需召喚“亞馬遜”為您帶來新的機會:-p
獎金:放棄Arduino,但不要!
以防萬一,感覺有點冒險,尤其是如果您認為將這種設計精美的奇跡(當然是Arduino)花費在我們這樣的瑣碎任務上有點過頭了,請耐心等待一段時間;
我們的目標是制造Arduino(實際上是Arduino的大腦;是的,我在談論ATmega IC!)。團隊的永久成員。 將ATmega編程為一次又一次地運行一個草圖,以便它可以作為電路的永久部分,就像HT-12E一樣,它只是一個IC,只坐在那里,做應該做的事。
無論如何,要繼續進行此升級,只需按照所附的第二個原理圖修改電路即可。在這里,我們只需用ATmega的IC插座替換Arduino的母接頭,在IC的復位引腳(引腳1)上添加一個10K上拉電阻,并在引腳9和10之間使用外部時鐘將其泵浦不幸的是,如果我們放棄了Arduino,我們也將其內置的電壓調節器也放開了;因此,我們還必須在此處復制我們用于接收器的LM7805電路。此外,我們還利用分壓器來為加速度計供電所需的3.3V電壓。
現在,唯一要注意的就是對ATmega進行編程以完成其工作。不過,您必須等到第4步。因此,請繼續關注…
步驟3:而且,接收器
接收器由一個射頻接收器模塊,一個HT-12D解碼器IC和一對在L293D電機驅動器的幫助下運行的直流電機組成,所有電機均按照隨附的原理圖進行接線。
RF接收器的唯一工作是解調載波(通過其在引腳1處的天線接收),并在引腳7處呈現獲取的“串行”數據被 HT-12D 拾取并反序列化。現在,假設HT-12D上的地址線(A0至A7)與HT-12E的地址線相同,則通過數據線提取數據的4個并行位并通過 HT-12D上的(D8到D11),連接到電動機驅動器,電動機驅動器又將這些信號解釋為驅動電動機。
再次,請注意四川‘竹根即可。 HT-12D在引腳15和16之間也有一個內部振蕩器電路,該電路通過在這些引腳之間連接一個稱為Rosc的電阻器來使能。實際上,為 Rosc選擇的值確定了振蕩器頻率,該頻率可以根據電源電壓而變化。為Rosc選擇合適的值對于HT-12D的功能至關重要!理想情況下,HT-12D的振蕩器頻率應為HT-12E振蕩器頻率的50倍。因此,由于我們工作在5V電壓下,因此我們為HT-12E和HT-12D選擇了1MΩ和51kΩ電阻作為Rosc。電路。如果您打算在不同的電源電壓下操作電路,請參考隨附的HT-12D數據表的“振蕩器頻率與電源電壓”圖第5頁,以確定確切的振蕩器頻率和電阻。
還可以,不要忘記RF接收器的母頭。
可選地,可以通過330Ω限流器連接LED電阻連接到HT-12D的4個數據引腳中的每一個,以便幫助確定在該引腳上接收的位。如果接收到的位為高電平(1),則LED會點亮;如果接收到的位為低電平(0),則LED會變暗。另外,也可以將單個LED綁在HT-12D的VT引腳上(同樣通過330Ω限流電阻),如果有效傳輸,該指示燈會亮起。
現在,如果您正在尋找我在第一步中提到的電動機的駭客,這太容易了! 只需將第二組中的兩個電動機并聯連接即可。之所以如此,是因為每組中的電動機(左側的前部和后部電動機,右側的前部和后部電動機)絕不會反向驅動。也就是說,為了使流動站向右轉,必須同時向前驅動左側的前部和后部電動機,并且必須向后驅動右側的前部和后部電動機。同樣,要使流動站向左轉,必須同時向左驅動左側的前部和后部電動機,并且必須向前驅動右側的前部和后部電動機。因此,將同一對電壓饋入一組中的兩個電機是安全的。而且,解決該問題的方法是簡單地將它們并聯起來。
步驟4:進入代碼
要做的只是使流動站啟動并運行。是的,您猜對了! (我希望您做到了)我們仍然必須將加速度計的讀數轉換為電機驅動器可以解釋為能夠驅動電機的形式。如果您認為由于加速度計的讀數是模擬的,并且電動機驅動器期望數字信號,那么我們將必須實現某種ADC,這不是技術上的要求,但這就是我們要做的。并且它非常簡單。
我們知道加速度計沿線性軸測量重力加速度,并且該加速度表示為在地面和電源電壓之間波動的電壓水平,我們的微控制器讀取該電壓水平輸入的模擬值在0到1023之間變化。但是,由于我們將加速度計的工作電壓設為3.3V,因此我們建議將10位ADC(集成在Arduino上的ATmeaga中)的模擬參考值設置為3.3 V 即可。它只會使事情更容易理解;不過,即使我們不這樣做,對于我們的小實驗也無濟于事(我們只需要稍微調整一下代碼)。但是,為此,我們只需將Arduino上的AREF引腳(ATmega上的引腳21)連接到3.3V,并通過調用 analogReference(EXTERNAL) 來表示代碼中的這一更改。
現在,當我們將加速度計放平并模擬讀取沿x和y軸的加速度時(記住嗎?我們只需要這兩個軸),我們得到的值約為511(即0到1023之間的一半),即只是說沿這些軸的加速度為0。與其深入研究事實的細節,不如將其想象為圖形上的x和y軸,如圖所示,值511表示原點,值0和1023表示端點。調整加速度計的方向,使其針腳指向下方并靠近您,否則您可能會反轉/互換軸。這意味著,如果將加速度計向右傾斜,則應沿x軸讀取大于511的值,如果將加速度計向左傾斜,則應沿x軸讀取小于511的值。 x軸上。同樣,如果將加速度計向前傾斜,則應沿y軸讀取大于511的值,如果向后傾斜加速度計,則應沿y軸讀取小于511的值。這就是我們在代碼中推斷流動站應駛入的方向的方式。但這也意味著我們必須保持加速度計真正穩定并平行于平面對齊,才能沿511方向讀取511。以便將流動站停在兩個軸上。為了稍微簡化此任務,我們如圖所示定義了一些形成邊界的閾值,以便只要x和y讀數在范圍之內,流動站就保持靜止,而且我們可以肯定知道流動站一旦超過閾值,必須將其設置為運動狀態。
例如,如果y軸讀數為543,我們知道加速度計是向前傾斜的,因此我們必須使流動站向前。我們通過將引腳D2和D4設置為高電平并將引腳D3和D5設置為低電平來實現此目的。現在,由于這些引腳直接連接到HT-12E,因此信號被串行化并發射到RF發射器,僅被位于流動站上的RF接收器捕獲,借助于HT-12D,該信號反序列化并將它們傳遞給L293D,L293D依次解釋這些信號并驅動電動機前進。
您可能想要更改這些閾值,以便校準靈敏度。一種簡單的方法是將加速度計連接到Arduino,然后運行一個草圖,將x和y讀數吐到串行監視器上。現在,只需稍微移動一下加速度計,瀏覽一下讀數并確定閾值即可。
就這樣!將代碼上傳到您的Arduino并享受!!或者,也許不是很快:-( 如果您沒有跳過獎金部分,將代碼上傳到ATmega將會意味著更多工作。您有兩種選擇:
選項A: 使用USB到串行設備(例如FTDI FT232基本分線板),只需將TTL接頭連接線連接到ATmega上的相應引腳即可。根據下面的映射:
突破板上的針腳微控制器上的針腳
DTR/GRNRST/復位(引腳1)通過0.1μF電容
RxTx(Pin 3)
TxRx(Pin 2)
Vcc+ 5v輸出
CTS(未使用)
GndGround
現在,將USB電纜的一端插入分線板,另一端插入PC并按通常的方式上載代碼:啟動Arduino IDE,選擇一個合適的串行端口,設置
選項B: 如果周圍有人躺在地板上,請使用UNO 。只需將您的ATmega插入UNO,按通常的方式上載代碼,將IC拔出,然后將其推回到發送器電路中即可。像餡餅一樣簡單!
這兩個選項都應該起作用,前提是您足夠聰明,可以先燒掉引導加載程序,然后再使用ATmega,或者如果您更聰明地購買,首先安裝了引導程序的ATmega。如果沒有,請按照此處概述的步驟進行操作。
Andddd,我們正式完成!我希望您喜歡這個冗長的指導。現在,繼續進行,如果還沒有完成,請完成構建您的流動站,試一會兒,然后再返回以對下面的評論部分進行大量查詢和/或建設性的批評。
責任編輯:wv
-
RF收發器
+關注
關注
1文章
72瀏覽量
24525 -
加速度計
+關注
關注
6文章
703瀏覽量
45924
發布評論請先 登錄
相關推薦
評論