APP下载

球 杆 控 制 实 验 系 统 的 设 计 与 实 现

2018-12-10余善恩倪红霞

实验室研究与探索 2018年11期
关键词:球杆导轨小球

李 真, 余善恩, 倪红霞

(杭州电子科技大学 自动化学院, 杭州 310018)

0 引 言

当前,国内有很多高校都在研究球杆控制系统,该系统运用了模糊控制、自适应遗传PID控制、鲁棒控制等控制方法,且收获了良好的控制效果,但是在小球位置检测方面却存在不足之处。目前球杆控制系统中小球的检测方法主要分为以下几类:① 采用红外光电传感器来检测小球在导轨上的位置,即在导轨的一端安装一个光电传感器。但由于小球的反射面是弧状的,发射过来的光线在球面会产生散射,使系统对小球的位置产生误判,而且实验环境中不同的光强也可能使小球的位置检测产生误差,因此此种方法的应用场合有限。② 采用超声波测距:这也是一种比较普遍的选择,但是由于超声波测距本身并不敏感,而且超声波测距受反射声波的反射面形状影响较大,准确度和灵敏度较低[1]。③ 采取电阻尺(直线位移传感器),即在导轨的一侧放置一根绷直的电阻丝,而导轨的另一侧放置一根绷直的细铜丝。当小球(实心的金属球)在导轨上滚动时,就会与电阻丝和细铜丝接触,导轨和小球自然就形成了一个简易的滑动变阻器,当给电阻丝一个电压值时,可以对细铜丝的一端采集A/D值,小球在导轨上的位置就可以通过该A/D值计算得到[2]。此方法虽然做起来很简单,对于单片机来说也方便处理。但是由于小球和金属丝时常接触不好,从而导致实时检测出来的小球位置存在很大的误差。④ 采用激光传感器对小球的位置进行检测,该传感器能检测到很微弱的激光信号,这是对小球位置最为精确的检测。但是,由于市场上的激光传感器价格都过于昂贵,这样会使该实验平台的市场竞争力下降[3]。

综上所述,球杆控制实验系统的控制方法虽然发展的较为完善,但小球位置的检测装置有待优化。在本设计中,将一种新的方法应用于对小球的位置检测,即采用数字摄像头。这样既可以解决红外光电传感器和超声波传感器等方法在小球位置检测中存在的缺陷,也可以避免直线电位器接触不好以及激光传感器设备费用投入过高等问题,有利于该实验平台的推广和发展。

1 系统结构设计

球杆控制实验系统的结构如图1所示,本结构主要由碳纤导轨、直流减速电动机、带坐轴承、支架等组成。导轨是由两根长65 cm, 宽0.8 cm的碳纤管组成,可以绕其一侧的带坐轴承旋转,导轨另一侧通过细线悬挂在减速电动机的转轴上,通过电动机正反转控制导轨上下运动,实现导轨角度的变化。其中小球采用的是实心钢球[4]。

图1 球杆实验系统简易结构示意图

2 系统硬件设计方案

球杆控制实验系统的硬件结构如图2所示,本系统的硬件部分主要包括BTN7970电动机驱动、减速电动机、位置检测摄像头、OLED显示、STM32微处理器、矩阵键盘和电源等。本设计最为重要的是对小球位置的实时检测,其中电动机驱动器由两片BTN7970构成,数字摄像头OV7725用来采集图像信息,处理器根据小球在导轨中的位置计算出控制量,控制减速电动机转过一定的角度,从而实时调整导轨的倾角,使小球在导轨上运动,改变小球在导轨上的位置,并且依据设定的小球位置值让小球运动并稳定在某个范围之内。同时,能够将实时检测到的小球位置通过微处理器在OLED上显示出来[5]。

图2 球杆控制系统硬件结构图

STM32系列单片机是一种高性能的ARM单片机。其本身具有AD转换功能,且具有多个计时器(定时器),具有PWM输出功能,同时运算数据的速率很高。编程也较为方便,能满足本系统要运行的一些控制算法,支持处理图像数据。因此,本设计采用STM32系列单片机中的STM32F103VET6芯片作为球杆控制实验系统的控制中心[6]。

直流电动机的机械特性好,且控制起来较为方便,能在很短时间内实现电动机运动方向的转变。同时相对于步进电动机,直流电动机的驱动设计较为简单。因此,在本系统设计中采用直流减速电动机作为运动执行部件。

位置显示模块选用ILI9235触摸屏和有机发光二极管(OLED)。ILI9235触摸屏显示面积8.13 cm(3.2 in),能够动态显示彩色图片、汉字等,而且具有触摸屏功能,易于程序调试。但是彩屏要占用较多的IO接口,这是与其他显示屏相比的劣势。OLED显示屏和单片机之间数据传输采用的是四线SPI接口,其传输原理非常简单。由于调试时需要先精确获得小球的像素点值,因此需要使用触屏显示便于调试,但是如果显示整帧图片,又会降低处理速度。因此,本系统选择触摸屏作为调试工具,在调试完成后,选择OLED作为显示。

OV7725数字摄像头其本身带有许多寄存器,通过读写这些寄存器能根据设计者的需要调节摄像头输出的数据格式,而且能够通过调节焦距控制拍摄图片的清晰度。图像数据输出采用SCCB协议,且受环境变化的干扰较小。在引言部分提到的当前球杆控制实验系统大多采用测距传感器,原理是反射式的,但是由于小球的反射面是弧状的,会对被反射物质形成散射,这样会干扰传感器对于障碍物位置判断,不宜采用。因此,本系统设计采用OV7725摄像头作为小球位置检测模块。

BTN7970是一款电动机驱动芯片,且芯片允许流过的最大电流达到43 A。一块BTN7970芯片只能控制一路PWM,如果要控制一个电动机正反转,那么就需要两块BTN7970芯片。使用时,只需要设计一些简单的电路将两块芯片和控制芯片连接起来。因此,本系统设计采用两片BTN7970作为电动机驱动模块。

本系统需要控制小球在一条直线上运动,所以采用矩阵按键作为系统的输入设备,矩阵按键一共具有16个按键,却仅仅占用单片机8个I/O接口,且编程简单,占用CPU资源少[7]。

3 系统软件设计

3.1 总体软件流程

软件系统设计包括STM32单片机内部自带功能的软件设计、数字摄像头OV7725驱动程序、OLED相应的程序设计、数字图像处理程序设计、减速电动机PID控制算法程序。系统软件流程如图3所示。

图3 系统程序流程图

3.2 数字摄像头OV7725程序设计

OV7725摄像头存储图像的流程如下:当时钟信号到达上升沿,OV7725摄像头开始采集图像, OV7725首先输出一个场中断信号(VSYNC),缓存芯片(FIFO)得到中断信号后,缓存芯片开始复位、使能,缓存芯片开始缓存摄像头采集到的图像数据,当1帧图像数据缓存结束之后,摄像头就会输出第2个场中断信号,这时就可以禁止缓存芯片使能,关闭VSYNC,开始读取缓存的摄像头图像数据。这样周而复始就可以完成摄像头图像数据的采集。

接下来介绍如何从存储器中读取摄像头存储的图像数据:当得到第2个场中断信号时,先把缓存芯片复位,然后将I/O口模拟时钟脉冲输出给缓存芯片,就可以读取数据,由于每1个像素点的值是16位,所以在读取数据时先获得高8位,再获得低8位。这样一直读取320×240次就能够把1帧图像数据全部读取出来。

此外,本设计在每次读取缓存芯片中数据时,读取一个数据就判断这个数据是否是程序所需要的,在读取到需要的数据之后,就把缓存芯片中剩下的数据全部清空,同时开始下1帧数据的缓存,这样就可以节省大量的时间。

3.3 OLED模块程序设计

采用OLED显示屏和单片机传送数据是4线SPI接口,主要通过以下4个引脚在主从设备之间进行通信,即CS、SCLK、MOSI、MISO 4个引脚。在图4引脚图中的CS为OLED的片选引脚,DC是OLED命令/数据标志,即写入命令和数据的引脚;RST是硬件复位引脚;OLED显示屏在每次程序运行之前(初始化)都要进行一次复位,即给RST引脚一个低电平。D0 信号线作为串行时钟线 SCLK。D1 信号线作为串行数据线 SDIN。

图4 OLED模块接口图

OLED驱动芯片采用的是SSD1306控制器。SSD1306的显示内存要比5110等液晶屏大很多,其显示内存容量一共是128×64个Byte。由于OLED液晶屏的显示容量高达128×64个Byte,而OLED的地址线数量较少,无法直接寻址这么多的内存空间,所以需要用较少的地址线寻址到液晶屏所有的存储空间,因此需要将SSD1306液晶屏的显示内存分成8块,其对应关系如表1 所示。

SSD1306初始化步骤:复位SSD1306;驱动SPI初始化代码;开启显示;清零显示;开始显示。

OLED显示函数:由于本系统设计只用到OLED去显示简单的位置信息,因此只需要简单的显示函数void OLED_ShowNum(u8 x,u8 y,u32 num,u8 len,u8 size)即可完成,不再赘述[8]。

3.4 数字图像处理程序设计

若要在摄像头所采集的图片中给小球定位,那么首先要知道白色小球的像素值是多少。所以在调试过程中,先采用ILI9235触摸屏作为显示模块,将摄像头采集到的图像动态的显示出来。然后通过触摸屏,点击图像中的小球,点击的点在液晶屏中会有一个坐标,因此可以通过这个坐标寻找到小球的像素值。

找到小球在图像中的像素值后,接下来就是去处理数字摄像头所采集的图像数据。因为OV7725采集数据的速度太快且1帧图像数据太多,所以单片机的I/O口无法跟上摄像头采集数据的速度,因此本系统采用先缓存后处理的办法处理图像数据。当1帧图像数据采集完后,会完整地存储在摄像头的缓存芯片中,接着开始读取缓存芯片中的数据,读取1个像素值就马上该此像素值做相应的处理,如果找到了需要的像素点,则立刻把这个像素点的相应坐标记录下来。当找到需要的像素点坐标之后,就不再读取缓存中剩余的图片数据,并立即将缓存中的数据清空,进行下1帧数据的采集。这样既节约了图像处理的时间,提高了速度,也不会丢失需要的数据。

表1 SSD1306 显存与屏幕对应关系表

由于ILI9235触摸屏显示图像需花费大量时间,因此在得到小球的像素值之后,为了提高图像处理的速度,后续过程中将不再采用ILI9235触摸屏显示图像,只需采用OLED显示图像处理后的结果。

最后是如何通过采集的像素点坐标得到小球在导轨上的位置,计算的思路是实物中小球在导轨上的相对位置与摄像头图片中小球在导轨中的相对位置成比例。因此,只需要计算出摄像头图片中小球的距离占图片中导轨长度的比例,再以该比例乘以导轨的实际长度就得到了小球的实际距离[9-10]。

判断小球位置占导轨长度的比例,前提需要知道小球实时的位置坐标、导轨首尾的位置坐标,但是由于导轨是运动的,所以本系统采取了下面的方法去检测导轨首尾的坐标:在系统开始运行之前,首先将导轨放置到水平位置,然后把白色小球分别放置到导轨的首端和尾端,通过程序检测摄像头采集的图片中小球的坐标,然后通过OLED把这两个坐标显示出来,通过这种方法获得导轨首尾的坐标之后,就可以把这两个坐标固定的写入程序中。由于导轨在系统运行中倾斜角度不是很大,所以这种方法不会造成很大的误差。因为此种方法在系统运行过程中,只需找到摄像头每1帧图像中小球的位置即可,找到小球的坐标后,该帧图像的其他数据均可舍弃,这样可以提高单片机处理摄像头数据的速度[11]。

3.5 PID控制算法设计

在本系统中采用的是凑试法对PID控制器的3个参数进行给定。首先只整定比例部分,赋予比例参数P一个较小的值,然后逐步加大P的值,并观察响应曲线,直到得到反应快、超调小的响应曲线。如果在比例调节的基础上,系统的静差不能满足设计要求,则需要加入积分环节。在给积分参数赋值之前应该把事先调好的比例参数P的值修改成原来的80%,积分参数也是从较小的值开始逐步增加,直到被控系统的响应曲线能够达到稳态。最后,如果对系统的抗干扰性能不是很满意的话,可以给系统增加一个适当的微分参数[12-13]。图5所示为PID控制算法的程序设计流程图[14]。

图5 PID控制算法流程图

在球杆控制实验系统设计中,将小球的实时位置作为实际输出值,把矩阵键盘输入的位置作为设定值。两者做差求出的误差值作为PID控制器的输入,经过PID控制器的比较运算得到输出值,然后将输出值赋值给电动机驱动器,以此达到对电动机的实时控制[15]。

4 结 语

本设计完成了一个球杆控制实验系统。在本系统中,小球位置的检测方式并没有采用之前普遍采用的检测方式,例如红外传感器、直线电位器、超声波等,因为这些检测方式或多或少存在一些缺陷。在本设计中采用一种新的检测方式,即通过数字摄像头检测小球在导轨上的位置,这种新型检测方式的使用克服了之前一些检测方法的缺点,也提高了检测精度。通过PID控制算法能使小球运动到指定位置的误差范围之内,且在OLED上准确显示小球的实时位置。经使用,取得了良好的教学效果,平台所使用的技术方案也可以为后续实验系统的开发提供参考[16]。

猜你喜欢

球杆导轨小球
棒与导轨问题分类例析
联想等效,拓展建模——以“带电小球在等效场中做圆周运动”为例
小球进洞了
小球别跑
小球别跑
电梯导轨支架检验探讨
基于改进T-S模型的球杆系统控制方法研究
一种电动车传动机构
选购台球杆应避免的误区和需注意的问题
多轴数控机床转台几何误差辨识新方法