標題: 基于proteus的stm32 BLDC電機控制器的設計思路 [打印本頁]
作者: xuhe123 時間: 2020-1-9 17:13
標題: 基于proteus的stm32 BLDC電機控制器的設計思路
這是我嵌入式應用的一個項目,使用STM32CubeMX和keil軟件進行編程。斷斷續續花了好幾天完成,期間踩了很大hal庫的坑和proteus的坑。
感覺做這個仿真的人很少,現在把資源分享給大家,因為程序還在修改還沒有提交,所以先分享一下我粗略的設計思路
一、設計思路:
使用STM32CubeMX軟件進行資源初始化(Cube資源配置很方便),使用HAL庫進行程序設計。
圖1 資源配置圖
二、功能介紹:
三、功能的實現方法:
- 可調轉速通過可調電阻和STM32的ADC功能,實現500-4596范圍的速度調節。使用的是簡單的比例控制,并未使用復雜的PID控制(太難了,一直調不好)。
- 通過定時器1的PWM互補輸出六路PWM控制電機的轉動,驅動器使用L293D和IRF540 MOS管。
- 換向使用的是外部中斷,測速使用的是定時器2的三鹿輸入捕獲,這里有一個坑,proteus中三路輸入捕獲無法同時工作,本來打算三路都做測速邏輯,但是速度變化很大,所以最后只使用了一路作為測速通道。
- 正反轉使用的是外部中斷。
- 顯示轉速和目標轉速使用的是lcd1602,在proteus仿真中,顯示轉速有一定的延時和誤差(其實是proteus的仿真太慢了,多開一個任務就慢的要死)
圖2 電機剛啟動,速度未達到最小速度500
速度未達到最小速度時加載很快,大概加載到300rpm左右開始pid控制。
圖3 仿真過程中
圖4 仿真過程中
圖5 反轉時的調速過程
仿真過程中可以看到定時器PWM輸出之間的切換以及脈寬的變化。
圖6 接近穩定時
圖7 穩定后增大轉速
圖8 反轉時接近穩定
由于proteus中stm32 的定時器計時很坑,延時根本不對,需要修改芯片的時鐘源頻率,改大了仿真慢,改小了又不準,所以ADC采樣值和轉速之間只能近似轉換,也造成了目標轉速和實際轉速的誤差。
圖9 整體電路圖
以上的Word格式文檔51黑下載地址:
設計報告.docx
(755.87 KB, 下載次數: 190)
2020-1-9 17:13 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者: hellowC8051 時間: 2020-1-10 08:46
謝謝分享
作者: 嵌入式xiaobai 時間: 2020-1-14 10:00
可以分享一下程序嗎?
作者: xuhe123 時間: 2020-1-14 10:47
后面會分享,我是基于ucosii寫的
作者: liangweichao 時間: 2020-3-9 08:39
謝謝分享,繼續加油
作者: zcllom 時間: 2020-3-11 16:47
期待,現在進展如何?
作者: bouna 時間: 2020-3-19 16:13
the source code please
作者: 華亭信客 時間: 2020-3-22 21:12
厲害了 我的哥,能不能共享下代碼,學習一下
作者: 后起之秀 時間: 2020-5-1 12:46
樓主能把代碼分享一下嗎?
作者: 楊重陽 時間: 2020-12-8 10:46
樓主,急需您的代碼
作者: 拖典你是誰 時間: 2020-12-9 21:34
大神,可否分享下源碼哦,謝謝了
作者: xuhe123 時間: 2020-12-29 16:24
在我的另一個帖子
作者: xuhe123 時間: 2020-12-29 16:25
在我的另一個帖子
作者: liuyiyi 時間: 2021-4-15 16:23
寫的很是不錯看貼就跟貼
作者: mick32 時間: 2022-4-20 04:09
"I will share it later, I wrote it based on ucosii"
any news ? ...
| 歡迎光臨 (http://www.denmoz.com/bbs/) |
Powered by Discuz! X3.1 |