基于Arduino单片机的智能搬运机器人研究

2018-08-06 12:03程赟
魅力中国 2018年12期
关键词:三原色色块滤波器

程赟

摘要:在工业时代,机器人是人造机器的“终极”形式,是人类智慧的结晶。在各处工地或者制造业工厂,经常能看到搬运重物的起重机或者小推车,但这些机械的运行都需要依靠人的操作和控制。本文以教育机器人为例,基于Arduino单片机对智能搬运小车做简单的分析和研究,对电机模块和颜色传感器模块进行适当的优化和测试,提升小车的准确度和高效性,能够实现教育机器人的智能搬运。

说到20世纪最造福人类的创造之一,机器人技术的发明一定榜上有名。新型色色的特种机器人还有日渐技术成熟的工业机器人,宣告着智能制造技术的崛起。作为工业机器人的一种,智能搬运机器人也被广泛的研究和设计,本文举例说明如何实现车轮前进方向的调整,如何实现颜色的分辨。

本文智能搬运机器人基于Arduino平台进行编程,能实现将不同颜色物体循迹分类搬运到对应颜色的目标地点。

一、电机控制

机器人所用的电机,又称伺服电机,可以将收到的电子信号转换为速度进行输出,可以驱动车轮或者履带前进。本次电机使用PWM即脉冲宽度调制这种方法能够实现较简单和灵活的控制,并且有较好的动态响应。电机在与Arduino控制板连线之后,注意首先控制机器人小车的车轮的速度,避免放在桌子上从桌子上跌落,其次根据控制脉冲信号时序图进行电机调零。电机在使用脉冲序列控制并且经过零点标定后,不会旋转。如果仍旧旋转,需重新调零。

二、机器人运动控制原理及优化调整

下载程序将电机调零后,可以尝试观察用1400~1600之间的数字去修改高电平持续时间,进而观察电机的转速,不同的时间带入,电机正反转效果不同,同时速度也有差别。根据测量可得到一个电机旋转与机器人运动控制表,如表1。

电机旋转与机器人运动控制表,如表1。

根据表1可举例说明,以下为全速前进程序:

void Fast_forward(uchar a) //快速前进

{

uchar i;

for(i=0;i

{

digitalWrite(right_moter,HIGH);

delayMicroseconds(1450);

digitalWrite(right_moter,LOW);

digitalWrite(left_moter,HIGH);

delayMicroseconds(1540);

digitalWrite(left_moter,LOW);

delay(20);

}

}

右轉90度程序:

void turn_right_90()

{uchar i;

for(i=0;i<65;i++) //慢右转90度

{

digitalWrite(right_moter,HIGH);

delayMicroseconds(1530);

digitalWrite(right_moter,LOW);

digitalWrite(left_moter,HIGH);

delayMicroseconds(1530);

digitalWrite(left_moter,LOW);

delay(20);

}

}

三、颜色传感器的原理和程序设置

智能小车能成功搬运不同颜色的木块去到目标地点要依靠于颜色传感器和程序设置。颜色传感器检测或识别某个颜色是依靠检测这个颜色中三原色的比例。三原色即红、绿、蓝三种颜色。本文颜色传感器的型号是TCS230。当它对颜色进行判断时,依次启用红色、绿色、蓝色传感器,从而只有该颜色光可以通过,不是这个颜色的光就被阻止。因此可以得出对应颜色的光强。S0、S1 输入引脚用于选择输出比例因子或者电源关断模式,不同的输出比例因子可控制不同的输出频率,以适应不同的需求;S2、S3 输入引脚用于选择滤波器的类型;“LED”输入引脚用于点亮两个LED 灯;OUT 是频率输出引脚;GND 是芯片接地引脚,+5V 和 VDD接 5V 电源。TCS230颜色传感器工作时,首先打开LED灯,选择输出比例因子,然后依次选定不同的颜色滤波器,每选通一个滤波器就检测其输出引脚输出的不同频率(即光强)的方波脉冲数,最后根据得到的三原色脉冲数比例判断颜色。

在颜色判断初期,由于传感器对三种基本色的判断和敏感程度不同,导致三种颜色的输出值并不均等,影响颜色识别,为此,增加一个白平衡手段进行调整,主要是为了给传感器定义什么是白色,使得三原色RGB输出值相等。

安装好颜色传感器,做好白平衡之后,进行对色块的不同颜色的学习。由于周围光线和色块的距离位置的影响,所以有可能会导致识别颜色出错,所以在测量不同颜色输出值时应考虑这些因素,适当的扩大三原色的范围,同时设置防止出错的条件直到对所有的颜色都识别正确。

对此,优化后的颜色识别的程序如下:

int Robot_checkColor()

{

ColorreCognt(refer_time,clrpulses);

if((clrpulses[0] - clrpulses[2] > 90) && (clrpulses[0] - clrpulses[1] > 80)){

currentcolor = Red;

}

else if((abs(clrpulses[0] - clrpulses[2])<50)&&(abs(clrpulses[0] - clrpulses[1])<50)&& (clrpulses[0]>100)){

currentcolor = White;

}

else if((abs(clrpulses[0] - clrpulses[2])<30)&& (abs(clrpulses[1] - clrpulses[2])<10)&& clrpulses[0]<70){

currentcolor = Black;

}

else if((clrpulses[0] < clrpulses[1]) && (abs(clrpulses[1] - clrpulses[2])>9)){

currentcolor = Blue;

}

else if((clrpulses[2] > clrpulses[1]) && (clrpulses[0] - clrpulses[1] > 100)){

currentcolor = Yellow;

}

return currentcolor;

}

此數据均基于当时环境和光线测试得来,这样才能实现较精准的颜色识别。

通过调用白平衡函数,可以知道三原色的滤波器的时间基准值,然后通过Robot_checkColor()函数进行时间值对比,得到了相应颜色的时间值,依靠分辨条件,可以识别出不同色块的颜色。

本文从电机参数的测试修改以及颜色传感器设置和识别程序这两大方面分析和优化了智能搬运机器人的程序,能够更精确的实现小车转弯的角度以及前进方式;并且基于三原色的滤波器,能够实现对不同颜色的识别。在对电机和颜色模块成功设置后,才能使得智能搬运机器人实现对不同色块的识别,进而搬动色块去到该色块对应的目的地。关于智能搬运的循迹模块,和寻找色块模块就不在这里详述了。

参考文献:

[1]基于RGB的颜色辨识系统设计[J]. 高富强,李岭,安康. 传感器与微系统. 2012(10)

[2]物料搬运移动机器人机械与控制系统设计与研究[D]. 彭天然.合肥工业大学 2016

[3]基于AVR的比赛机器人控制系统研究[J]. 王文斌,陈伟. 电气传动. 2010(07)

猜你喜欢
三原色色块滤波器
浅谈有源滤波器分析及仿真
瑞安市马屿镇清祥小学“融适三原色”课程方案
CIC插值滤波器的研究
多元游牧
三原色
三原色
大色块拼接
FIR滤波器线性相位特性的研究
三个色块
眼睛,请接招