日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

STM32——直流电机PI调速

發(fā)布時間:2025/3/11 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 STM32——直流电机PI调速 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

所需元件
??STM32F103開發(fā)板、L298N一個、帶編碼器的直流電機一個(如下圖所示,淘寶上有很多)

系統(tǒng)框圖

??通過系統(tǒng)框圖,我們需要做兩件事,一是要測速,二是要調節(jié)。測速目前流行的就是通過編碼器測速,調節(jié)器我采用的時PI調節(jié),PI調節(jié)器調節(jié)的參數(shù)少,而且能夠消除靜差,當然用PID調節(jié)器也行。
編碼器
??編碼器的結構簡化如下圖:

??在電機轉軸上安裝了一個磁環(huán),在磁環(huán)的下方有一個霍爾傳感器,在磁環(huán)轉動過程中就在霍爾傳感器的附近產生了變化的磁場,于是霍爾傳感器就輸出了脈沖信號。我所用的這個直流電機是1:48的減速電機,電機轉軸每轉動1圈,編碼器輸出13個脈沖信號,也就是說輸出轉軸轉動1圈,編碼器輸出13x48=624個脈沖,再通過STM32編碼器接口 4 倍頻就是 624x4=2496 個脈沖信號,通過STM32定時器的計數(shù)值除以2496就是輸出轉軸轉動的圈數(shù)。
??所謂4倍頻,如下圖:

??編碼器中有兩個線路,即A相和B相。我們以A相或B相為例,1個上升沿或者下降沿代表1個脈沖信號,由圖中可知有2個上升沿或2個下降沿,即2個脈沖信號。而所謂的4倍頻,就是把A、B相的上升沿和下降沿都加起來,一共8個,與之前的2個脈沖信號就是4倍,而所以要加起來做成4倍頻,可以提高測量轉速的精度。另外A、B相之間相差90度,從而可以判斷電機的轉向。如果電機正轉,A相比B相先90度,也就是說A相已經上升沿了B還是低電平。
PI調節(jié)器
??關于PID算法,可參考STM32——PID恒溫控制
??這里貼兩張速度曲線圖:
??1、

??2、

??圖1中設定目標值為400,從圖上可以看出超調量還是比較小的,調節(jié)時間也比較短,調節(jié)的效果還是可以的。圖2中,目標值每隔一段時間增加100,加到400后又設為100,整體的調節(jié)效果還是蠻不錯的。(我程序中的PID參數(shù)套用的時候可能達不到圖中的效果,這與電機以及編碼器之間的差別有關,可適當在做調節(jié))
主要程序
TIM_Encoder.c

#include "TIM_Encoder.h"float RPM_1=0; //存儲上一次測速結果void TIM_Encoder_Init(void) {TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_ICInitTypeDef TIM_ICInitStructure; GPIO_InitTypeDef GPIO_InitStructure;RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE); //使能定時器4的時鐘RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //使能PB端口時鐘GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7; //端口配置GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //浮空輸入GPIO_Init(GPIOB, &GPIO_InitStructure); //根據(jù)設定參數(shù)初始化GPIOBTIM_TimeBaseStructInit(&TIM_TimeBaseStructure);TIM_TimeBaseStructure.TIM_Prescaler = 0x0; // 預分頻器 TIM_TimeBaseStructure.TIM_Period = 65535; //設定計數(shù)器自動重裝值TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //選擇時鐘分頻:不分頻TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM向上計數(shù) TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure);TIM_EncoderInterfaceConfig(TIM4, TIM_EncoderMode_TI12, TIM_ICPolarity_Rising, TIM_ICPolarity_Rising);//使用編碼器模式3TIM_ICStructInit(&TIM_ICInitStructure);TIM_ICInitStructure.TIM_ICFilter = 10;TIM_ICInit(TIM4, &TIM_ICInitStructure);TIM_ClearFlag(TIM4, TIM_FLAG_Update); //清除TIM的更新標志位TIM_ITConfig(TIM4, TIM_IT_Update, ENABLE);//Reset counterTIM_SetCounter(TIM4,0);TIM_Cmd(TIM4, ENABLE); }int GetTIMCounter(void) //獲取計數(shù)值 {int count=TIM_GetCounter(TIM4);return count; }float GetRPM(int count) //計算轉速 { // int RPM=count/2496*2000+0.5;//30ms計算一次(pid.T=30),60000ms為1min,也就是1min計算了2000次,2496=13*4*48表示轉動一圈的脈沖數(shù),48表示1:48的減速比float RPM=count*0.8f+0.5f; //等同于上式,2000/2496約等于0.8if(RPM>1000) //過濾掉不合理的結果,仍然使用上次的速度,在按鍵設定速度的時候或者在減速為0時會有非常的大的錯誤測速結果,具體原因還未查清 {{return RPM_1;}RPM_1=RPM; //更新return RPM; }

PID.c

#include "PID.h"PID pid; //int time=0;void PID_Init() { pid.Sv=400; //用戶設定轉速400pid.Kp=0.3; //比例pid.Ki=0.015; //積分pid.Kd=0; //微分pid.pwmcycle=100; //pwm周期100uspid.T=30; //PID計算周期30mspid.OUT0=0;pid.C1ms=0;pid.SEk=0;pid.Ek=0;pid.Ek_1=0;pid.DelEk=0;pid.Dout=0;pid.Iout=0;pid.Pout=0; }void PID_Calc(float data) //pid計算 {float out;pid.Pv=data;pid.Ek=pid.Sv-pid.Pv; //得到當前的偏差值pid.Pout=pid.Kp*pid.Ek; //比例輸出pid.SEk+=pid.Ek; //歷史偏差總和if(pid.SEk<(-50)){pid.SEk=(-50);}pid.DelEk=pid.Ek-pid.Ek_1; //最近兩次偏差之差pid.Iout=pid.Ki*pid.SEk; //積分輸出if(pid.Iout<(-10)){pid.Iout=(-10);}pid.Dout=pid.Kd*pid.DelEk; //微分輸出out= pid.Pout+ pid.Iout+ pid.Dout;if(out>pid.pwmcycle){pid.OUT=pid.pwmcycle;}else if(out<=0){pid.OUT=pid.OUT0; }else {pid.OUT=out+0.5f; //四舍五入}pid.Ek_1=pid.Ek; //更新偏差pid.C1ms=0; }

工程鏈接
鏈接:https://pan.baidu.com/s/1dSXgPf0gzSvTdjlMHyOZ7w
提取碼:f8h1

??PID調參比較麻煩,這里推薦一個ST官方的軟件StmStdio,這個軟件網上有很多教程,使用也比較簡單。
鏈接:https://pan.baidu.com/s/1etsrBL80rCe_LouNEE1XEg
提取碼:ckve

總結

以上是生活随笔為你收集整理的STM32——直流电机PI调速的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 女人床技48动态图 | 久久精品首页 | 999视频在线| 97国产高清| 亚洲精品乱码久久久久久蜜桃动漫 | 午夜日韩精品 | 天天干天天天 | 激情av网 | 欧洲色av| 特黄特色大片免费播放器使用方法 | 日韩一区高清 | 久草免费资源站 | 欧美激情久久久久久久 | 曰本三级日本三级日本三级 | 深田咏美av在线 | 国产人妻一区二区三区四区五区六 | 国产福利第一页 | 女生裸体无遮挡 | 最新超碰在线 | 免费视频毛片 | 国产免费成人在线视频 | 久久久久久不卡 | 男女爱爱网站 | 亚洲特级黄色片 | 噜噜狠狠狠狠综合久久 | 国产免费一区视频观看免费 | 91夫妻在线| 720url在线观看免费版 | 一区二区三区国产 | 色涩久久 | 色图一区 | 台湾chinesehdxxxx少妇 | 北岛玲在线| 一区二区三区四区免费观看 | 天堂网www在线 | 日本国产中文字幕 | 国产精品美女av | 男人添女人荫蒂国产 | 日本东京热一区二区三区 | 黄色一级在线视频 | 国产精品影院在线观看 | 精品久久91 | 日韩国产二区 | 国产精品久久色 | 九九综合| 国产精品麻豆一区二区三区 | 奇米影视播放器 | 伊人22综合 | 免费看黄在线 | 国内精品一区二区 | 色视频2| 国产xxx视频 | 欧美天天影院 | 天堂欧美城网站网址 | 亚洲黄色网址大全 | 日日骚一区二区 | 男人扒女人添高潮视频 | 亚洲精品国产无码 | wwwwxxxx欧美| 午夜快播 | 免费在线观看一区二区三区 | 91精品成人| 欧美乱妇高清无乱码 | 成人tv | 日韩av福利| 国产精品久久久无码一区 | 欧色丰满女同hd | 深夜福利影院 | 精品免费在线 | 亚洲成人黄色网址 | 免费国产一区二区三区 | 日本丰满肉感bbwbbwbbw | 日韩经典三级 | 国产精品伦理一区二区 | 97超碰97| 久久久久久九九九 | 岛国大片在线 | 在线成人一区 | 国产一级黄色电影 | 999av视频 | 精品一区二区欧美 | 欧美肉大捧一进一出免费视频 | 欧美大喷水吹潮合集在线观看 | se日韩| 一区二区日韩在线观看 | 久久精品免费在线 | 亚洲成人黄 | 少妇闺蜜换浪荡h肉辣文 | 天堂在线www| 日日天天| av成人精品 | 波多野吉衣在线视频 | 黄视频在线观看免费 | 艳妇臀荡乳欲伦交换gif | 日韩欧美黄| 丝瓜色版 | 亚洲视频精品在线 | 黄色av网页 | 激情小说欧美色图 |