自從上次制作了一塊集成了電機驅動的最小板之后,我就發現現在市場上一塊便宜且功能又多的遙控器都沒有,于是遂產生了自己畫一塊的念頭,并且這個遙控器還可以結合著我的電機驅動板使用,這樣一整套的遙控方案就有了,以后想做什么遙控車,遙控船,機器人和遙控飛機之類的項目的話,就可以拿來直接用了。就會方便很多,并且便攜和穩定性都會好很多,于是這次我設計了一個遙控器的板子,體積很小,整個版面只有9.6mm*4.6mm,可以稱的上是掌上遙控器,并且常用功能都不少。
第一部分
首先當然是對整個遙控器的功能規劃,先定目標,就是我的成品需要達到什么功能,這樣方便之后設計中可以保證我們目標的專一以及成品后就可以按照我的目標表去一一核對我的目標功能是否全部達標。
1.單片機選擇
對于單片機我還是選擇atmega328,其實atmega8也可以選擇,而且價格上比較占優勢,并且兩個芯片的引腳分部都是一樣的,所以后期可以更換單片機芯片,而不用改變電路結構,由于atmega8我還未使用過,于是先考慮用atmega328實現,下面是Atmega328的引腳圖。
2.無線通訊模塊
采用的還是NRF24l01這款無線模塊,在某寶上有許多版本的NRF24l01,我使用的是采用DIP2*4引腳輸出的這款,據說還有一款加載了功率放大器的板子,接口是兼容的,所以如果后期想增加遙控距離的話可以采用帶功放的模塊。
關于給它供電的電路,還是使用mic5205的方案,我在許多項目中都會用到它,體積小巧(采用SOT23-5封裝)并且輸出電流足夠(150ma),外圍電路足夠簡單,兩個電容即可。不過大家在選擇電容的時候注意它的最大承受電壓,一般商家會在參數里面標注,我選擇的是耐壓10V的10uf電容。
3.搖桿
首先是作為一個遙控器,該有的比例控制搖桿肯定必須有,這樣我們就可以操控一些比例通道(例如電機速度,燈的亮度,舵機旋轉角度以及所有需要連續變化的量)。參照市面上的常用設計來看,設計兩個全向搖桿是比較好的選擇(類似于PS2手柄上的搖桿)關于搖桿的原理,我簡單的介紹一下:
其實搖桿的本質就是讓搖桿的轉軸連接著一個電位計,使用電位計對搖桿進行定位,這樣我們通過讀取電位計的電壓值就可以計算出搖桿的位置。如果是全向搖桿,一般就會有兩個電位計去對搖桿在X軸和Y軸上的位置進行定位,這樣使用單片機的ADC即可讀取到電壓,從而得知搖桿的位置。
那么每一個搖桿都有兩個運動軸,兩個搖桿就有四個運動軸,這樣我就可以用兩個搖桿去控制四個比例通道了。
4.按鍵
對于四個比例通道的控制顯然不夠用,有些項目也需要開關量的控制(比如燈的開關,模式的切換)于是我設計了兩個額外的按鍵開關,可以用來控制一些開關量。
關于按鍵開關的檢測電路我在這里直接將按鍵開關的兩個引腳分別連接到GND和單片機的引腳,沒有設置上拉電阻的原因是我會使用單片機內部的上拉電阻,所以不再需要外接上拉電阻,這樣也節省了版面空間。
對于引腳的連接是需要分外注意的一點,一定要和單片機的外部中斷引腳連接,這里講解一下原因:如果不使用中斷引腳去檢測按鍵開關的狀態話,由于按鍵操作的時間很短,這容易造成單片機在運行其他程序的時候錯過按鍵檢測的程序,這樣按鍵的按下就無法檢測到。如果按鍵連接在中斷引腳,這樣無論單片機在執行什么程序,都可以第一時間停止執行當前程序,進入中斷服務程序去執行按鍵指令。對于atmgea328來說,有兩個外部中斷引腳,于是我將這兩個按鍵連接到這兩個引腳上。
5.boost升壓電路
這一次給atmega328供電的電路是采用E50D方案的升壓電路,最大輸出電流800ma左右,足夠使用了。在這里提醒一句,由于E50D工作頻率在300khz左右,所以大家在布線的時候注意和低頻線路的隔離。
6.供電
在遙控器的供電上我好不猶豫選擇了18650鋰電池,這種規格的電池是市面上最常見的(許多充電寶里面都會用到)而且內阻也低,體型規整,方便布線以及固定。具體哪個牌子的18650鋰電效果好,據說松下的電池不錯,但是價格感人。。 所以我用了神火的18650,先試試,不行的話換其他家的。
7.充電電路
充電芯片的話,對于一節鋰電池的方案大家還是比較統一的,某寶上搜18650充電板一搜一大把,但是究其使用的充電IC,基本上都是TP4056。不僅便宜而且用起來反響不錯,唯一問題就是發熱有點大。。 。
我放出我的電路圖,大家如果有想設計充電電路的也可以借鑒一下。
R2連接在PROG引腳,用來設定充電電流,充電電流的設定可以參考公式:I=1/R*1200來設定,CHRG是充電狀態指示引腳,當充電進行時,為低電平,充電完成后為高阻態。充電的接口用的就是micro usb,這樣使用手機充電器就可以充電。
8.電壓檢測
關于電池保護電路我也想過,但是想到這是遙控器,萬一低電量的時候保護板把輸出斷開了怎么辦?(保護電路會在電池低電量的時候斷開輸出電壓)那樣豈不是會造成失控的后果?于是我放棄了使用保護電路,改為使用電壓檢測電路,這樣當電池低電壓的時候,可以維持整個系統的運作一段時間而不會立刻斷電,從而提醒使用者更換電池。
電壓檢測電路的話很簡單,直接連接到atmega328的A0引腳,用ADC采樣電壓值。而關于報警電路,我沿用上次設計最小板的報警電路,使用555構成單穩態觸發器,可以控制蜂鳴器斷續鳴叫。
9.USB轉TTL電路
因為使用了micro usb接口,索性再添加一個USB轉TTL電路,這樣燒寫程序和充電就可以共用一個接口了,使用起來方便了許多。
至于TTL芯片的選用,自然是考慮CH340系列芯片了,使用范圍很廣而且比較穩定,在CH340的產品線中也有很多不同型號的,使用比較多的是CH340G以及CH340C的型號,但是由于他們使用的是SOIC16的封裝,體積較大,所以我采用了CH340E,是CH340中最小的一款,外圍電路簡單,十分適合我的項目。
其中TNOW表示串口正在發送,高電平有效,于是我接了一個LED燈來指示串口的狀態,這樣的設計在一些USB轉TTL模塊上也比較常見。
10.預留接口
由于遙控器上不會涉及到太多的外接設備,這一次我僅僅預留了少許的接口。因為atmega328需要燒寫bootloader,所以我預留了一個燒寫的接口,方便以后燒寫。對于I2C接口我也有預留,主要是方便以后連接led顯示屏使用
第二部分
原理圖繪制好了之后就是導出繪制PCB板了,因為要手持操作,所以對于外形還是很重要的,我繪制了一個長方形的邊框,并把四周倒圓角,這樣摸起來不會刮手。
經過一個多小時的布線以及擺放元件位置,我完成了設計:
同時,在板子上我也預留了四個安裝孔,這樣方便以后遙控器的固定(比如加一個外殼之類的)
總結
到這里,整個板子就設計完成了,我已經發送廠家打板,板子預計本周就會到貨。下一章里我就會對板子焊接、測試以及做出一些必要的改進。如果有什么好的建議,歡迎在下方留言,謝謝。
|