本題設(shè)計(jì)一個(gè)基于STM32F103VET6控制的智能風(fēng)扇系統(tǒng),其機(jī)械部分包括舵機(jī)、舵機(jī)云臺(tái)、直流減速電機(jī)、直流減速電機(jī)支架等,硬件部分由STM32F103VET6單片機(jī)、接口電路、電源降壓電路和電機(jī)驅(qū)動(dòng)電路等部分組成,并且與軟件程序構(gòu)成一個(gè)完整的控制系統(tǒng)。以STM32F103作為控制器的核心,采用12V的直流減速電機(jī)作為風(fēng)扇動(dòng)力來(lái)源,2個(gè)舵機(jī)控制云臺(tái)方向,利用單片機(jī)來(lái)控制電機(jī)。在基礎(chǔ)功能上通過(guò)溫度采樣來(lái)控制直流減速電機(jī)的啟停,在人臉追蹤功能方面單片機(jī)串口通訊接收PC端發(fā)送來(lái)的人臉坐標(biāo),通過(guò)PID控制算法進(jìn)行控制達(dá)到舵機(jī)云臺(tái)人臉跟蹤的目標(biāo)。 系統(tǒng)采用STM32F103作為智能風(fēng)扇的控制核心,直流減速電機(jī)作為風(fēng)扇的動(dòng)力裝置,舵機(jī)作為云臺(tái)的動(dòng)力裝置,實(shí)現(xiàn)云臺(tái)的一系列動(dòng)作。硬件由電源電路,CPU最小系統(tǒng)模塊,電機(jī)驅(qū)動(dòng)模塊,編碼器模塊,顯示模塊,視覺(jué)模塊,溫度傳模塊等組成。除根據(jù)當(dāng)前溫度傳感器溫度實(shí)現(xiàn)控制電機(jī)啟停及轉(zhuǎn)速外,還采用PID算法等進(jìn)行控制,將目標(biāo)坐標(biāo)與當(dāng)前人臉坐標(biāo)的誤差量作為反饋對(duì)舵機(jī)位置進(jìn)行控制。同時(shí)采用串口通信,實(shí)現(xiàn)PC端發(fā)送人臉坐標(biāo)到STM32端
1.jpg (238.06 KB, 下載次數(shù): 36)
下載附件
2022-10-10 15:28 上傳
圖片1.png (26.22 KB, 下載次數(shù): 81)
下載附件
2019-10-22 21:40 上傳
單片機(jī)源程序如下:
- #include "led.h"
- #include "delay.h"
- #include "usart.h"
- #include "key.h"
- #include "sys.h"
- #include "oled.h"
- #include "menu.h"
- #include "encoder.h"
- #include "timer.h"
- #include "motor.h"
- #include "pid.h"
- /************************************************
- 最后修改日期:2019/7/6 15:05
- 功能加上串口通訊
- x,下舵機(jī)(1750->1950)從右往左
- y,上舵機(jī)(1750->1950)從上往下
- ************************************************/
- int x_pwm = 1850,y_pwm = 1825;
- // 初始化目標(biāo)值和小球的中心位置
- int x_face = 320, y_face = 240;
- int if_face=0;
- int x_face_store = 320, y_face_store = 240;
- int face_store=0;
- int x_target = 320, y_target = 240;
- // 上下舵機(jī)PID參數(shù)
- float x_KP = -0.00060,x_KI = 0.0007, x_KD = 0.002;
- float y_KP = -0.00060, y_KI = 0.0007, y_KD =0.002;
- // 儲(chǔ)存OPENCV發(fā)送來(lái)的數(shù)據(jù)
- u16 Res;
- int main(void)
- {
- /*延時(shí)函數(shù)初始化*/
- delay_init();
-
- /* 設(shè)置中斷優(yōu)先級(jí)分組2*/
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
-
- /*串口初始化為115200*/
- uart_init(115200);
-
- /*LED初始化*/
- LED_Init();
-
- /*KEY初始化*/
- KEY_Init();
-
- /*OLED初始化*/
- OLED_Init();
-
- /*100hz的計(jì)數(shù)頻率,每10ms進(jìn)入一次定時(shí)器中斷,更新當(dāng)前電機(jī)速度*/
- TIM6_Int_Init(99,7199);
-
- /*初始化編碼器 */
- Encoder_Init_TIM2();
-
- /*舵機(jī)定時(shí)器初始化 50HZ范圍1750-1950*/
- TIM3_PWM_Init(1999,719);
-
- /*初始化TIM1 PWM 10KHZ,用于驅(qū)動(dòng)電機(jī) */
- TIM4_PWM_Init(7199,0);
-
- /*200hz的計(jì)數(shù)頻率,每5ms進(jìn)入一次定時(shí)器中斷:中斷PID賦值*/
- TIM7_Int_Init(49,7199);
-
- AIN2=1;
- AIN1=0;//初始將電機(jī)不轉(zhuǎn)
- PWMA=0;
- TIM_SetCompare1 (TIM3,1850); //初始將舵機(jī)云臺(tái)位置設(shè)置在中間
- TIM_SetCompare2 (TIM3,1825);
-
-
- OLED_Fill(0, 0, 128, 63, 0);
- Display_OLEDMenu();
- while (1)
- {
- MenuReflash();
- }
- }
復(fù)制代碼單片機(jī)程序下載:
單片機(jī)程序V1.2.7z
(217.74 KB, 下載次數(shù): 176)
2019-10-23 03:40 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
PY文件太大了超過(guò)限制了無(wú)法上傳,只提供單片機(jī)的程序 僅供參考
|