TWI总线模块化设计在智能机器人中的应用

发布者:qazwsx007最新更新时间:2014-01-21 来源: 21ic关键字:TWI总线  AVR  智能机器人 手机看文章 扫描二维码
随时随地手机看文章
引言
    模块化设计的机器人系统由主控制模块和扩展模块构成,主要用于检测机器人周围环境信息和机器人自身运动状态,实时获取各种传感器信息,并对机器人运动进行控制。由于要采集的数据信息很多,本系统应用了TWI总线构建模块化架构,模块均采用AVR单片机为主控芯
片:1片ATmega128(主控)、10片ATmega16、2片ATmega64和3片ATmega8。主控制器要实时地汇总并分析各单片机的信息才能对机器人下一步动作作出决策,因此,各单片机之间的通信显得尤为重要。另外,为了方便对电子罗盘进行标定,需要由主控制器向电子罗盘模块发送相应指令。也就是说,主控制模块与扩展模块之间需要实现双向多字节通信,这是一个通信难点。本系统全部模块均采用TWI通信接口,成功建立了一个主机与多个从机之间的双向多字节通信,有效提高了程序的运行效率,使得智能机器人整体架构灵活,调试方便,并且扩展性强。

1 TWI总线简介
    TWI总线是对I2C总线的继承与发展,具有I2C总线的特点,即接线简单。外部硬件只需两个上拉电阻,使用两根双向传输线(一是时钟线SCL,一是数据线SDA)就可以将128个不同的设备互连到一起。TWI对I2C总线的发展表现在:它定义了自己的功能模块和寄存器,寄存器各位功能的定义与I2C总线并不相同,且TWI总线引入了状态寄存器,从而在操作和使用上比I2C总线更灵活。两线接口TWI很适合于典型的处理器应用,以及多机间实时通信的应用。
    TWI通信接口简单,但是强大而灵活。支持主机和从机操作,器件可以工作于发送器模式或接收器模式。数据传输率高达400 kHz,且支持多主机仲裁。所有连接到总线上的设备都有自己的地址,TWI协议解决了总线仲裁的问题,7位地址信息允许有128个从机。基于以上优点,TWI通信接口非常适合应用于微控制器(俗称单片机)系统。

2 智能机器人系统的模块化结构
   
本机器人系统以ATmega128单片机为主控制模块,扩展模块包括2个红外传感器模块、6个超声波模块、2个视觉处理模块、1个温度传感器模块、2个里程计模块、1个电子罗盘模块,以及1个陀螺仪模块。扩展模块负责采集相应的数据信息,由主控制器进行处理分析。然后,
及时地对机器人下一步动作进行决策与指示。本系统的模块化结构图如图1所示。其中,超声波模块、视觉处理模块、电子罗盘模块和陀螺仪模块均采用ATmega16单片机,里程计模块采用ATmega64单片机,红外传感器模块和温度传感器模块采用ATmega8单片机。主控制模块与各扩展模块均采用TWI接口。

a.JPG



3 模块化智能机器人系统的TWI总线结构
    TWI可以工作于4种不同的模式:主机发送器(MT)、主机接收器(MR)、从机发送器(ST)及从机接收器(SR)。同一应用程序可以使用几种模式。本机器人系统中,ATmega128为主机,其他单片机均为从机设备。目的是实现主机与多片从机之间的双向通信,即主机可以发送多字节数据给从机设备,从机也可以发送多字节数据给主机。TWI的两根线在工作时必须有上拉电阻,既可以通过相关程序使能内部的上拉电阻,也可以在硬件设计时增加上拉电阻。实际应用中,最好软硬件的方法同时使用,双重保障。图2为TWI总线的硬件结构接线图。

b.JPG



4 TWI通信的软件设计
4.1 主机的软件设计
   
本系统中,主机ATmega128采用轮询TWINT位的方式。主机主程序中的系统初始化主要包括定时器初始化和TWI总线初始化。主机主程序中写函数TWI_write()的详细流程如图3所示,读函数TWI_read()的详细流程如图4所示。一次传输过程包括一个START信号、一个SLA+R/W信号、一个或多个数据包、一个STOP信号。每发送一个信号或一个数据包,均要检验状态寄存器TWSR中的状态码,如果状态码正确,才发下一个信号,若不正确则转出错处理。通过软件编程技巧,可以在一次TWI通信中,实现主机与从机之间的多字节数据传输。同时,在主机主程序流程图中可以看到,在一个循环内,可以实现主机与从机之间的双向数据传输。

c.JPG


4.2 从机的软件设计
   
对于所有从机,均采用中断方式。采用中断方式时,当TWINT位置位(硬件置位),则程序会自动跳到中断向量,执行中断服务程序。在等待TWINT置位期间,从机可以执行数据采集工作或执行其他程序,从而有效地提高了程序的运行效率。中断服务程序中,只需检验TWSR的状态码,读取或写入数据寄存器TWDR,这样来完成与主机的数据通信。从机TWI中断服务程序流程图如图5所示。

d.JPG


    对于不同的从机,硬件方面需要注意的是SCL、SDA两根线位于单片机的I/O端口不同,例如ATmega16的SCL、SDA分别位于PC0、PC1;ATmega8的SCL、SDA则分别位于PC5、PC4。软件方面,需要给不同从机的TWAR赋予各自的从机地址。[page]
4.3 TWI总线的部分程序
   
为了增强程序的可读性,将各种模式所需的TWI总线状态进行宏定义。对于主机,省略一些数据处理和其他功能程序,最简化的主程序如下:
    e.JPG
    g.JPG
    h.JPG

5 TWI通信的注意问题
   
由于TWI通信存在主机与从机模块,在单独对主机程序单步调试时,主机单步运行,而从机处于全速运行,主从机步调不一致,单步调试结果显示TWINT位不置位或者TWSR状态码不正确,误认为程序有问题。实际上,程序在全速运行时是可以实现通信的。
    另外,根据功能要求,在一次TWI通信中,例如要求主机给从机发送数据的字节数是1字节或2字节,此时,在从机中断接收中,需增加相应接收标志位flag1、flag2,通过各自的标志位分清接收的不同字节的数据,避免产生不必要的混淆与错误。
    编程中,要严格按照TWI说明手册中的内容,不同的TWSR状态码时,对TWDR执行相应的操作,对TWCR写入相应的数值。否则,有一点出入,都会造成TWI通信的失败。

结语
   
本智能机器人系统采用TWI总线构建了模块化架构,优点是系统灵活、扩展性强。TWI通信方法是主机ATmega128器件程序采用查询方式,其他多片从机器件程序则采用中断方式。本文介绍了在一次TWI传输过程中,传送多字节数据的编程方法,并且建立了主机与多从机之间的双向多字节数据通信,可以将机器人各传感器模块采集到的数据实时发送至主控制器进行处理,有效地提高了程序的运行效率。

关键字:TWI总线  AVR  智能机器人 引用地址:TWI总线模块化设计在智能机器人中的应用

上一篇:AVR单片机I/O口使用注意事项
下一篇:如何避免AVR单片机熔丝位锁死

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

avr内部EEPROM实验
学习了AVR内部EEPROM的使用。 内部flash中保存的是烧录进去的程序。 内部EEPROM可以保存数据,并且断电后还保存着。 内部SRAM可以保存变量数据,断电后不保存。 仿真图片 程序代码 #include iom16v.h #include macros.h #include delay.h #define uchar unsigned char #define uint unsigned int uchar led7 ={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //共阳7段数码管显示0-9对应的8bit uchar temp; vo
[单片机]
<font color='red'>avr</font>内部EEPROM实验
Lcd.h头文件下载-字符型液晶LCD的AVR单片机驱动程序头文件
/***************************************************************************** 单 位:广西民族大学物理与电子工程学院07物本班 文件名称:Lcd.h 文件标识:_LCD_H_ 摘 要:字符型液晶LCD的AVR单片机驱动程序头文件 当前版本:V2.0 *****************************************************************************/ #ifndef _LCD_H_ #define _LCD_H_ #include BaiYuAvrKuD
[单片机]
AVR单片机C语言入门知识
1、基本语法介绍 一个简单的AVR程序 #include iom16v.h #include macros.h void main() { PORTA = 0x0F; //给PA口赋值,让PA口低四位为1,高四位为0 while(1) ; }本程序的作用是把PA口的值设为0x0F。 1、程序中以井号开头的语句#include iom16v.h 是包含特定的头文件,叫预处理指令,i0m16v表示使用的是mega16,macros.h包含了必须的avr操作命令。 2、C语言的程序是由函数构成的,如上面的那个void main(),前面的void表明函数没有返回值。每一个c程序里面里有且只有一个main()函数,系
[单片机]
基于AVR单片机的多功能智能小车系统设计
第1章 绪论 1.1 研究的背景和意义 智能车辆技术集成了机械、电子、自动化等多学科的发展,代表了现代技术发展的前沿。是未来车辆发展的必然趋势。在实际生活中,智能车辆通常需要根据人们的预设程序完成跟踪和避障。其中,大多数依靠传感器技术来获取路线和周围的环境。 本文以AVR作为控制核心,设计制作了智能寻线小车。它使用光线对管和红外传感器收集周围的各种信息,自动沿着地面设定的路线行走,并且可以在行走过程中自动躲避障碍物。智能小车采用前轮驱动,两轮采用直流电机,后轮采用万向轮。为了确保小车平稳正常地运行,我们采用PID算法控制直流电机地运行。本系统具有操作简单、成本低、可靠性高、结构紧凑等特点 。 1.2 国内外研究现状及发展前
[单片机]
基于<font color='red'>AVR</font>单片机的多功能智能小车系统设计
avr eeprom保护方法
在项目中复制出来的程序,使用时可能有些地方需要修改。 编译环境:WinAVR-20060421 + AVR Studio 4.12.498 Service Pack 4 基本思路:每份写到EEPRM的数据,都做三个备份,每个备份的数据都做CRC16校验,只要系统运行中出错,错误地修改了EEPROM数据, 那么根据校验字节就知道哪个备份的数据被修改了,然后用正确的备份覆盖出错的备份,达到数据恢复的目的。 EEPROMSave.h 文件: #define EepromPageSize 64 //页容量定义 #define EepromPage0Addr 0x0000 //各个页的其始地址定义 #de
[单片机]
AVR微控制器蓄电池充放电控制器的设计
本设计采用AVR单片机Mega16L作为核心,可同时控制两块539CH-1型蓄电池的充、放电过程。Mega16L通过串行总线接收上位机的命令,然后通过SPI总线将数据发送给TLV5638。单片机通过多路模拟开关CD4053将TLV5638的两路D/A输出送入信号调整电路,从而完成对充放电电流的控制。放电过程中,Mega16L通过控制8D锁存器74LS573和复合管阵列ULN2081控制放电电阻接入。系统框图如图1所示。 图1 系统原理框图硬件设计   硬件系统包括串行通信电路、充电和放电控制电路、继电器驱动电路等模块。 通信电路   单片机通过串口与上位机通信。Mega16L端口为TTL电平,而上位机串口为RS232C标准接口
[单片机]
<font color='red'>AVR</font>微控制器蓄电池充放电控制器的设计
英国研发智能机器人 借助传感器技术帮人导航
  近日,来自外媒的消息。英国伦敦大学国王学院和谢菲尔德哈勒姆大学的研究者,通过技术研发,制造出一种可以通过搭载的触觉传感器和振动器帮人们导航的机器人。使用者可以牵引这一机器人,接受其指引进行行动,适合于盲人、消防员等人士的使用。   据悉,这一小型移动机器人上配有传感器用来指路。使用者站在其后面1米左右的地方,通过手柄来接受机器人的指引。同时在使用时,使用者还需要在手臂上佩戴一只特别的袖套,上面会配置一些微型振动器。袖套会将机器人发回的信号转化成详细的数据,盲人、消防员等使用者经过训练后都可以理解这些数据的含义。甚至这些振动还可以提供所发现物体的大小、形状甚至硬度的相关数据,使其引导的使用者在可视困难的条件下行动更加安全。
[机器人]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

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