找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 13081|回復(fù): 7
打印 上一主題 下一主題
收起左側(cè)

基于單片機(jī)的直流伺服電機(jī)驅(qū)動(dòng)調(diào)速控制設(shè)計(jì)

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:457373 發(fā)表于 2018-12-28 15:58 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
這是項(xiàng)目相關(guān)文檔,基于AT86C52設(shè)計(jì)關(guān)于直流伺服電機(jī)調(diào)速的
【項(xiàng)目目標(biāo)】
1、知識(shí)目標(biāo):
掌握直流伺服電動(dòng)機(jī)工作原理 ,掌握直流伺服電動(dòng)機(jī)的特性 ,掌握直流伺服電動(dòng)機(jī)的調(diào)速控制方法 。
2、能力目標(biāo):
要求會(huì)通過(guò)數(shù)字邏輯芯片或者單片機(jī)技術(shù)設(shè)計(jì)該直流伺服電機(jī)的驅(qū)動(dòng)電路。
【重點(diǎn)難點(diǎn)】
1、重點(diǎn):直流伺服電機(jī)的工作原理及其驅(qū)動(dòng)電路設(shè)計(jì)
2、難點(diǎn):直流電機(jī)的驅(qū)動(dòng)電路設(shè)計(jì)
【相關(guān)知識(shí)】
本設(shè)計(jì)要求用單片機(jī)實(shí)現(xiàn)直流電機(jī)(學(xué)生自由選擇)的驅(qū)動(dòng)調(diào)速控制,學(xué)生在項(xiàng)目進(jìn)行前,有必要重新學(xué)習(xí)單片機(jī)課程。為了加快項(xiàng)目進(jìn)度,可以選用本院學(xué)生普遍學(xué)習(xí)的AT89C51單片機(jī)為核心控制模塊。
【項(xiàng)目實(shí)施】
一、項(xiàng)目任務(wù)
1.實(shí)現(xiàn)對(duì)電機(jī)的啟動(dòng)、停止、加速、減速、正轉(zhuǎn)、反轉(zhuǎn)的控制;
   2.通過(guò)編碼器實(shí)現(xiàn)對(duì)電機(jī)速度的檢測(cè);
   3.實(shí)現(xiàn)對(duì)電機(jī)實(shí)時(shí)速度的顯示;
   4.設(shè)計(jì)電機(jī)驅(qū)動(dòng)的硬件電路;
   5.編制驅(qū)動(dòng)電機(jī)的單片機(jī)控制程序;
   6.要求電機(jī)穩(wěn)態(tài)工作性能好,電機(jī)速度可調(diào)范圍寬至少達(dá)到 0-1200r/min
二、項(xiàng)目實(shí)施:
1、制訂方案(2人一組),要求每小組方案盡量不同,如有雷同,視作抄襲
小組討論初步擬定實(shí)施方案。各小組查閱相關(guān)資料,制定各自的可行性方案。教師提供基本設(shè)計(jì)方案,如圖1,學(xué)生可在此基礎(chǔ)上擴(kuò)展其功能。
圖1 基本設(shè)計(jì)方案
2、確定方案:
各小組交流、評(píng)價(jià)各個(gè)方案的優(yōu)缺點(diǎn),確定實(shí)施方案。
3、實(shí)施方案:
    方案實(shí)施的基本技術(shù)路線如圖2所示。各小組可根據(jù)教師提供的基本技術(shù)路線,適時(shí)調(diào)整各自的計(jì)劃進(jìn)度。由于時(shí)間和硬件條件限制,只需做到PROTEUS聯(lián)合仿真即可,有條件有興趣的同學(xué)可以完成整個(gè)方案的設(shè)計(jì)。可利用面包板、也可以利用PCB制版。
圖2基本技術(shù)路線圖
【項(xiàng)目評(píng)價(jià)】
1、成果展示
每個(gè)項(xiàng)目都要求學(xué)生以團(tuán)隊(duì)的形式完成項(xiàng)目所要求的任務(wù),在對(duì)每個(gè)團(tuán)隊(duì)的項(xiàng)目進(jìn)行驗(yàn)收和總結(jié)時(shí),以大賽的形式評(píng)價(jià)學(xué)生團(tuán)隊(duì)的作品來(lái)調(diào)動(dòng)學(xué)生的積極性。學(xué)生在項(xiàng)目作品展示時(shí),與同類(lèi)作品進(jìn)行比較,展示自己的優(yōu)勢(shì)并發(fā)現(xiàn)不足,這比課堂上教師單純的教授知識(shí)點(diǎn)更具有說(shuō)服力。
2、過(guò)程評(píng)價(jià)
每個(gè)項(xiàng)目的課程大賽成績(jī)可作為成績(jī)考核的主要依據(jù),比賽采取現(xiàn)場(chǎng)實(shí)操測(cè)試、答辯的形式,根據(jù)學(xué)生表現(xiàn)分配一定的分值。同時(shí),采取學(xué)生項(xiàng)目作品互評(píng)形式,每個(gè)完成項(xiàng)目的學(xué)生可以對(duì)分配到的3-5個(gè)作品進(jìn)行綜合評(píng)價(jià),綜合評(píng)價(jià)結(jié)果可以分配一定的比例分值。在項(xiàng)目實(shí)施過(guò)程中,建立學(xué)生項(xiàng)目過(guò)程自評(píng)表,作為成績(jī)?cè)u(píng)定的一項(xiàng)依據(jù)。                                 
學(xué)生項(xiàng)目過(guò)程自評(píng)表
學(xué)科:控制電機(jī)     項(xiàng)目名稱(chēng):直流電機(jī)驅(qū)動(dòng)控制系統(tǒng)設(shè)計(jì)    班級(jí):      姓名:
類(lèi)別
出勤3
學(xué)習(xí)態(tài)度6
準(zhǔn)備工作7
項(xiàng)目方案9
創(chuàng)新能力9
溝通協(xié)作9
項(xiàng)目進(jìn)度10
項(xiàng)目報(bào)告15
項(xiàng)目作業(yè)30
合計(jì)成績(jī)100
得分










項(xiàng)目實(shí)施方案

項(xiàng)目總結(jié)報(bào)告


【項(xiàng)目總結(jié) 】
通過(guò)本次項(xiàng)目訓(xùn)練,可以讓同學(xué)們受益匪淺。一方面,學(xué)生將課堂上的理論知識(shí)應(yīng)用到了實(shí)際,加強(qiáng)鞏固了理論知識(shí),也提高了實(shí)際動(dòng)手能力,通過(guò)實(shí)踐反饋,又了解到學(xué)生自身知識(shí)面的不足。另一方面,在實(shí)驗(yàn)過(guò)程中,遇到問(wèn)題時(shí)候,各個(gè)小組列出可能問(wèn)題,一一進(jìn)行排查,找出問(wèn)題的所在,隊(duì)員之間分工明確,團(tuán)結(jié)合作,本次訓(xùn)練正是通過(guò)隊(duì)員之間的合作實(shí)現(xiàn)的。通過(guò)項(xiàng)目驅(qū)動(dòng)形式,要求學(xué)生能綜合運(yùn)用控制電機(jī)、單片機(jī)技術(shù)、PLC技術(shù)、Protues等課程的基本知識(shí),進(jìn)行融會(huì)貫通的獨(dú)立思考,充分調(diào)動(dòng)學(xué)生學(xué)習(xí)的積極性和參與性。
【項(xiàng)目拓展】
(1)應(yīng)用專(zhuān)用運(yùn)動(dòng)控制器LM629,結(jié)合單片機(jī)組成控制系統(tǒng)。
(2)加上一定的輕型負(fù)載,驗(yàn)證驅(qū)動(dòng)系統(tǒng)的帶負(fù)載能力。
案例僅為參考

直流電機(jī)調(diào)速系統(tǒng)設(shè)計(jì)案例報(bào)告

一、前言

在所有的機(jī)電設(shè)備當(dāng)中,直流電動(dòng)機(jī)具有優(yōu)良的調(diào)速特性,調(diào)速平滑,方便,調(diào)速范圍廣,過(guò)載能力大,能承受頻繁的沖擊負(fù)載,可實(shí)現(xiàn)頻繁的無(wú)級(jí)快速起動(dòng)、制動(dòng)和反轉(zhuǎn);能滿足生產(chǎn)過(guò)程中自動(dòng)化系統(tǒng)各種不同的特殊運(yùn)行要求。傳統(tǒng)的晶閘管直流調(diào)速系統(tǒng),其控制叫路是基于模擬器件沒(méi)計(jì)的,這使得控制電路的硬件設(shè)備極其復(fù)雜,安裝調(diào)試?yán)щy,相對(duì)故障牢高。電動(dòng)機(jī)調(diào)速系統(tǒng)采用微機(jī)實(shí)現(xiàn)自動(dòng)控制,是電氣傳動(dòng)發(fā)展的主要方向之一。本文設(shè)計(jì)了一種基于單片機(jī)的直流電機(jī)脈寬調(diào)速控制系統(tǒng),其控制方案依靠軟件實(shí)現(xiàn)。采樣、觸發(fā)、控制均采用數(shù)字處理,避免了模擬控制電路對(duì)元件參數(shù)的影響,且參數(shù)調(diào)整簡(jiǎn)單方便,簡(jiǎn)化了系統(tǒng),提高了電機(jī)工作穩(wěn)定性,延長(zhǎng)了系統(tǒng)使用壽命。采用微機(jī)控制后,整個(gè)調(diào)速系統(tǒng)體積小、結(jié)構(gòu)簡(jiǎn)單、可靠性高、操作維護(hù)方便,電動(dòng)機(jī)穩(wěn)態(tài)運(yùn)轉(zhuǎn)時(shí)轉(zhuǎn)速精度可達(dá)到較高水平,靜動(dòng)態(tài)各項(xiàng)指標(biāo)均能較好地滿足工業(yè)生產(chǎn)中高性能電氣傳動(dòng)的要求。直流凋速技術(shù)已廣泛戍用于現(xiàn)代工業(yè)、航天等各個(gè)領(lǐng)域。
二、總體方案設(shè)計(jì)
對(duì)于同一個(gè)研究的系統(tǒng),根據(jù)不同的要求和精確度,所用到的方案也不一樣,作出的具體要求如下:
1.實(shí)現(xiàn)對(duì)電機(jī)的啟動(dòng)、停止、加速、減速、正轉(zhuǎn)、反轉(zhuǎn)的控制;
   2.通過(guò)編碼器實(shí)現(xiàn)對(duì)電機(jī)速度的檢測(cè);
   3.實(shí)現(xiàn)對(duì)電機(jī)實(shí)時(shí)速度的顯示;
   4.設(shè)計(jì)電機(jī)驅(qū)動(dòng)的硬件電路;
   5.編制驅(qū)動(dòng)電機(jī)的單片機(jī)控制程序;
   6.要求電機(jī)穩(wěn)態(tài)工作性能好,電機(jī)速度可調(diào)范圍寬至少達(dá)到0-1200r/min  。      

通過(guò)軟件產(chǎn)生PWM信號(hào),并由P3.2輸出,經(jīng)過(guò)驅(qū)動(dòng)電路處理后供給直流電機(jī),從而使直流電機(jī)在脈沖高電平時(shí)電得電,在低電平的時(shí)候失電。程序上通過(guò)使用延時(shí)模塊使得單片機(jī)在不同的時(shí)間段輸出不同的電平。啟動(dòng)單片機(jī),整個(gè)系統(tǒng)進(jìn)入準(zhǔn)備狀態(tài)。按下電路板上的啟動(dòng)按鍵后,根據(jù)驅(qū)動(dòng)路中由四個(gè)三極管構(gòu)成的橋式電路的特點(diǎn),當(dāng)P2.4和P2.5為高電平,P2.6和P2.7為低電平時(shí)電機(jī)正;反之當(dāng)P2.4和P2.5為低電平,P2.6和P2.7為高電平時(shí)電機(jī)反轉(zhuǎn)。根據(jù)加速和減速鍵,調(diào)整P3.2輸出脈沖的高低電平時(shí)的初始值,從而可以控制P3.2輸出高低電平時(shí)的占空比,進(jìn)而控制直流電機(jī)的轉(zhuǎn)速。
                          圖 1 系統(tǒng)控制簡(jiǎn)圖
三、 硬件電路設(shè)計(jì) 結(jié)合以往的設(shè)計(jì)經(jīng)驗(yàn),根據(jù)單片機(jī)系統(tǒng)的特點(diǎn),針對(duì)硬件電路的設(shè)計(jì)作出以下兩點(diǎn)要求:(1)考慮到可以盡可能地簡(jiǎn)化電路,應(yīng)該盡可能使用集成度高功能性強(qiáng)的芯片;(2)考慮到電路修改優(yōu)化的情況要留有將來(lái)修改擴(kuò)展的余地。(一)單片機(jī)最小系統(tǒng)的設(shè)計(jì)
單片機(jī)的最小系統(tǒng):所謂的單片機(jī)最小系統(tǒng)指的是由單片機(jī)和一些基本的外圍電路所組成的一個(gè)可以工作的單片機(jī)系統(tǒng)。需要在單片機(jī)18,19引腳之間連接晶振,并且在晶振兩邊分別并聯(lián)一個(gè)22UF的電容;另外還包括在單片機(jī)的復(fù)位引腳通過(guò)開(kāi)關(guān)再接到地構(gòu)成復(fù)位電路。通常來(lái)說(shuō),它包括單片機(jī),復(fù)位電路和時(shí)鐘電路。
1.微處理器選擇及硬件介紹
圖2 STC89C52單片機(jī)引腳圖
    如圖2所示89C52單片機(jī)一共有40個(gè)引腳,其中20引腳和40引腳分別接地和接電源VCC,以提供合適的電壓給單片機(jī)工作。P0 ,P1,P2,P3這四組端口每一組都具有0到7號(hào)8個(gè)I\O口,一共是32個(gè),這32個(gè)端口可以作為單片機(jī)的輸入端也可以作為它的輸出端,每一組端口的具體功能作用都有相同的部分也有不同之處,詳細(xì)的用法如下:
     P0口(P0.0——P0.7):它們屬于單片機(jī)上的39到32引腳,是雙向8位的三態(tài)輸入輸出口,每一個(gè)端口都可以獨(dú)立使用,在這次的設(shè)計(jì)中,P0口就是用作了驅(qū)動(dòng)LED數(shù)碼管(分別接在了數(shù)碼管的8個(gè)陽(yáng)極)。
   P1口(P1.1——P1.7):它們屬于單片機(jī)上的1腳到8腳,這8個(gè)端口也是可以獨(dú)立使用,但是這跟P0口有點(diǎn)不同,就是每一個(gè)端口內(nèi)部已經(jīng)接上了上拉電阻,使得端口的輸出沒(méi)有高阻態(tài),輸入也沒(méi)有鎖存功能,所以說(shuō)這并不是我們常說(shuō)的輸入輸出口,而是作為“準(zhǔn)雙向端口”。正是這些區(qū)別使得P1口的作用跟P0口有很大的區(qū)別。在本次的設(shè)計(jì)中P1.0到P1.3是用作驅(qū)動(dòng)四個(gè)指示燈,而P1.4到P1.7是連接到了4個(gè)按鍵,用以把按鍵的信號(hào)輸入給單片機(jī)。
     P2口(P2.0——P2.7):它們屬于單片機(jī)上的21到28引腳,P2口跟P1口很相似,都是內(nèi)接上拉電阻,作為“準(zhǔn)雙向端口”,可以獨(dú)立使用。在本次的設(shè)計(jì)中,P2.0到P2.3分別接到了四位數(shù)碼管的四個(gè)位選端口,而P2.4到P2.7則作為輸出接到橋式電路的四個(gè)控制端,通過(guò)單片機(jī)實(shí)現(xiàn)控制電機(jī)的正反轉(zhuǎn)。
    另外89C52單片機(jī)的外部引腳中還有幾個(gè)是比較普遍要用到的,例如:
    第9引腳的復(fù)位引腳RST,該引腳是用于單片機(jī)的復(fù)位初始化,當(dāng)該引腳輸入連續(xù)兩個(gè)機(jī)器周期以上的高電平時(shí),單片機(jī)就會(huì)自動(dòng)的復(fù)位,所謂的復(fù)位就是,單片機(jī)從頭開(kāi)始執(zhí)行程序
    第18,19引腳:這兩個(gè)引腳為單片機(jī)的時(shí)鐘輸入引腳,兩腳之間可接石英晶體或者振蕩電容(在本次設(shè)計(jì)中這兩個(gè)引腳接上的是頻率為12M的晶振,而在晶振的兩邊需要分別并聯(lián)一個(gè)22PF的電容,以幫助起振)
     第20引腳:為程序存儲(chǔ)器允許輸出控制端,當(dāng)內(nèi)部ROM讀取時(shí), 程序存儲(chǔ)器允許輸出控制端不動(dòng)作:外部ROM讀取時(shí),在每個(gè)機(jī)器周期會(huì)動(dòng)作兩次;當(dāng)外部RAM讀取時(shí),兩個(gè)脈沖會(huì)被跳過(guò)不會(huì)輸出;外接ROM時(shí),與ROM的OE腳相接。   
2 .復(fù)位電路及時(shí)鐘電路
維持單片機(jī)最小系統(tǒng)運(yùn)行的基本模塊包括復(fù)位電路和時(shí)鐘電路。復(fù)位電路通常分為兩種:上電復(fù)位和手動(dòng)復(fù)位,如圖3,圖4所示。

        

      圖3 上電復(fù)位                        圖4 手動(dòng)復(fù)位
比較上電復(fù)位與手動(dòng)復(fù)位兩種方式的優(yōu)缺點(diǎn)時(shí),考慮到系統(tǒng)在運(yùn)行的過(guò)程中有時(shí)會(huì)出現(xiàn)程序跑飛的情況,所以在程序的開(kāi)發(fā)過(guò)程中,一般都需要手動(dòng)復(fù)位。在這次設(shè)計(jì)同樣也是選用手動(dòng)復(fù)位。
給單片機(jī)提供較高頻率的時(shí)鐘信號(hào)可以使單片機(jī)的處理速度更快,處理事情的效率也相應(yīng)的提高,但是伴之帶來(lái)的是更大的功耗和更惡烈的工作環(huán)境,太高的時(shí)鐘頻率有可能會(huì)影響到系統(tǒng)的工作穩(wěn)定性?紤]到在本系統(tǒng)中單片機(jī)只是用作控制,而不是用于高速信號(hào)的采樣處理,所以只需要采用合適頻率的晶振即可。合適頻率的晶振對(duì)于選頻信號(hào)強(qiáng)度準(zhǔn)確度都有好處,本次設(shè)計(jì)選取接入XTAL1和XTAL2引腳的是12.000M無(wú)源晶振。并且在晶振兩邊分別并聯(lián)2個(gè)22pF陶瓷電容幫助起振。
最小系統(tǒng)如圖5所示:            
   
圖5 最小系統(tǒng)
(二) 直流電機(jī)驅(qū)動(dòng)電路設(shè)計(jì)       
        因?yàn)閱纹瑱C(jī)P3口輸出的電壓最高才有5V,難以直接驅(qū)動(dòng)直流電機(jī)。所以我們需要先把PWM信號(hào)通過(guò)一個(gè)三極管放大后才能驅(qū)動(dòng)直流電機(jī)。驅(qū)動(dòng)電路如圖3.5所示,其中Q1和Q3都是NPN型三極管,而Q2和Q4都是PNP型三極管,Q1,Q2,Q3,Q4四個(gè)三極管共同構(gòu)成了一個(gè)橋式電路,而Q0構(gòu)成放大電路,把PWM信號(hào)放大到可以驅(qū)動(dòng)直流電機(jī)。當(dāng)P2.4和P2.5為高電平,P2.6和P2.7為低電平時(shí),PWM信號(hào)經(jīng)過(guò)三極管Q0的放大之后,從Q1端流向Q4端,實(shí)現(xiàn)了電機(jī)正;反之當(dāng)P2.4和P2.5為低電平,P2.6和P2.7為高電平時(shí)PWM信號(hào)放大后從Q3端流向Q2,實(shí)現(xiàn)了電機(jī)反轉(zhuǎn)。


                           圖6 驅(qū)動(dòng)電路
(三) 7805穩(wěn)壓電源電路圖
為了使整個(gè)系統(tǒng)能夠順利穩(wěn)定的工作,所以必需要使各個(gè)元器件都能穩(wěn)定正常地工作,為此提供一個(gè)穩(wěn)定的直流電源是基本的保證,利用芯片LM7805很容易就可以構(gòu)成穩(wěn)壓電源電路,可以實(shí)現(xiàn)這個(gè)功能。
    芯片 LM7805是具有三個(gè)端腳的正電源穩(wěn)壓電路,一個(gè)管腳接地,另外兩個(gè)分別是輸入電壓端和輸出電壓端。利用它可以輸出一系列固定值的電壓,而7805的封裝是TO-220.由于芯片7805的內(nèi)部電流有所限制,并且還具有過(guò)熱保護(hù)和 安全工作區(qū)保護(hù),所以一般情況下是不會(huì)損壞的,在提供足夠的散熱片的情況下,芯片甚至能提供大于1.5A的輸出電流。在這次設(shè)計(jì)中主要是利用7805芯片的穩(wěn)壓電路把電源12V的電壓轉(zhuǎn)化成5V的穩(wěn)定電壓輸出。如圖7即為利用芯片7805所設(shè)計(jì)的穩(wěn)壓電源電路(輸入電壓VCC為12V,而輸出的穩(wěn)定電壓為5V)
            
圖7 穩(wěn)壓電源電路圖
(四)顯示模塊設(shè)計(jì)
在本設(shè)計(jì)課題中采用的是4位7段共陰極LED數(shù)碼管,它的引腳圖如圖8所示。
七段數(shù)碼管是用七段發(fā)光二極管來(lái)顯示數(shù)學(xué)0到9,加外還有一根發(fā)光二極管是用來(lái)顯示小數(shù)點(diǎn),其中數(shù)碼管可以分為共陰極和共陽(yáng)極兩種,共陰極指的是把數(shù)碼管里面的發(fā)光二極管的陰極全部接在一起(接到地),當(dāng)發(fā)光二極管的另一端接到高電平的時(shí)候,數(shù)碼管中相對(duì)應(yīng)的二極管就會(huì)發(fā)光,正是應(yīng)用這個(gè)原理,可以先把數(shù)碼管的8個(gè)輸入端進(jìn)行編譯,只要控制這8個(gè)輸入端就可以把所要顯示的內(nèi)容,實(shí)時(shí)顯示出來(lái)。在這次設(shè)計(jì)中所要用到的是四位數(shù)碼管,所以除了這8個(gè)控制顯示數(shù)字的輸入外,還有4位輸入用來(lái)選擇顯示哪一位數(shù)碼管工作,通過(guò)位選和段選就可以完美的實(shí)現(xiàn)直流電機(jī)的實(shí)時(shí)速度顯示。用于線選的8位輸入直接接到單片機(jī)的輸出端的情況下,由于單片機(jī)輸出高電平時(shí),用于驅(qū)動(dòng)數(shù)碼管時(shí)需要接上拉電阻,因?yàn)樾枰蘖鳎乐闺娏鬟^(guò)大,但是如果上拉電阻過(guò)大的話會(huì)造成數(shù)碼管的顯示比較暗,經(jīng)過(guò)綜合考慮上拉電阻為1K即可。
其連接圖如圖8所示。            
                     
                        圖8  7段共陰極LED連接圖
(五)鍵盤(pán)電路設(shè)計(jì)
啟停、正反轉(zhuǎn)、加速、減速四個(gè)開(kāi)關(guān)分別與單片機(jī)的P1.4,P1.5,P1.6,P1.7,相連接,然后再與地相連。啟停是用于實(shí)現(xiàn)直流電機(jī)的啟動(dòng)與停止轉(zhuǎn)動(dòng),正反轉(zhuǎn)實(shí)現(xiàn)的是直流電機(jī)的正轉(zhuǎn)和反轉(zhuǎn),加速實(shí)現(xiàn)直流電機(jī)的加速功能,減速實(shí)現(xiàn)直流電機(jī)的減速功能,為了電路的精簡(jiǎn)性,在設(shè)計(jì)硬件電路鍵盤(pán)的時(shí)候把正反轉(zhuǎn),啟到停止這兩組功能分別集成在兩個(gè)不同的按鍵上(S1為啟停功能,S2為正反轉(zhuǎn)功能)其電路如圖9所示。

        

                          圖9  按鍵電路
(六) 硬件電路總圖
圖10為硬件電路的原理圖

                              圖10 硬件電路的原理圖







如圖11為硬件電路的PCB電路圖

                           圖11   硬件電路的PCB電路圖
                         四、 軟件編程
設(shè)計(jì)采用了模塊化的編程方法,把整個(gè)作品系統(tǒng)分為驅(qū)動(dòng)模塊,顯示模塊,測(cè)速模塊,調(diào)速模塊,按鈕掃描等幾個(gè)部分,在設(shè)計(jì)程序的時(shí)候先把每一個(gè)模塊的流程圖畫(huà)出來(lái),再根據(jù)流程圖編寫(xiě)程序,把每個(gè)模塊的功能獨(dú)立的實(shí)現(xiàn)好,再把各個(gè)模塊的程序連起來(lái),實(shí)現(xiàn)整個(gè)系統(tǒng)的功能。

在主程序的設(shè)計(jì)中要合理地調(diào)用各模塊程序。模塊化設(shè)計(jì)的優(yōu)點(diǎn)是:無(wú)論是硬件還是軟件,每一個(gè)模塊都相對(duì)獨(dú)立,故能獨(dú)立地進(jìn)行設(shè)計(jì)、研制、調(diào)試和修改,從而使復(fù)雜的工作得以簡(jiǎn)化。模塊之間的相互獨(dú)立也有助于研制任務(wù)的分解和設(shè)計(jì)人員之間的分工合作,這樣可提高工作效率和儀表的研制速度。其總體流程圖如圖12所示 。
圖12 軟件設(shè)計(jì)流程圖
(一)PWM波軟件設(shè)計(jì)
通過(guò)程序執(zhí)行的延時(shí)來(lái)實(shí)現(xiàn)PWM的產(chǎn)生,當(dāng)變量CNT不為0時(shí),PWM為高電平,當(dāng)CNT自減為0后,開(kāi)始輸出低電平(TEMP開(kāi)始自減),當(dāng)TEMP自減到0時(shí),重新輸出高電平,就是通過(guò)對(duì)變量PWMCNT的控制實(shí)現(xiàn)了脈沖寬度的調(diào)整:
定義 OutPutPWM(u8 cnt)子程序
void OutPutPWM(u8 cnt)
   {
        u8 temp;
         temp=RESOLUTION-cnt;
         while(cnt--)PWM=0;//高電平部分
       while(temp--)PWM=1;//低電平部分
}
輸出PWM脈沖的程序?yàn)椋?/font>
if(power)OutPutPWM(pwmcnt);
        else PWM=1;
(二) 電機(jī)啟停,正反轉(zhuǎn),加速,減速的軟件設(shè)計(jì)
     直流電機(jī)的正反轉(zhuǎn)可以通過(guò)純軟件就可以實(shí)現(xiàn)了,但是考慮到個(gè)人的能力問(wèn)題,如果是用純硬件來(lái)實(shí)現(xiàn)的話,對(duì)程序的能力就要更高一點(diǎn),對(duì)我本人而言這是一個(gè)難題,所以在設(shè)計(jì)硬件電路的時(shí)候,針對(duì)這個(gè)問(wèn)題,設(shè)計(jì)了一個(gè)橋式電路,有了該電路,程序上只要簡(jiǎn)單的控制橋式電路的四個(gè)控制端就可了。
    變量key=Key_Scan(),通過(guò)子程序Key_Scan()對(duì)啟停,正反轉(zhuǎn),加速,減速,四個(gè)按鍵進(jìn)行掃描,然后將掃描后的值賦給KEY,再根據(jù)Switch(key)程序?qū)崿F(xiàn)電機(jī)啟停,正反轉(zhuǎn),加速,減速的控制。
        Switch(key)
        {
            case 0:break;
            case 1://啟?刂
                power=!power;
                if(power)LED1=0;
                else
                {
                    LED1=1;
                    MotorCtrl(0);
                }
                break;
            case 2://正反轉(zhuǎn)控制
                direct=!direct;
                if(direct)
                {
                    LED2=0;LED3=1;
                    MotorCtrl(1);
                }
                else
                {
                    LED2=1;LED3=0;
                    MotorCtrl(2);
                }           
                break;
            case 3://加速控制
                if(pwmcnt<RESOLUTION)pwmcnt++;
                value=pwmcnt;
                break;           
                case 4://減速控制
                if(pwmcnt>0)pwmcnt--;
                value=pwmcnt;
                break;            
                default:break;
        }

圖13 直流電機(jī)啟停  正反轉(zhuǎn)  加速  減速程序設(shè)計(jì)流程圖      

(三) 電機(jī)速度的計(jì)算方法
在檢測(cè)直流電機(jī)的速度上,有兩種方法可以實(shí)現(xiàn),一種是利用霍爾元件,另一種是利用編碼器。選用霍爾元件測(cè)速的原理是根據(jù)霍爾元件屬于帶有磁性的元件,當(dāng)電機(jī)轉(zhuǎn)動(dòng)的時(shí)候,霍爾元件會(huì)產(chǎn)生相應(yīng)的輸出信號(hào),把這個(gè)信號(hào)整理之后形成矩形脈沖信號(hào),再把這個(gè)信號(hào)輸給單片機(jī),經(jīng)單片機(jī)計(jì)數(shù)器計(jì)數(shù)處理,便可得到電機(jī)的轉(zhuǎn)速。對(duì)比兩種方法,個(gè)人覺(jué)得選用編碼器更加適合我,因?yàn)槲覍?duì)編碼器測(cè)速比較熟悉。本次設(shè)計(jì)選用的是334線編碼器,直流電機(jī)每轉(zhuǎn)一圈,編碼器便產(chǎn)生334個(gè)脈沖,經(jīng)過(guò)處理可以整形為矩形脈沖。通過(guò)對(duì)編碼器采集到的信號(hào)進(jìn)行處理后,將處理后的脈沖信號(hào)從編碼器輸出到單片機(jī),通過(guò)用計(jì)數(shù)器對(duì)輸出脈沖進(jìn)行計(jì)數(shù),單片機(jī)計(jì)算每半秒時(shí)間內(nèi)接收到的脈沖個(gè)數(shù)N,根據(jù)N乘以120再除以碼盤(pán)數(shù)就可以求出此時(shí)直流電機(jī)的轉(zhuǎn)速是多少了。
if(a==50)                                                                      //50次中斷等于0.5S
    {
                            zhuansu=(TH1*256+TL1)/334*120;              //每分鐘轉(zhuǎn)速等于T1一秒計(jì)數(shù)脈沖值乘60秒除以碼盤(pán)數(shù)
                            TL1=0;                                                                                                     //定時(shí)器重新賦初值,從0開(kāi)始計(jì)數(shù)
                            TH1=0;               a=0;                                                                      //a0,為下一秒開(kāi)始計(jì)數(shù)賦值    }(四) 電機(jī)速度的顯示
1.共陰極七段數(shù)碼管的編碼
共陰極數(shù)碼管的8個(gè)段選位需要編碼后才方便顯示,經(jīng)過(guò)分析便可以得到如下段碼數(shù)據(jù)組:
uchar duan_code[ ]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40};//段碼數(shù)據(jù)組0---9
2.定義電機(jī)的顯示子程序void display(uint zhuansu)
void display(uint zhuansu)
{
              P0=duan_code[zhuansu/1000];                                          //顯示千位數(shù)值
              P1=wei_code[0];                                                                                    //點(diǎn)亮第一位數(shù)碼管
              delay_ms(3);                                                                                                  //延時(shí),給數(shù)碼管一定的顯示時(shí)間
              P0=duan_code[zhuansu%1000/100];                            //顯示百位數(shù)值
              P1=wei_code[1];                                                                                    //點(diǎn)亮第二位數(shù)碼管
              delay_ms(3);                                                                                                  //延時(shí),給數(shù)碼管一定的顯示時(shí)間
              P0=duan_code[zhuansu%1000%100/10];              //顯示十位數(shù)值
              P1=wei_code[2];                                                                                    //點(diǎn)亮第三位數(shù)碼管
              delay_ms(3);                                                                                                  //延時(shí),給數(shù)碼管一定的顯示時(shí)間
              P0=duan_code[zhuansu%10];                                                        //顯示個(gè)位數(shù)值
              P1=wei_code[3];                                                                                    //點(diǎn)亮第四位數(shù)碼管
              delay_ms(3);                                                                                                  //延時(shí),給數(shù)碼管一定的顯示時(shí)間            
}

圖14所示是數(shù)碼管顯示模塊的程序設(shè)計(jì)流程圖。

圖14    數(shù)碼管顯示流程圖


  • 系統(tǒng)調(diào)試與分析
系統(tǒng)的調(diào)試屬于整個(gè)設(shè)計(jì)的最后一個(gè)環(huán)節(jié),但是卻十分的重要,在這個(gè)環(huán)節(jié)可以把整個(gè)系統(tǒng)中的不足之處通過(guò)修正改進(jìn)達(dá)到正常,因?yàn)檐浖布加锌赡軙?huì)出現(xiàn)問(wèn)題,所以必需把軟件調(diào)試跟硬件調(diào)試分開(kāi)來(lái)完成,這樣更加有利于發(fā)現(xiàn)問(wèn)題的所在和有針對(duì)性的解決問(wèn)題。硬件的調(diào)試主要是檢測(cè)電路板有沒(méi)有短路現(xiàn)象或者接線接錯(cuò)了。嚴(yán)重一點(diǎn)的話會(huì)出現(xiàn)功能上的錯(cuò)誤,這些問(wèn)題都會(huì)影響到整個(gè)系統(tǒng)的功能,所以硬件調(diào)試必需首先進(jìn)行,在確保硬件電路沒(méi)問(wèn)題的情況下再寫(xiě)程序和修改程序。至于軟件調(diào)試的話,需要分模塊來(lái)進(jìn)行,這次設(shè)計(jì)一共有驅(qū)動(dòng)模塊,顯示模塊,測(cè)速模塊,還有就是各指示燈的指示功能,在編寫(xiě)程序或者修改程序的時(shí)候必需要根據(jù)模塊來(lái)修改,這樣才會(huì)有針對(duì)性和效率。確保系統(tǒng)的穩(wěn)定正常運(yùn)行。
(一)硬件調(diào)試
    這次設(shè)計(jì)所用到的硬件電路是用Protel軟件畫(huà)好原理圖和PCB電路,然后寄到其他專(zhuān)業(yè)做版的公司做出來(lái)的電路版,經(jīng)過(guò)硬件調(diào)試,發(fā)現(xiàn)板還是出現(xiàn)了一點(diǎn)問(wèn)題,在畫(huà)圖的時(shí)候由于過(guò)于粗心,在畫(huà)PCB版的時(shí)候把PNP三極管和NPN三極管的封裝調(diào)亂了,等到電路版做出來(lái)了,用程序測(cè)試的時(shí)候才發(fā)現(xiàn),所以要在電路版上面改。還有就是在畫(huà)板的時(shí)候還有一條線沒(méi)有連好,所以電路板做出來(lái)后,需要另外飛線把這根線連好,這些雖然是小問(wèn)題,還可以通過(guò)修改電路板,但是都是因?yàn)樵诋?huà)板時(shí)因?yàn)榇中亩赶碌腻e(cuò)誤,是完全可以避免的。通過(guò)分模塊的用程序來(lái)檢測(cè)硬件,經(jīng)過(guò)幾次的修改,基本是沒(méi)有什么問(wèn)題了,但是發(fā)現(xiàn)數(shù)碼管的顯示感覺(jué)有點(diǎn)暗,原來(lái)是因?yàn)閿?shù)碼管所用的排阻是15K的,電阻過(guò)大,致使驅(qū)動(dòng)數(shù)碼管的電流偏小。為了最求完美,所以換了10K的排阻。幾經(jīng)修改,終于把硬件電路調(diào)好。如圖15為調(diào)試好了的硬件電路:

                            圖15  調(diào)試好的硬件電路圖

(二)軟件調(diào)試
軟件調(diào)試指的是通過(guò)仿真軟件模擬設(shè)計(jì)的硬件電路,加載上程序后的運(yùn)行情況,這次設(shè)計(jì)所用的仿真軟件是keil軟件,這是一款功能很強(qiáng)大的軟件,其中的仿真功能也是非常實(shí)用的,可以通過(guò)執(zhí)行單步運(yùn)行檢測(cè)每一句程序的問(wèn)題,可以把程序按功能模塊來(lái)檢測(cè)功能性的錯(cuò)誤,最后可以實(shí)時(shí)檢測(cè)整個(gè)程序運(yùn)行時(shí),硬件電路的執(zhí)行情況?梢远ㄎ坏矫恳痪涑绦蚴欠裾_,這樣對(duì)于檢測(cè)修改程序提供了很大的方便,所以說(shuō)這一步是非常實(shí)用必要的一步。
通過(guò)KEIL軟件,程序單步運(yùn)行,模塊化調(diào)試,整體執(zhí)行,在調(diào)試的過(guò)程中觀察存儲(chǔ)單元的數(shù)據(jù)變化,查找出程序的語(yǔ)法和邏輯錯(cuò)誤,每一句,每一個(gè)模塊地修改好,具體的調(diào)試步驟如下:
    1. 把系統(tǒng)分為驅(qū)動(dòng)模塊,測(cè)速模塊,顯示模塊,調(diào)速模塊獨(dú)立地在仿真軟件中調(diào)試。
2. 對(duì)于需要賦值的那幾個(gè)模塊,在調(diào)試的時(shí)候,要檢測(cè)在賦予不同的初值時(shí)各參數(shù)的變化情況,確定好最佳的賦值
3. 把前面分開(kāi)獨(dú)立檢測(cè)的所有模塊綜合起來(lái),執(zhí)行全速調(diào)試,觀察模擬的結(jié)果,看看是否已經(jīng)符合系統(tǒng)的要求和目的,如果還是沒(méi)有實(shí)現(xiàn)所要達(dá)到的要求,就要重新分模塊來(lái)調(diào)試。

附作品和程序

硬件電路實(shí)物照片:


總程序:
/*--------------------------------------------------------
              名稱(chēng):基于單片機(jī)控制直流電機(jī)調(diào)速系統(tǒng)
    單片機(jī):STC89C52RC
              晶振:12M
              光柵盤(pán):334格
              輸入:P3.5(定時(shí)器T1計(jì)數(shù)輸入口)
              輸出數(shù)碼管顯示:位選接P1的0,1,2,3端口;段選接P0口
              內(nèi)容:數(shù)碼管顯示所測(cè)電機(jī)轉(zhuǎn)速
--------------------------------------------------------*/
  1. //#include <reg52.h>                                                        //包含單片機(jī)寄存器的頭文件
  2. #include <REGX52.H>

  3. #define uchar unsigned char              //定義uchar為無(wú)符號(hào)字符型變量
  4. #define uint  unsigned int              //定義uint為無(wú)符號(hào)整型變量
  5. #define ulong unsigned long            
  6. //uchar wei_code[]={0xfe,0xfd,0xfb,0xf7};              //位碼數(shù)據(jù)組
  7. #define  wei1  P2_1=1;P2_2=1;P2_3=1;P2_0=0;
  8. #define  wei2  P2_0=1;P2_2=1;P2_3=1;P2_1=0;
  9. #define  wei3  P2_0=1;P2_1=1;P2_3=1;P2_2=0;
  10. #define  wei4  P2_0=1;P2_1=1;P2_2=1;P2_3=0;
  11. #define  RESOLUTION      200//PWM量化精度


  12. sbit  LED1=P1^0;
  13. sbit  LED2=P1^1;
  14. sbit  LED3=P1^2;
  15. sbit  LED4=P1^3;
  16. sbit  KEY1=P1^4;
  17. sbit  KEY2=P1^5;
  18. sbit  KEY3=P1^6;
  19. sbit  KEY4=P1^7;
  20. sbit  PWM=P3^2;


  21. void  Delay(uint x);
  22. void  Init(void);
  23. void  MotorCtrl(uchar cmd);
  24. uchar Key_Scan(void);

  25. uchar duan_code[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40};//段碼數(shù)據(jù)組0---9
  26. uint  zhuansu,a=0;                                                                      //定義變量名稱(chēng)
  27. bit flag,power,direct;                                                                                                  //計(jì)時(shí)一秒標(biāo)志位                           
  28. /**************************************
  29. 主函數(shù)
  30. ***************************************/
  31. void main()
  32. {               
  33.     uchar key;
  34.     uint  cnt,pwmcnt;   

  35.               Init();                  //定時(shí)計(jì)數(shù)器初始化
  36.     cnt=0;
  37.     power=0;
  38.     direct=0;
  39.     pwmcnt=0;
  40.     MotorCtrl(1);
  41.               while(1)                                                                                   
  42.               {                           
  43.         key=Key_Scan();
  44.         switch(key)
  45.         {
  46.             case 1://啟?刂
  47.                 power=!power;
  48.                 if(power)LED1=0;
  49.                 else
  50.                 {
  51.                     LED1=1;
  52.                     MotorCtrl(0);
  53.                     PWM=1;
  54.                 }
  55.                 break;
  56.             case 2://正反轉(zhuǎn)控制
  57.                 direct=!direct;
  58.                 if(direct)MotorCtrl(1);
  59.                 else MotorCtrl(2);           
  60.                 break;
  61.             case 3:
  62.                 if(pwmcnt<RESOLUTION)pwmcnt++;
  63.                 break;//加速控制
  64.             case 4:
  65.                 if(pwmcnt>0)pwmcnt--;
  66.                 break;//減速控制
  67.             default:break;
  68.         }
  69.         if(power)
  70.         {
  71.             cnt++;
  72.             if(cnt<pwmcnt)PWM=0;
  73.             else PWM=1;
  74.             if(cnt>=RESOLUTION)cnt=0;
  75.         }     
  76.               }
  77. }
  78. /**************************************
  79. T0定時(shí)中斷服務(wù)程序
  80. ***************************************/
  81. void timer0() interrupt 1 using 1//10MS中斷一次
  82. {
  83.     static uchar wei=0;
  84.     uchar temp;

  85.               a++;                                                                                                  //每中斷一次a加1
  86.               if(a==50)                                                                      //50次中斷等于0.5S
  87.     {
  88.                             zhuansu=(TH1*256+TL1)/334*120;              //每分鐘轉(zhuǎn)速等于T1一秒計(jì)數(shù)脈沖值乘60秒除以碼盤(pán)數(shù)
  89.                             TL1=0;                                                                                                     //定時(shí)器重新賦初值,從0開(kāi)始計(jì)數(shù)
  90.                             TH1=0;      
  91.         a=0;                                                                      //a置0,為下一秒開(kāi)始計(jì)數(shù)賦值
  92.     }
  93.               if(wei==0)
  94.               {
  95.         temp=zhuansu/1000;
  96.                             wei4;      
  97.         P0=duan_code[temp];
  98.         wei=1;
  99.               }
  100.               else if(wei==1)
  101.               {            
  102.         temp=zhuansu/100%10;
  103.                             wei3;                     
  104.                             P0=duan_code[temp];
  105.         wei=2;
  106.               }
  107.               else if(wei==2)
  108.               {
  109.         temp=zhuansu/10%10;
  110.                             wei2;                           
  111.                             P0=duan_code[temp];
  112.         wei=3;
  113.               }
  114.               else if(wei==3)
  115.               {
  116.         temp=zhuansu%10;
  117.                             wei1;                           
  118.                             P0=duan_code[temp];
  119.         wei=0;
  120.               }   
  121.               TH0=(65536-10000)/256;
  122.               TL0=(65536-10000)%256;              //重裝初值
  123. }
  124. /**************************************
  125. 延時(shí),大約1ms
  126. ***************************************/
  127. void Delay(uint x)                                                                                                                                          
  128. {
  129.     uchar i;
  130.     while(x--)            
  131.     for(i=0;i<120;i++);            
  132. }
  133. /**************************************
  134. 定時(shí)器計(jì)數(shù)器初始化
  135. ***************************************/
  136. void Init(void)
  137. {
  138.     MotorCtrl(0);
  139.               TMOD=0x51;              //定時(shí)器T1工作于計(jì)數(shù)模式1,定時(shí)器T0工作于計(jì)時(shí)模式1
  140.               TH0=(65536-10000)/256;              //定時(shí)器T0的高8位設(shè)置初值,每10ms產(chǎn)生一次中斷
  141.               TL0=(65536-10000)%256;              //定時(shí)器T0的低8位設(shè)置初值,每10ms產(chǎn)生一次中斷            
  142.               TH1=0;              //定時(shí)器T1高8位賦初值0
  143.               TL1=0;              //定時(shí)器T1低8位賦初值0
  144.               EA=1;                            //開(kāi)總中斷
  145.               ET0=1;              //定時(shí)器T0中斷允許
  146.               TR1=1;              //定時(shí)器T1啟動(dòng)
  147.               TR0=1;              //定時(shí)器T0啟動(dòng)            
  148. }
  149. /**************************************
  150. 電機(jī)正反轉(zhuǎn)及停止控制
  151. ***************************************/
  152. void MotorCtrl(uchar cmd)
  153. {
  154.     uchar temp;
  155.     temp=P2&0x0f;
  156.     if(cmd==0)
  157.     {
  158.         temp|=0xa0;//停止
  159.         LED2=1;LED3=1;
  160.     }
  161.     else if(cmd==1)
  162.     {
  163.         temp|=0x30;//正轉(zhuǎn)
  164.         LED2=0;LED3=1;
  165.     }
  166.     else if(cmd==2)
  167.     {
  168.         temp|=0xc0;//反轉(zhuǎn)
  169.         LED2=1;LED3=0;      
  170.     }
  171.     P2=temp;
  172. }
  173. /**************************************
  174. 按鍵掃描
  175. ***************************************/
  176. uchar Key_Scan(void)
  177. {
  178.               static uchar key_up=1;//按鍵按松開(kāi)標(biāo)志
  179.               if(key_up&&(KEY1==0||KEY2==0||KEY3==0||KEY4==0))
  180.               {
  181.                             Delay(10);//去抖動(dòng)
  182.                             key_up=0;
  183.                             if(KEY1==0)return 1;
  184.                             if(KEY2==0)return 2;
  185.                             if(KEY3==0)return 3;
  186.                             if(KEY4==0)return 4;
  187.               }
  188.               else if(KEY1==1&&KEY2==1&&KEY3==1&&KEY4==1)key_up=1;
  189.               return 0;
  190. }
  191. 0)return 3;
  192.                             if(KEY4==0)return 4;
  193.               }
  194.               else if(KEY1==1&&KEY2==1&&KEY3==1&&KEY4==1)key_up=1;
  195.               return 0;
  196. }
復(fù)制代碼


完整的Word格式文檔51黑下載地址:
控制電機(jī)綜合性試驗(yàn)訓(xùn)練---直流伺服電機(jī)(5)(1).doc (2.21 MB, 下載次數(shù): 81)


評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏5 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:460567 發(fā)表于 2019-1-3 06:34 來(lái)自手機(jī) | 只看該作者
看著很不錯(cuò)!
回復(fù)

使用道具 舉報(bào)

板凳
ID:491947 發(fā)表于 2020-3-5 18:01 | 只看該作者
可以,很不錯(cuò)
回復(fù)

使用道具 舉報(bào)

地板
ID:499088 發(fā)表于 2020-3-23 15:18 | 只看該作者
這還是不算真正的伺服系統(tǒng)吧?
回復(fù)

使用道具 舉報(bào)

5#
ID:719306 發(fā)表于 2020-4-18 16:08 | 只看該作者
誰(shuí)寫(xiě)好了這個(gè)伺服電機(jī)驅(qū)動(dòng)?
回復(fù)

使用道具 舉報(bào)

6#
ID:993066 發(fā)表于 2021-12-20 15:43 | 只看該作者
weihongping 發(fā)表于 2020-3-23 15:18
這還是不算真正的伺服系統(tǒng)吧?

我覺(jué)的不是真正的伺服系統(tǒng),伺服系統(tǒng)是閉環(huán)的,可以實(shí)現(xiàn)自動(dòng)化控制的。你這個(gè)還真不是伺服
回復(fù)

使用道具 舉報(bào)

7#
ID:1102388 發(fā)表于 2024-4-24 19:10 | 只看該作者
仿真設(shè)計(jì)的電路圖可以分享一下嗎
回復(fù)

使用道具 舉報(bào)

8#
ID:344848 發(fā)表于 2024-4-26 09:42 | 只看該作者
電路設(shè)計(jì)缺少PID控制部分,此程序常用于教程。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表