本题设计一个基于STM32F103VET6控制的智能风扇系统,其机械部分包括舵机、舵机云台、直流减速电机、直流减速电机支架等,硬件部分由STM32F103VET6单片机、接口电路、电源降压电路和电机驱动电路等部分组成,并且与软件程序构成一个完整的控制系统。以STM32F103作为控制器的核心,采用12V的直流减速电机作为风扇动力来源,2个舵机控制云台方向,利用单片机来控制电机。在基础功能上通过温度采样来控制直流减速电机的启停,在人脸追踪功能方面单片机串口通讯接收PC端发送来的人脸坐标,通过PID控制算法进行控制达到舵机云台人脸跟踪的目标。 系统采用STM32F103作为智能风扇的控制核心,直流减速电机作为风扇的动力装置,舵机作为云台的动力装置,实现云台的一系列动作。硬件由电源电路,CPU最小系统模块,电机驱动模块,编码器模块,显示模块,视觉模块,温度传模块等组成。除根据当前温度传感器温度实现控制电机启停及转速外,还采用PID算法等进行控制,将目标坐标与当前人脸坐标的误差量作为反馈对舵机位置进行控制。同时采用串口通信,实现PC端发送人脸坐标到STM32端
单片机源程序如下:
- #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,下舵机(1750->1950)从右往左
- y,上舵机(1750->1950)从上往下
- ************************************************/
- int x_pwm = 1850,y_pwm = 1825;
- // 初始化目标值和小球的中心位置
- 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;
- // 上下舵机PID参数
- 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;
- // 储存OPENCV发送来的数据
- u16 Res;
- int main(void)
- {
- /*延时函数初始化*/
- delay_init();
-
- /* 设置中断优先级分组2*/
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
-
- /*串口初始化为115200*/
- uart_init(115200);
-
- /*LED初始化*/
- LED_Init();
-
- /*KEY初始化*/
- KEY_Init();
-
- /*OLED初始化*/
- OLED_Init();
-
- /*100hz的计数频率,每10ms进入一次定时器中断,更新当前电机速度*/
- TIM6_Int_Init(99,7199);
-
- /*初始化编码器 */
- Encoder_Init_TIM2();
-
- /*舵机定时器初始化 50HZ范围1750-1950*/
- TIM3_PWM_Init(1999,719);
-
- /*初始化TIM1 PWM 10KHZ,用于驱动电机 */
- TIM4_PWM_Init(7199,0);
-
- /*200hz的计数频率,每5ms进入一次定时器中断:中断PID赋值*/
- TIM7_Int_Init(49,7199);
-
- AIN2=1;
- AIN1=0;//初始将电机不转
- PWMA=0;
- TIM_SetCompare1 (TIM3,1850); //初始将舵机云台位置设置在中间
- TIM_SetCompare2 (TIM3,1825);
-
-
- OLED_Fill(0, 0, 128, 63, 0);
- Display_OLEDMenu();
- while (1)
- {
- MenuReflash();
- }
- }
复制代码单片机程序下载:
单片机程序V1.2.7z
(217.74 KB, 下载次数: 176)
|