基于Arduino开发的三自由度主从控制系统

2019-09-24 02:00包天本张甫频杨运强
电脑知识与技术 2019年19期
关键词:人机交互

包天本 张甫频 杨运强

摘要:基于Arduino电子平台设计,融合蓝牙通信技术,以42步进电机作为原动机,采用高精度光电编码器检测角度。系统分上位机和下位机,采用人机交互工作模式,用户操纵上位机进行示教动作,通过离线编程给下位机下达运动指令,使下位机“复制”上位机的动作,完成与上位机运动轨迹相同的动作。

关键词:主从控制;人机交互;Arduino;蓝牙通信;离线编程

中图分类号:TP275       文献标识码:A

文章编号:1009-3044(2019)19-0064-03

Abstract: The system is based on Arduino electronic platform, integrates Bluetooth communication technology, takes 42 step motor as prime mover, and adopts high precision photoelectric encoder to detect angle. It is divided into upper computer and lower computer, using human-computer interaction mode. The user controls the upper computer to carry out the teaching action, and gives the motion instruction to the lower computer through off-line programming, so that the lower computer can "copy" the action of the upper computer and complete the same movement track.

Key words: master-slave control; human-computer interaction; Arduino; bluetooth communication; off-line programming

1 背景

近几年机器人技术发展迅猛,特别是人工智能方向发展得如火如荼。机器人发展虽然在向人工智能方向发展, 但由于受到现有技术的限制, 大都只能称之为“半智能化”的机器人[1]。对于高危环境下的任务,需要机器人代替人类完成,但面对更复杂的工作要求,机器人需要人的辅助来完成。主从式控制是一种很好的人机交互方式,以人为指挥中心,机器人作为执行机构。主从控制方式采用离线编程,可避免传统机械手规划运动轨迹的复杂计算,且控制灵活,利于多种生产方式,提高生产效率。比如, 目前发达国家普遍采用主从式机器人技术来解决水下核反应堆和乏燃料池的维护工作[2]。所以,发展专用机械手的同时,也要发展示教式的主从机械手。发展主从式机械手,不仅要改进机械手结构,更应结合传感器与检测技术、电力电子技术、通讯技术等先进科学技术,发展主从控制系统。

2 总体方案设计

2.1 系统元件

上位机的硬件主要由Arduino控制板、光电编码器、蓝牙模块组成;下位机硬件由Arduino控制板、42行星减速步进电机、42步进电机驱动器、蓝牙模块、供电电源组成。

2.2 工作方案

1)给系统供电开始工作;

2) 光电编码器检测角度变化;

3) 上位机Arduino主板读取编码器脉冲数,并将数据通过蓝牙发送到从手;

4)下位机Arduino主板从蓝牙模块获取数据,通过驱动器控制42步进电机工作。

3 主要硬件介绍

3.1 Arduino mega2560控制板

Arduino是一种开源电子平台。该平台起源于意大利,主要基于AVR单片机微控制器和相应的开发软件而设计,其具有高度的模块化特点, 因此有时叫它“电子积木”[3]。

本系统采用型号为mega2560的控制板,改型号使用 ATmega2560芯片,具有54路数字接口,16路模拟接口,4路通信串口,晶振16MHz,6个外部中断引脚。其中外部中断引脚int 0,int 1,int 2,int 3,int 4,int 5實际为数字引脚2,3,21,20,19,18。

3.2 蓝牙模块

系统采用HC-05 蓝牙串口通信模块,该模块基于 Bluetooth Specification V2.0 带 EDR 蓝牙协议的数传模块,只支持一对一配对,可以实现10米距离通信。

3.3 光电编码器

增量式编码器是一种旋转式脉冲发生器,也称脉冲盘式编码器,能把机械转角变成电脉冲[4]。本系统采用500线AB相增量型光电编码器,每转动一圈时AB每相均输出500个脉冲。

3.4 42步进电机及其驱动器

系统使用42行星减速步进电机为4线2相式,减速比为1:10。

Arduino控制板不能直接驱动42步进电机,需要相配套的42步进电机驱动器。通过驱动器可以设置步进电机的步距角大小,本文设置200个细分角,即电机转动360°时走过200个步距角,则步距角为1.8°,此时控制板只需输入200个脉冲激励信号。

4 电路设计

4.1 上位机电路

使用中断引脚int 0、int 1、int 2即数字引脚2、3、21,分别接到编码器1、2、3的A相;B相分别接到数字引脚8、9、10;蓝牙模块RXD引脚接到数字引脚1,TXD可不接;所有元件的VCC引脚一起接到控制板的5V接口,GND一起接到控制板负极。

4.2 下位机电路图

驱动器由24V直流电源供电,采用共阳极接法,所有驱动器的DIR+、PUL+引脚均接到控制板5V接口,其DIR-、PUL-引脚按顺序依次接到数字引脚8、9、10、11、12、13,A-A+B-B+等引脚分别与电机对应的A-A+B-B+引脚相接;蓝牙模块的TXD与数字接口0相接,引脚RXD可不接。

5 系统程序设计

5.1 上位机程序设计

检测上位机动作信息主要是获得相应电机的旋转角度及转向,这一任务由光电编码器来完成。本文使用的编码器只有A、B两相,可直接由脉冲数量来计算角度大小,但转向的判定需要比较AB相的相位关系。编码器输出的波形是方波,具有上升沿、高电平、下降沿、低电平四种状态。AB相的相位关系如下图所示:

5.1.2 整理并发送数据

由于三个编码器会产生三组脉冲数据,从手接收数据时进行判别来源,这就要求建立 一个通讯协议。为方便测试,本文设定机械手每个自由度的转动角度最大不超过360°,所以编码器产生的脉冲数小于1000。

首先给编码器编号1、2、3,相应也给从手电机编号1、2、3,然后在发送数据时分别给编码器1获取的脉冲数加上1000,编码器2获取的脉冲数加上2000,编码器3获取的脉冲数加上3000。这样,所有的数据大小均为4位数,即字符数有4个。可通过比较数据的千位的大小来判断数据来源于哪一个编码器。

5.2 下位机程序设计

5.2.1串口接收数据

首先定义整型数组A[],把通过while(){}循环将读取的数据赋给数组,然后计算大小。

应当注意,Arduino的数据通信是以ASCII码为交换标准的。而用语句print()和println()发送数据时,会在数据后随带两个结束字符,其十进制大小分别为“13”和“10”,“10”在末尾。while(){}每循环一次只能读取一个字符,而每个数据为4位十进制数,每一位数字都是一个字符,加上结束字符一共有6个字符,所以数组长度定义6个即可。第一个读取的字符是千位数,接下来分别为百位数,十位数,个位数,结束字符“13”,结束字符“10”。

5.2.2 计算角度并控制电机工作

电机工作代码以电机1(用“Sm_1”表示)示例,电机2和电机3的代码原理同电机1,只需改变相应的变量和数字接口。代码如下:

6 结束语

基于Arduino设计的以步进电机为原动机的三自由度主从控制系统,通过实验证明,下位机电机的工作角度与上位机光电编码器的转动角度大小几乎相等,效果良好。本系统可以应用于以步进电机为原动机的主从式机器,如三自由度的主從机械手。采用蓝牙通信,使得装置体积更小,安装更灵活,比起传统的有线通信优势明显。对于更高自由度上的主从控制,本文也提供了开发思路。

参考文献:

[1] 罗孔昭, 叶磊. 浅谈我国机器人发展现状与问题及应对措施[J]. 科技资讯, 2018, 16(1): 74-75.

[2] 王刚, 王法承, 张星星, 等. 核电站检修主从式水下作业机械手研究[J]. 高技术通讯, 2017, 27(5): 442-449.

[3] 李结松. Arduino在工科低年级开放实验项目中的实践探讨[J]. 大学教育, 2019(6): 85-87.

[4] 杨运强, 王仪玥, 唐力伟, 等. 传感器与测试技术[M]. 北京: 冶金工业出版社, 2016: 152-153.

【通联编辑:谢媛媛】

猜你喜欢
人机交互
人机交互课程创新实验