肖培+薛顶柱+钱鸿志+席嘉俊
摘 要:人参下须的原理是通过比较某一人参须干的直径是否小于设定数值,小于则实行剪切操作的过程。针对这一点,文章设计了一种基于机器视觉的三轴传动切割系统,系统运用图像处理技术,将图像经过二值化处理,然后合并成简单的三维图像,通过判断物体的直径是否小于设定的数值,小于则利用三轴传动切割系统进行切割操作,从而实现对规则物体的定直径切割。文章将从机械结构、硬件系统设计及软件系统设计三个方面对系统进行详细的介绍。
关键词:机器视觉;三轴传动;STM32F407ZGT6;二值化;切割系统
机器视觉是研究用计算机来模拟生物视觉的科学技术[1]。机器视觉自起步到现在,已有几十年历史。在这几十年里,机器视觉蓬勃发展,各种新概念、新理论不断涌现。如今,中国作为世界机器视觉发展最活跃的地区之一,应用范围涵盖了国民经济的各个行业。
人参下须是将人参须与主枝干分离的过程,目前人参下须采用的是人工下须,此种方法耗时耗力,由于这点,本文提出的一种基于机器视觉的三轴传动切割系统,系统运用简单的图像处理,结合三轴传动技术,可以对规则物体进行定直径的切割。以Cortex-M4为内核的STM32F4微处理器具有能产生多路PWM输出的TIM和带有独立采样电路的ADC,其控制系统外围电路简单,实时控制速度快,稳定可靠,性价比高,非常适合用作三轴传动系统的驱动器[2]。
1 系统总体结构设计
如图1所示,系统包括PC端、图像采集端以及控制端。图像采集端共有两套图像采集装置,负责采集对应的图像;PC端则负责将采集到的图像数据转换成对应的控制指令,然后通过串口通信,发送给控制端;控制端的控制器采用高性能的STM32F407ZGT6开发板,负责步进电机及切割头的控制;同时,控制端还有一个5寸的LCD触控显示屏,可以显示切割头的位置以及对应的控制状态,还可以实时控制系统进行切割操作[2]。
2 系统机械设备概述
本系统是以切割对象的三轴坐标为基础,将对应的三轴坐标转换成机架的空间位移,让切割头能够到达指定切割点的切割系统。系统机械部分由机械平台、三轴传动系统和切割头组成[3]。
系统的机械平台由30cm×30cm×50cm的铝型框架搭建而成,三轴传动系统如图2所示,以步进电机为动力源,其中xy平面采用H型结构,能够更好的控制xy平面切割的精准度;切割头由微型高速电机和切割片构成;三部分相互结合,可以实现定点定距切割,同时保证切割的精确性。
3 硬件系统设计
3.1步进电机控制原理
步进电机是一种可以将电脉冲信号转变为角位移的数字控制电动机。未超载时,通过改变脉冲信号的频率和脉冲数就可以改变电机转速和停止的位置。当使用步进电机驱动器时,只需要给其一个脉冲信号和方向信号,就能使步进电机按照指定的速率和方向转到指定的位置。
3.2 DRV8825驱动器和cnc shield v3 扩展板
DRV8825 是德州仪器 (TI) 为打印机、扫描仪和其他自动化设备设计的集成电机驱动芯片。它集成了2 个H 桥电路,以及片上1/32微步进分度器,可以驱动一个双极型电机,或两个直流有刷電机[6]。
cnc shield v3 扩展板可用作雕刻机,3D打印机等的驱动扩展板,扩展板一共有4路步进电机驱动模块的插槽,可驱动4路步进电机,而每一路步进电机都只需要2个IO口,也就是说,6个IO口就可以很好的管理3个步进电机,使用起来非常的方便,告别传统步进电机操作繁琐。此处搭配DRV8825驱动模块用作三轴传动系统的驱动扩展板。
3.3 控制器选型
三轴传动系统的控制器采用STM32系列中的STM32F407ZGT6,该控制器采用Cortex_M4内核,共拥有112个I/O口,这些I/O口可以控制电机的转动速率和旋转方向、LCD触控屏数据的显示与采集以及切割头的运动状态。
4 软件系统设计
4.1PC端图像处理软件
4.1.1 图像二值化
图像二值化的目的是最大限度的将图像中感兴趣的部分保留下来,在很多情况下,也是进行图像分析、特征提取与模式识别之前的必要的图像预处理过程。
本软件使用的二值化算法为基于谷底最小值的阈值算法,此方法实用于具有明显双峰直方图的图像,其寻找双峰的谷底作为阈值。该函数的实现是一个迭代的过程,每次处理前对直方图数据进行判断,看其是否已经是一个双峰的直方图,如果不是,则对直方图数据进行半径为1(窗口大小为3)的平滑,如果迭代了一定的数量比如1000次后仍未获得一个双峰的直方图,则函数执行失败,如成功获得,则最终阈值取两个双峰之间的谷底值作为阈值[7][8]。图3是效果图。
4.1.2 软件流程设计
PC端图像处理软件采用C#语言进行编写,流程图如图4所示,软件首先从两个摄像头各获取一幅图片,然后对图像进行灰度和二值化处理,将处理后的图片合成三维图像,然后再调用对应的扫描函数得出对应的切割指令,最后通过串口发送给控制器。
4.2 控制端软件
4.2.1 UCOS-II操作系统移植
UCOS-II的前身是UCOS,最早出自于1992年美国嵌入式系统专家Jean J- Labrosse 在《嵌入式系统编程》杂志的5月和6月刊上刊登的文章连载,并把UCOS的源码发布在该杂志的BBS 上。本系统移植的是UCOS-II 的2.91版本[9]。
UCOSII的移植,我们只需要修改:os_cpu.h、os_cpu_a.asm 和os_cpu.c 等三个文件即可,其中:os_cpu.h,进行数据类型的定义,以及处理器相关代码和几个函数原型;os_cpu_a.asm,是移植过程中需要汇编完成的一些函数,主要就是任务切换函数;os_cpu.c,定义一些用户HOOK函数。
4.2.2 相关初始化函数
系统移植后,如图5所示,首先需要对系统进行初始化,部分初始化函数声明如下:
//6个限位开关I/O初始化,用于系统位置校正
void RESET_XYZ_Init(void);
//串口初始化
//bound:设置波特率
void UART_Init(u32 bound);
//独立看门狗初始化,防止程序跑飞
//prer:分频数:0-7(只有低三位有效)rlr:自动装载初值:0-0xFFF
//分频因子:4*2^prer 但最大只能是256
//rlr:重装载寄存器值:低11位有效
//时间计算:Tout=((4*2^prer)*rlr)/32 (ms)
void IWGD_Init(u8 prer,u16 rlr);
//切割头初始化
void Cut_Init(void);
//LCD触摸屏初始化
void LCD_Init(void);
4.2.3 系统任务创建
UCOS-II 2.91版本支持最大255个任务,不过对于我们来说,一般64个任务就足够了。
整个系统一共创建以下5个任务:
//START任务:执行LCD界面初始化,位置校正以及创建以下4个任务
#define START_TASK_PRIO 5 //设置任务优先级
#define START_STK_SIZE 64//设置任务堆栈大小
OS_STK START_TASK_STK[START_STK_SIZE];//任务堆栈
void start_task(void *pdata);//任务函数
//看门狗任务:防止系统跑飞
#define DOG_TASK_PRIO 4 //设置任务优先级
#define DOG_STK_SIZE 64//设置任务堆栈大小
OS_STK DOG _TASK_STK[DOG _STK_SIZE];//任务堆栈
void dog_task(void *pdata);//任务函数
//串口数据接收任务:接收并处理来自串口的数据
#define UART_TASK_PRIO 3 //设置任务优先级
#define UART _STK_SIZE 128//设置任务堆栈大小
OS_STK UART _TASK_STK[UART _STK_SIZE];//任务堆栈
void uart_task(void *pdata);//任务函数
//LCD任务:用于LCD的显示以及接收相关的操作指令
#define LCD_TASK_PRIO 2 //设置任务优先级
#define LCD_STK_SIZE 128//设置任务堆栈大小
OS_STK LCD_TASK_STK[LCD_STK_SIZE];//任务堆栈
void lcd_task(void *pdata);//任务函数
//轻触开关检测任务:当切割头越界时,用于重新校正
#define KEY_TASK_PRIO 1 //设置任务优先级
#define KEY_STK_SIZE 64//设置任务堆栈大小
OS_STK KEY_TASK_STK[KEY_STK_SIZE];//任务堆栈
void key_task(void *pdata);//任务函数
5 结束语
本文设计的系统现在只能对规则的物体进行定直径切割,例如,可以切割圆锥体或者四面体直径小于某一数值的部分。相信在接下来的时间里,通过优化PC端的图像处理软件算法,最终可以完成对不规则物体的定直径切割。系统的三轴传动切割子系统通过升级或更改对应的部件,也可以适用于多种场合,例如,3D打印机的机械部分基本都是采用三轴传动系统。
参考文献
[1]田原 ,黄合成,谭庆昌,等.基于机器视觉的零件尺寸测量[J].激光与光电子学进展,2010,01:82-90.
[2]张团善,张娜,武玉婷.基于增強型STM32驱动双极步进电机的研究[J].电子测量技术,2010,10:16-18+55.
[3]张斌.3D打印驱动关键技术研究[D].北京印刷学院,2015.
[4]库少平,刘晶.基于STM32F10x和MDK的步进电机控制系统设计[J].武汉理工大学学报,2009,03:107-110.
[5]罗鑫,张峰.基于ARM Cortex-M3的步进电机线性速度控制的实现[J].电气自动化,2009,05:42-44.
[6]吴迪.基于DRV8825的打印机电机驱动电路设计[J].电子技术与软件工程,2013,11:62.
[7]J. M. S. Prewitt and M. L. Mendelsohn, “The analysis of cell images,” innnals of the New York Academy of Sciences, 1966,128:1035-1053.
[8]C. A. Glasbey, “An analysis of histogram-based thresholding algorithms,” CVGIP: Graphical Models and Image Processing, 1993,55:532-537.
[9]张洋,刘军,严汉宇,等. 精通STM32F4(库函数版)[M].北京:北京航空航天大学出版社, 2015.
作者简介:肖培(1996-),男,汉族,湖南邵阳,在读本科生,研究方向:嵌入式开发。