基于DSP2812的運(yùn)動(dòng)控制平臺(tái)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
在大二的時(shí)候我加入到了學(xué)院的創(chuàng)新實(shí)驗(yàn)室,加入實(shí)驗(yàn)室后每天都很努力,怕學(xué)習(xí)不好表現(xiàn)不好會(huì)被導(dǎo)師趕出去,每天早上7點(diǎn)簽到,然后就開(kāi)始學(xué)習(xí)英語(yǔ),如果有課就在8點(diǎn)去上課,沒(méi)課就開(kāi)始學(xué)習(xí)相關(guān)專業(yè)課;晚上必須在實(shí)驗(yàn)室待到10點(diǎn)以后才能回寢室,每個(gè)假期只能回家一周多,所以從大二開(kāi)始我就沒(méi)有了寒暑假,這些都是導(dǎo)師的要求,也是工作室每個(gè)成員必須做到的。大二導(dǎo)師主要抓模數(shù)電和單片機(jī),記得曾經(jīng)做過(guò)OCL模擬功放,數(shù)字功放,電源等一些模擬類設(shè)計(jì),并以音質(zhì)和效率進(jìn)行評(píng)比;用單片機(jī)做過(guò)一些多功能數(shù)字鐘,紅外解碼等一些作品,數(shù)字鐘以運(yùn)行一天誰(shuí)的誤差最小來(lái)評(píng)比。
到了大三,我們每個(gè)人根據(jù)自己的興趣愛(ài)好選擇了自己的方向,我們實(shí)驗(yàn)室一直以來(lái)都是以FPGA為主打方向的,很多人選擇了FPGA,而我卻選擇了DSP,實(shí)驗(yàn)室?guī)熜肿鯠SP的也幾乎沒(méi)有,我就成立孤軍奮戰(zhàn)。接下來(lái)湊了1000元買了開(kāi)發(fā)板,開(kāi)始接觸DSP,剛開(kāi)始的入門真的遇到了很多的問(wèn)題,總是踏不進(jìn)那個(gè)門檻,一個(gè)人的鉆研會(huì)浪費(fèi)更多的時(shí)間,但每個(gè)問(wèn)題讓人記憶猶新,如今論壇上很多剛接觸DSP的網(wǎng)友遇到的問(wèn)題也就是當(dāng)初我遇到過(guò)的。
基本熟悉了DSP2812后我做的第一個(gè)設(shè)計(jì)就是2011年中國(guó)機(jī)器人大賽項(xiàng)目中的機(jī)器人游中國(guó)小車,整個(gè)車體的硬件單路都是我們自己設(shè)計(jì),畫PCB并用學(xué)院的PCB刻板機(jī)花一夜的時(shí)間做出來(lái),焊接調(diào)試,可能是由于設(shè)計(jì)的不合理和保護(hù)做的不是很好,燒壞過(guò)2塊核心板;第二個(gè)設(shè)計(jì)就是我要快樂(lè)分享的運(yùn)動(dòng)控制平臺(tái)的設(shè)計(jì),下面就是我的設(shè)計(jì):
設(shè)計(jì)以TMS320F2812為控制器,結(jié)合其控制方便、處理速度快等特點(diǎn),運(yùn)用PID算法進(jìn)行速度環(huán)調(diào)節(jié),500線光電編碼器進(jìn)行速度的反饋,變M/T法進(jìn)行速度的精確采集,霍爾電流傳感器進(jìn)行電流的采集和繼電器確保過(guò)流的斷電保護(hù),可控恒流源控制負(fù)載大小,VB6.0可視化控制界面的編寫,設(shè)計(jì)了兼有PWM和模擬量控制的直流無(wú)刷電動(dòng)機(jī)閉環(huán)在線調(diào)試系統(tǒng),給出了該系統(tǒng)的功能、硬件結(jié)構(gòu)和軟件設(shè)計(jì)方法。系統(tǒng)中的主要控制對(duì)象是直流無(wú)刷電機(jī),還有磁粉制動(dòng)器作為電機(jī)的模擬負(fù)載,下面簡(jiǎn)單介紹一下直流無(wú)刷電機(jī)和磁粉制動(dòng)器:
直流無(wú)刷電機(jī)利用電子換向器取代了機(jī)械電刷和機(jī)械換向器,因此使這種電機(jī)不僅保留了直流電機(jī)的優(yōu)點(diǎn),而且又具有交流電機(jī)的結(jié)果簡(jiǎn)單、運(yùn)行可靠、維護(hù)方便等優(yōu)點(diǎn),使它一出現(xiàn)就以極快的速度發(fā)展和普及,廣泛應(yīng)用于航空航天,精密儀器,現(xiàn)代家電等領(lǐng)域。磁粉制動(dòng)器是根據(jù)電磁原理和利用磁粉傳遞轉(zhuǎn)矩的。磁粉制動(dòng)器具有激磁電流和傳遞轉(zhuǎn)矩基本成線性關(guān)系,作為電機(jī)的模擬負(fù)載,在調(diào)試閉環(huán)參數(shù)時(shí)可以通過(guò)調(diào)節(jié)恒流源的電流大小去控制負(fù)載的大小,從而找出最佳閉環(huán)系數(shù)。
在整個(gè)運(yùn)動(dòng)控制平臺(tái)硬件系統(tǒng)中,系統(tǒng)供電電路主要有DCDC模塊構(gòu)成,負(fù)責(zé)給各個(gè)電路模塊提供工作電源,其輸出電壓有±15V,+12V,+5V,+3.3V。信號(hào)調(diào)理電路完成對(duì)各種傳感器及采集回來(lái)的信號(hào)處理,主要包括霍爾電流傳感器的模擬量信號(hào)、光電編碼器的轉(zhuǎn)速信號(hào)、給定控制開(kāi)關(guān)量信號(hào)等,經(jīng)調(diào)理電路后,使其各種信號(hào)的電平和幅值滿足DSP控制器的要求;DSP主控電路以TMS320F2812為核心處理器,完成對(duì)各種信號(hào)的處理以及系統(tǒng)的閉環(huán)控制,并通過(guò)SCI接口實(shí)現(xiàn)控制器與上位機(jī)的通訊;恒流源為磁粉制動(dòng)器提供電流,以便輸出與電流成線性關(guān)系的扭矩。下面是我畫的大體框圖:其中2812核心板原理圖、PCB、BOM表和Gerber都已經(jīng)分享到了論壇版塊 http://bbs.21ic.com/icview-583101-1-1.html
電機(jī)驅(qū)動(dòng)器是由分立元器件H橋搭起來(lái)的,沒(méi)有采用半橋驅(qū)動(dòng)芯片如IR2101等芯片,使用三極管搭建的并有一定的硬件死區(qū)作用;我覺(jué)得做H橋驅(qū)動(dòng)器最重要的就是上橋臂的浮動(dòng)導(dǎo)通,這一點(diǎn)一定要做好,在電機(jī)驅(qū)動(dòng)中,由于電流較大,上管都采用N型MOSFET。由于每個(gè)上管源極的電壓是浮動(dòng)的,因此上管的柵極驅(qū)動(dòng)電壓也必須浮置在源極的電壓之上才能有效地開(kāi)啟上管。實(shí)現(xiàn)這種的方法有多種,如自舉法、隔離電壓法、脈沖變壓器法、電荷泵法、載法驅(qū)動(dòng)法等多種方法。本次設(shè)計(jì)采用電荷泵法來(lái)實(shí)現(xiàn)電壓的浮動(dòng),主要電路如下如所示:
電荷泵的基本原理是通過(guò)電容對(duì)電荷的積累效應(yīng)而產(chǎn)生高壓,使電流由低電勢(shì)流向高電勢(shì)。隨著集成電路的不斷發(fā)展,基于低功耗,低成本的考慮,電荷泵在電路設(shè)計(jì)中的應(yīng)用越來(lái)越廣泛。由于H橋由4個(gè)N溝道功率MOSFET組成,如要控制各個(gè)MOSFET,各MOSFET的門極電壓必須足夠高于柵極電壓。通常要使MOSFET完全可靠導(dǎo)通,其門極電壓一般在10V以上,即Vgs>10V,對(duì)于H橋下橋臂,直接加10V以上的電壓即可使其導(dǎo)通;而對(duì)于上橋臂,驅(qū)動(dòng)電路必須能提供高于電源電壓的電壓,這就要求驅(qū)動(dòng)電路中增設(shè)升壓電路,提供高于柵極的電壓??紤]到Vgs有上限要求,一般MOSFET導(dǎo)通時(shí)Vgs為10V~15V,也就是控制門極電壓隨柵極電壓的變化而變化,即浮動(dòng)?xùn)膨?qū)動(dòng)。因此在驅(qū)動(dòng)控制電路中設(shè)計(jì)電荷泵電路,用于提供高于驅(qū)動(dòng)電源電壓的電壓。
最近看到電動(dòng)車驅(qū)動(dòng)器上為了擴(kuò)大電流,在H橋上使用的75NF75上又并聯(lián)了一個(gè),這樣電流會(huì)更大,可靠性也更高,值得借鑒。下上橋驅(qū)動(dòng)電路如下圖所示:
H橋上MOSFET的漏源極接的4個(gè)二極管起到保護(hù)MOSFET的作用,當(dāng)電機(jī)停止運(yùn)轉(zhuǎn)的瞬間,電機(jī)中儲(chǔ)存的能量會(huì)加到H橋上,這樣可以通過(guò)二極管引導(dǎo)到電源上去,防止了MOSFET被擊穿的情況。當(dāng)然,我們也可以采用吸收電路來(lái)吸收開(kāi)關(guān)關(guān)斷浪涌電壓和續(xù)流二極管反向恢復(fù)浪涌電壓,通常有典型的三種吸收電路,分別是RC、RCD、C,三種吸收電路的特點(diǎn)和適用范圍如下表所示:
電路類型 |
RC型吸收電路 |
RCD型吸收電路 |
C吸收電路 |
特點(diǎn) |
結(jié)構(gòu)簡(jiǎn)單,易造成過(guò)沖電壓,會(huì)引起集電極電流升高 |
克服過(guò)沖電壓過(guò)高,過(guò)電壓抑制效果較好會(huì)引起集電極電流升高 |
電路簡(jiǎn)單,成本低,易產(chǎn)生震蕩,會(huì)引起集電極電流升高 |
適用范圍 |
小容量,低頻裝置 |
小沖量,低頻裝置 |
中等容量裝置 |
為了使驅(qū)動(dòng)器使用更加方便,可以在H橋電路之前加入邏輯電路方便控制,具體電路和說(shuō)明如下:
說(shuō)明:(1)D1H與D1L為左橋臂的上下控制信號(hào),D2H與D2L為右橋臂的上下控制信號(hào)。
(2)Brake為高電平時(shí)表示剎車,D1H,D1L,D2H,D2L全為高電平。
(3)Dir表示方向信號(hào),即Dir為高電平正轉(zhuǎn),則Dir為低電平反轉(zhuǎn),但前提是Brake為低電平。
(4)PWM1和PWM2表示分別控制正轉(zhuǎn)和反轉(zhuǎn),通過(guò)占空比來(lái)控制電機(jī)轉(zhuǎn)速。
(5)驅(qū)動(dòng)優(yōu)點(diǎn):在剎車的時(shí)候通過(guò)PWM1短路電機(jī),這樣在由正、反轉(zhuǎn)變換時(shí)不會(huì)出現(xiàn)抖動(dòng)。
上面邏輯電路的真值表如下所示:
Brake |
Dir |
PWM1 |
PWM2 |
D1H |
D2H |
D1L |
D2L |
|
1 |
× |
PWM1 |
PWM2 |
1 |
1 |
PWM1 |
PWM2 |
剎車 |
0 |
1 |
PWM1 |
PWM2 |
0 |
1 |
1 |
PWM1 |
正轉(zhuǎn) |
0 |
0 |
PWM1 |
PWM2 |
1 |
0 |
PWM2 |
1 |
反轉(zhuǎn) |
這里再簡(jiǎn)單介紹一下它的工作原理:由于DSP輸出的控制信號(hào)為3.3V,為了能使DAC0832正常工作,需要將DSP輸出的控制信號(hào)放大為5V,這個(gè)過(guò)程是有圖中三極管Q2通過(guò)上拉完成的,電路也存在不足,因?yàn)橥ㄟ^(guò)此電路就會(huì)將DSP輸出的控制信號(hào)取反,這會(huì)給程序編寫帶來(lái)不便。
DAC0832的參考電壓是由LM336-2.5V提供的,這樣DAC0832轉(zhuǎn)換過(guò)程中的參考電壓Vref=2.5V,輸出電壓通過(guò)運(yùn)算放大器LM358之后,就有如下的關(guān)系式(期中D表示DSP輸出的控制數(shù)字量):
Vout = +2.5VDC (1 + R2/R3)(D/256)
電路中調(diào)征管采用大功率場(chǎng)效應(yīng)管IRF540。采用場(chǎng)效應(yīng)管,更易于實(shí)現(xiàn)電壓線性控制電流,既能滿足輸出大電流的要求,也能較好地實(shí)現(xiàn)電壓近似線性地控制電流。因?yàn)楫?dāng)場(chǎng)效應(yīng)管工作于飽和區(qū)時(shí),漏電流Id近似為電壓Ugs控制的電流。即當(dāng)Ud為常數(shù)時(shí),滿足:Id=f(Ugs),只要Ugs不變,Id就不變。
在此電路中,R5為取樣電阻,采用康銅絲繞制(阻值隨溫度的變化較小),阻值為0.25歐。運(yùn)放采用OP07作為電壓跟隨器,UI=Up=Un,場(chǎng)效應(yīng)管Id=Is(柵極電流相對(duì)很小,可忽略不計(jì)) 所以Io=Is= Un/R2= UI/R2。正因?yàn)镮o=UI/R2,電路輸入電壓UI控制電流Io,即Io不隨RL的變化而變化,從而實(shí)現(xiàn)壓控恒流源。
下面分享光耦隔離和光電編碼器反饋信號(hào)隔離電路,其中使用74HC14進(jìn)行信號(hào)整形,為了輸出3.3V的QEP信號(hào),所以74HC14需要3.3V供電,但是芯片的輸入信號(hào)峰峰值不能超過(guò)3.3V。注:記得光電編碼器隔離電路中的C1要去掉,波形才正常。
設(shè)計(jì)中只采用了過(guò)流保護(hù),設(shè)計(jì)中的過(guò)流是指當(dāng)負(fù)載過(guò)大引起的過(guò)流和控制不當(dāng)使H橋上下橋臂同時(shí)導(dǎo)通導(dǎo)致電源短路產(chǎn)生的過(guò)流,這兩種情況都會(huì)使保護(hù)電路工作,繼電器斷開(kāi)驅(qū)動(dòng)器母線的鏈接,DSP輸出的兩路PWM波變?yōu)楦咦钁B(tài),這樣就會(huì)避免由于H橋上電流過(guò)大而燒壞MOS管的情況發(fā)生。
上面電路中,霍爾電流傳感器CHF-10P通過(guò)串入母線中進(jìn)行電流的采集,A2415S為24V轉(zhuǎn)±15V的隔離電源,主要作用是為CHF-10P提高工作電壓,采集電流對(duì)應(yīng)的電壓值在3引腳可以測(cè)得,并且由輸出電壓值的正負(fù)號(hào)判斷電流在5和6引腳之間的流入方向,這就會(huì)有一個(gè)電流與電壓之間的線性關(guān)系為10A~±4V。由于DSP中ADC模塊采集電壓范圍為0~3V,所以需要將霍爾電流傳感器輸出的正負(fù)電壓轉(zhuǎn)換為0~3V,這個(gè)過(guò)程是由電阻R1、R2、R3轉(zhuǎn)換得到,其中3.3V電壓經(jīng)過(guò)兩個(gè)肖特基二極管(正向?qū)▔航禐?.26V)后電壓值大概為3.0V,如果輸入電阻R1的電壓為-3V,先把R3電阻看做不存在,R1和R2串聯(lián),一端輸入-3V,另一端電壓為3V,則DSP_ADC端電壓為0V,把R3電阻看回來(lái),0V通過(guò)R3電阻接地,當(dāng)然還是0V。所以輸入與輸出的關(guān)系為-3V~3V對(duì)應(yīng)0V~3V,為了避免輸入到DSP_ADC的電壓高于3V,加入了D1和D2作為嵌位電路,防止電壓高于3V損壞DSP的ADC輸入口。還有過(guò)流保護(hù)就是用繼電器切斷電機(jī)驅(qū)動(dòng)母線電壓,DSP的PWM口呈高阻態(tài)。
再簡(jiǎn)介一下DSP2812的事件管理器單元,每個(gè)事件管理器模塊都有一個(gè)正交編碼脈沖(QEP)電路。使能QEP電路可以對(duì)引腳CAP1/QEP1和CAP2/QEP2(EVA)或CAP4/QEP3和CAP5/QEP4(EVB)輸入的正交編碼脈沖進(jìn)行編碼和計(jì)數(shù)。它與光編碼器相連可以獲得機(jī)器旋轉(zhuǎn)的位置和速讀信息。如果使能QEP電路,那么CAP1/QEP1和CAP4/QEP3的捕捉功能就被禁止。定時(shí)器2(在EVB中為定時(shí)器4)為EVA的QEP電路提供時(shí)基。定時(shí)器必須處于單增/減計(jì)數(shù)模式并使用QEP電路作為時(shí)鐘源。正交編碼脈沖電路是具有90°固定相移和可變頻率的兩個(gè)脈沖序列。當(dāng)光編碼器和電機(jī)轉(zhuǎn)軸產(chǎn)生QEP時(shí),通過(guò)監(jiān)測(cè)兩個(gè)脈沖的先后順序可以確定電機(jī)的旋轉(zhuǎn)方向,通過(guò)檢測(cè)脈沖個(gè)數(shù)和頻率可以確定旋轉(zhuǎn)角度。QEP電路中的方向監(jiān)測(cè)邏輯可以確定哪個(gè)序列領(lǐng)先,它為定時(shí)器2(或4)產(chǎn)生方向信號(hào)。如果CAP1/QEP1(EVB中為CAP4/QEP3)引腳的輸入脈沖是領(lǐng)先序列,定時(shí)器進(jìn)行增計(jì)數(shù);如果CAP2/QEP2(EVB中為CAP5/QEP4)引腳的輸入脈沖是領(lǐng)先序列,定時(shí)器進(jìn)行減計(jì)數(shù)。兩個(gè)正交編碼輸入的兩個(gè)邊沿都被計(jì)數(shù),所以QEP邏輯為定時(shí)器2(或4)產(chǎn)生的時(shí)鐘頻率是每個(gè)輸入脈沖序列的4倍。該正交時(shí)鐘與定時(shí)器2(或4)的時(shí)鐘輸入相連。EVA中的每個(gè)捕捉單元可以選擇定時(shí)器1或2作為自己的時(shí)基;然而CAP1和CAP2不能選擇不同的定時(shí)器作為它們自己的時(shí)基。EVB中的每個(gè)捕捉單元可以選擇定時(shí)器3或4作為自己的時(shí)基;然而CAP4和CAP5不能選擇不同的定時(shí)器作為它們自己的時(shí)基。當(dāng)捕捉引腳(CAPx)探測(cè)到指定的變化時(shí),捕捉單元捕捉定時(shí)器的值并將它存在相應(yīng)的2級(jí)深度FIFO堆棧中。使能捕捉單元后,如果相關(guān)引腳產(chǎn)生指定的變化,捕捉單元將選用的定時(shí)器的當(dāng)前值存入相應(yīng)的FIFO堆棧中。如果已經(jīng)有一個(gè)或多個(gè)合法值存儲(chǔ)在FIFO堆棧中(CAPxFIFO位不為0),相應(yīng)的中斷標(biāo)志位將置1。如果標(biāo)志位沒(méi)有屏蔽,會(huì)產(chǎn)生一個(gè)外圍中斷請(qǐng)求。每當(dāng)一個(gè)新的計(jì)數(shù)器值被捕捉到FIFO堆棧中,CAPFIFOx會(huì)調(diào)整相應(yīng)的狀態(tài)位來(lái)反映FIFO堆棧的最新?tīng)顟B(tài)。從引腳變化發(fā)生到定時(shí)器的計(jì)數(shù)期值鎖存需要2個(gè)時(shí)鐘周期。 介紹了這么多,下面簡(jiǎn)單介紹一下軟件部分。
在運(yùn)動(dòng)控制平臺(tái)上集成了各個(gè)測(cè)試模塊,如波特率設(shè)計(jì),自動(dòng)波特率檢測(cè),驅(qū)動(dòng)板最佳頻率測(cè)試,速度在線調(diào)試,PID系數(shù)在線調(diào)試,速度采集,電流采集,負(fù)載扭矩輸出,速度曲線顯示等,這些調(diào)試和控制功能足夠發(fā)揮本次設(shè)計(jì)的運(yùn)動(dòng)控制平臺(tái)的強(qiáng)大功能。其中自動(dòng)波特率檢測(cè)可以用DSP2812去實(shí)現(xiàn),自動(dòng)波特率檢測(cè)過(guò)程中記得遇到了一個(gè)DSP的bug,就是自動(dòng)檢測(cè)的第一次肯定是不成功的,把DSP復(fù)位一次再次檢測(cè),就會(huì)正確檢測(cè)到上位機(jī)選用的波特率;除此之外還有一個(gè)功能值得提一下,就是根據(jù)我個(gè)人的理解在此軟件上設(shè)計(jì)了檢測(cè)電機(jī)驅(qū)動(dòng)器的最佳驅(qū)動(dòng)頻率的功能,在下圖中看不到,在菜單欄中可以選擇此功能,選擇此功能之后,上位機(jī)軟件會(huì)在占空比為50%的情況下去改變PWM波的頻率,并采集顯示速度,通過(guò)頻率改變和速度曲線對(duì)比計(jì)算出驅(qū)動(dòng)器適合的最佳頻率,這個(gè)方法不知道是否合理,但是我在運(yùn)動(dòng)控制平臺(tái)上測(cè)試的適合沒(méi)有出現(xiàn)過(guò)問(wèn)題。下面是基于運(yùn)動(dòng)控制平臺(tái)的主控制界面。
運(yùn)動(dòng)控制中采用了速度閉環(huán)控制,為了實(shí)現(xiàn)速度閉環(huán)控制,我們要有精確的速度采集,為了達(dá)到精確的速度采集,設(shè)計(jì)中經(jīng)過(guò)4種采集速度算法的比較,最終采用了變M/T法進(jìn)行了電機(jī)速度的采集;為了達(dá)到閉環(huán)控制,系統(tǒng)中設(shè)計(jì)了速度閉環(huán)PID控制算法,這樣可以確保系統(tǒng)在帶負(fù)載運(yùn)轉(zhuǎn)下正常工作。下面將會(huì)介紹系統(tǒng)中算法的設(shè)計(jì)與實(shí)現(xiàn)。變M/T法是指測(cè)速過(guò)程中,不僅測(cè)取的測(cè)速脈沖與高頻時(shí)鐘脈沖隨電機(jī)的轉(zhuǎn)速不同而變化,而且測(cè)量時(shí)間T也是變化的。所以變M/T法相比較其它三種測(cè)速方法在高速、低速時(shí)都具有較高的測(cè)量精度,而且響應(yīng)速度快,在閉環(huán)控制系統(tǒng)中具有較高的使用價(jià)值。
時(shí)間過(guò)去有一年多了,好多資料沒(méi)了,也記不清了,實(shí)在寫不動(dòng)了,有什么疑問(wèn)可以跟帖提問(wèn),謝謝!(原創(chuàng))