本帖最后由 lzy1999 于 2018-11-22 12:01 編輯
前文:
最近想做點遙控的小玩具,所以一直在尋找一款實用的開發板(最好是兼容Arduino的,因為我只會玩arduino,對于其他單片機編程燒寫什么的一概不知道。。。),所以苦苦尋找了許久,然后發現了下面兩款板子:號稱世界上最小的arduino:基于ATTINY85的主板以及DF家的beetle。這兩塊板子體積都挺小的beetle(20*22mm)以及attiny85(23*18mm),功能上來說肯定Beetle更加優秀,但是價格略高。便宜的attiny85僅有的6個端口并不夠我使用。。而且對于一些項目來說,對于主板的體積還是有一定要求的,這兩塊板子搭配上擴展板之后可能過于龐大(而且市面上還找不到這樣的擴展板,DF家到是出了一塊,但僅僅是將所有引腳引出)。于是糾結好久之后,按捺不住想自己畫板子了,于是有了下文。
(上面是兩種市面上可以購買到的最小的Arduino板)
第一部分
選取自己想要的功能是十分必要的,俗話說魚和熊掌不可兼得,畫電路板也是一樣,不可能一塊小小的板子上啥功能都有,所以先要明確自己的使用環境以及所需要的功能!!!
我的使用環境:
一些無線遙控的玩具或者機器人上,體積上越小越好,這些玩具一般是3.7V鋰電池供電的,而且驅動方式一般是以電機或者舵機為主,一般至少3路電機驅動,當然要有可以控制玩具燈光的接口,因為這樣比較炫酷,嘻嘻 。
有了使用環境,那么需要的功能就很明了了!下面就是我列舉的一些功能:
1.首先最主要的是遙控!!(重點! ),所以一個給無線通訊模塊預留的接口是最重要的,同時呢,給無線模塊供電工作也要做好!!(不然供電電壓不夠的話無線模塊輸出的數據就亂掉了,然后整個單片機就傻掉了。。。。然后就。。。 )
2.供電方式是3.7V鋰電池,所以一路電源升壓電路是肯定必要的啦,這個電路可以將鋰電池的電源升壓到5V之后輸出給單片機使用的。那么,電池玩著玩著沒電了怎么辦?這時候有個電壓報警器就是很方便的了,他可以很好的保護我們的電池不會過放電!所以,劃重點!! 鋰電池供電部分我們需要一個升壓電路和一個電壓報警器電路。
3.說到電源的問題,是不是我們日常見到的電壓有兩種呢?一種是3.3V,一種是5V,有些芯片工作需要5V但是有的只要3.3V。你可能會問兩個不就是差1.7V嗎,接上去也沒多大事,然而事實是這個芯片可能會活不久。。(不要問我怎么知道的)因此,為了兼顧多種芯片,我決定多加上輸出電壓3.3V的穩壓電路。
4.驅動方面,我說到主要是以舵機和電機為主,舵機可能不需要驅動(直接接PWM輸出就好了),但是電機是必須要接驅動的(曾經有直接用單片機端口驅動電機的,后來他就棄坑了。。。)而且接上驅動模塊之后電機還可以調速以及調節正反轉。所以至少3路的驅動以及一路或者多路的舵機接口是必要的。
5.控制燈光的接口就比較好弄了,直接懟上單片機的I/O口即可(注意單片機I/O口控制一般小的led還是可以的,誰要控制什么1w或者10w的大功率led燈珠就是作死了。。。)
6.需要帶有一些常規的數字接口或者模擬輸入接口(這個數量當然是越多越好,方便后期擴展)
整理了一下,我列出了一個表格:
列出來了需要的功能,我感覺整個工作就完成了一大半,有選擇恐懼癥的我在決定哪些功能時候真的是非常頭痛,然而現在感覺好了許多,設計的方向也就比較明了了。
接下來就是糾結的選器件了:
1.單片機的話我是真的除了atmel系列之外都不會,所以我毫不猶豫的選了Atmega328P-AU,這個芯片也是Arduino nano上使用的,由于需要體積小巧的要求,所以我選擇的是貼片TQFP封裝的。而且這個芯片買回來燒寫上bootloader之后就可以使用Arduino ide來開發了,這也是我選擇它的原因。
2.單片機選了當然需要一個Rs232轉串口芯片給Atmega328p寫程序啊,但是我并不想給整個板子加上一個電平轉換芯片,一個是因為這樣會占用本來就小的版面空間和多出一個usb接口,我還不如使用類似Arduino pro mini的那種方案,使用外置的RS232轉TTL芯片去給328p寫固件,這樣可以最大化的節省板面空間(正經臉.JPG)
3.對于無線模塊的選擇可以說是非常重要了,穩定的模塊決定了通訊的質量是否足夠高,也決定了遙控的延遲以及手感。這部分我木有太多糾結,因為目標非常明顯,就是NRF24L01,用過的都說好。而且使用SPI協議與Atmega328p通訊,速度快且穩定。這里放一張NRF24L01的圖:
4. 5V升壓的電路的設計我取自一款升壓模塊的電路,我在網上找到了原理圖,如下:芯片使用的是E50D,輸入電壓0.9V-5V,恒定輸出電壓5V,最大輸出電流超過500ma,足夠我使用了。
5.3.3V的穩壓芯片我使用的是MIC5205-3.3,MIC5205是一款LDO芯片(低壓差線性穩壓芯片)輸入電壓與輸出電壓之間最少可以只有350mv的電壓差,對于電源不太穩定的電路實在再合適不過,最大輸入電壓16V,最大輸出電流150ma,恒定輸出電壓3.3V。電路圖如下:
6.電機驅動我并沒有選擇使用集成的電機驅動IC,因為我看了看封裝都過于龐大,不適合這種小體積項目,而且我并不太需要雙向的驅動,只用單向的即可。挑來挑去,我決定使用最簡單的mos管驅動電機,便宜而且實用。mos管的話我使用的是nmos管,不建議使用pmos管的原因是pmos管的導通內阻較大,會造成很大的損耗。對著數據表格看了半天之后,我看中了AO3400,最大通過電流5.7A,足夠使用了。
7.對于板子我還添加了一路電壓輸入,因為顧及到有些電池電壓在5V以上的情況(例如7V,9V和12V)我的板子也要可以正常工作,于是我添加了一個降壓電路,可以將輸入的7-12V電壓降到5V供給整個系統使用。芯片選的是ME6210A50PG,同樣是一款低壓差線性穩壓芯片,最大輸入電壓18V,最大輸出電流500ma,恒定輸出電壓5V,電路圖如下:
至此為止,所有的器件都選擇完畢了,下面就是細化每個部分的設計以及將電路圖畫出來。我會介紹一些基本的電路知識給大家,請大家拍磚。 
第二部分
對于電路的設計,我主張從大到小,從重要到次要的順序來設計:這樣我們可以搞清楚整個系統的主次關系,方便日后查找問題。
1.Atmega328P外圍電路的設計
Atmega328p的外圍電路著實簡單,僅需要幾個器件就可以完成(基本上就是晶振電路和復位電路)沒有什么好說的,我也省省篇幅,歇一會。。。上圖!!!
2.NRF24L01接口的設計
NRF24L01與Atmega328P采用SPI協議進行通訊,所以我將對應的引腳連接到Atmega328P上。在這里我給電源正負極之間接了一個47uf的電解電容,是為了保證電壓的穩定(因為NRF24L01對電源的要求還是比較高的)
3.鋰電池升壓電路的設計(輸入0.9-5V,輸出5V)
整個升壓電路其實就只需要幾個零件,在這里我說明需要注意的一些事項:選擇的電感一定要是功率電感,二極管的話務必使用肖特基二極管(因為E50D的工作頻率在300khz左右,所以普通二極管頻率沒有肖特基二極管這么快)推薦型號是1N5817或者1N5819
4.3.3V穩壓電路的設計(輸入5V,輸出3.3V)
首先放上電路圖,這個電路沒有什么需要的外圍器件,僅僅一個電容用來濾波即可
5.7-12V降壓電路的設計(輸入7-12V,輸出5V)
這個電路和上一個基本上一樣的,就是在輸入端上加了一個10uf電容濾波,可以過濾掉一些輸入電壓的紋波。
6.電機驅動電路的設計
對于電機驅動電路,電路圖如下。其中單片機的輸出信號腳經過一個保護電阻之后連接在mos管的柵極上,同時在mos管的柵極還有一個電阻接地,這是因為三極管的柵極存在結電容,所以這個電阻給mos管關斷時候提供了一條電子釋放通道。對于電動機的這類感性負載,用mos管控制開關的時候容易產生較大的感生電動勢,容易擊穿mos管,于是我添加了一個續流二極管在電動機的兩端,來減少反向電壓。同樣的,這個二極管盡量選擇肖特基二極管,以滿足頻率要求,我這里采用的是1N5819。
7.報警電路的設計
對于這個報警器我想了很久,想過很多方式去控制蜂鳴器的鳴叫,糾結許久之后才定下來這個方案,采用Atmega328p采集電池電壓數據,通過一個數字口來控制蜂鳴器的鳴叫。對于電壓采集電路,因為輸入的電壓電壓低于5V,所以直接使用Atmega328p的模擬輸入端口讀取電壓數據。
關于控制蜂鳴器的鳴叫,我選擇的是有源蜂鳴器,這種蜂鳴器只需要給一個高低電平信號即可發出聲音,但是聲音頻率是固定的,若是選擇無源蜂鳴器,我還需要給它輸入PWM信號,這樣做會占用一個PWM口,所以權衡之下還是使用有源蜂鳴器。
但是糾結的我又想了想,要是沒電的時候一直響豈不是很煩人?我更希望是響一聲,停幾秒,再響一聲,再停幾秒。。這種的,于是我花了點時間回顧了單穩態觸發器(我真的是給自己找坑挖。。。)最后設計出來如下電路:
這里采用555芯片制作了一個單穩態觸發器,觸發器的輸出口通過一個三極管控制蜂鳴器,需要注意的是蜂鳴器同樣屬于感性負載,務必接上一個續流二極管,這個二極管由于工作頻率較低,沒有什么限制。但是我還是選用了一個肖特基二極管(并不想多買一種二極管)555芯片的reset端我連接上了Atmega328p的四號端口,用這個腳的信號來控制整個蜂鳴器電路是否工作。這個電路即可控制蜂鳴器響一下,停一下。
8.其他輸出接口的設計
首先是給單片機下載程序的接口,如圖
然后是兩種電源輸出的接口(3.3V和5V)
再就是4路模擬量輸入接口(在這里我預留了Atmega328p的i2C接口A4和A5,方便連接其他使用i2C的設備)
最后就是6路的數字輸出口,其中D3,D5,D6,D9,D10 5路為PWM和I/O復用端口,方便連接舵機,接入其他電機驅動板或者連接其他傳感器設備。D2腳作為Atmega328p的外部中斷端口,可以控制單片機的中斷操作。但是注意,D3,D5,D6口也用來控制板載的mos管,所以當使用板載mos管控制電機時,這幾個管腳請不要使用。
總結
至此為止,整個電路就設計完畢了,接下來就需要進行PCB電路板的排版以及布線,這個星期有點小忙,關于接下來的設計我會在下周放出,請大家期待,如果有什么關于電路設計以及PCB板的問題,歡迎大家提問,我會認真的回復你們。。
最后,感謝你們閱讀我寫的這么多文字,希望我此次做的電路可以對你們提供一些幫助和引導,謝謝。 
|