標題: STM32簡易直流電機速度環PID閉環控制源碼 [打印本頁]
作者: 孤寂的風 時間: 2017-12-19 19:16
標題: STM32簡易直流電機速度環PID閉環控制源碼
基于STM32開發簡易運動控制卡
開發者:JasonLin
STM32定時器功能介紹
定時器 | 計數分辨率 | 計數類型 | 預分頻系數 | DMA請求 | 捕獲/比較通道 | 編碼器 接口 | 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 |
TIM1和TIM8為高級定時器
TIM6和TIM7為基本定時器
TIM2、TIM3、TIM4和TIM5為通用定時器
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
STM32定時器的通道/引腳分配
定時器 | 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定時器的通道/引腳重映射
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
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
TIM1和TIM8定時器的功能包括:
● 16位向上、向下、向上/下自動裝載計數器
● 16位可編程(可以實時修改)預分頻器,計數器時鐘頻率的分頻系數為1~65535之間的任意數值
● 4個獨立通道: ─輸入捕獲 ─ 輸出比較 ─ PWM生成(邊緣或中間對齊模式) ─ 單脈沖模式輸出
● 死區時間可編程的互補輸出
● 使用外部信號控制定時器和定時器互聯的同步電路
● 允許在指定數目的計數器周期之后更新定時器寄存器的重復計數器
● 剎車輸入信號可以將定時器輸出信號置于復位狀態或者一個已知狀態
● 如下事件發生時產生中斷/DMA: ─更新:計數器向上溢出/向下溢出,計數器初始化(通過軟件或者內部/外部觸發) ─ 觸發事件(計數器啟動、停止、初始化或者由內部/外部觸發計數) ─ 輸入捕獲 ─ 輸出比較 ─ 剎車信號輸入
● 支持針對定位的增量(正交)編碼器和霍爾傳感器電路
● 觸發輸入作為外部時鐘或者按周期的電流管理
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
TIM2、TIM3、TIM4和TIM5定時器功能包括:
● 16位向上、向下、向上/向下自動裝載計數器
● 16位可編程(可以實時修改)預分頻器,計數器時鐘頻率的分頻系數為1~65536之間的任意數值
● 4個獨立通道: ─ 輸入捕獲 ─ 輸出比較 ─ PWM生成(邊緣或中間對齊模式)─ 單脈沖模式輸出
● 使用外部信號控制定時器和定時器互連的同步電路
● 如下事件發生時產生中斷/DMA: ─ 更新:計數器向上溢出/向下溢出,計數器初始化(通過軟件或者內部/外部觸發) ─ 觸發事件(計數器啟動、停止、初始化或者由內部/外部觸發計數) ─ 輸入捕獲 ─ 輸出比較
● 支持針對定位的增量(正交)編碼器和霍爾傳感器電路
● 觸發輸入作為外部時鐘或者按周期的電流管理 為1~65536之間的任意數值
● 使用外部信號控制定時器和定時器互連的同步電路
● 觸發輸入作為外部時鐘或者按周期的電流管理
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
TIM6和TIM7定時器的主要功能包括:
● 16位自動重裝載累加計數器
● 16位可編程(可實時修改)預分頻器,用于對輸入的時鐘按系數為1~65536之間的任意數值分頻
● 觸發DAC的同步電路 注:此項是TIM6/7獨有功能
● 在更新事件(計數器溢出)時產生中斷/DMA請求
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
開發目標1:TIM1的4個通道生成PWM,CH1—PWM1 CH2—PWM2
CH3—PWM3 CH4—PWM4
TIM8的4個通道生成PWM,CH1—PWM5 CH2—PWM6
CH3—PWM7 CH4—PWM8
注:PWM1—PWM2 為一組,控制直流減速電機1
PWM3—PWM4 為一組,控制直流減速電機2
PWM5—PWM6 為一組,控制直流減速電機3
PWM7—PWM8 為一組,控制直流減速電機4
(PWM1、PWM3、PWM5、PWM7作為電機正向脈沖輸出,占空比為萬分比)
(PWM2、PWM4、PWM6、PWM8作為電機反向脈沖輸出,占空比為萬分比)
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
開發目標2:TIM7作為定時器中斷,產生固定的時間間隔,便于計算電機及落地碼盤的速度(單位時間間隔脈沖增量)
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
開發目標3:TIM2、TIM3、TIM4、TIM5作為編碼器接口,讀取編碼器的旋轉產生的脈沖數
TIM2的CH1作為編碼器1的A相的輸入,CH2作為編碼器1的B相的輸入
TIM3的CH1作為編碼器2的A相的輸入,CH2作為編碼器2的B相的輸入
TIM4的CH1作為編碼器3的A相的輸入,CH2作為編碼器3的B相的輸入
TIM5的CH1作為編碼器4的A相的輸入,CH2作為編碼器4的B相的輸入
(由于TIM2和TIM5的CH1和CH2共用引腳PA0和PA1,所以需要把TIM2
的CH1和CH2重映射到引腳PA15和PB3)
(PA15和PB3是JTAG接口中的兩只引腳 ,重映射前先把JTAG口關閉
GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE)//關閉JTAG
GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, DISABLE)//打開JTAG
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable ,ENABLE);//關閉JTAG
同時打開SWD)
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
開發目標4:用2.3寸TFT液晶顯示屏顯示電機或碼盤的速度(單位時間間隔的脈沖增量)和碼盤脈沖總數
未完待續、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
電機轉速控制
單片機源程序如下:
- /***********************************************************************************
- Author :JasonLin
- version :V1.1
- Date :2014/8/2
- Description:Based on the STM32 Micro Control Unit design simple movement controller
- ************************************************************************************/
- #include "stm32f10x.h"
- #include "stm32f10x_conf.h"
- #include "UserConfiguration.h"
- #include "UserFunction.h"
- #include "UserDelay.h"
- #include "lcd.h"
- #include "led.h"
- extern s32 CNT2,CNT3,CNT4,CNT5,V2,V3,V4,V5,rcnt2,rcnt3,rcnt4,rcnt5;
- int main(void)
- {
- SystemInit();
- UserNVIC_Configuration();
- UserTIM_Configuration();
- UserLed_Configuration();
- UserDelay_Configuration();
- while(1)
- {
- delay_ms(200);LED1=!LED1;delay_ms(200);//LED1提示系統正常運行
- }
-
-
-
- }
復制代碼
所有資料51hei提供下載:
基于戰艦STM32開發簡易直流電機速度環PID閉環控制.rar
(477.73 KB, 下載次數: 865)
2017-12-19 21:57 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者: 飛鳥游魚 時間: 2018-5-21 19:38
好東西,沒有人評論下?
作者: 年少有點狂 時間: 2018-5-22 23:04
好東西 下來學習玩玩
作者: mick32 時間: 2018-5-26 04:53
Display the speed of the motor or encoder would be nice
作者: lxj199610 時間: 2018-5-26 19:41
厲害了。流明
作者: wobuzhuchele 時間: 2018-6-2 17:16
學習啦 頂一個個
作者: wenqian 時間: 2018-6-21 10:36
很厲害哦 學習了
作者: tianxiaodan 時間: 2018-7-20 16:38
值得參考
作者: tianxiaodan 時間: 2018-7-20 16:38
值得參考
作者: shuze 時間: 2018-7-26 00:10
已下載,謝謝
作者: 278925356 時間: 2018-8-3 14:44
好東西,我來好評
作者: 赫赫赫茲 時間: 2018-8-6 22:00
感謝分享,下下來看看
作者: 芝麻 時間: 2018-8-8 11:56
感謝分享,下下來看看
作者: assassin6279 時間: 2018-8-8 13:58
想知道樓主PID怎么調的 最近調四軸的PID調得想死
作者: 照海倚天 時間: 2018-8-8 16:16
贊 贊 贊 樓主厲害
作者: xsj1877578806 時間: 2018-8-8 19:04
謝謝樓主分享
作者: wonuibi2018 時間: 2018-8-18 11:36
厲害哦 學習了
作者: LINKEEE 時間: 2018-9-16 18:57
下載來看看
作者: 沉香淡雅 時間: 2018-10-12 09:22
正在做這方面的,下來學習。謝謝分享
作者: mybshf 時間: 2019-2-26 13:32
謝謝分享,急需的資料
作者: 巽悄悄米 時間: 2019-3-3 21:35
樓主你好,請問是增量式還是位置式的PID調速呢
作者: monsterqw 時間: 2019-3-7 13:10
謝謝分享
作者: aetherxd 時間: 2019-3-9 22:29
不錯!贊一個
作者: nanducool 時間: 2019-3-9 23:06
贊一個
作者: 升美 時間: 2019-3-13 17:41
是完整的代碼嗎
作者: zhukm 時間: 2019-3-19 10:35
學習參考下
作者: szb901025 時間: 2019-3-29 09:28
贊一個
作者: m123321654 時間: 2019-5-15 19:15
好東西 下來學習玩玩
作者: xha 時間: 2019-5-21 19:54
不錯哦,學習
作者: XIALAJI 時間: 2019-7-15 23:42
6666值得學習
作者: 內心很無奈 時間: 2019-7-24 09:50
感謝樓主
作者: 豐富豐富 時間: 2019-8-25 12:26
感謝樓主
作者: 豐富豐富 時間: 2019-8-25 12:30
贊一個
作者: dspmomo 時間: 2019-8-30 06:24
不完整
作者: 老白老師 時間: 2019-10-18 02:36
好資料,謝謝
作者: LULU11 時間: 2019-11-19 22:14
下載學習一下
作者: 15869123721 時間: 2019-12-6 15:36
學習一下
作者: ujsme 時間: 2019-12-10 14:51
不錯的資料,用來學習,謝謝!
作者: applehzd 時間: 2019-12-10 18:42
值得學習一下
作者: xaviersw 時間: 2020-12-27 12:57
不錯的例程學習一下
歡迎光臨 (http://www.raoushi.com/bbs/) |
Powered by Discuz! X3.1 |