滚球控制系统设计报告.docx

上传人:b****6 文档编号:8192352 上传时间:2023-01-29 格式:DOCX 页数:11 大小:255.88KB
下载 相关 举报
滚球控制系统设计报告.docx_第1页
第1页 / 共11页
滚球控制系统设计报告.docx_第2页
第2页 / 共11页
滚球控制系统设计报告.docx_第3页
第3页 / 共11页
滚球控制系统设计报告.docx_第4页
第4页 / 共11页
滚球控制系统设计报告.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

滚球控制系统设计报告.docx

《滚球控制系统设计报告.docx》由会员分享,可在线阅读,更多相关《滚球控制系统设计报告.docx(11页珍藏版)》请在冰豆网上搜索。

滚球控制系统设计报告.docx

滚球控制系统设计报告

 

2017年全国大学生电子设计竞赛

设计报告

 

滚球控制系统(B题)

【本科组】

摘要:

本系统采用STM32F103ZET6最小系统板为控制中心,利用OV7670摄像头、显示器、按键、S010舵机、小球、万向节、平板支架构成滚球控制系统。

单片机利用摄像头采集到的数据,确定小球的位置坐标,通过PID闭环控制舵机PWM输出打角拉动支撑杆,控制平板倾斜度达到小球滚到指定区域停留等状态。

控制系统采用PID算法组成闭环控制系统具有很好的稳定性,此外通过TFT显示屏显示小球位置,各个功能的实现可以通过按键输入。

 

一、系统方案

本系统主要由单片机控制模块、摄像头模块、LCD显示屏模块、电源模块、舵机及平板机械支架构成组成。

STM32作为滚球系统的控制核心,利用摄像头采集过来的数据通过黑白二值化,以此判别平板和黑色球并显示在LCD上。

摄像头对滚球准确定位,确定其坐标位置,同时记录平板规定的9个区域坐标,单片机通过返回的坐标位置结合PID算法,给定舵机PWM输出形成闭环控制系统,从而控制小球去到指定区域保持平衡。

同时,可通过矩阵按键选择功能模式,与设计任务一一对应的,系统的总体方案框图见图1。

图1系统总体方案框图

1、主控制器件的论证与选择

方案一:

采用STC89C52单片机作为控制模块的核心。

STC89C52使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能。

但其能使用的I/O口很少,ROM空间不足,不适合采用STC89C52为主控芯片。

方案二:

采用STM32103FZET6单片机为主控器。

STM32运行速度快,片上资源丰富,具有很多外围接口,可拓展性强,灵活性高。

完全可以实现本系统的各个设计任务,具有良好的响应速度。

通过比较,我们选择方案二。

2、滚球控制系统方案选择

方案一:

采用MPU6050三轴陀螺仪。

利用三轴陀螺仪可以算出平板的当前位置姿态,具有测量精确、结构简单等优点,但考虑到小球需要到平板指定的9个区域,MPU6050传感器很难确定其准确位置,可靠性差。

方案二:

选用摄像头对小球准确定位,根据题目给出的具体要求,采集摄像头检测到的数据传给单片机二值化处理,以此确定小球的位置坐标以及与目的坐标的偏差,反馈给单片机,实现更加精确的控制,而且通过LCD显示,更加直接有利于调试。

综合以上两个方案,本系统选择方案二。

3、滚球运动控制的论证与选择

方案一:

采用推杆直线电机。

电推杆是通过将电动机的旋转运动转变为推杆往复直线运动的电力驱动装置。

利用多个电推杆可推动平板进行上下运动,但电推杆响应速度慢,而且需要很大的驱动电流,消耗功率大,还要加装继电器保护,比较繁琐。

方案二:

采用S010舵机。

该舵机为伺服电机,通过舵柄转换成旋转运动来打到不同的角度,再加上装支撑杆就可以控制平板的上下运动。

舵机三条控制线,分别为:

电源、地及信号线,不需要驱动模块,只要单片机输出信号PWM就可以控制舵机打角。

综合考虑采用方案二。

4、显示器的论证与选择

方案一:

采用OLED显示器。

该显示屏可显示汉字,不需用到背光板,具有轻薄短小、低耗电量,但为单色显示,界面效果受限。

方案二:

选用TFTLCD显示器。

TFTLCD显示屏分辨率高,真彩显示,可显示的界面丰富。

方便绘图和编程控制,更有利于人机界面的操作控制,适用于较为功能性强的的控制系统。

综合以上两种方案,选择方案二。

二、系统理论分析与计算

1、小球的精准定位分析

通过OV7670摄像头采集图像进行二值化处理,用两个嵌套for循环可以计算得出小球在x轴和y轴上被扫描到最边上的两个值x-min、x-max和y-min、y-max,然后分别将x轴和y轴的最大最小值求和,再除以2,就可以得出小球的坐标x和y值。

2、执行机构装置的分析

方案一:

采用4个舵机作为执行机构,对称分布在平板四周,通过4个舵机不同的PWM输出来控制平板的运动从而控制小球的滚动,但4个舵机控制存在很大的不确定性,算法较为复杂。

方案二:

采用2个舵机和一根带万向节的支撑杆等边三角形分布,构成执行机构。

采用二维平面X,Y方向来控制平板的运动,另外一根带万向节的支撑杆起到很好的连动作用,机械上更加简单,易于PID算法控制。

综上以上方案,选择方案二。

3、控制PID的计算

在系统控制中,按偏差的比例(P)、积分(I)和微分(D)进行控制的PID控制。

以下是PID的公式:

u(t)=

控制点目前包含三种比较简单的PID控制算法,分别是:

增量式算法,位置式算法,微分先行。

鉴于本系统通过小球坐标与目标位置坐标的偏差,只调节比例P、微分D的PD的增量式算法,即利用目的坐标与偏差的PD调节,控制滚球闭环控制系统,达到稳态无静差。

三、电路与程序设计

1、电路的设计

采用STM32ZET6最小系统板,外接摄像头模块、显示模块、按键模块、电源模块及舵机执行机构。

外设接口模块电路见图2。

图2外设接口电路

(2)电源模块

单片机采用3.3V供电,显示器5V供电以及舵机6V供电。

电源电路见附录1。

2、程序的设计

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

1、程序功能描述

根据题目要求软件部分主要实现键盘的设置和显示。

1)键盘实现功能:

采用3乘3的矩阵键盘,从左到右,从上到下依次排序,按键1至7依次控制开启和关闭任务1-7的要求,按键9为PID调节模式控制按钮。

PID调节模式中按键4和7为调节平板内部区域的KP1值大小,按键5和8为调节平板内部区域的KD1值大小,按键5和8为调节平板边缘区域的KP2值大小;

2)显示部分:

显示小球的在平板上坐标,任务需要到达的坐标,实时坐标值与目标坐标值的差值,平板上的9个区域,小球的模拟图像,两个舵机的输出值,任务序号,任务计时时间,小球在区域停留的时间。

2、程序设计思路

进入系统,先选择进入校准模式,按键调节舵机的输出值,以达到平板的平衡,并保存为平衡值;通过OV7670摄像头采集平板的图像二值化,并把二值化图像显示在LCD屏上以找到区域1、5、9并保存重新定义区域位置来减少调节平板和摄像头因碰撞或搬运的而产生的误差。

通过二值化寻到小球坐标,与目标坐标的差值,通过PD算法,调节舵机的输出值来调节平板的上下运动,让小球达到任务所需要的目标坐标。

(2)程序流程图

1、主程序流程图

四、测试方案与测试结果

1、测试方案

(1)硬件测试

检测焊接的单片机外接设备能否正常工作,摄像头采集显示到显示屏是否稳定并判别平板和小球;检测电源提供的电压、电流供模块使用是否达到稳压值;平板及舵机装置静置是否平衡;检测按键能否实现不同任务。

(3)硬件软件联调

通过按键和TFTLCD显示器达到人机交互,测试滚球运动与实际偏差可以按按键选择调节KP1、KD1系数,控制舵机PWM输出,调试滚球控制系统。

2、测试条件与仪器

测试条件:

检查多次,仿真电路和硬件电路必须与系统原理图完全相同,并且检查无误,硬件电路保证无虚焊。

测试仪器:

万用表、水平仪、秒表。

3、测试结果及分析

(1)测试结果(数据)

滚球控制系统工作,将小球置于平板区域1上,记录平板开始运动使小球达到中心区域平衡的时间,测定其最佳的PD参数。

KPKD

6

7

8

9

1.3

6s

7s

6s

10s

1.6

4s

5s

6s

6s

1.9

7s

7s

8s

9s

任务1:

稳定小球在区域2,停留不少于5s。

任务2:

控制小球由区域1进入区域5,在区域5停留不少于2s。

测试次数

第一次测试

第二次测试

第三次测试

第四次测试

时间(s)

4

5

5

4

任务3:

控制小球由区域1进入区域4,在区域4停留不少于2s,再进入区域5停留不少于2s。

测试次数

第一次测试

第二次测试

第三次测试

第四次测试

达到区域4时间

4

5

5

5

停于区域5时间

10

9

12

10

任务4:

控制小球由区域1进入区域9,在区域9停留不少于2s。

测试次数

第一次测试

第二次测试

第三次测试

第四次测试

时间(s)

20

19

15

14

(2)测试分析与结论

根据上述测试数据,通过调节PD参数,控制平板的倾斜程度,使小球进入区域和冲过区域的不同状态具有良好的跟随性、准确性、快速性,由此可以得出以下结论:

1、单独增大KP,KD不变,平板倾斜度更大,小球滚动趋势大,当小球距离目的坐标近时,平板也会有大的倾角。

2、微分KD起到微调和超调的作用,当小球靠近区域圆时,有刹车防止小球冲过区域的作用。

结合适当的比例KP参数,微调微分KD,系统可以有较好的跟随性和稳定性。

3、通过实验证明,当小球在规定的9个圆形区域时,设置比例参数KP为1.6,微分参数KD为6,小球达到目标区域时间短;当小球在圆形区域外时,KP取值为5,使平板有大的倾角,足够将小球拉回来。

4、采用动态P,设计小球从1到9区域的路线使其有较好的缓冲,克服因P值太大给小球的惯性冲出平板。

综上所述,本设计达到设计要求。

五、参考文献

[1] 谭浩强.C语言程序设计[M].北京:

清华大学出版社,2012.

[2]张兴.电力电子技术[M].科学出版社,2010.

[3]孙林军.基于STM32控制液晶的接口实现[J].电视技术,2013.

[4]韩国栋.AltiumDesignerWinter09电路设计入门与提高[M].化学工业出版社,2010.

附录1:

电路原理图

附录1系统电路原理图

附录2:

源程序

#include"stm32f10x_it.h"

#include"led.h"

#include"delay.h"

#include"key.h"

#include"sys.h"

#include"lcd.h"

#include"usart.h"

#include"timer.h"

#include"dj_pwm.h"

#include"ov7670.h"

#include"exti.h"

#include

externu8ov_sta;

externu8ov_frame;

u8key;//按键标志位

inttest=0;//测试标志位

u16PWM_X=160,PWM_Y=150;//A1,A2脚的pwm输出

u16PWM_X_init=160,PWM_Y_init=150;//A1,A2初始值

u16PWM_X_Min=125,PWM_Y_Min=115;//PWM输出限幅外区域

u16PWM_X_Max=195,PWM_Y_Max=185;

u16PWM_X_Min2=135,PWM_Y_Min2=125;//PWM输出限幅内区域

u16PWM_X_Max2=185,PWM_Y_Max2=175;

u8PWM_Value=1;//按键可改变PWM数值

u8Task_flag=0;//任务标志

u8Task_flag2=0;//任务标志2

u16Task_time=0;//任务时间

u16Stop_time=0;//区域停留时间

u8time_Task_flag=0;

u8time_Stop_flag=0;

floatKp1=1.6,Kd1=6;//1P和D在圆内

floatKp2=3;//2在圆外

u16GOAL_X=120,GOAL_Y=80;//目标坐标

floatErr_X,Err_Y=0;//坐标差值

floatErr_X_LAST,Err_Y_LAST=0;

u8ball_r=5,QY_r=6,WC_value=1;//小球半径,允许误差*0.25cm

u16X,Y=0;//小球的质心位置

u16X_MAX=0,X_MIN=240;//小球的坐标

u16Y_MAX=40,Y_MIN=280;

u16X_MAX_LSAT,X_MIN_LSAT,

Y_MAX_LSAT,Y_MIN_LSAT=0;//上一次小球的坐标位置

u16X_MIN_RANGE=0,X_MAX_RANGE=240;//扫描判断区域

u16Y_MIN_RANGE=40,Y_MAX_RANGE=280;

u8QY_number=0;//所在的区域

u16QY_X1=40,QY_X2=120,QY_X3=200;//区域坐标行X40120200

u16QY_Y1=80,QY_Y2=160,QY_Y3=240;//区域坐标列Y80160240

voidKEY_RUN(void);

voidcamera_refresh(void);//更新摄像头

voidPWM_Control(void);//更新PWM输出

voidLCD_Control(void);//更新LCD显示

voidlocation(void);//更新位置判别

voidTest(void);//校准测试

voidTest_Blance(void);///校准测试1平衡

voidTest_OV1(void);//校准测试2摄像头1

voidTest_OV5(void);//校准测试3摄像头5

voidTest_OV9(void);//校准测试4摄像头9

voidTask(void);//任务函数

voidDone_Task(void);//更新任务进度

voidFand_Goal(void);//寻小球坐标函数

intmain(void)

{

delay_init();//延时函数

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);

uart_init(115200);

LED_Init();

KEY_Init();

LCD_Init();

LCD_Clear(WHITE);

POINT_COLOR=BLACK;//设置字体黑色

PWM_X=PWM_X_init;//赋值PWM输出

PWM_Y=PWM_Y_init;

DJ1_PWM_INIT(499,719,PWM_X,PWM_Y);//舵机频率200HZ50-25060-240中值160160TIM2P2->A1TIM2P3->A2

LCD_ShowString(50,150,150,24,24,(unsignedchar*)"Waiting...");

while(OV7670_Init());//初始化¯OV7670

TIM6_Int_Init(5000,7199);//10Khz计数频率,1秒中断

EXTI8_Init();//使能定时器捕获

OV7670_Window_Set(10,170,240,320);//设置窗口

OV7670_CS=0;

LCD_Clear(BLACK);

Test();//校准测试

test=2;//测试关闭,关闭摄像头显示更新

while

(1)

{

KEY_RUN();//按键扫描

Fand_Goal();//寻小球坐标函数

Task();//任务函数(选定目标,PID调节)

location();//更新位置判断

Done_Task();//更新任务进度

LCD_Control();//更新LCD显示

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 工学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1