风力摆控制系统-论文最终版

风力摆控制系统-论文最终版
风力摆控制系统-论文最终版

风力摆控制系统-论文最终版

2015年全国大学生电子设计竞赛(瑞萨杯)

风力摆控制系统(B题)

2015年8月15日

本文论述了风力摆系统的工作原理和设计思路。系统采用STM32F103单片机为主要控制

系统,用角位移传感器mpu-6050采集到风力摆的摆头的角度及位置,通过I2C总线传

输发送到主控系统中,采用lcd12864显示采集到的信息,通过PID进行数据处理,产生

相应的PWM信号,发送到相应的直流风机,控制直流风机实现自由摆动,从而画出直线、圆等轨迹。

关键词:STM32F103单片机;角位移传感器mpu-6050;PID算法

摘要 .................................................................................................................................................. I 目

录 ................................................................................................................................................. II

一、方案设计与论证 (1)

1.1方案比较与选择 (1)

1.1.1控制器模块比较与选择 (1)

1.1.2角度传感器模块比较与选择 (1)

1.1.3驱动模块的比较与选择 (1)

1.2系统最终方案选择 (1)

二、测控方法分析与论证 (2)

2.1风力摆状态测量分析 (2)

2.2运动控制 (2)

2.2.1 电机的比较与选择 (2)

2.2.2控制原理和计算公式 (2)

三、系统设计与分析 (3)

3.1主要电路设计 (3)

3.1.1 STM32F103单片机最小系统电路 (3)

3.1.2电源模块: (4)

3.1.3驱动模块: (4)

3.1.4陀螺仪模块 (4)

3.1.5系统整体电路原理图 (4)

3.2 软件程序设计 (4)

3.2.1程序功能描述与设计思路 (4)

3.2.2程序流程图 (4)

3.2.3程序设计 (5)

四、测试方案与测试结果 (5)

4.1测试方案 (5)

4.2测试仪器 (5)

4.3 测试结果及分析 (5)

4.3.1测试结果(数据) (5)

4.3.2测试分析与结论 (6)

五、总结 (6)

参考文献 (7)

附录一电路原理图 (8)

附录二程序流程图 (9)

附录三部分程序 (10)

附录四元器件清单 (11)

一、方案设计与论证

1.1方案比较与选择

1.1.1控制器模块比较与选择

方案一:采用STC89C51单片机作为控制器。STC89C51价格低廉,结构简单,且资料丰富;但是51单片机系统资源有限,8位控制器,运算能力有限,无法达到较高的精度,需要外

接大量外围电路,增加了系统复杂度,达不到系统要求。

方案二:采用MSP430G2553单片机作为系统控制器。MSP430G2553单片机内部集成精

度高,是16位单片机,但其外部接口较少,运算速度相对较慢,达不到要求。

方案三:采用STM32F103单片机作为系统控制器。STM32F103单片机是32位单片机,内部及程度高,拥有大量外部接口,运算速度高,能够满足题中对数据的快速采集和处理。

综合以上三种方案,我们选择方案三中的STM32F103单片机。

1.1.2角度传感器模块比较与选择

方案一:采用编码器根据脉冲数计算出角度,但是编码器体积较大,安装不方便,有突变现象,容易导致计算错误,故不能满足题目要求。

方案二:采用ENC陀螺仪,ENC陀螺仪能输出一个和角速度成正比的模拟电压信号,响

应速度快,驱动电压和功耗较低。但是容易发生温漂,噪声较大,稳定性较差。

方案三:采用MPU-6050三维角度传感器,MPU-6050集成了3轴陀螺仪,3轴加速度计,以及一个可扩展的数字运动处理器DMP,可输出数字量,稳定性极高,测量精度高。

综合比较以上方案,我们选择方案三中的MPU-6050传感器作为系统的角度传感器。

1.1.3驱动模块的比较与选择

方案一:采用L298驱动,L298是专用驱动集成电路,属于H桥集成电路,内部包含4

通道逻辑驱动电路。但其输出电流不能超过4A,比较容易发热,不能符合题目的较大电流。

方案二:采用互补硅功率达林顿管驱动,采用该方法电路连接比较简单,稳定性好,成本低廉,但不足之处是由于使用分立元件,反应速度较慢不能题目对轴流风机快速反应的要求。

方案三:采用电子调速器驱动,它根据控制信号调节电动机的转速,操作方便,具有过温、过压、欠压、过流及短路保护的功能。具有极好的驱动能力,反应灵敏,能够很好的满足题目的要求。

综合以上三种方案,我们选择方案三中的电子调速器驱动。

1.2系统最终方案选择

其中error为摆杆的角度差,set_angle对应摆杆平衡时的角度值,anggle_one对应摆杆当前的角度值。

up=kp?error (2)

kp为比例调节系数,通过公式可以看出增大kp可知角度差的作用加强,可加强系统的强硬速度,使摆杆的迅速达到直立的状态。

ud=kd?(angleone-anggle_one_old)(3)

anggle_one_old对应摆杆上一次采集到的角度值。kd为微分调节系数,

angleone-anggle_one_old对应角度的变化值,因此可知,调节kd可以改善系统的动态性能。

pwm=up-ud (4)

把 PWM的值给电机即可改变电机的转速,使摆杆的角度改变。最终实现摆杆的站直并稳定。

三、系统设计与分析

3.1主要电路设计

3.1.1 STM32F103单片机最小系统电路

图3.1 STM32F103单片机最小系统

3.1.2电源模块:

图3.2电源模块电路图

3.1.3驱动模块:

图3.3驱动模块电路图

3.1.4陀螺仪模块见附录一图1-1。 3.1.5系统整体电路原理图

见附录一图1-2。

3.2 软件程序设计

3.2.1程序功能描述与设计思路

1)程序功能描述

主要是通过STM32F103单片机控制系统实现题目要求。

2)程序设计思路

本测量装置主要指标是通过MPU-6050采集数据,单片机STM32F103进行数据处理,通过按键来进行参数整定,从而调控各个风机的转速,实现画直线和画圆等要求。 3.2.2程序流程图

见附录二。

3.2.3程序设计

见附录三。

四、测试方案与测试结果

4.1测试方案

本作品的测试中,采用的是万向节为轴转中心,以角度传感器为反馈模块,以10°为一个分度值,进行角度的测量,所画直线、圆圈的观察。

图4-1 风力摆结构示意图图4-2 万向角示意图

4.2测试仪器

数字风速仪,量角器,米尺,秒表,示波器。

4.3 测试结果及分析

4.3.1测试结果(数据)

表4-1 摆杆画出直线段(大于50cm)

表4-2 摆杆画出可设置长度直线(30-60cm)

表4-3 按设定方向摆动画出直线段(大于20cm)

表4-4 风力摆拉起固定后角度自动静止(30°-45°)

表4-5 驱动摆杆做3次圆周运动(15cm

表4-6 做圆周运动时施加外力干扰,恢复原状态

4.3.2测试分析与结论

根据上述测试数据,由此可以得出以下结论: 1、各个模块工作正常。 2、完成了题目的各项要求;

经历了这次的比赛让我们懂得了基础的重要性,平时的学习中不能好高骛远,须知细节决定成败,也许就是一个小小的疏忽就导致全盘失败,认真的阅读资料,不疏忽任何一个小问题,学到了很多课堂上上没学到的东西。通过这次比赛,不仅仅锻炼了我们的动手实践能力,独立思考解决问题的能力,更是加强了我们的创新团队协作意识。

附录一电路原理图

陀螺仪电路图如图1-1所示。

陀螺仪电路图如图1-1

系统电路图如图1-2所示。

系统电路图如图1-2

程序流程图

图2-1 程序框图

附录三部分程序

#include "l

主程序流程图如图2-1所示。

ed.h"

#include "delay.h" #include "key.h" #include "sys.h" #include "usart.h" #include "timer.h" #include "mpu6050.h" #include "kalman.h" #include "12864.h" #include "adc.h"

#define myMCLK

extern float Angle_X_Final; extern float Angle_Y_Final; extern float Angle_Z_Final; extern float Gyro_x;

extern float Gyro_y; extern float Gyro_z;

u8 Table6[]=" 角度X 轴: "; u8 Table7[]=" 角度Y 轴: "; u8 Table8[]=" 度 "; extern int shu3,shu4; int main(void) {

int qian1=0,bai1=0,shi1=0,ge1=0,qian2=0,bai2=0,shi2=0,ge2=0;//shu3=0,shu4=0; u8 t;

u16 led0pwmval=1080;

delay_init(72); //延时函数初始化 LCD12864_Init(); //PB10 PB11 PB12 PB13

KEY_Init(); //初始化与按键连接的硬件接口 Adc_Init();

uart_init(9600); LED_Init(); Moto1_Init();

TIM_SetCompare2(TIM3,led0pwmval);

TIM_SetCompare1(TIM3,led0pwmval); TIM_SetCompare3(TIM3,led0pwmval);

TIM_SetCompare4(TIM3,led0pwmval);

delay_ms(1700);

TIM_SetCompare2(TIM3,1140); TIM_SetCompare1(TIM3,1140);

TIM_SetCompare3(TIM3,1140); TIM_SetCompare4(TIM3,1140); delay_ms(1500);

TIM_SetCompare2(TIM3,1140); TIM_SetCompare1(TIM3,1100);

TIM_SetCompare3(TIM3,1140); TIM_SetCompare4(TIM3,1140); //PB10 PB11 PB12 PB13

I2C_MPU6050_Init(); //IIC初始化 //PB6 PB7

InitMPU6050(); //MPU6050初始化 TIM4_Int_Init(19,7999); //1s 9999 //

GPIO_ResetBits(GPIOB,GPIO_Pin_5); }

附录四元器件清单

2015年全国大学生电子设计竞赛(瑞萨杯)

风力摆控制系统(B题)

2015年8月15日

本文论述了风力摆系统的工作原理和设计思路。系统采用STM32F103单片机为主要控制

系统,用角位移传感器mpu-6050采集到风力摆的摆头的角度及位置,通过I2C总线传

输发送到主控系统中,采用lcd12864显示采集到的信息,通过PID进行数据处理,产生

相应的PWM信号,发送到相应的直流风机,控制直流风机实现自由摆动,从而画出直线、圆等轨迹。

关键词:STM32F103单片机;角位移传感器mpu-6050;PID算法

摘要 .................................................................................................................................................. I 目录 ................................................................................................................................................. II

一、方案设计与论证 (1)

1.1方案比较与选择 (1)

1.1.1控制器模块比较与选择 (1)

1.1.2角度传感器模块比较与选择 (1)

1.1.3驱动模块的比较与选择 (1)

1.2系统最终方案选择 (1)

二、测控方法分析与论证 (2)

2.1风力摆状态测量分析 (2)

2.2运动控制 (2)

2.2.1 电机的比较与选择 (2)

2.2.2控制原理和计算公式 (2)

三、系统设计与分析 (3)

3.1主要电路设计 (3)

3.1.1 STM32F103单片机最小系统电路 (3)

3.1.2电源模块: (4)

3.1.3驱动模块: (4)

3.1.4陀螺仪模块 (4)

3.1.5系统整体电路原理图 (4)

3.2 软件程序设计 (4)

3.2.1程序功能描述与设计思路 (4)

3.2.2程序流程图 (4)

3.2.3程序设计 (5)

四、测试方案与测试结果 (5)

4.1测试方案 (5)

4.2测试仪器 (5)

4.3 测试结果及分析 (5)

4.3.1测试结果(数据) (5)

4.3.2测试分析与结论 (6)

五、总结 (6)

参考文献 (7)

附录一电路原理图 (8)

附录二程序流程图 (9)

附录三部分程序 (10)

附录四元器件清单 (11)

一、方案设计与论证

1.1方案比较与选择

1.1.1控制器模块比较与选择

方案一:采用STC89C51单片机作为控制器。STC89C51价格低廉,结构简单,且资料丰富;但是51单片机系统资源有限,8位控制器,运算能力有限,无法达到较高的精度,需要外

接大量外围电路,增加了系统复杂度,达不到系统要求。

方案二:采用MSP430G2553单片机作为系统控制器。MSP430G2553单片机内部集成精

度高,是16位单片机,但其外部接口较少,运算速度相对较慢,达不到要求。

方案三:采用STM32F103单片机作为系统控制器。STM32F103单片机是32位单片机,内部及程度高,拥有大量外部接口,运算速度高,能够满足题中对数据的快速采集和处理。

综合以上三种方案,我们选择方案三中的STM32F103单片机。

1.1.2角度传感器模块比较与选择

方案一:采用编码器根据脉冲数计算出角度,但是编码器体积较大,安装不方便,有突变现象,容易导致计算错误,故不能满足题目要求。

方案二:采用ENC陀螺仪,ENC陀螺仪能输出一个和角速度成正比的模拟电压信号,响

应速度快,驱动电压和功耗较低。但是容易发生温漂,噪声较大,稳定性较差。

方案三:采用MPU-6050三维角度传感器,MPU-6050集成了3轴陀螺仪,3轴加速度计,以及一个可扩展的数字运动处理器DMP,可输出数字量,稳定性极高,测量精度高。

综合比较以上方案,我们选择方案三中的MPU-6050传感器作为系统的角度传感器。

1.1.3驱动模块的比较与选择

方案一:采用L298驱动,L298是专用驱动集成电路,属于H桥集成电路,内部包含4

通道逻辑驱动电路。但其输出电流不能超过4A,比较容易发热,不能符合题目的较大电流。

方案二:采用互补硅功率达林顿管驱动,采用该方法电路连接比较简单,稳定性好,成本低廉,但不足之处是由于使用分立元件,反应速度较慢不能题目对轴流风机快速反应的要求。

方案三:采用电子调速器驱动,它根据控制信号调节电动机的转速,操作方便,具有过温、过压、欠压、过流及短路保护的功能。具有极好的驱动能力,反应灵敏,能够很好的满足题目的要求。

综合以上三种方案,我们选择方案三中的电子调速器驱动。

1.2系统最终方案选择

相关主题
相关文档
最新文档