STM32
直播中

吴湛

9年用户 910经验值
擅长:电源/新能源
私信 关注
[问答]

如何去实现一种基于STM32F103RC的滚球控制系统设计

滚球控制系统是由哪些部分组成的?
滚球控制系统是如何工作的?
如何去实现一种基于STM32F103RC的滚球控制系统设计?



回帖(1)

黄飞高

2021-11-9 10:22:59
  1 方案设计与论证
  1.1 总体方案描述
  图1.1
  是滚球系统的构成框图,主要由控制器、执行器、板和球、摄像机、图像处理模块构成。
  
  图1-1 滚球系统构成框图
  具体的工作过程为:通过摄像机采集小球的运动图像,在图像处理单元,利用Nanopi 2
  Fire对图片进行处理,获取球相对于板的位置,将位置信息传送到控制器,在控制器内计算控制量,通过控制执行机构来控制平板运动,进而控制小球的运动。
  1.2主控制器的选择方案
  方案1:采用可编程逻辑器件CPLD,具有并行输入输出方式。它在系统处理的速度上较快,但是规模大、结构复杂,而系统不需要复杂的逻辑功能,对数据处理速度的要求也不是非常高。
  方案2:采用FPGA作为系统的控制器。FPGA可以实现各种复杂的逻辑功能,规模大,密度高。但是因其价格较高使系统成本增加,高速处理优势得不到体现。
  方案3:采用STM32F103RC单片机。STM32F103RC单片机,具有功能强大、效率高的指令系统,以及高性能模拟技术及丰富的外围模块。方便高效的开发环境使操作更加简便,低功耗是其它类单片机难以比拟的,集成度较高,编程相对简单。STM32
  定时功能强大,主要应用的是定时器的 PWM 模式,PWM 模式只能在定时器的 4
  个通道产生频率相同但是占空比不同的输出信号,由于要控制 4
  个电机的运行(在板球控制系统中只使用其中的两个电机),因此要用到定时器的PWM模式。
  在滚球系统中,还要对采集到的位置信息需要进行两个方向的PID运算,为满足高速的运算要求,系统选择了性能更好的STM32F103RC单片机。
  1.3 摄像头选择方案
  方案1:采用陕西维视 MV-VD 系列工业摄像机。此摄像头最高采集频率为60
  帧/s。陕西维视数字图像技术有限公司提供了摄像机在 VC6.0 下的底层驱动代码,因此在
  VS2008
  上,可以比较容易的编写摄相机驱动程序,控制相机的采集频率和其他一系列的相机参数。对相机采集回来的图片应用数字图像处理技术,对每一帧图片进行处理,获取球的位置信息。
  方案2:采用iMac
  拆机摄像头,该摄像头体积小、易于安装,支持各种分辨率,最大硬件分辨率
  1280*1024,720P高清,可改USB摄像头,且价格便宜。
  考虑到系统对图像的分辨率没有太大的要求,但在价格方面iMac拆机摄像头又远远低于MV-VD
  系列工业摄像机,因此采用iMac拆机摄像头。
  1.4 图像处理器选择方案
  方案1:采用Nanopi 2
  Fire处理器。该处理器为四核A9处理器,运行主频1.4GHz,具有1GB内存,依托Debian/Android的强大生态系统,以及各种各样的扩展配件,Nanopi
  2
  Fire兼容树莓派的IO口,可支持并行CMOS摄像头接口,和1路专用调试串口,对图像处理具有强大的优势。
  方案2:它采用高性能的ARM/Cortex-M32/32 位 RISC 内核,工作频率为
  72MHZ,内置高速存储器,以及丰富的 IO 设备和外部接口。
  由于图像处理需要高速的处理速度,STM32对图像处理略显卡顿。图像处理器选择Nanopi 2
  Fire 处理器。
  1.5 电机选择方案
  方案1:采用带有丝杆的直流减速电机。直流减速电机经过减速后对外输出力矩增加,板在倾斜过程中,丝杆连接处的水平距离变短,对丝杆有较大的截向的力,对平板的进一步运动有所阻碍。
  方案2:采用舵机。舵机是靠脉冲的宽度来控制其转动的角度,使用舵机带动连接轴即可控制平台的倾斜。舵机使用方便,响应速度快。
  方案3:采用直线电机。直线电机可自由控制杆的伸长和缩短,其速度为8cm每秒,最大伸缩长度为15cm,行程大。
  舵机和直线电机响应速度相当,但是直线电机笨重不及舵机小巧,且舵机价格实惠,所以系统采用舵机。
  2 理论分析与计算
  2.1 小球识别原理
  小球位置和圆形的检测是控制滚球系统的基础。在图像处理以及模式识别中,经常需要获取图片中圆和矩形的信息,将采集到的图片首先进行灰度化处理,再进行边缘检测、转化为二值图像等操作,具体流程如图2-1所示。
  
  图2-1 小球识别流程图
  其中,边缘检测需要进行如下步骤。
  1)将彩色图像转换为灰度图像,用高斯平滑滤波对图像进行去噪处理。
  2)用高斯的一阶微分对图像进行滤波,获得较好的梯度边缘。
  3)对梯度进行非极大值抑制和滞后阀值处理得到图像的边缘。
  4)采用双阀值算法检测和连接边缘。设置检测强边缘和弱边缘的2
  个阀值。当检测到的边缘点的阀值,高于强边缘的阀值,则为强边缘,输出边缘点。当检测到边缘点的阀值介于强边缘的阀值和弱边缘的阀值之间时,认为是弱边缘点,当且仅当弱边缘与强边缘相连时,弱边缘才被输出。
  经过以上几个步骤处理,检测到图像的边缘并输出。
  2.2 小球运动控制原理
  系统采用在工业控制中得到广泛运用的PID控制器,因为采用的是离散计算,所以PID算法又称为数字PID。数字PID控制算法可以分为位置式PID和增量式PID,在滚球系统中采用的是位置式PID。
  常规模拟PID控制的控制规律描述如式2.1:
  (2.1)
  
  其中:为期望值与实际值之差、Kp为控制器的比例参数、为积分时间、为微分时间。
  现在PID控制的实现大都不采用模拟电路的模式,而是采用数字形式,所以它只能根据采样时刻的偏差来计算控制量,而不能像模拟控制那样连续输出控制量,进而连续控制。因而2.1式中的积分项和微分项不能直接使用,必须要经过离散化处理。离散化处理的方法为:以T为采样周期,K为采样序号,则离散采样时间KT对应连续时间t,用一阶后向差分式近似代替积分,可作如下近似变换:
  (2.2)
  
  令=,式2.2代入式2.1得离散式PID表达式:
  (2.3)
  或
  (2.4)
  滚球系统将采集到的小球的位置信息在两个相互正交方向分别进行PID运算,将运算结果作用到PWM的脉宽上,以达到控制舵机转速。
  3 系统软硬件设计
  3.1 硬件结构设计
  设计的平台机械结构如图 3-1 所示。
  
  图 3-1 平台机械结构示意图
  小球的运动控制是通过处理器的计算将结果反馈给舵机来X方向和Y方向的舵机转动,以实现载球平台不同方向的倾斜,从而使小球按照预期的轨迹和规定运动参数在平台上完成相应的动作。
  3.2 稳压电路部分
  电子产品中,常见的三端稳压集成电路有正电压输出的78 ××
  系列和负电压输出的79××系列。顾名思义,三端IC是指这种稳压用的集成电路,只有三条引脚输出,分别是输入端、接地端和输出端。7805三端稳压IC内部电路具有过压保护、过流保护、过热保护功能,这使它的性能很稳定。能够实现1A以上的输出电流。所以,7805稳压芯片十分适合系统的稳压电路设计。原理图如图3-2所示。
  
  图 3-2 稳压电路
  3.3 显示部分
  带中文字库的128X64-0402B每屏可显示4行8列共32个16×16点阵的汉字,每个显示RAM可显示1个中文字符或2个16×8点阵全高ASCII码字符,即每屏最多可实现32个中文字符或64个ASCII码字符的显示。带中文字库的128X64-0402B内部提供128×2字节的字符显示RAM缓冲区(DDRAM)。其硬件连接如图3-3所示。
  
  图 3-3 液晶引脚连接图
  3.4总体程序框架
  根据任务要求设计如图3-4所示的程序框架。
  
  图3-4 总体程序框架图
  当系统上电后,12864液晶显示器显示开机界面,与此同时STM32F103RC对按键检测,选择工作状态,设定静止状态、运动位置、圆周运动。通过PID调节实现相应的功能。
  (2)摄像头捕捉图像,Nanopi处理返回坐标值,调用PID子程序进行计算。
  (3)键盘初始化,判断是否有按键按下,无键按下,重新进行键盘扫描;有键按下,判断是哪个键按下,并进行相应的操作。
  4 系统测试
  4.1测试仪器
  4.2 指标测试结果
  (1)小球在指定区域停留时间。
  要求:将小球放置在区域2,控制使小球在区域内停留不少于5秒,经过5次测试,测试结果如表4-2所示。
  (2)小球从一个区域进入另一个区域所用时间及停留时间。
  要求:控制小球从区域1进入区域4,在区域4停留不少于2秒;然后再进入区域5,小球在区域5停留不少于2秒。完成以上两个动作总时间不超过20秒。
  经分析,系统的主要误差来自于摄像头图像的采集,一方面,采集图像时受环境的影响较大,使得识别小球时有错误识别的情况。另一方面,由于摄像头是固定的,不能始终与正对着平台,在平台倾斜时,采集到平台的图像为梯形,使得小球的位置获取有一定误差。
  5 总结
  滚球控制系统以STM32F103RC为主控制器,以NanoPi为图像处理器,STM32根据NanoPi反馈的小球位置信息进行PID运算,作用于舵机改变平台的倾斜角度以达到控制小球运动的目的。因为滚球系统是通过摄像头采集图像,所以对硬件的搭建的要求很严格,为达到降低误差的目的,要求各机械结构的尺寸设计精确,且装配准确。在设计滚球控制系统过程中,不仅仅提高了动手能力,更是提高了发现问题和解决问题的能力。滚球控制系统在硬件上还存在着误差,可进一步的通过设计的合理性及精确程度来降低误差,在软件上,单纯的使用PID控制器,今后可通过建立数学模型来提高控制的高效性。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分