0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

利用Parallax激光传感器制作Arduino激光机器人—第1部分

goodmbby 来源:DevicePlus 作者:DevicePlus 2023-02-24 15:24 次阅读

这篇文章来源于DevicePlus.com英语网站的翻译稿。pYYBAGPzFXCAB8IMAADMtWzXzUA558.jpg

试想一下,您刚搬到一个新地方,需要尽快添置家具,但是手头没有卷尺可以进行测量。那么,这款Parallax激光Arduino机器人就会派上用场!

我们在之前的文章《如何制作自己的机器人》 和《如何制作自己的机器人(第2部分)》中描述了如何利用Arduino UNO R3从零开始搭建属于自己的机器人。在本文中,我们将进一步增加机器人的功能:让它能够动起来并且添加激光测距(LRF)功能,以使该设备能够检测物体并测量距离。

激光传感器会帮我们获得更准确、更可靠的数据。该Arduino机器人的移动方式为自主移动模式。它在移动的过程中能够检测到障碍物并主动避开。

该机器人的设计目标如下:

向前、向后移动;向左和向右旋转90度;向左和向右旋转45度。

基于最佳路径,通过向不同方向移动避开障碍物。

测量各个方向(前方、左右90度、左右45度)的距离。

基于可用的最长距离,确定朝哪个方向前进(向前、向后、向左或向右)。

传感器安装在伺服上,以便机器人可以左右平移以进行多次测量。测量的距离将显示在一块小型OLED显示屏上。我们将使用步进电机实现平稳、安静的运行。

我们会一步一步地讨论该Arduino机器人的构建过程。第一步是如何安装底盘、电机和Arduino/电机开发板。然后,我们利用一个小程序来测试电机,以确保系统连接和软件安装都准确无误。然后,在下一篇文章中,我们会逐步添加其余设备,并且每一步都通过程序来测试安装和连接是否正确。通过这种按部就班的方法能够让我们更方便地解决制作过程中遇到的任何问题。

硬件

制作该机器人所需的硬件请参见以下硬件明细,这些零部件在许多电商处都可以买到(明细中给出了部分地址)。

Arduino Uno rev 3 (www.adafruit.com/products/50)

适用于Arduino的Adafruit步进电机开发套件 (www.adafruit.com/products/1438)

步进电机(www.adafruit.com/products/324)

底盘、螺丝和尾轮 Parallax.com

车轮、橡胶轮胎和轮毂 Makeblock.com

伺服装置和安装套件(www.parallax.com/product/570-28015)

Parallax激光测距仪(www.parallax.com/product/28044)

OLED显示屏(www.seeedstudio.com/Grove-OLED-Display-1.12”-p-824.html)

红色包装纸/盒(https://www.seeedstudio.com/Grove-Red-Wrapper-1*2(4-PCS-pack)-p-2585.html

锂聚合物电池3型(11.1V)和连接器(https://www.hobbyking.com/hobbyking/store/__18203)

195 x 195 x 3mm亚克力板(https://www.jaycar.com.au/clear-acrylic-sheet/p/HM9509)

软件

Arduino IDE

Adafruit Motor Shield Library

LCD Display9696 Library.zip

工具

圆锉

Dremel 电动工具

电烙铁

迷你钢锯

安装电机、轮子和亚克力底座

Parallax底盘由高强度铝制成。该部件是专门为伺服系统而不是步进电机设计的,因此我们需要做一些修改。

首先,要将电机安装到机箱上,我们得在机箱的两侧开口。请用Dremel电动工具按照电机的安装尺寸精确切割机箱。

我们使用的步进电机型号为NEMA 17,其分辨率为200步/转。其供电规格为12V 350mA。

要将电机装入底盘内,我们需要尺寸为6.5cm x 4.5cm的亚克力板,如图1所示。请用钢锯将亚克力板切割成所需尺寸,然后用Dremel电动工具钻孔。用M2x10mm的螺钉将电机装在亚克力安装板上,两个电机需要8颗螺钉。然后,将制作完毕的亚克力板和电机安装到底盘内。

poYBAGPzFXGARJqmAAB1iq6hxDM598.jpg

图1.将步进电机安装在6.5×4.5cm亚克力板上

要固定Arduino和OLED显示屏,我们需要切割一块15cmx8cm的亚克力底座(图2)。请用4个垫片和螺丝安装亚克力底座,然后用附带的销钉安装尾轮。

pYYBAGPzFXOAIASMAABXQtvGApQ003.jpg

图2.机箱、尾轮和15×8亚克力板底座

poYBAGPzFXSAJY-rAAC4HG5dEQs866.jpg

图3.轮子和轴连接器

pYYBAGPzFXaAcd6bAACMrXC2ve8505.jpg

图4.安装在底盘上的步进电机和尾轮

我们需要用图3中所示的轴连接器安装轮子。但是,我们必须做一个小修改。轴孔的直径为4mm,而步进电机轴的直径为5mm。因此,我们需要将连接器的孔扩大到5mm。请使用圆锉或Dremel工具扩孔。扩孔时一定要小心操作!

pYYBAGPzFXiANBnFAAB0c3gmIB8564.jpg

图5.安装在底盘上的亚克力底座

请将电机线缆从顶部的孔穿出,然后用双面胶带将电池粘在机箱下方。对于该项目来说,锂聚合物电池是理想解决方案。其供电规格为11.1V 800mAh〜1000mAh,这使得系统续航可超过1小时,而且还可以充电。但是该电池需要专门的充电器。如果您是航空模型或遥控车爱好者,那么您肯定知道这种电池。我们也可以用6或8节AA电池(9-12V)代替。

poYBAGPzFXmALH96AACsKz5fIsQ786.jpg

图6.用双面胶将电池粘在底盘上

将电机电缆连至电机开发板

Adafruit 电机开发板规格 – Adafruit

与Arduino高分辨率专用计时器相连的两个5V Hobby伺服器接口

4个H桥:搭载TB6612芯片组,每个桥可提供1.2A电流(峰值为3A,持续20ms),具有热关断保护功能,以及内部反冲保护二极管。可为电机提供4.5VDC至13.5VDC供电。

可连接最多4个双向直流电机,具有单独8位速度选择功能。

可连接最多2个单线圈、双线圈、交叉步进或微步进电机(单极或双极)。

经测试与Arduino UNO、Leonardo、ADK/Mega R3、Diecimila和Duemilanove兼容。兼容Due,配有3.3v逻辑跳线。兼容Mega/ADK R2及更早版本,具有2个跳线。

5v3.3v逻辑电平(跳线可配置)。

该电机开发板能同时运行2个步进电机和2个伺服器。该步进电机开发板的一个很大优势在于它不占用任何Arduino引脚,因为它通过I2C连接。唯一需要引脚的是伺服器。我们只需按照说明连接电机电缆即可。

要了解步进电机的基本知识及其与Arduino UNO R3的连接,请参考《Arduino与零件和传感器——步进电机第1部分》。

poYBAGPzFXuAKH6EAACoL_GDGtQ556.jpg

图7.将电机连至电机开发板

poYBAGPzFXyAC_8XAAC4fzS2WIg319.jpg

图8.亚克力底座上的Arduino和电机开发板

现在,我们只需要根据下图安装轮子和电池接头即可。

pYYBAGPzFX6AR57QAAEOAAIuq0Y561.jpg

图9.步进电机电缆连至电机开发板

安装软件并上传代码

现在,我们可以运行第一段代码了!首先,我们需要从Arduino网站下载并安装Arduino IDE,从Adafruit网站上下载并安装电机开发板库。安装成功后,请将以下源代码复制到Arduino中。

//*******************************************************************************************************************************************

#include 

#include 

#include "utility/Adafruit_MS_PWMServoDriver.h"

Adafruit_MotorShield AFMS = Adafruit_MotorShield();

Adafruit_StepperMotor *myMotor1 = AFMS.getStepper(200, 1);

Adafruit_StepperMotor *myMotor2 = AFMS.getStepper(200, 2);

void setup()

{  Serial.begin(9600);           // set up Serial library at 9600 bps

 Serial.println("Stepper test!");

 AFMS.begin();  // create with the default frequency 1.6KHz  

 myMotor1->setSpeed(100);  // 100 rpm   

 myMotor2->setSpeed(100);  // 100 rpm   

 }

void loop()

{

Motor(50,3);                    // turn Left for 50 steps

delay(1000);

Motor(100,4);                   // turn Right for 100 steps

delay(1000);

Motor(50,3);                    // turn Left for 50 steps (back to original position)

delay(1000);

Motor(400,1);                   // move Forward for 400 steps

delay(1000);

Motor(400,2);                   // move Backward for 400 steps

delay(1000);

}

//******************************************* *************************************

void Motor(int x,int y)

{   int i = 0;

 for ( i; (i < x); i ++)

 { if (y == 1)   // move forward

{ myMotor1->step(1, FORWARD, SINGLE);

 myMotor2->step(1, BACKWARD, SINGLE);}

  if (y == 2)   // move backward

 {myMotor1->step(1, BACKWARD, SINGLE);

 myMotor2->step(1, FORWARD, SINGLE);}

 if (y == 3)    // move left

  { myMotor1->step(1, FORWARD, SINGLE);

 myMotor2->step(1, FORWARD, SINGLE);}

 if (y == 4)    // move right

  { myMotor1->step(1, BACKWARD, SINGLE);

 myMotor2->step(1, BACKWARD, SINGLE);}}

}

//********************************************************************************************************************************************

这段代码非常简单。其目的是让机器人能够向左旋转90度以及向右旋转90度。该程序还能让机器人返回到起始位置:向前移动400步,然后向后移动回到起始位置。在程序循环中,我们运行Motor函数,该函数具有2个参数。第一个参数表明电机必须旋转多少步,第二个参数表明电机移动方向(向前、向后、向左和向右)。

程序运行后,该Arduino机器人应该会像上述视频显示的那样移动。

在下一篇文章中,我们将继续添加其他系统部件,比如伺服器和激光测距仪(LRF),并编写一个程序,让机器人能够自主移动。因此,敬请关注我的下一篇文章!

pYYBAGPzFWyADVB1AAAGS83r-qY435.jpg

Purnomo Nuhalim

来自墨尔本的Purnomo是一名退休人员,也是电子发烧友。目前,他正使用Arduino和Raspberry Pi从事各种开放式硬件项目的研发。除了电子学,他还对航空建模和天文学充满热情。

审核编辑黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 机器人
    +关注

    关注

    212

    文章

    29311

    浏览量

    211011
  • OLED
    +关注

    关注

    119

    文章

    6255

    浏览量

    226698
  • 激光传感器
    +关注

    关注

    2

    文章

    158

    浏览量

    21726
  • Arduino
    +关注

    关注

    188

    文章

    6485

    浏览量

    189801
收藏 人收藏
    相关推荐
    热点推荐

    机器人设计与实现》——低成本DIY机器人,一本机器人制作的经典入门书

    基础、机器人本体、电子控制设备、传感器与导航和机器人电源系统等。《机器人设计与实现》是按照搭积木的方法指导机器人爱好者如何设计、
    发表于 08-01 18:21

    智能机器人对于传感器的需求

    `  智能机器人的外部传感器大致可分为力学传感器,触觉传感器,接近传感器,视觉传感器,滑觉
    发表于 01-20 14:56

    请教利用树莓派制作六足机器人的问题

    本人新手,最近在准备制作一个六足机器人,如果利用舵机控制+遥控手柄套件的话,可以很容易就实现简单的功能。为了能让六足机器人实现更加复杂的功
    发表于 11-10 15:33

    自律型机器人制作入门.基于Arduino

    [size=0.83em]自律型机器人制作入门.基于Arduino.jpg(101.91 KB, 下载次数: 0)下载附件[color=rgb(153, 153, 153) !important
    发表于 06-23 11:18

    用于机器人或无人机的低成本激光导航传感器设计

    摘要——许多室内机器人或无人机系统,使用激光测距传感器作为他们的主要导航传感器,用来画图、定位和避障。这种系统的成本和耗电都是个问题,这对于低成本高效率的场合而言,是个障碍。本文,描述
    发表于 06-21 10:08

    机器人产品传感器越多,就越能有效避障?

      激光雷达作为自动驾驶和机器人等领域中的重要传感器,一直扮演着“眼睛”的角色,360°扫描周围环境,构建厘米级别高精度地图,为后续避障导航做辅助。  但如果仅使用激光雷达作为唯一的避
    发表于 08-27 15:44

    机器人传感器的类别和应用原理

    一般机器人系统由机械手、环境、任务和控制四个互相作用的部分组成。我们称一般安装在机器人机械手上的传感器为内
    发表于 11-08 15:55

    博智慧达激光焊缝跟踪成功与金红鹰机器人完成通讯

    相机和激光焊缝跟踪传感器及其控制装置等。博智慧达的智能激光焊缝跟踪系统可以和各种焊接机器人通讯,从而提高焊接质量。焊缝跟踪:激光焊缝跟踪系统
    发表于 04-13 10:30

    激光焊缝跟踪传感器协助川崎机器人对汽车车架焊接寻位引导纠偏

    激光焊缝跟踪传感器协助川崎机器人对汽车车架焊接寻位引导纠偏机器人在焊接车架过程中由于工装夹具及来料位置不准会出现与原先机器人的示教位置产生偏
    发表于 12-02 09:37

    LDS激光测距传感器

    比较全的传感器产品介绍 激光测距传感器获取距离信息。当激光投射到障碍物上时,会在传感器里形成光斑。同时,图像
    发表于 09-14 07:44

    机器人传感器分类方法

    一般机器人系统由机械手、环境、任务和控制四个互相作用的部分组成。我们称一般安装在机器人机械手上的传感器为内
    发表于 09-16 08:45

    使用Arduino和PAJ7620手势传感器制作手势控制机器人

    使用Arduino和PAJ7620手势传感器制作手势控制机器人,简单程序即可实现。小小的传感器可以识别各种手势。它采用内置的空间
    发表于 09-27 06:17

    光纤激光机器人切割焊接技术

    光纤激光机器人切割焊接技术 1 系统的特点   激光机器人切割焊接系统是在上海团结普瑞玛激光设备有限公司承接的国家863重点研究
    发表于 04-30 10:35 2814次阅读

    利用Parallax激光传感器制作Arduino激光机器人2部分

    2部分中,我们将添加机器人工作所需的其他系统部件,比如伺服激光测距仪(LRF),并编写一个程序,让
    的头像 发表于 02-24 09:43 1240次阅读
    <b class='flag-5'>利用</b><b class='flag-5'>Parallax</b><b class='flag-5'>激光</b><b class='flag-5'>传感器</b><b class='flag-5'>制作</b><b class='flag-5'>Arduino</b><b class='flag-5'>激光机器人</b>—<b class='flag-5'>第</b>2<b class='flag-5'>部分</b>

    什么是激光机器人激光机器人具有哪些特点?

    激光机器人是指搭载激光器机器人利用激光器所输出的高能量激光束进行各种加工或处理操作。
    发表于 06-05 09:08 912次阅读

    半导体芯片需要做哪些测试

    首先我们需要了解芯片制造环节做⼀款芯片最基本的环节是设计->流片->封装->测试,芯片成本构成⼀般为人力成本20%,流片40%,封装35%,测试5%(对于先进工艺,流片成本可能超过60%)。测试其实是芯片各个环节中最“便宜”的一步,在这个每家公司都喊着“CostDown”的激烈市场中,人力成本逐年攀升,晶圆厂和封装厂都在乙方市场中“叱咤风云”,唯独只有测试显

    汉通达
    7小时前
    206

    解决方案 | 芯佰微赋能示波器:高速ADC、USB控制器和RS232芯片——高性能示波器的秘密武器!

    示波器解决方案总述:示波器是电子技术领域中不可或缺的精密测量仪器,通过直观的波形显示,将电信号随时间的变化转化为可视化图形,使复杂的电子现象变得清晰易懂。无论是在科研探索、工业检测还是通信领域,示波器都发挥着不可替代的作用,帮助工程师和技术人员深入剖析电信号的细节,精准定位问题所在,为创新与发展提供坚实的技术支撑。一、技术瓶颈亟待突破性能指标受限:受模拟前端

    芯佰微电子
    7小时前
    229

    硬件设计基础----运算放大器

    1什么是运算放大器运算放大器(运放)用于调节和放大模拟信号,运放是一个内含多级放大电路的集成器件,如图所示:左图为同相位,Vn端接地或稳定的电平,Vp端电平上升,则输出端Vo电平上升,Vp端电平下降,则输出端Vo电平下降;右图为反相位,Vp端接地或稳定的电平,Vn端电平上升,则输出端Vo电平下降,Vn端电平下降,则输出端Vo电平上升2运算放大器的性质理想运算

    张飞实战电子官方
    22小时前
    256

    ElfBoard技术贴|如何调整eMMC存储分区

    ELF 2开发板基于瑞芯微RK3588高性能处理器设计,拥有四核ARM Cortex-A76与四核ARM Cortex-A55的CPU架构,主频高达2.4GHz,内置6TOPS算力的NPU,这一设计让它能够轻松驾驭多种深度学习框架,高效处理各类复杂的AI任务。

    ElfBoard
    1天前
    503

    米尔基于MYD-YG2LX系统启动时间优化应用笔记

    1.概述MYD-YG2LX采用瑞萨RZ/G2L作为核心处理器,该处理器搭载双核Cortex-A55@1.2GHz+Cortex-M33@200MHz处理器,其内部集成高性能3D加速引擎Mail-G31GPU(500MHz)和视频处理单元(支持H.264硬件编解码),16位的DDR4-1600/DDR3L-1333内存控制器、千兆以太网控制器、USB、CAN、

    米尔电子
    1天前
    269

    运放技术——基本电路分析

    虚短和虚断的概念由于运放的电压放大倍数很大,一般通用型运算放大器的开环电压放大倍数都在80dB以上。而运放的输出电压是有限的,一般在10V~14V。因此运放的差模输入电压不足1mV,两输入端近似等电位,相当于“短路”。开环电压放大倍数越大,两输入端的电位越接近相等。“虚短”是指在分析运算放大器处于线性状态时,可把两输入端视为等电位,这一特性称为虚假短路,简称

    张飞实战电子官方
    1天前
    363

    飞凌嵌入式携手中移物联,谱写全国产化方案新生态

    4月22日,飞凌嵌入式“2025嵌入式及边缘AI技术论坛”在深圳成功举办。中移物联网有限公司(以下简称“中移物联”)携OneOS操作系统与飞凌嵌入式共同推出的工业级核心板亮相会议展区,操作系统产品部高级专家严镭受邀作《OneOS工业操作系统——助力国产化智能制造》主题演讲。

    飞凌嵌入式
    2天前
    833

    ATA-2022B高压放大器在螺栓松动检测中的应用

    实验名称:ATA-2022B高压放大器在螺栓松动检测中的应用实验方向:超声检测实验设备:ATA-2022B高压放大器、函数信号发生器,压电陶瓷片,数据采集卡,示波器,PC等实验内容:本研究基于振动声调制的螺栓松动检测方法,其中低频泵浦波采用单频信号,而高频探测波采用扫频信号,利用泵浦波和探测波在接触面的振动声调制响应对螺栓的松动程度进行检测。通过螺栓松动检测

    Aigtek安泰电子
    2天前
    1k

    MOS管驱动电路——电机干扰与防护处理

    此电路分主电路(完成功能)和保护功能电路。MOS管驱动相关知识:1、跟双极性晶体管相比,一般认为使MOS管导通不需要电流,只要GS电压(Vbe类似)高于一定的值,就可以了。MOS管和晶体管向比较c,b,e—–>d(漏),g(栅),s(源)。2、NMOS的特性,Vgs大于一定的值就会导通,适合用于源极接地时的情况(低端驱动),只要栅极电压达到4V或10V就可以

    张飞实战电子官方
    2天前
    397

    压敏(MOV)在电机上的应用剖析

    一前言有刷直流电机是一种较为常见的直流电机。它的主要特点包括:1.结构相对简单,由定子、转子、电刷和换向器等组成;2.通过电刷与换向器的接触来实现电流的换向,从而使电枢绕组中的电流方向周期性改变,保证电机持续运转;3.具有调速性能较好等优点,可以通过改变电压等方式较为方便地调节转速。有刷直流电机在许多领域都有应用,比如一些电动工具、玩具、小型机械等。但它也存

    深圳市韬略科技有限公司
    05-06 11:34
    273

    硬件原理图学习笔记

    这一个星期认真学习了硬件原理图的知识,做了一些笔记,方便以后查找。硬件原理图分为三类1.管脚类(gpio)和门电路类输入输出引脚,上拉电阻,三极管与门,或门,非门上拉电阻:正向标志作用,给悬空的引脚一个确定的状态三极管:反向三极管(gpio输出高电平,NP两端导通,被控制端导通,电压为0)->NPN正向三极管(gpio输出低电平,PN两端导通,被控制端导通,

    张飞实战电子官方
    04-30 18:40
    467

    TurMass™ vs LoRa:无线通讯模块的革命性突破

    TurMass™凭借其高传输速率、强大并发能力、双向传输、超强抗干扰能力、超远传输距离、全国产技术、灵活组网方案以及便捷开发等八大优势,在无线通讯领域展现出强大的竞争力。

    道生物联
    05-06 10:50
    855

    RZT2H CR52双核BOOT流程和例程代码分析

    RZT2H是多核处理器,启动时,需要一个“主核”先启动,然后主核根据规则,加载和启动其他内核。本文以T2H内部的CR52双核为例,说明T2H多核启动流程。

    RA生态工作室
    04-03 17:14
    2.1k

    干簧继电器在RF信号衰减中的应用与优势

    在电子测试领域,RF(射频)评估是不可或缺的一部分。无论是研发阶段的性能测试,还是生产环节的质量检测,RF测试设备都扮演着关键角色。然而,要实现精准的RF评估,测试设备需要一种特殊的电路——衰减电路。这些电路的作用是调整RF信号的强度,以便测试设备能够准确地评估RF组件和RF电路的各个方面。衰减器的挑战衰减器的核心功能是校准RF信号的强度。为了实现这一点,衰

    斯丹麦德电子
    04-30 11:33
    747

    ElfBoard嵌入式教育科普|ADC接口全面解析

    当代信息技术体系中,嵌入式系统接口作为数据交互的核心基础设施,构成了设备互联的神经中枢。基于标准化通信协议与接口规范的技术架构,实现了异构设备间的高效数据交换与智能化协同作业。本文选取模数转换接口ADC作为技术解析切入点,通过系统阐释其工作机理、性能特征及重要参数,为嵌入式学习者爱好者构建全维度接口技术认知框架。

    ElfBoard
    04-30 09:34
    414