這是我嵌入式應(yīng)用的一個項目,使用STM32CubeMX和keil軟件進(jìn)行編程。斷斷續(xù)續(xù)花了好幾天完成,期間踩了很大hal庫的坑和proteus的坑。
感覺做這個仿真的人很少,現(xiàn)在把資源分享給大家,因為程序還在修改還沒有提交,所以先分享一下我粗略的設(shè)計思路
一、設(shè)計思路: 使用STM32CubeMX軟件進(jìn)行資源初始化(Cube資源配置很方便),使用HAL庫進(jìn)行程序設(shè)計。 圖1 資源配置圖 二、功能介紹: - 可調(diào)轉(zhuǎn)速
- 可控轉(zhuǎn)動方向
- 顯示轉(zhuǎn)速和目標(biāo)轉(zhuǎn)速
三、功能的實現(xiàn)方法: - 可調(diào)轉(zhuǎn)速通過可調(diào)電阻和STM32的ADC功能,實現(xiàn)500-4596范圍的速度調(diào)節(jié)。使用的是簡單的比例控制,并未使用復(fù)雜的PID控制(太難了,一直調(diào)不好)。
- 通過定時器1的PWM互補(bǔ)輸出六路PWM控制電機(jī)的轉(zhuǎn)動,驅(qū)動器使用L293D和IRF540 MOS管。
- 換向使用的是外部中斷,測速使用的是定時器2的三鹿輸入捕獲,這里有一個坑,proteus中三路輸入捕獲無法同時工作,本來打算三路都做測速邏輯,但是速度變化很大,所以最后只使用了一路作為測速通道。
- 正反轉(zhuǎn)使用的是外部中斷。
- 顯示轉(zhuǎn)速和目標(biāo)轉(zhuǎn)速使用的是lcd1602,在proteus仿真中,顯示轉(zhuǎn)速有一定的延時和誤差(其實是proteus的仿真太慢了,多開一個任務(wù)就慢的要死)
圖2 電機(jī)剛啟動,速度未達(dá)到最小速度500
速度未達(dá)到最小速度時加載很快,大概加載到300rpm左右開始pid控制。
圖3 仿真過程中 圖4 仿真過程中
圖5 反轉(zhuǎn)時的調(diào)速過程
仿真過程中可以看到定時器PWM輸出之間的切換以及脈寬的變化。 圖6 接近穩(wěn)定時 圖7 穩(wěn)定后增大轉(zhuǎn)速 圖8 反轉(zhuǎn)時接近穩(wěn)定
由于proteus中stm32 的定時器計時很坑,延時根本不對,需要修改芯片的時鐘源頻率,改大了仿真慢,改小了又不準(zhǔn),所以ADC采樣值和轉(zhuǎn)速之間只能近似轉(zhuǎn)換,也造成了目標(biāo)轉(zhuǎn)速和實際轉(zhuǎn)速的誤差。 圖9 整體電路圖
以上的Word格式文檔51黑下載地址:
設(shè)計報告.docx
(755.87 KB, 下載次數(shù): 190)
2020-1-9 17:13 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|