歡迎訪問惠州市協(xié)昌電子有限公司!
公司座機(jī):
0752-3198333
廠房招商:
13542799933(洪先生)
PCB業(yè)務(wù):
18319635858(袁先生)
公司傳真:
0752-3209333
聯(lián)系郵箱:
sales@xcpcb.net
公司地址:
廣東省惠州市仲愷高新區(qū)潼僑工業(yè)園聯(lián)發(fā)大道南面
現(xiàn)在,很多人手上都有一兩個(gè)電子設(shè)備,但是卻很少有人清楚其中比較關(guān)鍵的部分(PCB電路板)是如何制作出來的。我雖然懂點(diǎn)硬件,但是之前設(shè)計(jì)的簡單系統(tǒng)都是自己在板上用導(dǎo)線自己焊接的(如下圖左),復(fù)雜的都是模塊拼接的(如下圖右):
工作中原理圖和PCB也有專門的工程師來制作,因此我對(duì)這一塊了解比較少。而最近閑來無事,又因?yàn)槭诸^上確實(shí)少一個(gè)四線二項(xiàng)步進(jìn)電機(jī)驅(qū)動(dòng)模塊。起初是在淘寶上找了很久才找到一個(gè)適合的,結(jié)果實(shí)驗(yàn)了一下午還是不行;又考慮自己在板上焊接,可是發(fā)現(xiàn)該模塊外圍需要10個(gè)左右的電阻電容,連線焊接不方便。最后也就決定自己嘗試“造”一個(gè)了,有時(shí)候不賣出一地步永遠(yuǎn)不知道前面是坑還是路!下面是整個(gè)的制作過程(存在一些不成熟之處還請(qǐng)見諒)~
PCB的繪制、打板、元件焊接與測(cè)試
PCB繪制可以用很多種軟件,如下圖一個(gè)社區(qū)內(nèi)的投票。其中Eagle是CadSoft Computer公司已經(jīng)開發(fā)并銷售EAGLE軟件包超過20年??偛课挥诘聡腃adSoft擁有龐大的用戶群,從業(yè)余愛好者到全球跨國公司如3M,AT&T,BMW, DaimlerChrysler, Hewlett Packard,IBM等。EAGLE(Easily Applicable Graphical Layout Editor)(易應(yīng)用圖形布局編輯器)是一款低價(jià)格、界面豐富、人性化、易于學(xué)習(xí)和使用且功能強(qiáng)大的原理圖和PCB設(shè)計(jì)工具,它有很多高級(jí)功能:例如在線正反向標(biāo)注功能、批處理命令執(zhí)行腳本文件、覆銅以及交互跟隨布線器等功能。EAGLE從20世紀(jì)90年代初開始,就是歐洲市場(chǎng)上此類軟件中的暢銷產(chǎn)品。曾5次被一家重要的德國電子雜志選為“年度產(chǎn)品”,EAGLE在北美也已取得相當(dāng)大的成功。EAGLE目前有標(biāo)準(zhǔn)版及專業(yè)版,可用于Windows?、 Linux? 、 Mac?平臺(tái)。(你在Ubuntu的應(yīng)用商店上經(jīng)常看見的那個(gè)評(píng)分還不錯(cuò)的大紅鷹軟件就是它了?。?/p>
Altium Designer 是原Protel軟件開發(fā)商Altium公司推出的一體化的電子產(chǎn)品開發(fā)系統(tǒng),主要運(yùn)行在Windows操作系統(tǒng)。這套軟件通過把原理圖設(shè)計(jì)、電路仿真、PCB繪制編輯、拓?fù)溥壿嬜詣?dòng)布線、信號(hào)完整性分析和設(shè)計(jì)輸出等技術(shù)的完美融合,為設(shè)計(jì)者提供了全新的設(shè)計(jì)解決方案,使設(shè)計(jì)者可以輕松進(jìn)行設(shè)計(jì),熟練使用這一軟件必將使電路設(shè)計(jì)的質(zhì)量和效率大大提高。Altium Designer 除了全面繼承包括Protel 99SE、Protel DXP在內(nèi)的先前一系列版本的功能和優(yōu)點(diǎn)外,還增加了許多改進(jìn)和很多高端功能。該平臺(tái)拓寬了板級(jí)設(shè)計(jì)的傳統(tǒng)界面,全面集成了FPGA設(shè)計(jì)功能和SOPC設(shè) 計(jì)實(shí)現(xiàn)功能,從而允許工程設(shè)計(jì)人員能將系統(tǒng)設(shè)計(jì)中的FPGA與PCB設(shè)計(jì)及嵌入式設(shè)計(jì)集成在一起。 由于Altium Designer 在繼承先前Protel軟件功能的基礎(chǔ)上,綜合了FPGA設(shè)計(jì)和嵌入式系統(tǒng)軟件設(shè)計(jì)功能,Altium Designer 對(duì)計(jì)算機(jī)的系統(tǒng)需求比先前的版本要高一些。
Protel99SE是應(yīng)用于Windows9X/2000/NT操作系統(tǒng)下的EDA設(shè)計(jì)軟件,采用設(shè)計(jì)庫管理模式,可以進(jìn)行聯(lián)網(wǎng)設(shè)計(jì),具有很強(qiáng)的數(shù)據(jù)交換能力和開放性及3D模擬功能,是一個(gè)32位的設(shè)計(jì)軟件,可以完成電路原理圖設(shè)計(jì),印制電路板設(shè)計(jì)和可編程邏輯器件設(shè)計(jì)等工作,可以設(shè)計(jì)32個(gè)信號(hào)層,16個(gè)電源--地層和16個(gè)機(jī)加工層。
Altium公司作為EDA領(lǐng)域里的一個(gè)領(lǐng)先公司,在原來Protel 99SE的基礎(chǔ)上,先進(jìn)的軟件設(shè)計(jì)方 法,于2002年率先推出了一款基于Windows2000和Windows XP操作系統(tǒng)的EDA設(shè)計(jì)軟件Protel DXP。并于2004年推出了整合Protel完整PCB板級(jí)設(shè)計(jì)功能的一體化電子產(chǎn)品開發(fā)系統(tǒng)環(huán)境——Altium Designer2004版。與99SE的區(qū)別(來源網(wǎng)上):protel99對(duì)于xp的兼容性差點(diǎn)、不太穩(wěn)定,可以滿足大部分設(shè)計(jì)需要;protel dxp引入了設(shè)計(jì)工程的思想,它的設(shè)計(jì)工程文件雖然只起到了一個(gè)和不同源文件間的鏈接作用,但可以方便組織起多層次的設(shè)計(jì),另外好像在自動(dòng)布線和集成元件庫上更完善。
鏗騰電子科技有限公司(Cadence Design Systems, Inc;NASDAQ:CDNS)是一個(gè)專門從事電子設(shè)計(jì)自動(dòng)化(EDA) 的軟件公司,由SDA Systems和ECAD兩家公司于1988年兼并而成。是全球電子設(shè)計(jì)技術(shù)(Electronic Design Technologies)、程序方案服務(wù)和設(shè)計(jì)服務(wù)供應(yīng)商。其解決方案旨在提升和監(jiān)控半導(dǎo)體、計(jì)算機(jī)系統(tǒng)、網(wǎng)絡(luò)工程和電信設(shè)備、消費(fèi)電子產(chǎn)品以及其它各類型電子產(chǎn)品的設(shè)計(jì)。產(chǎn)品涵蓋了電子設(shè)計(jì)的整個(gè)流程,包括系統(tǒng)級(jí)設(shè)計(jì),功能驗(yàn)證,IC綜合及布局布線,模擬、混合信號(hào)及射頻IC設(shè)計(jì),全定制集成電路設(shè)計(jì),IC物理驗(yàn)證,PCB設(shè)計(jì)和硬件仿真建模等。 其總部位于美國加州圣何塞(San Jose),在全球各地設(shè)有銷售辦事處、設(shè)計(jì)及研發(fā)中心。
從上面簡單的投票可知國內(nèi)用AD和99的人是比較多的,我也緊跟潮流下了個(gè)AD14。既然有工具了,接下來就該著手設(shè)計(jì)原理圖了,經(jīng)過千辛萬苦終于找到一款適合我用的芯片——ST的L6219四線二項(xiàng)步進(jìn)電機(jī)驅(qū)動(dòng)芯片:
然后閱讀其datasheet知道:The L6219 is a bipolar monolithic integrated circuits(雙極性單片集成電路) intended to control drive both winding(雙繞組,即四個(gè)線) of a bipolar(雙極性) stepper motor bidirectionally(直接地) control two DC motors. The L6219 with a few external components form a complete control drive circuit for LS-TTL microprocessor controlled stepper motor system(比較少的外設(shè)就能構(gòu)成一個(gè)系統(tǒng)). The power stage is a dual full bridge capable of sustaining 46V including four diodes for current recirculation. 此外,該芯片有雙列直插和貼片兩種樣式:
最后在其后面找到了其典型應(yīng)用的原理圖(這就是我們最需要的啦)
然后根據(jù)原理圖在AD14軟件中繪制原理圖
再接著用AD14自帶的PCB生成功能自動(dòng)生成并自動(dòng)布線
最終效果如下
其3D效果如下
最后就是在淘寶上聯(lián)系一個(gè)PCB打樣的,將.PcbDoc文件發(fā)給他,和他確認(rèn)好采用多厚的pcb板(1mm1.2mm1.6mm2mm...)、什么顏色的pcb板(黑白綠紫紅藍(lán)...)、如果生產(chǎn)廠家更專業(yè)還會(huì)問是用無鉛噴錫有鉛噴錫沉金等。我當(dāng)時(shí)設(shè)計(jì)時(shí)賣家說黑色的要另外交50元,我就忍痛割愛選擇了藍(lán)色的!當(dāng)時(shí)的價(jià)格是30元10片(每片小于4x5cm)。不知道是我做的好(^o^)/~還是店家爽快,我讓他幫我看看對(duì)不對(duì),他說沒問題,然后我也就爽快地下單了~(就喜歡這么爽快的交易,哈哈)
上面把pcb交給賣家生產(chǎn)了,接下來要考慮的問題是哪里去購買這些電子元件呢~當(dāng)然貼片的L6219是比較好買的(唯一嘛),但是上面的電阻電容就麻煩了~如果是正規(guī)生產(chǎn),一般是pcb和boom表都發(fā)給生產(chǎn)廠家進(jìn)行pcb生產(chǎn)、貼片、測(cè)試等全套過程,你只要出錢最后就能拿到和3D顯示效果一樣的東西了!但是,由于量小,貼片成本太大,我就自己得看boom來采購、貼片、測(cè)試了!下面是boom表:
為什么電阻和電容購買遇到了問題呢?是因?yàn)檫@里的電阻電容分別采用C2012和R2012封裝的,而淘寶上賣的比較多的是0805、1206等封裝。更坑的是我先把PCB發(fā)給賣家生產(chǎn)了,于是就得看看1206或0805那種封裝能替代2012封裝的,最后分別拿1206和0805的電容和2012的電容進(jìn)行比較,最終發(fā)現(xiàn)0805封裝的是可以替換2012封裝的,于是每種電阻電容各買500個(gè):(對(duì)于100uF的電容實(shí)在找不到適合的0805結(jié)果就買了個(gè)10uF的1206---->如下圖中第二行第一室,明顯比0805大,所以焊接的時(shí)候也給我?guī)Я它c(diǎn)麻煩)
就這樣在十一過后焦急地等待了3天,電子元件和pcb都過來了(十一他們不工作滴)
其實(shí)在十一之前我還做了件事,就是購買一套焊接裝備(自己貼片當(dāng)然少不了烙鐵、風(fēng)槍、吸錫器啥的啦)
下圖是我的“車庫”,工具齊全,環(huán)境良好
經(jīng)過我的風(fēng)槍吹、烙鐵焊、吸錫器、鑷子等反復(fù)蹂躪
最終弄出來一個(gè)
其實(shí),到上一步還不算結(jié)束,我們還需要測(cè)試一下新模塊到底行不行、有沒有虛焊啥的。接下來就是看家本領(lǐng)了,嵌入式開發(fā)想要控制它還不容易!從上面的原理圖我們知道——I01I11I02I12Ph1Ph2六個(gè)引腳是和MCU相連來控制的引腳,引腳1、21、2、5接4線步進(jìn)電機(jī)對(duì)應(yīng)的四線,我把電源輸入強(qiáng)制都用5V的外部供電(其實(shí)有點(diǎn)不合理的)。 從它的datasheet中我們又獲取下列信息:即當(dāng)把I01I11I02I12全部接地同時(shí)Ph1和Ph2輸入00、10、11、01周期性的信號(hào)時(shí),四線二項(xiàng)步進(jìn)電機(jī)工作在FULL STEP MOTOR DRIVE狀態(tài)。
由于整個(gè)工程特別大,這里只貼出驅(qū)動(dòng)該模塊并控制步進(jìn)電機(jī)的驅(qū)動(dòng)部分:這里B7和B9兩個(gè)引腳就是連接在我們只做的驅(qū)動(dòng)模塊的Ph1和Ph2上,看下面代碼可知周期性輸入10、11、01、00是一種轉(zhuǎn)向,周期性輸入01、11、10、00是另外一種轉(zhuǎn)向,從而根據(jù)輸入left的TRUE FALSE來控制步進(jìn)電機(jī)的轉(zhuǎn)動(dòng)方向,而參數(shù)n表示要連續(xù)控制步進(jìn)電機(jī)轉(zhuǎn)多少個(gè)這樣的周期從而達(dá)到精準(zhǔn)轉(zhuǎn)某個(gè)角度的需求。
1 #define SET_A GPIO_SetBits(GPIOB, GPIO_Pin_7) 2 #define RESET_A GPIO_ResetBits(GPIOB, GPIO_Pin_7) 3 #define SET_B GPIO_SetBits(GPIOB, GPIO_Pin_9) 4 #define RESET_B GPIO_ResetBits(GPIOB, GPIO_Pin_9) 5 void smallGo(int n, bool left) 6 { 7 int i; 8 if(left == TRUE) 9 { 10 for(i = 0; i < n; i++) 11 { 12 SET_A; 13 RESET_B; 14 OSTimeDlyHMSM(0, 0, 0, DelaySmall); 15 SET_A; 16 SET_B; 17 OSTimeDlyHMSM(0, 0, 0, DelaySmall); 18 RESET_A; 19 SET_B; 20 OSTimeDlyHMSM(0, 0, 0, DelaySmall); 21 RESET_A; 22 RESET_B; 23 OSTimeDlyHMSM(0, 0, 0, DelaySmall); 24 } 25 } 26 else 27 { 28 for(i = 0; i < n; i++) 29 { 30 RESET_A; 31 SET_B; 32 OSTimeDlyHMSM(0, 0, 0, DelaySmall); 33 SET_A; 34 SET_B; 35 OSTimeDlyHMSM(0, 0, 0, DelaySmall); 36 SET_A; 37 RESET_B; 38 OSTimeDlyHMSM(0, 0, 0, DelaySmall); 39 RESET_A; 40 RESET_B; 41 OSTimeDlyHMSM(0, 0, 0, DelaySmall); 42 } 43 } 44 }
由于這里我們采用下面的步進(jìn)電機(jī),其每轉(zhuǎn)步數(shù)為48,也就是說上面函數(shù)調(diào)用中n=12即可實(shí)現(xiàn)步進(jìn)電機(jī)旋轉(zhuǎn)一周的目的,也因此最小可控轉(zhuǎn)角為360/12=30°。再通過計(jì)算求出旋轉(zhuǎn)一步連接螺母可以移動(dòng)的距離就能實(shí)現(xiàn)精準(zhǔn)的距離控制,從而做一些機(jī)器人手臂、3D打印、噴墨、光盤托盤等機(jī)械部件的精準(zhǔn)驅(qū)動(dòng)模塊。不過這里每步30°精度不太高,我在該項(xiàng)目中用的另一個(gè)商業(yè)版的步進(jìn)電機(jī)驅(qū)動(dòng)可以支持每轉(zhuǎn)步數(shù)10000,是不是很厲害丫~
說明:
最近如何為編程愛好者設(shè)計(jì)一款好玩的智能硬件暫時(shí)停止更新(目前已至十),不是因?yàn)槲乙艞壴揇IY的更新,而是因?yàn)楫?dāng)我把無線、顯示、傳感器等模塊的驅(qū)動(dòng)封裝好之后,發(fā)現(xiàn)少一個(gè)核心的支持點(diǎn)對(duì)點(diǎn)、點(diǎn)對(duì)多以及廣播的穩(wěn)定的通信協(xié)議。于是,接下來一段時(shí)間可能會(huì)先談linux內(nèi)核專題,等時(shí)機(jī)成熟我再帶一個(gè)適合X-OS的通信協(xié)議繼續(xù)DIY我們的積木物聯(lián)網(wǎng)系統(tǒng)。