APP下载

基于STM32的双轴监控云台精准控制系统设计*

2016-06-24张纪宽彭力陈志勇

单片机与嵌入式系统应用 2016年6期
关键词:云台串口指令

张纪宽,彭力,陈志勇

(江南大学 物联网工程学院,无锡 214122)

张纪宽,彭力,陈志勇

(江南大学 物联网工程学院,无锡 214122)

摘要:智能监控系统的快速发展对云台控制精度要求不断提高,由此设计并实现了一款双轴监控云台精准控制系统。本系统利用USART串口接收标准数控程序指令G代码,通过移植CNC雕刻机运动控制器GRBL到云台控制器STM32F103RBT6中控制两台步进电机协同工作,实现云台精准控制。将数控机床中精准的直线插补和弧形、圆形运动功能运用到监控云台中,提高控制精度,实现云台快速响应和平稳加速以及无冲击的转弯。本系统在智能家居、区域安防等智能监控领域有很好的实用价值,适合现代视频监控领域的发展要求。

关键词:监控云台;双轴控制;GRBL;STM32F103RBT6;G代码

引言

为了扩大摄像机的搜索范围,减少同一区域布防摄像机的个数,通常使用带有云台的摄像机,监控人员可通过远程客户端控制云台转动,扩大监控范围,满足对监控固定目标实现快速定位及对大范围环境监测的要求[1]。随着计算机视觉的发展,智能视频监控技术成为当前的研究热点[2],通过图像、视频处理等技术可自动实现运动目标检测、跟踪[3],因此手动、低精度、单轴的云台控制方式已不能满足当今智能视频监控的需求。针对上述问题,本文基于STM32微控制器设计并实现了一款双轴监控云台精准控制系统。与参考文献[4]结合,可实现完整的智能监控系统前端设计。

1系统设计及工作原理

文中实现的系统采用STM32F103RBT6作为双轴云台控制器,通过串口接收智能监控前端[4]发送的控制指令,控制指令也可通过典型的PELCO协议[5]携带。将开源CNC雕刻机控制器GRBL[6-7]移植到STM32控制器,通过对STM32 C语言软件编程调用GRBL依次实现G代码[6]解析,控制两个定时器协同工作,最后通过STM32的I/O引脚输出PWM电机控制脉冲给电机驱动,从而控制两台步进电机协同运行,实现监控云台的精准控制。系统整体结构图如图1所示。

图1 系统整体结构图

2基于GRBL的双轴云台控制

GRBL是一款针对Arduino/AVR328单片机用于CNC 雕刻的嵌入式G代码编译和运动控制器。GRBL性能高、成本低,由C编写并优化,针对嵌入式芯片的灵巧特性实现精准时序和异步控制。它接受标准的G代码,可以保持超过30 kHz的稳定、无偏差的控制脉冲,完美支持弧形、圆形和螺旋形的运动,并且包含完整的前瞻性加速度控制,可提前16~20个运动来规划速度,从而实现平稳的加速和无冲击的转弯。为了实现云台的精准控制,本系统移植GRBL中的G代码解析、插补运动、脉冲控制等功能。GRBL软件框架结构图如图2所示。

图2 GRBL软件框架图

protocol模块接收串口命令并传递给gcode模块,gcode模块解析G代码为运动控制命令并传递给motion_control模块和spindle_control模块(此模块控制雕刻机中的主轴,在本系统中未使用),motion_control模块给planner模块和stepper模块提供命令接口,planner模块根据命令计算运动数据并将其写入准备运动计划(数据缓冲区)中,stepper模块则根据运动计划控制两个定时器协同工作,从而输出脉冲控制两台步进电机运动。

2.1串口指令解析

该系统采用USART1作为通信串口,GRBL通过protocol模块接收串口发送的用户或者数据指令,例如发送指令“$”用来查询GRBL支持的用户命令。图3(a)显示的用户指令可方便用户完成想要的操作,例如发送“$$”用户指令设置或查看使用的参数,如图3(b)所示。

图3 串口打印图

G代码是数控机床中一门易于理解的程序语言,也被称为G指令[6]。protocol模块将携带数据指令的G代码传递给gcode模块,gcode模块解析G代码为运动控制命令,设置运行模式,保存运行数据到缓冲区供motion_control调用,串口指令解析过程的程序流程图如图4所示。

图4 串口指令解析流程图

2.2插补运动

指令①~③是3条常见的G指令,指令①是快速定位指令,运行轨迹如图5(a)所示,X和Y轴同时同速运行到A点,然后X轴不动,Y轴运行到B点,进给速度为默认值,由图3(b)可知进给速度为参数“$4”默认400 mm/min。指令②是直线插补指令,运行轨迹如图5(b)所示,X和Y轴同时以不同速度运行到B点,以2 000 mm/min的进给速度运行且轨迹是一条直线。指令③是顺时针圆弧插补指令,运行轨迹如图5(c)所示,从0点开始,以I、J为弧线原点坐标(相对当前位置的坐标),以X、Y为终点坐标(绝对坐标),运行弧形轨迹。

图5 G代码运行轨迹图

如图5所示,直线插补运行模式下,监控云台运行距离最短,此模式适合快速跟踪目标;快速定位模式适合从一个点运行到另一固定点的场所。三种模式的配合使用可实现单摄像机立体空间中任何不规则区域的监控。

插补运动的实现原理如下:

① planner模块从motion_control模块获得运动控制命令,然后计算运行所需要的数据并保存到数据缓冲区供stepper模块使用。

② 分别计算X和Y轴需要运行的绝对步数,如式(1)所示。steps_per_mm数组是图4中初始化时的参数(代表每毫米需要运行多少步),position数组中存放着上一次循环时的步数,两者之差便是本次运动的绝对步数。

(1)

③ 计算本次运行向量的模d,如下式所示(单位为mm):

(2)

④ 计算沿此轨迹运动时的运行速度,如式(3)所示。feed_rate为进给速度,像指令②中指定进给速度时此参数便为指定值,若指令中未指定则为图4中初始化默认值,单位为mm/min;rate是步速,每分钟运行的步数,单位为steps/min。

(3)

⑤ 在当前运行轨迹上的加速度如式(4)所示,单位为step/min/acceleration_tick。其中accelerate是图4中初始化的加速度默认值(单位为mm/min2),ACC_TICKS_PER_SECOND为常量50。

(4)

计算这些参数是为了避免因电机的启动停止造成漂移,影响运动精度,因此电机的运行速度呈梯形,根据中点法则,启动时按照默认加速度缓慢加速,到达预定速度后匀速运行,停止时缓慢减速 ,速度-时间(v-t)图如图6所示。

图6 运行速度-时间图

2.3GRBL脉冲控制

GRBL通过stepper模块获取planner模块计算的数据,换算成定时器计数个数,然后通过两个定时器协同工作输出步进脉冲,从而控制两台步进电机运行。第一个定时器负责控制输出脉冲的周期,步进电机脉冲周期决定电机运行速度;第二个定时器控制每个脉冲周期中低电平的时间,对步进电机而言,脉冲占空比并不重要,重要的是脉冲周期,所以只要保证步进电机驱动能够检测到脉冲即可。本系统采用STM32微控制器的16位定时器TIM3和TIM4控制脉冲输出,配合控制方式如图7所示。

图7 定时器脉冲控制图

TIM4定时器装入值如式(5)所示,因为TIM4定时器控制的是每个脉冲的低电平时间,为固定值。

T4=((pulse_microseconds-2)×

(5)

pulse_microseconds代表真正的延时时间,单位为μs,TICKS_PER_MICROSECOND代表每μs系统时钟频率,这里为72,右移3位是因为定时器为8分频。

TIM3定时器寄存器装入值如式(6)所示,因为TIM3定时器控制的是脉冲周期,决定了电机转速,且每运行一单位距离,电机运行速度都以梯形变化,因此TIM3寄存器的装入值为变值。

(6)

式(6)中分子代表定时器每分钟跳动次数,分母steps_per_minute代表电机运动速度(每分钟需要多少脉冲),两者之商就是每个脉冲定时器需要跳动的次数,代表了每个脉冲的周期。

GRBL移植到STM32微控制器中,定时器控制脉冲输出程序流程图如图8所示。

图8 定时器控制脉冲程序流程图

3硬件设计

该系统硬件电路简单,只需要引出单个串口的微控制器最小系统、步进电机驱动模块和两台步进电机三部分。控制器采用意法半导体公司基于Cortex-M3内核的32位增强型微控制器STM32F103RBT6,可工作在72 MHz频率下,具有20 KB SRAM和128 KB FLASH,拥有3个普通16位定时器、1个16位高级定时器、3个USART串口以及51个通用I/O接口,在嵌入式产品中被广泛应用[7]。本系统使用到的I/O引脚与功能如表1所列。

表1 I/O引脚与功能

电机驱动采用信捷DP-308D-L细分步进电机驱动器,最大输出直流电压可达80 V,输出电流为3.0 A,采用纯正弦波电流控制技术,适用于数控机床等控制精度要求较高的设备,采用集电极开路共阳极接法,接线图略——编者注。

4系统测试

按照表1连接硬件,通过MDK软件JTAG仿真器将程序烧录到STM32中。先将串口通过USB转串口线连接PC机,通过串口调试助手调试用户命令,结果如图3所示。再将串口与参考文献[4]中嵌入式前端服务器DM365的控

制串口相连,通过上位机发送手动控制云台命令,观察到云台能够进行相应的运动,通过上位机的自动跟踪算法,使云台能够对入侵目标实时跟踪,效果图如图9所示。

图9 云台自动跟踪效果图

结语

本文设计并实现了一个双轴监控云台精准控制器,移植CNC雕刻机的精准控制算法GRBL到STM32微控制器,通过串口接收标准的G指令,经GRBL解析、计算后输出精准控制脉冲给电机驱动,从而对两台步进电机实现精准控制,在智能监控系统快速发展的时代,本方案具有很高的实用价值。

参考文献

[1] 纪钢,司洞洞,吴萍萍.基于反馈式可定位云台控制系统设计与实现[J].计算机测量与控制,2015,23(5):1582-1585.

[2] 黄凯奇,陈晓棠,康运锋,等.智能视频监控技术综述[J].计算机学报,2015,38(6):1093-1118.

[3] 张建仓,杨哲辉,孙启富.基于二自由度云台的目标跟踪系统设计[J].计算机测量与控制,2013,21(9):2579-2581.

[4] 张纪宽,彭力,陈志勇.基于嵌入式前端服务器的音视频监控系统设计[J].江南大学学报:自然科学版,2015,14(1):38-42.

[5] 杨轶龙,徐驰,翁丽娜,等.基于闭环控制的云台通信协议设计[J].安防科技,2011(11):18-20.

[6] Javed M Y,Rizvi S T H,Saeed M A,et al.LOW COST COMPUTER NUMERIC CONTROLLER USING OPEN SOURCE SOFTWARE AND HARDWARE[J].Sci. Int. (Lahore),2015,27(5):4041-4045.

[7] 徐洋,马跃.STM32F103系列微控制器在应用编程技术研究[J].单片机与嵌入式系统应用,2013,13(8):35-37.

张纪宽、陈志勇(硕士研究生),研究方向为网络视频传输应用;彭力(教授),研究方向为视觉传感器网络、人工智能、计算机仿真。

Zhang Jikuan,Peng Li,Chen Zhiyong

(School of IoT,Jiangnan University,Wuxi 214122,China)

Abstract:The PTZ control accuracy requirement is increasing with the rapid development of intelligent monitoring system,thus a precision control system for double-axis monitoring PTZ is designed and implemented.The system uses the USART serial port to receive the standards-compliant G code,and PTZ control precision is achieved by transplanting GRBL into PTZ controller (STM32F103RBT6) to control two stepper motors working in coordination.In order to improve the control precision and achieve fast response,the smooth acceleration and non-impact turn of PTZ are achieved through applying the precise linear interpolation and arc or circular motion in NC machine tool to the monitoring PTZ.The system has good practical value in the field of intelligent monitoring,such as smart home,area safety defending,which is adapt to the development requirements of modern video surveillance.

Key words:monitoring PTZ;double-axis control;GRBL;STM32F103RBT6;G code

* 基金项目:江苏省产学研联合创新资金-前瞻性联合研究项目(BY2014023-25)。

中图分类号:TP36

文献标识码:A

收稿日期:(责任编辑:薛士然2016-01-11)

猜你喜欢

云台串口指令
云上之家——万科·郡西云台
龙门山·卧云台
浅谈AB PLC串口跟RFID传感器的通讯应用
帮我买云台
基于STM32的无线FPV云台设计
数字电源内部数据传输的串口通信方法实现
USB接口的多串口数据并行接收方法探索
串口技术的实物调试和虚拟仿真联合教学模式
中断与跳转操作对指令串的影响
基于汇编指令分布的恶意代码检测算法研究