標(biāo)題: STM32簡(jiǎn)易直流電機(jī)速度環(huán)PID閉環(huán)控制源碼 [打印本頁(yè)]

作者: 孤寂的風(fēng)    時(shí)間: 2017-12-19 19:16
標(biāo)題: STM32簡(jiǎn)易直流電機(jī)速度環(huán)PID閉環(huán)控制源碼

基于STM32開(kāi)發(fā)簡(jiǎn)易運(yùn)動(dòng)控制卡
開(kāi)發(fā)者:JasonLin
STM32定時(shí)器功能介紹
  
定時(shí)器
  
  
計(jì)數(shù)分辨率
  
  
計(jì)數(shù)類型
  
  
預(yù)分頻系數(shù)
  
  
DMA請(qǐng)求
  
  
捕獲/比較通道
  
  
編碼器
  
接口
  
  
PWM
  
生成
  
  
TIM1
  
  
16
  
  
up/down
  
/both
  
  
1-65536
  
  
yes
  
  
4
  
  
yes
  
  
yes
  
  
TIM8
  
  
16
  
  
up/down
  
/both
  
  
1-65536
  
  
yes
  
  
4
  
  
yes
  
  
yes
  
  
TIM2
  
  
16
  
  
up/down
  
/both
  
  
1-65536
  
  
yes
  
  
4
  
  
yes
  
  
yes
  
  
TIM3
  
  
16
  
  
up/down/
  
both
  
  
1-65536
  
  
yes
  
  
4
  
  
yes
  
  
yes
  
  
TIM4
  
  
16
  
  
up/down
  
/both
  
  
1-65536
  
  
yes
  
  
4
  
  
yes
  
  
yes
  
  
TIM5
  
  
16
  
  
up/down
  
/both
  
  
1-65536
  
  
yes
  
  
4
  
  
yes
  
  
yes
  
  
TIM6
  
  
16
  
  
up
  
  
1-65536
  
  
yes
  
  
0
  
  
no
  
  
no
  
  
TIM7
  
  
16
  
  
up
  
  
1-65536
  
  
yes
  
  
0
  
  
no
  
  
no
  
TIM1TIM8為高級(jí)定時(shí)器
TIM6TIM7為基本定時(shí)器
TIM2、TIM3TIM4TIM5為通用定時(shí)器
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
STM32定時(shí)器的通道/引腳分配
  
定時(shí)器
  
  
TIM1
  
  
TIM2
  
  
TIM3
  
  
TIM4
  
  
TIM5
  
  
TIM8
  
  
CH1引腳
  
  
PA8
  
  
PA0
  
  
PA6
  
  
PB6
  
  
PA0
  
  
PC6
  
  
CH2引腳
  
  
PA9
  
  
PA1
  
  
PA7
  
  
PB7
  
  
PA1
  
  
PC7
  
  
CH3引腳
  
  
PA10
  
  
PA2
  
  
PB0
  
  
PB8
  
  
PA2
  
  
PC8
  
  
CH4引腳
  
  
PA11
  
  
PA3
  
  
PB1
  
  
PB9
  
  
PA3
  
  
PC9
  
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
STM32定時(shí)器的通道/引腳重映射
file:///Z:\TEMP\msohtmlclip1\01\clip_image002.jpg
file:///Z:\TEMP\msohtmlclip1\01\clip_image004.jpg
file:///Z:\TEMP\msohtmlclip1\01\clip_image006.jpg
file:///Z:\TEMP\msohtmlclip1\01\clip_image008.jpg
file:///Z:\TEMP\msohtmlclip1\01\clip_image010.jpg
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
TIM1TIM8定時(shí)器的功能包括:
16位向上、向下、向上/下自動(dòng)裝載計(jì)數(shù)器
16位可編程(可以實(shí)時(shí)修改)預(yù)分頻器,計(jì)數(shù)器時(shí)鐘頻率的分頻系數(shù)為165535之間的任意數(shù)值
4個(gè)獨(dú)立通道: 輸入捕獲 輸出比較 PWM生成(邊緣或中間對(duì)齊模式) 單脈沖模式輸出  
死區(qū)時(shí)間可編程的互補(bǔ)輸出
使用外部信號(hào)控制定時(shí)器和定時(shí)器互聯(lián)的同步電路  
允許在指定數(shù)目的計(jì)數(shù)器周期之后更新定時(shí)器寄存器的重復(fù)計(jì)數(shù)器  
剎車(chē)輸入信號(hào)可以將定時(shí)器輸出信號(hào)置于復(fù)位狀態(tài)或者一個(gè)已知狀態(tài)
如下事件發(fā)生時(shí)產(chǎn)生中斷/DMA 更新:計(jì)數(shù)器向上溢出/向下溢出,計(jì)數(shù)器初始化(通過(guò)軟件或者內(nèi)部/外部觸發(fā)) 觸發(fā)事件(計(jì)數(shù)器啟動(dòng)、停止、初始化或者由內(nèi)部/外部觸發(fā)計(jì)數(shù)) 輸入捕獲 輸出比較 剎車(chē)信號(hào)輸入  
支持針對(duì)定位的增量(正交)編碼器和霍爾傳感器電路  
觸發(fā)輸入作為外部時(shí)鐘或者按周期的電流管理
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
TIM2、TIM3、TIM4TIM5定時(shí)器功能包括:  
● 16
位向上、向下、向上/向下自動(dòng)裝載計(jì)數(shù)器  
● 16位可編程(可以實(shí)時(shí)修改)預(yù)分頻器,計(jì)數(shù)器時(shí)鐘頻率的分頻系數(shù)為165536之間的任意數(shù)值  
● 4個(gè)獨(dú)立通道:輸入捕獲輸出比較 ─ PWM生成(邊緣或中間對(duì)齊模式)─ 單脈沖模式輸出  
使用外部信號(hào)控制定時(shí)器和定時(shí)器互連的同步電路  
如下事件發(fā)生時(shí)產(chǎn)生中斷/DMA更新:計(jì)數(shù)器向上溢出/向下溢出,計(jì)數(shù)器初始化(通過(guò)軟件或者內(nèi)部/外部觸發(fā)) ─ 觸發(fā)事件(計(jì)數(shù)器啟動(dòng)、停止、初始化或者由內(nèi)部/外部觸發(fā)計(jì)數(shù)) ─ 輸入捕獲輸出比較  
支持針對(duì)定位的增量(正交)編碼器和霍爾傳感器電路  
觸發(fā)輸入作為外部時(shí)鐘或者按周期的電流管理 165536之間的任意數(shù)值  
使用外部信號(hào)控制定時(shí)器和定時(shí)器互連的同步電路  
觸發(fā)輸入作為外部時(shí)鐘或者按周期的電流管理
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
TIM6TIM7定時(shí)器的主要功能包括:   
● 16位自動(dòng)重裝載累加計(jì)數(shù)器  
● 16位可編程(可實(shí)時(shí)修改)預(yù)分頻器,用于對(duì)輸入的時(shí)鐘按系數(shù)為165536之間的任意數(shù)值分頻  
觸發(fā)DAC的同步電路   :此項(xiàng)是TIM6/7獨(dú)有功能
在更新事件(計(jì)數(shù)器溢出)時(shí)產(chǎn)生中斷/DMA請(qǐng)求
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
開(kāi)發(fā)目標(biāo)1TIM14個(gè)通道生成PWM,CH1PWM1  CH2PWM2  
                                     CH3PWM3  CH4PWM4
           TIM84個(gè)通道生成PWMCH1PWM5  CH2PWM6  
                                      CH3PWM7  CH4PWM8
注:PWM1PWM2 為一組,控制直流減速電機(jī)1
PWM3PWM4 為一組,控制直流減速電機(jī)2
PWM5PWM6 為一組,控制直流減速電機(jī)3
PWM7PWM8 為一組,控制直流減速電機(jī)4
PWM1PWM3、PWM5、PWM7作為電機(jī)正向脈沖輸出,占空比為萬(wàn)分比)
PWM2、PWM4PWM6、PWM8作為電機(jī)反向脈沖輸出,占空比為萬(wàn)分比)
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
開(kāi)發(fā)目標(biāo)2TIM7作為定時(shí)器中斷,產(chǎn)生固定的時(shí)間間隔,便于計(jì)算電機(jī)及落地碼盤(pán)的速度(單位時(shí)間間隔脈沖增量)
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
開(kāi)發(fā)目標(biāo)3TIM2、TIM3TIM4、TIM5作為編碼器接口,讀取編碼器的旋轉(zhuǎn)產(chǎn)生的脈沖數(shù)
TIM2CH1作為編碼器1A相的輸入,CH2作為編碼器1B相的輸入
TIM3CH1作為編碼器2A相的輸入,CH2作為編碼器2B相的輸入
TIM4CH1作為編碼器3A相的輸入,CH2作為編碼器3B相的輸入
TIM5CH1作為編碼器4A相的輸入,CH2作為編碼器4B相的輸入
(由于TIM2TIM5CH1CH2共用引腳PA0PA1,所以需要把TIM2
CH1CH2重映射到引腳PA15PB3)
(PA15PB3JTAG接口中的兩只引腳 ,重映射前先把JTAG口關(guān)閉
GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE)//關(guān)閉JTAG
GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, DISABLE)//打開(kāi)JTAG
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable ,ENABLE);//關(guān)閉JTAG
同時(shí)打開(kāi)SWD
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
開(kāi)發(fā)目標(biāo)42.3TFT液晶顯示屏顯示電機(jī)或碼盤(pán)的速度(單位時(shí)間間隔的脈沖增量)和碼盤(pán)脈沖總數(shù)
未完待續(xù)、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、

電機(jī)轉(zhuǎn)速控制
單片機(jī)源程序如下:
  1. /***********************************************************************************
  2. Author     :JasonLin
  3. version           :V1.1
  4. Date       :2014/8/2
  5. Description:Based on the STM32 Micro Control Unit design simple movement controller  
  6. ************************************************************************************/
  7. #include "stm32f10x.h"
  8. #include "stm32f10x_conf.h"
  9. #include "UserConfiguration.h"
  10. #include "UserFunction.h"
  11. #include "UserDelay.h"
  12. #include "lcd.h"
  13. #include "led.h"

  14. extern s32 CNT2,CNT3,CNT4,CNT5,V2,V3,V4,V5,rcnt2,rcnt3,rcnt4,rcnt5;

  15. int main(void)
  16. {        
  17.           SystemInit();

  18.         UserNVIC_Configuration();

  19.         UserTIM_Configuration();   

  20.         UserLed_Configuration();

  21.         UserDelay_Configuration();

  22.         while(1)
  23.         {                                                               
  24.            delay_ms(200);LED1=!LED1;delay_ms(200);//LED1提示系統(tǒng)正常運(yùn)行
  25.         }        
  26.         
  27.         
  28.          
  29. }

復(fù)制代碼

所有資料51hei提供下載:
基于戰(zhàn)艦STM32開(kāi)發(fā)簡(jiǎn)易直流電機(jī)速度環(huán)PID閉環(huán)控制.rar (477.73 KB, 下載次數(shù): 865)



作者: 飛鳥(niǎo)游魚(yú)    時(shí)間: 2018-5-21 19:38
好東西,沒(méi)有人評(píng)論下?
作者: 年少有點(diǎn)狂    時(shí)間: 2018-5-22 23:04
好東西 下來(lái)學(xué)習(xí)玩玩
作者: mick32    時(shí)間: 2018-5-26 04:53
Display the speed of the motor or encoder would be nice
作者: lxj199610    時(shí)間: 2018-5-26 19:41
厲害了。流明
作者: wobuzhuchele    時(shí)間: 2018-6-2 17:16
學(xué)習(xí)啦 頂一個(gè)個(gè)
作者: wenqian    時(shí)間: 2018-6-21 10:36
很厲害哦 學(xué)習(xí)了
作者: tianxiaodan    時(shí)間: 2018-7-20 16:38
值得參考
作者: tianxiaodan    時(shí)間: 2018-7-20 16:38
值得參考
作者: shuze    時(shí)間: 2018-7-26 00:10
已下載,謝謝
作者: 278925356    時(shí)間: 2018-8-3 14:44

好東西,我來(lái)好評(píng)
作者: 赫赫赫茲    時(shí)間: 2018-8-6 22:00
感謝分享,下下來(lái)看看
作者: 芝麻    時(shí)間: 2018-8-8 11:56

感謝分享,下下來(lái)看看
作者: assassin6279    時(shí)間: 2018-8-8 13:58
想知道樓主PID怎么調(diào)的 最近調(diào)四軸的PID調(diào)得想死
作者: 照海倚天    時(shí)間: 2018-8-8 16:16
贊  贊  贊  樓主厲害  
作者: xsj1877578806    時(shí)間: 2018-8-8 19:04
謝謝樓主分享
作者: wonuibi2018    時(shí)間: 2018-8-18 11:36
厲害哦 學(xué)習(xí)了

作者: LINKEEE    時(shí)間: 2018-9-16 18:57
下載來(lái)看看
作者: 沉香淡雅    時(shí)間: 2018-10-12 09:22
正在做這方面的,下來(lái)學(xué)習(xí)。謝謝分享
作者: mybshf    時(shí)間: 2019-2-26 13:32
謝謝分享,急需的資料
作者: 巽悄悄米    時(shí)間: 2019-3-3 21:35
樓主你好,請(qǐng)問(wèn)是增量式還是位置式的PID調(diào)速呢
作者: monsterqw    時(shí)間: 2019-3-7 13:10
謝謝分享
作者: aetherxd    時(shí)間: 2019-3-9 22:29
不錯(cuò)!贊一個(gè)
作者: nanducool    時(shí)間: 2019-3-9 23:06
贊一個(gè)
作者: 升美    時(shí)間: 2019-3-13 17:41
是完整的代碼嗎
作者: zhukm    時(shí)間: 2019-3-19 10:35
學(xué)習(xí)參考下
作者: szb901025    時(shí)間: 2019-3-29 09:28
贊一個(gè)
作者: m123321654    時(shí)間: 2019-5-15 19:15
好東西 下來(lái)學(xué)習(xí)玩玩
作者: xha    時(shí)間: 2019-5-21 19:54
不錯(cuò)哦,學(xué)習(xí)

作者: XIALAJI    時(shí)間: 2019-7-15 23:42
6666值得學(xué)習(xí)
作者: 內(nèi)心很無(wú)奈    時(shí)間: 2019-7-24 09:50
感謝樓主
作者: 豐富豐富    時(shí)間: 2019-8-25 12:26
感謝樓主
作者: 豐富豐富    時(shí)間: 2019-8-25 12:30
贊一個(gè)
作者: dspmomo    時(shí)間: 2019-8-30 06:24
不完整
作者: 老白老師    時(shí)間: 2019-10-18 02:36
好資料,謝謝
作者: LULU11    時(shí)間: 2019-11-19 22:14
下載學(xué)習(xí)一下
作者: 15869123721    時(shí)間: 2019-12-6 15:36
學(xué)習(xí)一下
作者: ujsme    時(shí)間: 2019-12-10 14:51
不錯(cuò)的資料,用來(lái)學(xué)習(xí),謝謝!
作者: applehzd    時(shí)間: 2019-12-10 18:42
值得學(xué)習(xí)一下
作者: xaviersw    時(shí)間: 2020-12-27 12:57
不錯(cuò)的例程學(xué)習(xí)一下




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1