摄像头云台设计报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
控制专题训练阶段性报告摄像头云台设计
学生姓名:
2017年5月24日
摘要
随着社会的发展,视频监控行业在IT行业中逐渐占据一角,同样作为视频监控中摄像机的一部分——云台,也扮演着重要的角色。云台是一种主要由两个高精度电机组成的用于承载镜头的支架,其中一个电机负责控制云台水平转动,另一个电机用于控制云台的垂直方向转动,从而使摄像机镜头能够在水平范围内,垂直180°范围内实现两个自由度的转动。
本文要设计的是立式摄像头云台,机械结构的设计使摄像头云台能够放置在平面上,可以实现水平方向和垂直方向各180°的自由度转动,体积较小便于存放,使用两个舵机分别控制云台的水平转动和垂直转动,在上部的云台上固定用于反馈角度信息的mpu9250九轴陀螺仪和摄像头。由于使用的是模拟舵机,精度较低,为达到设计精度要求由单片机根据mpu9250反馈得到的角度数据对舵机的角度进行计算,使用PID算法得到修正值进行修正。
最终设计的摄像头云台的角度精度(以mpu9250反馈的当前角度为标准当前角度)可达到0.2°(大部分时间可达到0.1°以内),即当云台完成角度修正并稳定后,角度与设定的偏转角度相差总小于0.2°。云台从开始修正到角度偏差小于0.2°的时间不超过为2秒(最长响应时间)。操作和数据的显示均在触摸屏上完成,可直接在触摸屏上设置摆动的角度,同时可以看到当前的角度与设置的目标角度,以及看到回传的摄像头拍摄到的图像。
本设计虽然采用了模拟舵机这种本身精度不高的电机,却由PID算法对系统的精度做出了很大程度的弥补,稳定角度误差低于0.2°的精度已经基本满足云台的设计目标并能适应许多特殊情况的要求。
关键词:mpu9250陀螺仪;stm32f103vet6;ov7670摄像头;模拟舵机;显示屏模块。
目录
一、系统方案 (1)
1、模拟舵机的论证与选择 (1)
2、mpu9250模块的论证与选择 (1)
二、系统理论分析与计算 (2)
1、可达到的最高角度精度的理论分析 (2)
(1)模拟舵机原理 (2)
(2)stm32定时器计算................................ 错误!未定义书签。
2、PID参数的计算 (2)
(1)PID原理分析和算法设计 (2)
(2)PID参数理论估计值计算 (2)
(3)PID参数的测试与修改 (2)
三、电路与程序设计 (2)
1、电路的设计 (2)
(1)系统总体框图 (2)
(2)PID算法子系统框图 (3)
(3)电源 (4)
2、程序的设计 (4)
(1)程序功能描述与设计思路 (4)
(2)程序流程图 (4)
四、测试方案与测试结果 (6)
1、测试方案与论证 (6)
2、测试条件与仪器 (7)
3、测试结果及分析 (7)
(1)测试结果(数据) (7)
(2)测试分析与结论 (7)
五、参考文献 (7)
附录1:电路原理图 (8)
附录2:源程序 (9)
一、系统方案
本系统主要由两个模拟舵机模块、mpu9250模块、摄像头模块、电源模块组成,下面分别论证这几个模块的选择。
1、模拟舵机的论证与选择
方案一:使用模拟舵机和算法修正。模拟电机有其局限性,首先其最大转速不快,0.17s能转动60°,同时经过实测,舵机在本身转动时,有可能会有一定的过冲,因为内部控制系统,会自动往回修正一定距离,但是精度也并不高。但是模拟舵机成本低,控制简单,控制时只需要调整一定的pwm波占空比就可以轻松控制转动的角度,由于是角度伺服电机,最大只能转动180度,出现部分故障时危险较小。尽管精度低,但是理论上只要使用PID算法进行合理的设计,将参数测试合理,反馈的角度精确且速度较快,经过调试也可以达到很高精度。
方案二:使用步进电机。步进电机本身精度较高,控制时只需要按照预定的角度调整pwm波可以进行指定角度的转动,若配合反馈的角度进行控制应该也很容易达到精度要求。但是步进电机体积十分庞大,同时由于其本身的驱动不能直接使用单片机而还需要使用步进电机驱动器才能驱动,同时使用两个步进电机不仅涉及云台时需要预留很大空间,还需要合理摆放驱动器。可能会在机械系统设计时花费更多的时间和精力,消耗大量时间。
方案三:使用无刷电机。使用无刷电机转动速度会比上述两种电机都快,不过由于速度快,对于PID算法的要求也相应提高,且无刷电机也需要使用电调才能使用单片机控制。虽然其速度快,但是对于摄像头云台来说,过快的响应速度意义并不是特别大。摄像头云台更看重精度,而无刷电机相对上述两种电机来说对于高精度的角度控制略有难度。
综合以上三种方案,方案一的优点在于灵活方便,体积较小,方便机械结构的设计,价格经济,使用角度进行修正也可以达到很高的精度,选择方案一。
2、mpu9250模块的论证与选择
方案一:mpu6050模块。Mpu6050是一款六轴陀螺仪,对于角度的检测和加速度的测定都有较高精度,且相对较为便宜,广泛运用于各种需要角度,位移控制的控制系统中,但相对于mpu9250而言,少了三个方向的地磁角。
方案二:mpu9250模块。Mpu9250模块与mpu6050在角度和加速度的测定上是一样的,但是mpu9250在测定内容上多了三个方向上的地磁偏角,可以使用算法利用地磁偏角对原本测定的角度进行修正,相对于mpu6050来说,可达到的角度精度更高。
综合以上三种方案,方案二的优点在于其测定的角度有地磁修正,相对于方案一而言,角度测定更准确,选择方案二。
二、系统理论分析与计算
1、可达到的最高角度精度的理论分析
(1)使用的模拟电机是角度伺服电机,给一个0.5ms的脉冲时转动到0°点,脉冲最大为2.5ms,转动到180°。从0.5ms到1.5ms有2ms的中间值。
(2)若使用stm32的定时器,将定时器的预分频设置为72倍,原时钟频率是72MHZ,则分频之后变成72MHZ/72=1MHZ,即每个时钟周期是1us,占2ms的2000分之1倍,也就是说,经过控制之后的最小分度值应该是180/2000 = 0.09°。说明以现行参数进行设置,设计可以达到要求的0.5°精度以内。
2、PID参数的计算
(1)最终设计时,为了参数计算方便,将0°到180°的中间值分给了1000的pwm值。即每个值之间相差0.18°(若舵机的分值完全准确)。PID算法使用了PI算法,使用公式:pwm_differ = kp*Bias + ki * angle_integral_roll;进行pwm的差值计算。即角度与目标角度每相差一度,就会有kp的pwm修正。由于舵机的操作方式是固定pwm 占空比转动固定角度,所以采用差值的形式对pwm值进行计算,在每次计算结束后对pwm 值进行修正。pwm = pwm_differ +pwm;
(2)由上述计算量可知,若只有比例参数进行修正则应有:pwm_differ = kp*Bias;
Pwm_differ * 0.18°(每个pwm值代表舵机的0.18°,此值为估计值不准确) = Bias。解方程组得:kp = 5.56。
(3)由于采用的是PI控制,为了避免过大的过冲,kp取比5.56小一些的值,程序中取5,ki作为补偿,取0.5。完成粗略的取值估计后,进行实际的测试,根据测试结果这样的取值基本能满足系统设计的要求,响应时间基本上在2秒以内,精度能达到0.3°以内。后经过测试和修正,kp和ki分别修正为4和1,现行精度可达到0.2°以内,响应时间也基本在2秒以内。
三、电路与程序设计
1、电路的设计
(1)系统总体框图
系统总体框图如图1所示,