练锦清 李威龙 李明枫 黄京荣 吴俊东
(桂林电子科技大学机电工程学院,广西 桂林 541004)
随着中国制造2025 的提出,智能制造在中国得到了大力的发展[1][2],机器视觉检测是智能制造系统中的重要一个环节,具有检测快、检测精度高、重复性好的优点,逐渐取代了相当一部分的人工检测工序,得到了广泛的应用[3][4]。在智能制造领域中,机器视觉经常作为缺陷检测的一个环节,可以提高检测的准确性,实现长时间的工作,是智能制造检测中不可或缺的重要环节。步进电机主要是利用脉冲进行控制,脉冲的频率大小和步进电机的旋转速度成正比,脉冲的个数也和步进电机的旋转角度成正比,控制简单,运动精度高、成本低廉是步进电机的主要优点,因此步进电机在制造业也中得到了十分广泛使用。本文根据机器视觉检测设备的实际需求,针对机器视觉质量检测的设备,如缺陷检测、外观检测、尺寸测量方面的设备,文中主要利用单片机,对步进电机控制系统进行了控制,可以调节步进电机的旋转速度,连续运动、增量式运动,以及回到原点的功能,同时具备按键和OLED 屏幕人机交互以及和电脑端的上位机串口通信的功能。在本实验装置基础上,可以扩展实现工业相机的图像采集、图像处理以及控制一体化的软件编程,扩展性高。
Stm32F407 具备多个定时器,比如高级定时器1 和高级定时器8、内部具有I2C,SPI、具备多个串口等功能,性能稳定,内部有浮点运算功能,运算速度快[5],所以文中的控制系统的主要芯片是stm32F407 芯片,实现了三个轴的控制的功能,控制系统组成部分,包括降压稳压的模块、主控模块、独立式的按键模块和0.96''的OLED 显示屏的人机交互模块。同时,还包括了串口通信模块,电机驱动模块、电机限位开关,如图1 所示是本系统的控制框图。
图1 控制系统原理框图
主控STM32F4 核心板模块,由复位电路、晶振电路、电容滤波电路构成,电路板上包括了一个测试用的贴片的LED 灯、一个测试用的按键等。晶振采用的是8M 外部晶振,采用多个电容对输入的电源进行滤波稳定,让控制系统更加稳定工作。
独立按键电路主要包括5 个按键,为了节约成本,没使用硬件去抖动功能,而在软件中利用延时实现去按键的抖动,提高按键的操作稳定性,如图2 所示;蜂鸣器电路,主要是利用NPN 型的三极管实现蜂鸣器开关功能,图3 利用NPN 型的S9013 三极管实现电路的电流放大和开关作用;OLED 电路,主要是实现参数显示功能,和stm32F407 芯片通过软件SPI 通信,如图4 所示。OLED采用的是7 个引脚的SPI 接口的OLED,传输刷新数据更快,更加稳定。
图2 独立按键电路
图3 有源蜂鸣器电路
图4 OLED 接口电路
步进电机驱动接口,主要是分配stm32F407 芯片的IO 口,将其和步进电机驱动器连接,实现步进电机的控制功能,本控制系统主要是利用定时器产生脉冲,控制步进电机,因此对IO 口分配没有特殊的要求,x 轴接口如图5 所示。限位开关模块,主要是利用光电传感器的通断功能,当工作平台运动到限位开关上方,和工作平台连接的遮挡块准确的进入到红外光电传感器模块的凹槽中,就会遮挡光线,从而电平从高电平变为低电平,stm32 芯片接收到跳变信号,进入到中断服务函数中,执行相关的程序,限位开关模块共有5 个,X 轴2 个,Y 轴2 个,旋转平台1 个,X 轴靠近电机侧限位开关接口如图6 所示。
图5 步进电机接口
图6 限位开关接口
控制系统的软件部分,主要实现驱动了三个轴的步进电机、串口通信、OLED 屏幕显示、按键输入控制功能。
步进电机的驱动,主要是利用stm32F407 的普通定时器产生脉冲,实现控制。定时器2、定时器3、定时器6 分别负责X、Y、Z 轴脉冲产生,以X 轴的控制为例,进行说明,Y 和Z 轴编程原理相同。首先利用库函数,初始化stm32F4 的定时器2,设定定时时间是10us,触一次中断,然后在定时器6 中断服务函数中,设定一个静态变量timer6cnt,每进入一次中断,timer6cnt 加一,当timer6cnt小于设定的速度数据脉冲Ns 的一半时,让stm32 的脉冲产生IO 口输出高电平,当timer6cnt 大于设定的速度数据脉冲Ns 一半并且小于速度数据脉冲Ns 时,timer6cnt归0 并且IO 口输出低电平。当改变Ns 大小,就可以实现调节步进电机的速度的目的。
串口通信功能,主要是将stm32F407 和电脑通过串口进行通信,stm32F407 的串口1(PA9 和PA10)负责该功能,当stm32F407 接收到电脑上位机软件的串口发过来的信息,就会进入串口1 中断函数,在串口中断函数中,对信息进行判断,检查是否和约定的串口命令帧头相等,如果相等,运行后续数据传入数组中,如果不相等,丢弃。再检查是否和约定的帧尾相等,如果相等,结束数据接收,如果不相等或超过约定的接收时间,也结束数据接收。当接收到完整一帧命令,检查命令,实现对应的功能。比如电脑端发送字符串“SM0#”,单片机端接收到之后,判断有没有#字符,如果存在#字符,那么认为一帧数据完整结束,再判断SM0 和约定的指令是否存在,如果存在相等,那么执行对应的动作,如果不存在,那么继续等待新的串口数据。
OLED 屏幕显示,主要是将stm32F407 的对应控制IO 口编程实现软件SPI 功能,屏幕显示主要是显示方向信息、轴的信息、速度信息等。需要规划好页面显示的位置,在对应的位置显示对应的信息,当控制电机或者调解控制轴等,在对应的位置进行信息刷新。为了刷新稳定,在定时器15ms 时间,进行一次刷新,而避免了频繁刷新的情况,让参数更加显示稳定,提高人机操作的舒适程度。
按键输入功能,主要包括了按键的短按长按和短按连续按两种模式。如果想实现短按和长按的功能,设定一个计数次数变量timx5mscnt,当按下按键,单片机检测到下降沿,进入对应程序,在里面设置一个循环,每5ms,timx5mscnt 加1,并且检测一次是否松开,当松开按键之后,判断timx5mscnt 是否大于约定的长按次数,当timx5mscnt 大于超时次数,认为是长按,返回长按键码,当timx5mscnt 小于超时次数,认为是短按,返回短按键码。在主函数中,不断检测扫描按键,当检测到对应键码,执行对应的函数,比如归零、速度调节、运动轴选择、正转、反转等功能。
图7 是设计并完成的控制系统实物图,图8 是操作面板图,以及图9 控制箱体内部实物图,包括了上述的核心板模块、接口模块、按键和OLED 模块等。在完成上述编程之后,接入三轴步进电机工作台,其中X 轴和Y轴构成一个二维机构,Z 轴是旋转平台。步进电机驱动器采取共阳接法,并通过拨码开关选择为4 细分模式。实验过程中,可以选择短按按键1,选择需要控制的轴,长按按键1,实现当前选择轴位置信息清零,短按或者连续按按键2,实现电机正转,按键3 实现反转,按键4 实现回零,短按按键5,电机停止,长按按键5,选择电机的运动速度。在电机运行过程中,当电机触发限位开关的时候,电机会停止,并且蜂鸣器报警。当利用USB 转TTL 模块将电脑和控制系统连接的时候,电脑端利用串口助手,发送对应字符串,可以实现电机的类似按键的控制功能,后续方便可以利用QT 软件或者其他软件,结合相机的SDK 库,以及OPENCV 等图像处理软件,编写一体化的上位机软件,实现相机的拍摄图像的检测,如尺寸检测、图像缺陷检测,实现更加智能的控制。
图7 实验平台实物
图8 操作面板
图9 控制箱体内部实物
实验证明,设计的控制系统,能满足机器视觉检测平台的控制要求,能通过下位机硬件系统的独立按键,实现控制,也能通过电脑的串口,发送串口命令,控制三轴步进电机,性能稳定,对于后续机器视觉的软件开发提供基础,具备一定的市场发展前景。