基于Arduino单片机的解魔方机器人

2016-05-19 13:39刘远法周屹
电脑知识与技术 2016年7期
关键词:步进电机

刘远法++周屹

摘要:解魔方机器人课题为了适应对机器人智能化的要求,选择竞技类机器人作为研究对象,研究设计了解三阶魔方机器人,能够为提高竞技类机器人的智能化水平做出贡献。本设计基于Android 平台,颜色传感器作为颜色识别系统,机械手臂作为操纵设备,完成对任意魔方状态的初始还原。机械控制作为解魔方机器人的神经中枢,是机械结构执行算法的纽带。

关键词:Arduino单片机;电机驱动;电机控制;步进电机

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2016)07-0171-03

The Robot Can Restore A Rubik's Cube Based on Arduino Microcontroller — The Control Module

LIU Yuan-fa, ZHOU Yi

(Yunnan Normal University, Kunming 650092, China)

Abstract: The robot can restore a rubik's cube in order to adapt to the requirements of intelligent robot, athletic robot as the research object, research and design about third-order Rubik's cube robot can contribute to improve the intelligent level of athletic robot. The design based on the Android platform, the color sensor as the color recognition system, the mechanical arm as control equipment, the reduction is done for any state of Rubik 's cube initial. If the algorithm is the brain of the Rubik's cube robot, then mechanical control is the central nervous system (CNS) is link mechanical structure of the implementation of the algorithm. This paper will discuss from the mechanical control part.

Key words: Arduino microcontroller; motor drive; motor control; step motor

进人21世纪以来,人类科学技术取得突飞猛进的发展,在发展了半个世纪的现代机器人中,仿生机器人作为热门研究课题,是机器人学研究的一个重点。通过模仿动物的各种生物功能及人类大脑思维功能从而全面提升机器人的自主能力及智能水平是仿生机器人学研究的一个重要内容[1]。解魔方机器人课题为了适应对机器人智能化的要求,选择竞技类机器人作为研究对象,研究设计了解三阶魔方机器人,能够为提高竞技类机器人的智能化水平做出贡献,具有科学性强、创意丰富、创新点鲜明的特点,并有良好的经济及社会应用价值[2]。

本设计将完成既可以用于教育行业作为典型的机器人教学教具,也可用于娱乐业作为展示用和表演用机器人,还能产生一定经济效益。该解魔方机器人运用颜色识别、步进电机精确控制等科学技术。对于解魔方机器人,控制系统就如同人的神经中枢,它起着承接算法与机械结构的作用。本文将从机械控制部分进行论述。

1 解魔方机器人控制系统研究现状

世界各国的很多公司及魔方爱好者已经设计出了解魔方机器人,目前还原魔方最快的机器人CubeStormer 3由ARM的两位工程师完成,以惊人的3.253s还原了一个三阶魔方,打破了机器人还原魔方的世界纪录。它的机械控制采用的是4个LEGO的Mindstorms NXT蓝牙机器人配套的伺服电机作为机械臂动力,用NXT主控器直接驱动。这款伺服电机转速很快,定位精准,力矩也大,但是价格昂贵。

也有部分国内外的魔方爱好者设计了基于PC上位机的解魔方机器人,运用电脑作为上位机,摄像头作为颜色识别,用四个步进电机作为机械臂控制。此类解魔方机器人需用PC机进行还原计算,还原一个三阶魔方需要1分钟以上。对于机械控制部分,一共采用8个步进电机进行控制。每一只机械臂由1个电机控制机械臂前进与后退,另一个控制机械臂转动。

随着以上这些及魔方机器人的出现,各界人士研究解魔方机器人的也越来越多。由于它具有趣味性和可观赏性,出于对解魔方机器人工作原理的好奇,综合应用所学知识自己制作解魔方机器人。

2 前期设计分析

从各类解魔方机器人来看,大部分的解魔方机器人都需要较高的成本费用,或过于笨重,制作困难等。本设计是一款小型、简单、成本低的解魔方机器人。以Android作为主控平台,颜色传感器作为颜色识别装置,用一只机械臂和一个可旋转的底座实现魔方的翻转与旋转各面或整体旋转(图1)。控制部分用两个电机分别控制底座和机械臂,Arduino通过控制电机驱动间接控制电机,实现算法动作与机械动作的结合。

对于解魔方机器人而言,控制是一个很重要的部分,如果机械控制不精确,那么算法再优秀也无法实现,所以精确控制机械结构精准定位是实现魔方还原的关键。而控制的速度则是还原效率的一个重要的考察点。

3 Arduino单片机

Arduino是一个基于开放原始码的软硬件平台,具有使用类似Java、C语言的Processing/Wiring开发环境。并且Arduino自带很多库函数,程序编写简单方便。

3.1 Arduino UNO

Arduino UNO是Arduino USB接口系列的最新版本,作为Arduino平台的参考标准模板[3]。UNO具有14路数字输入/输出口(其中6路可作为PWM输出),6路模拟输入,一个16MHz晶体振荡器,一个USB口,一个电源插座,一个ICSP header和一个复位按钮。

3.2 Arduino Mega2560

Arduino Mega2560也是采用USB接口的核心电路板,它最大的特点就是具有多达54路数字输入输出,特别适合需要大量IO接口的设计。Arduino Mega2560也能兼容为Arduino UNO设计的扩展板。

根据Arduino UNO和Arduino Mega2560特点,由于Arduino UNO数字接口较少,最终选用Arduino Mega2560作为主控板。

3.3 Arduino IDE

Arduino IDE是Arduino的开放源代码的集成开发环境,语法简单以及能方便地下载程序,使得Arduino的程序开发变得非常便捷 [4]。

Arduino编程由setup和loop两个函数组成,setup在程序流程中只会执行一次,用于定义所需要设定、初始化的参数和函数或是引脚功能指定等。Loop是主程序的执行内容。

4 电机选型

电机是解魔方机器人最主要的驱动设备,是否合理地选择电机将严重影响本设计项目的效果。本设计电机应结合转速,扭矩,精确度等参数进行选择。

4.1 直流电机

直流电机(direct current machine)能将直流电能转换成机械能[5]。直流电机的转动直接驱动于电流的输入,一般使用在持续运转的情况下,只依靠PWM信号来改变转速的快慢。不适合应用在比较精密的角度转动。

4.2 步进电机

步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件[6]。步进电机具有较好的起停和反转响应,不会积累误差,以实现转动位置的精准。但难以运转到较高的转速,难以获得较大的转矩[7]。

4.3 舵机

舵机(英文叫Servo):它由直流电机、减速齿轮组、传感器和控制电路组成的一套自动控制系统[8]。通过发送信号,指定输出轴旋转角度。普通直流电机无法反馈转动的角度信息,而舵机可以。但舵机的旋转角度只在一定角度之间。

结合项目特点要求电机可以精确控制魔方旋转90度、180度,由于直流电机控制精确度不高,而舵机只可在一定角度内旋转,故本设计驱动电机选择步进电机。

步进电机有步距角(涉及相数)、静转矩、及电流等要素,本设计主要考虑,转速、转矩、精确度及市场销售四个要素,最终选用的步进电机为“宝鸡航天华科出品的42步进电机带伺服反馈”,步进电机规格:42*42*37.8MM、步进角:1.8度、引线:两项四线、驱动电压12V、驱动电流0.8A、扭矩2.5Kg/cm左右,价格:12.8元/个。

5 电机驱动设计

5.1 L298N

L298N是ST公司生产的一种高电压、大电流电机驱动芯片[9]。它具有耐压值高,工作电流大的特点,最大可承受46V的电压;电流最大可达3A,持续工作电流可达2A,可以用来驱动两台直流电机或一台步进电动机;L298N有两个使能端,采用标准逻辑电平信号控制,可以采用这两个使能端对直流电机进行PWM控制。

5.2 ULN2003

ULN2003由七个硅NPN 复合晶体管组成,耐高压、大电流;最大电流可达50V,最大电流可达500mA。

结合两个电机驱动参数及所选步进电机参数决定选用L298N作为本设计步进电机驱动,驱动模块设计与制作原理图,采用eagle软件进行PCB设计,经过裁板、热转印、腐蚀、打孔、元器件焊接等步骤制作出实物(如图2)。

6 电机驱动程序设计

6.1 步进电机工作原理

步进电机是通过时序来控制的,当按照一定顺序给步进电机线圈通电时,步进电机就可按照时序转动。以两相步进电机为例。

按照一定的顺序,依次给每一相进行供电,可实现步进电机的转动。两相步进电机的工作方式有单四拍,双四拍、八拍三种工作方式。其中以单双八拍方式控制精度最高,是单四拍和双四拍的一倍[10]。

6.2 电机程序设计

经过测试电机采用简单的双四拍工作方式已有足够的力矩驱动机械臂和底座,故采用双四拍工作方式进行程序编写。本次选用的步进电机旋转一周需要200步,控制底座电机运行50步为顺时针旋转90度,机械臂电机初始位置为机械臂固定魔方位置,顺时针旋转80步后恢复可拉动魔方翻转,逆时针旋转36步可移开机械臂。

6.3 算法动作到机械动作的转换

算法计算完魔方的还原动作为固定魔方的中心块位置,每一面顺时针旋转90度,逆时针旋转90度或旋转180度,转换为机械步骤时可将要旋转的面先通过机械臂拉动翻转到底面,再进行旋转,完成后再讲魔方还原原来状态。各个面转换流程如图3。

7 总结

本文阐述述了解魔方机器人的控制部分,从Arduino单片机选型,电机型号选择,电机驱动设计,算法到机械控制的转换方面进行了分析设计和总结,希望可以为广大智能机器人设计爱好者提供研究支持和参考。

参考文献:

[1] 蔡睿妍.Arduino的原理及应用[C].北京: 科学出版社,2012: 23-27.

[2] 郑振杰,江衍煊,游德智.单片机结合ULN2003驱动步进电机[J].电机技术,2010,2(6):18-19.

[3] 安静宇,王党树,郑琪.研究和探讨数控直流电源[J].硅谷,2008,32(3):65-67.

[4] 郑振杰,江衍煊,游德智.单片机结合ULN2003驱动步进电机的应用[J].电机技术,2010,54(9):77-78.

[5] 赖若麒,刘竹林.基于步进电机的位置随动系统的设计[J].信息技术,2012,34(2):78-80.

[6] 惠特.Arduino技术内幕 (2013年版) [M].北京:人民邮电出版社,2013: 10-16.

[7] 孙骏荣,吴明展.Arduino一试就上手[M].2版.北京:科学出版社,2012: 56-58.

[8] 赵津,朱三超.基于Arduino 单片机的智能避障小车设计[C].北京:科学出版社,2013: 65-69.

[9] 郭力峰,揭宗昌,蔡泽辉.基于XC886 单片机的魔方机器人设计[J].电脑知识与技术,2011,24(8):25-28.

[10] 董海阳,魏巍.类人四轴解魔方机器人的设计[D].北京:北京国家图书馆,2013.

猜你喜欢
步进电机
五自由度机械手的PLC控制
基于FPGA的喷墨打印机控制系统
步进电机模糊PID闭环控制系统仿真研究