• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      單片機(jī)PID電機(jī)轉(zhuǎn)速與位置控制系統(tǒng)設(shè)計(jì)

      2022-08-12 09:30:08李帥波
      關(guān)鍵詞:增量編碼器偏差

      趙 鵬,錢 美,李帥波

      (新疆理工學(xué)院 機(jī)電工程學(xué)院,新疆 阿克蘇 843000)

      0 引言

      在運(yùn)動(dòng)控制系統(tǒng)中,如智能車由于受到載重、地面摩擦力、坡度等的影響,如果按照傳統(tǒng)的PWM開環(huán)調(diào)速其速度非常不穩(wěn)定,甚至?xí)?dǎo)致電機(jī)堵轉(zhuǎn)的情況;在溫度控制系統(tǒng)中,要使溫度恒定通過加熱或制冷來實(shí)現(xiàn),但由于慣性的影響,控制溫度只能在某一個(gè)范圍內(nèi)波動(dòng),無法達(dá)到相對(duì)精確的控制[1]。PID控制是根據(jù)設(shè)定值與被測(cè)值的偏差,通過比例、積分、微分環(huán)節(jié)實(shí)現(xiàn)精確的控制,是一個(gè)二階線性控制器,適用于對(duì)被控對(duì)象模型了解不清楚的場(chǎng)合,其實(shí)質(zhì)是根據(jù)輸入的偏差值,按照比例、積分、微分的函數(shù)關(guān)系進(jìn)行運(yùn)算,運(yùn)算結(jié)果用以控制輸出。鑒于此,本設(shè)計(jì)提出以單片機(jī)為控制器,以直流電機(jī)為被控對(duì)象,設(shè)計(jì)了利用上位機(jī)監(jiān)控的直流電機(jī)轉(zhuǎn)速與位置的控制系統(tǒng),結(jié)合PID控制算法,實(shí)現(xiàn)對(duì)電機(jī)的轉(zhuǎn)速和位置的精確控制。

      1 系統(tǒng)結(jié)構(gòu)與原理分析

      1.1 系統(tǒng)結(jié)構(gòu)分析

      該設(shè)計(jì)中使用的單片機(jī)STC8A8K64S4A12為國(guó)產(chǎn)增強(qiáng)型1T系列,其一個(gè)時(shí)鐘周期為一個(gè)單指令周期,是傳統(tǒng)51單片機(jī)的12倍,內(nèi)含24 MHz高精度IRC,ISP編程時(shí)可上下調(diào)整。其內(nèi)部存儲(chǔ)空間也較為充裕,數(shù)據(jù)存儲(chǔ)器和程序存儲(chǔ)器分別為8 KB和64 KB。包含4路輸入捕獲輸出比較單元,可實(shí)現(xiàn)對(duì)電機(jī)編碼器數(shù)據(jù)的獲取。驅(qū)動(dòng)電路采用L298N模塊,電機(jī)選擇370減速電機(jī),減速比為1:30。采用330線的光電編碼器[2],即電機(jī)轉(zhuǎn)一圈可產(chǎn)生330×30=9900個(gè)脈沖,以串口的形式通過上位機(jī)虛擬示波器實(shí)時(shí)顯示PWM輸出信號(hào)、電機(jī)測(cè)量轉(zhuǎn)速、設(shè)定速度等信息,以便直觀的對(duì)比控制效果達(dá)到最佳控制。L298模塊內(nèi)部含有+5 V低壓差線性直流穩(wěn)壓器,其輸出電壓可供編碼器正常工作。具體系統(tǒng)結(jié)構(gòu)圖如圖1所示。

      圖1 系統(tǒng)結(jié)構(gòu)圖

      1.2 位置式PID原理分析

      PID控制規(guī)律數(shù)學(xué)表達(dá)式為:

      (1)

      經(jīng)離散化后得到PID控制表達(dá)式為:

      (2)

      上式子稱為全量式或位置式PID。如果為運(yùn)動(dòng)控制,利用PWM調(diào)節(jié)電機(jī)轉(zhuǎn)速,其位置式PID算法公式也可表示為:

      Pwm=Kp×e(k)+Ki×e(k)+Kd×[e(k)-e(k-1)]

      (3)

      1.3 增量式PID原理分析

      增量式PID控制算法是指其輸出只是被控制量的增量ΔU(k),只使用前后三次測(cè)量的偏差值,就可以求出控制的增量,其增量式PID控制算法公式為:

      ΔU(k)=Kp[e(k)-e(k-1)]+Kie(k)+Kd[e(k)-2e(k-1)+e(k-2)]

      它表示在兩次采樣時(shí)間間隔內(nèi)執(zhí)行器的位置變化量。與位置式相比,增量式計(jì)算量小得多。位置式與增量式關(guān)系如下:

      (4)

      后續(xù)的直流電機(jī)的速度與位置控制也是按上式進(jìn)行算法實(shí)現(xiàn)的[3-4]。

      1.4 編碼器原理分析

      光電編碼器是利用光柵衍射原理實(shí)現(xiàn)位移-數(shù)字變換,通過光電轉(zhuǎn)換,將輸出軸上的機(jī)械幾何位移量轉(zhuǎn)換成脈沖數(shù)字量的傳感器。編碼器A、B兩相輸出為相位相差90度的正交編碼信號(hào),其中輸出脈沖如下圖所示。

      圖2 電機(jī)順時(shí)針運(yùn)行編碼器輸出波形圖

      圖3 電機(jī)逆時(shí)針運(yùn)行編碼器輸出波形圖

      電機(jī)轉(zhuǎn)向與A、B相相位關(guān)系如表1所示。

      表1 電機(jī)轉(zhuǎn)向與編碼器輸出關(guān)系表

      由以上分析可知,求出編碼器輸出的A或B相中的一相單位時(shí)間內(nèi)的脈沖數(shù)即可求取電機(jī)的轉(zhuǎn)速;根據(jù)編碼器A、B相的相位差,可判斷出電機(jī)的轉(zhuǎn)向,當(dāng)A相相位超前B相相位90°時(shí),電機(jī)順時(shí)針運(yùn)動(dòng),當(dāng)A相相位滯后B相相位90°時(shí),電機(jī)逆時(shí)針運(yùn)動(dòng)[5]。

      2 軟硬件設(shè)計(jì)

      2.1 硬件設(shè)計(jì)

      設(shè)計(jì)中所選擇的STC8A系列單片機(jī)有四通道可編程計(jì)數(shù)器陣列PCA模塊,可用于脈寬測(cè)量、脈沖捕獲計(jì)數(shù)、高速脈沖輸出及PWM輸出四項(xiàng)功能。對(duì)于編碼器的輸出采用脈沖捕獲計(jì)數(shù)模式,電機(jī)選擇帶編碼器輸出的370直流電機(jī),編碼器A、B相的輸出分別接單片機(jī)P17、P16引腳;單片機(jī)將PWM輸出數(shù)據(jù)、電機(jī)測(cè)量轉(zhuǎn)速或位置、設(shè)定轉(zhuǎn)速或位置通過單片機(jī)串口1傳輸至上位機(jī)虛擬示波器實(shí)時(shí)顯示;電機(jī)的驅(qū)動(dòng)、PWM轉(zhuǎn)速控制及轉(zhuǎn)向控制通過H橋驅(qū)動(dòng)模塊L298N實(shí)現(xiàn),具體驅(qū)動(dòng)電路與單片機(jī)接口連接如圖4所示。

      圖4 電機(jī)驅(qū)動(dòng)電路圖

      2.2 軟件設(shè)計(jì)

      單片機(jī)晶振設(shè)置為24 MHz,與上位機(jī)通信的波特率為115 200,單片機(jī)每隔20 ms獲取脈沖數(shù)量并判斷轉(zhuǎn)向,單位時(shí)間內(nèi)脈沖數(shù)量即為轉(zhuǎn)速或速度的累加即為位置,調(diào)用位置式或增量式PID函數(shù)實(shí)現(xiàn)速度或位置的控制,通過修改PID參數(shù)加載至PWM輸出函數(shù)中調(diào)節(jié)電機(jī)轉(zhuǎn)速或位置[6]。PWM輸出頻率設(shè)置為10 kHz,具體主程序流程圖如圖5所示。

      圖5 軟件流程圖

      2.3 位置式PID的C語言模塊化程序

      采用模塊化程序編寫,無需將PID參數(shù)獨(dú)立在函數(shù)之外定義,方便程序的移植。函數(shù)返回值為有符號(hào)整型,其正負(fù)為電機(jī)轉(zhuǎn)向,大小為具體PWM輸出值,實(shí)現(xiàn)對(duì)轉(zhuǎn)速的調(diào)節(jié)。其模塊化接口函數(shù)的設(shè)計(jì)是對(duì)式(3)的C語言實(shí)現(xiàn),具體程序如下:

      int Position_PID (int Target,int Encoder)

      {

      float Position_KP=15.0,Position_KI=13.0;

      float Position_KD=12.0;

      static float Bias=0,Integral_Bias=0,Last_Bias=0;

      int Pwm;

      Bias=Target-Encoder;

      Integral_Bias+=Bias;

      Integral_Bias=Integral_Bias>1000?1000:(Integral_Bias<(-1000)?(-1000):Integral_Bias);

      Pwm=Position_KP*Bias+Position_KI*Integral_Bias+Position_KD*(Bias-Last_Bias);

      Pwm=Pwm>9800?9800:(Pwm<(-9800)?(-9800):Pwm);

      Last_Bias=Bias;

      return Pwm;

      }

      增量式PID是有偏差的累加和求取的,其公式如下所示,程序結(jié)構(gòu)與位置式相似。

      Pwm+=Kp[e(k)-e(k-1)]+Ki×e(k)+Kd[e(k)-2e(k-1)+e(k-2)]

      (5)

      2.4 電機(jī)位置的控制

      PID位置控制的實(shí)質(zhì)是對(duì)速度的積分,積分的實(shí)質(zhì)為分割、求和、取極限,設(shè)計(jì)中每隔20 ms對(duì)速度累加一次,累加到一定值后停止,即位置已經(jīng)確定。其調(diào)用的位置式PID函數(shù)和通過增量式改進(jìn)的全量式PID函數(shù)完全相同,只是在主程序中要對(duì)采集的數(shù)據(jù)每隔20 ms累加一次,且PID函數(shù)的實(shí)參為設(shè)定的位置值和測(cè)量的具體的脈沖累加的位置值而非速度值[7]。

      3 系統(tǒng)調(diào)試

      3.1 電機(jī)轉(zhuǎn)向的確定

      硬件設(shè)計(jì)中L298N模塊是隨機(jī)接至直流電機(jī)的兩個(gè)繞組上的,給電機(jī)通以不同極性的電源其輸出方向就會(huì)變化,對(duì)于轉(zhuǎn)速或位置的控制要求為負(fù)反饋,如設(shè)定速度和初始速度均為0即電機(jī)靜止,PID控制實(shí)質(zhì)是對(duì)偏差的控制,設(shè)置比例系數(shù),如果為正反饋,用手扭動(dòng)電機(jī),單片機(jī)通過編碼器檢測(cè)到有偏差產(chǎn)生,會(huì)由初始的0轉(zhuǎn)速加速到最大值,此時(shí)與設(shè)定的靜止態(tài)剛好相反。可以通過硬件或軟件方案解決,硬件方法為交換驅(qū)動(dòng)模塊接至電機(jī)繞組的相序;軟件方法為在程序中根據(jù)PID函數(shù)返回的PWM值的正負(fù)修改轉(zhuǎn)向控制。如果為負(fù)反饋,且設(shè)置了比例系數(shù),當(dāng)設(shè)定速度和初始速度均為0時(shí),使用外力使其產(chǎn)生偏差時(shí)電機(jī)就有反作用力阻值偏差的產(chǎn)生,說明電機(jī)轉(zhuǎn)向符合設(shè)置的負(fù)反饋的控制要求[8]。

      3.2 位置式PID轉(zhuǎn)速調(diào)節(jié)

      通過調(diào)節(jié)位置式PID函數(shù)中的比例、積分、微分環(huán)節(jié)的參數(shù),為了便于觀察控制效果,設(shè)計(jì)中每隔2秒,使編碼器連接的電機(jī)每20 ms測(cè)量的轉(zhuǎn)速由500修改為-500。采用串口1將PID函數(shù)返回值、測(cè)量速度、設(shè)定速度上傳至上位機(jī)虛擬示波器[9-11],其控制效果如圖6所示。

      圖6 位置式PID轉(zhuǎn)速調(diào)節(jié)效果圖

      3.3 位置式PID位置調(diào)節(jié)

      由于電機(jī)轉(zhuǎn)一圈會(huì)產(chǎn)生9900個(gè)脈沖,因此為了便于觀察,設(shè)定位置每隔2秒,由9900修改為-9900,其控制效果為每隔2秒由正轉(zhuǎn)切換至反轉(zhuǎn),其控制效果如圖7所示。

      圖7 位置式PID位置控制效果圖

      從以上兩圖可以看出位置式PID能有效實(shí)現(xiàn)轉(zhuǎn)速和位置的調(diào)節(jié),且控制效果良好[12-13]。增量式PID與位置式相似,只不過其PID算法的實(shí)現(xiàn)是按增量Δu(i)的累加和求取的。

      4 調(diào)試過程中問題分析

      4.1 積分限幅與輸出限幅

      設(shè)計(jì)中電機(jī)空載時(shí)轉(zhuǎn)速為333 r/min,減速比為1∶30,編碼器為330線,主程序每隔20 ms讀取一次編碼器的值以確定電機(jī)轉(zhuǎn)速和轉(zhuǎn)向。則20 ms內(nèi)讀取的最大值為:(333÷60)×30×330×(20÷1000)≈1099,因此積分限幅值設(shè)置為±1000。

      單片機(jī)程序設(shè)計(jì)中占空比為100%時(shí)的PWM的值為10 000,因此輸出限幅絕對(duì)值略小于PWM的最大值,從而設(shè)置為±9800[14]。

      4.2 程序移植時(shí)PID參數(shù)的兼容性

      相同硬件條件下,相同程序其控制效果差異較大,導(dǎo)致要重新調(diào)節(jié)PID參數(shù),其原因在于編譯軟件Keil目標(biāo)設(shè)置不同,導(dǎo)致執(zhí)行效率不同,設(shè)計(jì)中為使程序兼容,應(yīng)將編譯軟件的配置保持一致。具體編譯軟件中Code Rom Size空間設(shè)置的含義如下[15-16]。

      SMALL模式:只用低于2 KB的程序空間。

      COMPACT模式:?jiǎn)蝹€(gè)函數(shù)程序大小不超過2 KB,總程序不超過64 KB,效率比LARGE高。

      LARGE模式:可用全部64 KB空間。

      4.3 當(dāng)PWM輸出端口為P14時(shí)無PWM輸出

      STC8A8K64S4A12單片機(jī)的PCA與PWM模塊部分端口是復(fù)用的,PCA的端口為高阻輸入,而PWM為準(zhǔn)雙向I/O或強(qiáng)推挽輸出,結(jié)果導(dǎo)致如果PCA端口都設(shè)置為高阻輸入復(fù)用的PWM就無法輸出。設(shè)計(jì)中采用非復(fù)用端口加以解決。

      4.4 模塊化程序設(shè)計(jì)中偏差值的保存

      傳統(tǒng)的非模塊化程序設(shè)計(jì),將偏差、偏差的積分和上次的偏差定義為全局變量,實(shí)現(xiàn)整個(gè)程序調(diào)用過程中的數(shù)據(jù)保持不丟失。此方案降低了程序的集成度,移植過程中還要考慮全局變量。本設(shè)計(jì)通過將以上變量定義為static類型,使三個(gè)變量在下一次調(diào)用時(shí)其值仍然保持。

      5 結(jié)束語

      傳統(tǒng)電機(jī)由于制造誤差,當(dāng)同頻率同占空比的信號(hào)加載到兩個(gè)同一型號(hào)的電機(jī)時(shí),電機(jī)轉(zhuǎn)速可能有偏差。如果為小車,則可能出現(xiàn)該直行的時(shí)候逐漸偏離的情況,因此必須結(jié)合傳感器一般為正交編碼器與單片機(jī)結(jié)合控制算法使其根據(jù)偏差實(shí)時(shí)調(diào)節(jié),達(dá)到運(yùn)行穩(wěn)定的效果。該文基于單片機(jī)設(shè)計(jì)了一款PID電機(jī)轉(zhuǎn)速與位置控制系統(tǒng),從系統(tǒng)結(jié)構(gòu)和原理分析、軟硬件設(shè)計(jì)、系統(tǒng)調(diào)試及存在問題分析方面層層深入,通過實(shí)踐驗(yàn)證,該方案有效解決了傳統(tǒng)直流電機(jī)轉(zhuǎn)速和位置的精確控制的問題。

      猜你喜歡
      增量編碼器偏差
      提質(zhì)和增量之間的“辯證”
      如何走出文章立意偏差的誤區(qū)
      兩矩形上的全偏差
      “價(jià)增量減”型應(yīng)用題點(diǎn)撥
      基于FPGA的同步機(jī)軸角編碼器
      基于PRBS檢測(cè)的8B/IOB編碼器設(shè)計(jì)
      基于均衡增量近鄰查詢的位置隱私保護(hù)方法
      關(guān)于均數(shù)與偏差
      JESD204B接口協(xié)議中的8B10B編碼器設(shè)計(jì)
      電子器件(2015年5期)2015-12-29 08:42:24
      德州儀器(TI)發(fā)布了一對(duì)32位增量-累加模數(shù)轉(zhuǎn)換器(ADC):ADS1262和ADS126
      通山县| 西藏| 阿巴嘎旗| 泾阳县| 崇阳县| 扶绥县| 鹿邑县| 上林县| 大兴区| 柳河县| 大新县| 大兴区| 眉山市| 甘谷县| 绥阳县| 鸡泽县| 承德市| 元朗区| 神池县| 二手房| 临颍县| 盖州市| 景洪市| 班玛县| 博爱县| 绥棱县| 邵武市| 科技| 阳西县| 淮阳县| 台南县| 南雄市| 长宁区| 高邮市| 噶尔县| 辽源市| 恭城| 章丘市| 杭锦后旗| 华阴市| 融水|