基于H桥控制的移动机器人系统方案

发布者:科技狂人最新更新时间:2013-02-16 来源: 21IC 关键字:移动机器人  ARM处理器  单片机 手机看文章 扫描二维码
随时随地手机看文章

引言

近年来随着人工智能技术、计算机技术等相关技术的发展,对移动机器人的研究越来越广泛。本设计是采用OpenWrt操作系统的移动机器人,它可实现多种不同功能,如探测险情、巡视、图像采集、定位、无线通信等。它还可以作为各种智能控制方法(包括动态避障、路径规划、群体协作策略)的良好载体,开展研究。

1 系统方案

采用2层架构。上层以ARM处理器S3C2440为核心,选用MINI2440开发板作为上层的主板,负责图像采集,并将图像通过WiFi方式发送给远端的PC机。WiFi无线通信是利用PC机与无线路由器搭建环境平台共同实现的。

下层是以51单片机为核心的单片机控制板,由51单片机及外围电路组成。下层主要负责机器人移动控制,传感器数据处理。51单片机通过I/O口输出PWM信号控制直流电机的转速和转向,实现机器人的前进、停止、左转和右转。单片机接口电路上挂接了1个超声波测距模块、1个人体红外感应模块、1个步进电机模块。超声波测距模块用来实现机器人避障。在嵌入式智能的前端安装了一个步进电机,而超声波测距模块安置在步进电机的转轴上,步进电机不停地来回转动,超声波测距模块也随之转动。这样用1个超声波测距模块就可实现多方位测距,从而减少了超声波测距模块的数量。

机器人主要由硬件系统和软件系统构成。硬件系统主要包括:ARM处理器、单片机、外围接口电路、机器人底盘以及电源等。其中ARM处理器是上层的核心,51单片机是下层的核心。软件包括:嵌入式Linux操作系统、外设驱动程序、Linux应用程序以及单片机应用程序等。系统没有选用通常的嵌入式Linux版本,而是另辟蹊径,选用一种独特的嵌入式Linux发行版之一OpenWrt作为操作系统。OpenWrt提供了一个完全可写的文件系统及软件包管理,它通过简单易用的方式,降低了嵌入式Linux开发的门槛,提高了系统软件开发的效率。

嵌入式智能移动机器人的工作流程为:传感器模块实时采集周围环境信息,将此数据信息传输到机器人控制系统中,单片机通过数据分析获取有效数据,从而获知机器人与障碍物的相对位置,然后根据此位置信息产生控制信号;单片机产生PWM信号控制直流电机来控制机器人转向,从而达到机器人自主“行走”的目的。下层的单片机与上层的ARM处理器通过串口来通信,ARM主板可将下层单片机控制板的工作数据通过无线WiFi的方式传输到远端的PC机。ARM主板可以不间断地将USB摄像头采集的清晰现场图片发给远端的PC控制终端。

2 系统硬件设计

硬件系统主要包括:ARM处理器、单片机、外围接口电路、机器人底盘以及电源等,其中ARM处理器是上层的核心,51单片机是下层的核心。硬件结构框图如图1所示。

图1 硬件结构框图

由图1可以看出,系统主要由以下模块构成:图像采集模块、无线通信模块、超声波测距模块、红外感应模块、MINI2440、单片机STC89C52以及直流电机驱动模块等。下面重点介绍直流电机驱动模块。

直流电机驱动模块以L298N芯片为核心,该芯片具有带载能力强的特点。直流电机驱动电路如图2所示。驱动电路芯片的外围电路主要是由二极管构成的电桥电路与2组电机并联连接,以达到控制电机按照设定运转的目的。[page]

图2 直流电机驱动电路

电机共有4路PWM输出分别作为左右轮的驱动,而通过2路PWM输出可控制一个电机,两个电机以并联方式连接。

当L298N芯片使能信号ENABLE为高时,输出才随输入变化,否则为高阻态,所以焊接时,ENABLE引脚及电源引脚VS均接电源VCC.

具体驱动过程为:通过编程由控制芯片经PWM发出驱动信号,PWM输出作为L298N的输入,经L298N转换输出控制信号使电机转动,从而实现电动机的驱动。

PWM输出信号的高低则可以控制直流电机转速。当占空比加大时,转速升高;占空比减小时,转速降低;当PWM信号输出占空比为0时可控制电机的停止。

当左轮停止,右轮转时,小车左转;当右轮停止,左轮转动时,小车右转。而2路PWM输出的正负顺序转换则可控制电机的正反转,进而控制小车的前进和后退。

3 系统软件设计

软件部分是移动机器人的智能化的体现,它控制移动机器人所有的运行状态。

操作系统采用了OpenWrt操作系统,该系统简化了Linux内核的定制过程,而且允许开发者使用软件包的概念来定制嵌入式设备,从而简化了嵌入软件开发的流程。

程序在Kubuntu CodeBlock IDE集成开发环境中进行编写,用Openwrt编译出来的ARM eabi交叉编译工具编译,再经过终端SercurtCRT通过串行口向移动终端烧入交叉编译后的程序以及系统。

应用软件控制小车的避障、摄像、发送视频等行为。通信方面通过在主机端用vsftp软件架设FTP服务器,并通过IEEE 802.11g(RTL8187)无线网卡建立无线局域网。这样,移动终端就可以接收上位机的控制命令到达指定地点拍照并发送图片,而PC机终端就可以接收通过WiFi传送过来的图片。

系统软件结构如图4所示。

图4 系统软件结构

系统驱动程序利用MINI2440开发板提供的例程进行改写,并编译进内核。

摄像头控制软件mjpgstreamer由Openwrt以软件包形式提供,通过端口8080输出为MJPEG格式的图像。无线通信部分内容为Linux下socket编程,为客户端提供远程控制支持。无线通信的部分代码如下:

int sendstring(char *addr,int port,char *sendchar){

struct sockaddr_in s_addr;//定义sockaddr_in结构体类型保存socket信息

int sock;

int addr_len;

int len,i;

if ((sock=socket(AF_INET, SOCK_DGRAM, 0))==-1) {//创建socket

perror(“no socket”);

exit(errno);

}

else

printf(“create socket. ”);

s_addr.sin_family=AF_INET;//TCP/IP地址族

if (port)

s_addr.sin_port=htons(port);//设置端口号

else

s_addr.sin_port=htons(10001);

if (*addr)

s_addr.sin_addr.s_addr=inet_addr(addr);//设置IP

else {

printf(“Send a message must have a receiver! ”);

exit(0);

}[page]

addr_len=sizeof(s_addr);//IP地址长度

len=-1;//判是否发送成功标志

for (i=0;i<4;i++) {//发送

if(len<0)len=sendto(sock,sendchar, strlen(sendchar), 0,(struct sockaddr *) &s_addr, addr_len);

else {printf(“send success!”);return 0;}

}

printf(“send error!”);

return 0;

}

系统通过MINI2440驱动并控制摄像头,通过串口控制底层的单片机,驱动无线网卡并连接,运行服务端,提供UI界面。编译完成后的Openwrt效果图如图5所示。

图5 编译完成的OpenWrt效果图

结语

本系统选用的OpenWrt操作系统,该系统适合移动机器人的设计要求,系统提供的软件包简化了系统开发流程,提高了开发效率。经过实际调试运行,系统完全可以达到设计要求,可以用于探测险情、图像采集、目标定位、无线通信等领域。

关键字:移动机器人  ARM处理器  单片机 引用地址:基于H桥控制的移动机器人系统方案

上一篇:基于STM32的税控器方案
下一篇:数字电视软硬件分离原理与实现

推荐阅读最新更新时间:2024-03-16 13:18

51单片机普通IO口模拟IIC(I2C)接口通讯的程序代码
I2C总线是Philips公司提出的一种集成电路IC器件之间相连接的总线协议,其目的是使电子系统(不只 限于单片机系统)各个IC器件之间的连线变得容易。因为使用传统的并行总线在IC器件之间连接,往往会使得IC之间连线较多,显得非常复杂。而I2C总线 则使IC器件之间只需SDA、SCL两条连线就可以传送数据,因而十分方便。由于I2C在印刷体中不容易书写(需要上标),所以实际书写时,还常见到 IIC、I2C等书写方法,本文采用IIC的写法,敬请注意。关于IIC总线的知识,请参阅相关书籍,此处不再做进一步介绍。 I2C总线是Philips公司提出的一种集成电路IC器件之间相连接的总线协议,其目的是使电子系统(不只 限于单片机系统)
[单片机]
51<font color='red'>单片机</font>普通IO口模拟IIC(I2C)接口通讯的程序代码
基于单片机AT89S52的电动车跷跷板设计
0 引言 本系统设计要解决的电动车跷跷板问题,要求电动车能够在规定时间内到达跷跷板的中心点C处,并保持平衡,随后电动车到达跷跷板的末端B处,停留之后返回始端A处。另外,如果将跷跷板重新配重,则要求电动车在规定范围内驶上跷跷板,同时,在规定时间内也能实现平衡,如果再加一块重物之后跷跷板重新达到平衡。 1 系统设计 1.1 总体设计 本系统采用单片机作为控制系统的主模块,实现系统控制与信号检测,系统的总体框图如图1所示。主要包括单片机模块、电机驱动模块、步进电动机、平衡检测模块、光电检测模块、液晶显示模块以及红外遥控模块。 系统通过平衡检测来判断电动车是否处于平衡状态,使电动车停留在C处附近,采用光电检测模块使电动
[单片机]
基于<font color='red'>单片机</font>AT89S52的电动车跷跷板设计
ARM处理器启动代码的分析与设计
ARM体系结构 目前,ARM系列的通用32位RISC微处理器有ARM7、ARM9、ARM9E、ARM10等多个产品,这些处理器可以工作于7种模式下。除User模式以外的其它模式都叫做特权模式,除User和System以外的其它5种模式叫做异常模式。大部分应用程序都在User模式下运行,当处理器处于User模式下时,执行的程序无法访问一些被保护的系统资源,以利于操作系统控制系统资源的使用,也不能改变模式,否则就会导致一次异常。对于SySTem模式,任何异常都不会导致进入这一模式,而且它使用的寄存器和User模式下基本相同,主要是用于有访问系统资源请求而又避免使用额外的寄存器的操作系统任务。在特权模式下,它们可以完全访问系统资源
[单片机]
<font color='red'>ARM处理器</font>启动代码的分析与设计
单片机C8051F2xx在锅炉水处理控制中的应用
0 引 言     自然水中通常含有钙镁等离子,俗称硬水。在锅炉用水中需要去除水中的钙镁离子而形成软水以防止锅炉结垢。在生产中锅炉水的软化处理是一项重要的安全指标,所以,对于锅炉水处理的技术要求愈来愈高。单片机以其较高的灵活性和稳定性广泛应用在自动控制领域。本文所设计的锅炉水处理控制装置,由高低水位控制进水阀开关,选用单片机为核心,C语言编程实现循环时间电路控制。该装置已成功应用于成都富华水处理公司。 1 软水生产工艺过程及对自控系统的要求 1.1 生产工艺过程     软化水设备的工作原理是基于阳离子交换原理。水由交换柱上流下,与交换树脂中的盐离子充分接触达到把原水中的杂质、易结垢的重金属阳离子去除掉。其生产工艺
[单片机]
27-基于单片机的电梯仿真系统
具体实现功能 由AT89C51单片机+数码管+矩阵按键模块+LED灯等构成。 具体功能: (1)初始时电梯在1楼,当有按键按下时电梯到相应楼层; (2)电梯状态要有指示灯显示,即电梯目前运行到达楼层的实时显示,电梯升降的状态显示等。 (3)电梯内要有4层电梯的按键,还要有门的开关按键,并且电梯门需要有相关的动作(指示灯指示),电梯外每一层都要有上下的按键,除了第1,4层 (4)电梯上行的时候按下行按键,电梯不会停止,继续上行,向下反之。 单片机介绍 51单片是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得
[单片机]
27-基于<font color='red'>单片机</font>的电梯仿真系统
赛普拉斯推出全新汽车用 MCU 解决方案
电子网消息,赛普拉斯半导体公司今日宣布其 Traveo™ 汽车用 MCU(微控制器)产品推出全新系列,该系列配备了更大的存储空间,以便支持具有 3D 图像功能和多达 6 个传统仪表的混合仪表板,以及平视显示器。高集成度、 单芯片S6J32xEK 系列器件提供先进的 3D 和 2.5D 图像引擎,并具有赛普拉斯低引脚数 HyperBus™ 存储接口,以便扩展。这一新系列产品进一步扩充了赛普拉斯品类丰富、提供出众的差异化系统性能的汽车产品组合,包括 MCU、无线射频、电容式触控解决方案、存储器和电源管理 (PMIC) 等。 赛普拉斯汽车业务部产品市场营销总监 Mathias Braeuer 表示:“为了吸引消费者,汽车制造商越来越
[半导体设计/制造]
基于单片机的倒车后视系统设计
  随着中国经济的快速增长和汽车价格的持续下降,越来越多的家庭拥有自己的汽车。然而,在享受汽车给人们带来便利的同时,由于倒车时驾驶员视觉上存在死角或视线模糊而引起倒车困难而让人难以忍受。因此,人们迫切需要有倒车后视装置辅助驾驶员快速准确地倒车。目前,倒车后视系统主要采用超声波测距或后视摄像技术。超声波测距的优点是可以测得准确的距离,缺点是对车后的路坑、山崖、凸出的某些障碍物无法感应;摄像技术却可以获得这些障碍物的直观图像,但无法测得准确的距离。结合这两种技术的特点,本文设计了一种能同时显示障碍物的图像及准确距离的后视系统。 1 系统硬件设计   为了在系统显示终端同时显示障碍物的图像及安全距离信息,必须让图像及距离信号同步。系统采
[单片机]
基于<font color='red'>单片机</font>的倒车后视系统设计
飞思卡尔:覆盖所有微控制器技术的解决方案
一、为多个不同市场提供全面8/16/32位MCU 飞思卡尔为多个不同市场提供全面的8/16/32位MCU产品系列。这些市场包括汽车市场、个人用户市场和工业市场等。还提供广泛的控制器产品系列,从入门级的超低端8位设备(如KA和QD MCU系列)直到高性能的32位产品系列(如ColdFire系列嵌入式控制器)。同时还提供大量的功能性外围设备,并将继续向微控制器IP产品中增加价值。飞思卡尔也是解决方案创新领域的领导者,开发的解决方案包括带有集成以太网和USB接口的32位设备。 嵌入式电子产品正在以前所未有的速度演进,对性能和功能的需求也日益增加,进而推动了微控制器产品链的设计工作。因此,工程师需要轻松地从初级MCU移植到更高端的M
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved