图1 系统总体框图
2)PID算法控制子系统框图
MPU9250传输角度数据给单片机计算出当前角度与目标值的差值,根据算法算出补偿的差值将差值加入当前的输出值中,改变pwm波脉冲的时长并发送舵机根据脉冲时长进行姿态修正
3
(
图2 PID算法控制子系统框图
(3)电源
电源由航模电池供电,由变压部分,滤波部分,稳压部分组成。为整个系统提供5V和3.3V电压,确保电路的正常稳定工作。航模电池的电压约为11.1V,使用一个dc-dc模块将电压将为5V,再使用一个asm1117-3.3V芯片产生一个稳定的3.3V电压,对两部分电源都进行电容滤波进行稳压,从而完成对单片机系统,舵机等设备的供电。
2、程序的设计
(1)程序功能描述与设计思路
1、程序功能描述
根据题目要求软件部分实现mpu9250数据读取,ov7670的图像显示,舵机的控制,触摸屏的触控,各种控制信息的显示以及PID算法的运行。
1)PID算法的运行:程序快速的将当前系统的角度值读取回来,计算出差值Bias = angle- target_angle。其中,angle为欧拉角中的滚动角roll和航向角yaw。然后将差值的积分也一并计算出:Bias_integeral = Bias_integeral + Bias;根据PID算法中的PI算法,使用这两个量值就可以计算出修正值。
2)触摸屏部分:用触摸屏显示当前角度值,目标角度值,输出脉冲大小,显示摄像头模块拍摄到的图像信息,同时设置触控按钮,可以通过触控改变目标角度值的大小。
3)基本驱动部分:配置时钟,定时器,输出pwm波控制脉冲大小,驱动ov7670摄像头正常工作并传输数据,驱动mpu9250并读取相关的角度值数据。
2、程序设计思路
驱动配置完成之后。程序通过mpu9250将当前系统的角度值读取回来,根据PID算法中的PI算法,将舵机的角度修正值计算出来,再将改修正值通过pwm波脉冲时间的形式发送给舵机,使舵机的角度值改变,使系统的角度按照预设位置高精度变化,从而完成系统的角度控制。
(2)程序流程图
1、主程序流程图
4
初始化所有外部设备和单片机读取摄像头图像数据读取mpu9250传回角度值检测触摸屏并更改目标角度值计算pwm补偿值并提供给舵机将所有信息发送给LCD显示屏显示 2、PID计算子程序流程图 5
根据当前角度和目标角度计算出差值和积分根据系数计算补偿值补偿值限幅将补偿值加到当前值并限幅将计算值赋给定时器,改变脉冲时长 四、测试方案与测试结果 1、测试方案与论证
(1)硬件测试:检查硬件电路图,stm32电路板和相关走线连接没有问题。打开电源之后,各部分正常运行。舵机转动时,用数字示波器检查5V电源和3.3V电源,无较大纹波,稳压及滤波电路正常工作。
(2)软件仿真测试:经过仿真,程序能够正常运行,读取数据,数据的相关计算都正常。
(3)硬件软件联调:上电之后,程序正常运行,mpu9250,ov7670,lcd显示屏都正常运行并能传回数据,舵机可以按照指定方向转动。正常输入目标角度,测定系统的稳定性和精度。每次改变目标角度10°,查看最终的稳定值与目标角度的偏差以此计算
6
精度。
论证:由于制作的是机械系统,若系统能够稳定运行,运行指标满足题目要求,则系统的测试
2、测试条件与仪器
测试条件:检查多次,上电之后运行系统检查系统的运行稳定性和系统精度。 测试仪器:数字示波器,数字万用表,指针式万用表。
3、测试结果及分析
(1)测试结果(数据)
每次改变目标值查看稳定之后的角度值: (单位/°) 目标值 10°20° 30° 40° 50° 60° 70° 130° 实际值 10.0126 19.9846 29.9536 40.0954 50.0169 60.0314 69.8994 129.986
(2)测试分析与结论
根据上述测试数据,可以看出最大的精度偏差为0.1006,经过后续的粗测量精度偏差最大基本不会超过0.1°,由此可以得出以下结论:
1、系统的精度可满足角度偏差不超过0.2°的精度。
2、系统的稳定性非常高,基本不会出现不稳定因素,可以有效的使用。 综上所述,本设计达到题目要求的角度偏移小于0.5°的目标。
五、参考文献
[1]谭浩强.C语言程序设计[M].北京:清华大学出版社,2012
7