杨森杰,卢玄兴,杨朝火,刘月红

(桂林理工大学 信息科学与工程学院,广西桂林,541004)

0 引言

如今视力防护越来越受到社会的关注,这不仅是关系到青少年的未来,也关系到国家的发展。眼球的模拟移动在视力养护及眼球知识演示等方面的设备中至关重要。本文中基于STM32 的模拟眼球移动装置,用简单的二自由度旋转式云台系统,简单模拟了眼球的移动,具有一定的现实意义和应用价值。

1 系统总体设计

本文中基于STM32 的模拟眼球移动装置系统由单片机、矩阵键盘模块、电机驱动模块、OLED 屏幕块以及红外激光灯组成,总体结构如图1 所示。设计以STM32F103C8T6 为主控板,TB6600 为步进电机驱动模块。

图1 系统总体结构图

系统可通过上位机平台进行控制,并实时采集数据由42 步进电机上的红外线模块发出红外线照射到坐标纸上的坐标,从而实现对眼球移动做出简单模拟。其中的电机驱动模块主要接收用户发出的指令发送脉冲控制电机转动;OLED 屏幕模块用于显示单片机发送的光点坐标数据;红外激光让使用者通过光点移动来感受眼球视线的移动。

具体设计内容包括硬件和软件两个部分,现分别介绍如下。

2 硬件设计

系统硬件设计包括电源模块、主控模块、步进电机模块和显示模块四个部分。系统硬件设计主要电路如图2 所示。

图2 系统主要电路

■2.1 电源模块

电源模块提供整个系统的动力,为单片机和步进电机供电,具体电路如图3 所示。

图3 电源电路图

因整个系统的控制需要单片机一直待机工作,且电机驱动器驱动需要至少12V 的电压,为了避免一直连接电源导致使用不便,外接了一个直流可调压电源KJS-1509。电源模块输出12V 给电机驱动器TB6600 稳定供电,再通过DC-DC 降压模块转为3.3V 给单片机和OLED 模块供电。

■2.2 主控模块

单片机是系统的主控部分,我们的模拟眼球系统使用STM32F103C8T6 作为系统的主控芯片。该芯片是一款以ARM 公司旗下研发的CortexM3 为内核的处理器。如图3所示,处理器支持的外设丰富。且在内部设计上,数据和指令各自走不同的线路,可确保CPU 的运行速度,达到最大化。此特性能让本设计的二自由度旋转式云台系统的实时性需求得到保证。STM32F103C8T6 有37 个I/O 引脚,提供电机驱动器控制信号所需要的接口;其内置I²C 总线接口能够工作于多主模式或从模式,满足OLED 屏幕坐标的需求。

主控单片机接线如图4 所示,串口PA9 和PA10 分别接到OLED 显示屏的SDA 和SCL 控制显示部分的工作;PA1 口和PA2 口分别接电机驱动器的串口DIR 和PUL,用来控制电机的正反转。

图4 主控芯片和显示电路

■2.3 电机模块

电机模块是系统的执行部件,本设计中具体包括步进电机及其驱动器。

2.3.1 电机的选择

装置中的执行部件选择了步进电机,它是一种将数字脉冲量转换为相应的角位移或线位移的特殊电机,具有反应灵敏、精确步进、无累计误差等优点[1],是很多控制系统的核心组成部件,可以通过外部控制电路实现需求功能的驱动与控制,在许多领域得到了广泛应用[2]。故采用步进电机能很好地满足本设计对电机的转动高精度要求。

2.3.2 电机驱动器的选择

整个平台的控制实际上就是对步进电机的驱动。控制系统的精度和速度都取决于对步进电机的控制。因此要选择合适的步进电机以及合理的控制方式。

在本设计中,选取能适合42 型两相步进电机的TB6600步进电机驱动器。该驱动器采用H 桥双极恒相流驱动,9~42VDC 供电,并有7 档细分控制(1、2/A、2/B、4、8、16、32)和8档电流控制(0.5A、1A、1.5A、2A、2.5A、2.8A、3.0A、3.5A)。最高可有4A 电流输出。其信号端配有高速光电隔离,防止信号干扰,并支持共阴、共阳两种信号输入方式。此外,驱动器支持脱机保持功能,用户可在通电状态下调试;内置温度保护和过流保护,适应各种复杂的工作环境,能较为精准地控制本装置中的步进电机。TB6600 采用共阴极接法,ENA-、DIR-、PUL-都接地,ENA+接单片机高电平,DIR+接单片机PA1 口控制电机正反转,PUL+接单片机PA2 口控制脉冲。B-、B+、A-、A+分别接电机对应的相位。具体电路如图5 所示。

图5 电机驱动模块电路图

■2.4 显示模块

显示部分是系统人机交换的重要部分,本设计的显示部件为OLED 液晶显示屏。它是LCD 技术和LED 技术的升级,沿用LED 自发光技术,并改变了LCD 的背光发光技术。OLED 显示不仅具有高清晰度分辨率,而且有柔软的拼接特征。不但能显示数字,而且还能显示字符、汉字等[3]。在本装置中,能清楚地显示当前视线(光点坐标)所在位置,更好地实现人机交互。

3 软件设计

■3.1 程序设计

文中模拟眼球移动装置使用的编程软件是KeilμVision5,设计的主程序中包含了硬件设计中各个模块初始化以及各功能借助算法函数的调用实现功能。软件设计流程图如图6 所示。

图6 软件设计流程图

图7 逐点比较示意图

图8 坐标角度示意图

程序设计了两种模式,分别是画线模式和画圆模式。用户通过上位机串口发送指令从而选择模式:发送坐标,程序执行画线模式实现相应画线运动;发送圆心和半径,程序执行画圆模式实现相应圆周运动。此外程序还设计了复位功能,其功能是将系统复位,具体作用为将云台还原到原点位置。OLED 屏幕显示光点定位坐标。

■3.2 算法设计

本系统软件设计中直线运动插补与圆弧运动插补采用逐点比较法。其过程是在输出直线或圆弧的过程中,每走完一步就与理论的直线或圆弧进行比较,确定当前点是在线或弧上,还是在线或弧的一侧,然后再决定下一步的走向,这样一步一步地逼近所画直线或圆弧。软件设计中的算法实现,就是写好一个定点函数,根据所给坐标更新步进电机的当前对应角度。然后在直线与圆弧插补里面不断调用定点函数来进行插补。

若画直线或弧线OA,起点为O(0,0),终点为A(xa,ya),设绘图笔当前的位置为K(xk,yk)。点K 相对于OA 的位置有三种情况:点K 在OA 上方,点K 在OA 上以及点K 在OA 下方。为了判断点K 与OA 的相对位置,引入偏差函数Fk:

当K 在OA 上时,Fk=0;

K 在OA 上方时,Fk>0;

k 在OA 下方时,Fk<0;

因此,对第一象限内的直线生成规定如下:

即偏上了向右走;偏下了向上走。设Δx=1,则当F ≥O 时,绘图笔从当前位置沿+X 方向走一步,记作+Δx;当F<0 时,绘图笔从当前位置沿+Y 方向走一步,记作+Δy;在绘图笔到达新的位置时,应计算出新位置的偏差,为判断绘图笔下一步走向做准备。

控制x 轴与y 轴的电机转动时,需根据实际定位的坐标换算成当前相对初始状态要转动的角度和脉冲次数,从而电机在脉冲驱动下按要求转动。

步进电机每收到一个脉冲就步进一个角,方案采用32细分,进角为1.8/32,即0.05625°,则x 轴电机与y 轴电机脉冲个数=需要转动的角度/0.05625。

4 系统调试

■4.1 系统调试

本装置的调试主要包括输入输出和控制部分。通过键盘输入不同的坐标,即通过两个按键来控制横纵坐标的加减,通过复位键来切换选择横纵坐标,坐标会同时在串口助手显示出修改后的坐标,让步进电机按照不大于0.3mm 的误差在光点照射的坐标纸上进行移动,当步进电机转动结束后,单片机会在OLED 屏幕上显示坐标。同时,核心板上的key1(加)、key2(减)按键控制坐标加减也能控制步进电机的转动。显示部分的调试结果如图9 所示,调试数据如表1 所示。经过三次相同条件下的测试并记录数据,通过表1 测试得到的数据可见,本装置实际定点到的坐标和指定的目的坐标存在的误差控制在0.3mm 内。测试画圆功能时,只需要在串口助手输入“模式2”,单片机读取到串口识别的指令后会自动切换成识别圆的坐标,圆心和初试半径通过串口助手以输入坐标的形式发送数据,而key1(加)、key2(减)按键能控制目标圆的半径大小,同样经过三次相同条件下的测试并记录数据,整合到如表2的数据所示,通过指定的圆与实际画的圆的相比,圆心和半径分别存在的误差也在0.3mm 以内,满足设计要求。

表1 输入目的坐标得到对应的实际坐标/cm

表2 想要画的圆与相应实际画出的圆/cm

图9 调试图片

■4.2 样机实物

基于STM32 的模拟眼球移动装置系统组装后的样机如图10 所示。亚克力板通过铜固定云台,使二轴步进电机能够稳定运行;OLED 屏幕用热熔胶固定在舵机前方能够实时显示光点坐标,便于观察光点坐标移动的位置。

图10 样机实物图

5 结束语

针对目前视力疾病相关的各种问题,作者将机械结构设计和软硬件设计结合起来,用 STM32 作为主控芯片,设计了一款适用性强且符合模拟实验需求的二自由度旋转式云台系统。本设计的二维移动平台控制器,既包括电机驱动功能,又含有实时显示的功能。同时,OLED 屏幕的坐标显示能准确表示光点模拟眼睛视线的移动。