《电子技术应用》
您所在的位置:首页 > 嵌入式技术 > 业界动态 > 制作机器人常用的单片机性能特点及使用经验(下篇)

制作机器人常用的单片机性能特点及使用经验(下篇)

2015-11-03
关键词: 单片机 机器人 avr ARM

       很多接触机器人单片机不久的朋友面对种类繁多的单片机常会困惑,到底它们之间有何不同?制作机器人到底用哪种单片机控制比较好?当我们选择了一种 单片机后,有何捷径能迅速掌握并应用这种单片机?本文尝试用一种通俗易懂的方法解读上述问题,并设计了一种有深度的单片机控制机器人的实例,希望能起到抛 砖引玉的作用。我与大家分享我使用单片机的一些经验,希望能让初学者少些迷茫,让已经入门的朋友思维开阔。

  在前文中我们已经讲到:

  一 单片机和CPU、个人电脑的区别和联系

  二 在单片机诞生前人们用什么控制机器人

  三 入门首选 AT89S51系列单片机

  下面将就继续前文

  四 爱好者制作机器人首选 AVR系列单片机

  1 简介

   AVR单片机是1997年由ATMEL公司研发出的增强型内置Flash的RISC(Reduced Instruction Set CPU) 精简指令集高速8位单片机。高可靠性、功能强、高速度、低功耗和低价位一直是衡量单片机性能的重要指标,而AVR单片机是典型高性能单片机。

   早期单片机,比如51单片机为了提高可靠性(防止数据误读或跑飞)采用较高的分频系数对时钟分频,使得指令周期长,执行速度慢。例如51单片机需要12 个晶振周期才能组成1个机器周期,而且很多指令需要2个机器周期才能执行。AVR单片机的推出,彻底打破这种旧设计格局,废除了机器周期,采用精简指令集,取指周期短,又可预取指令,实现流水作业,故可高速执行指令。AVR单片机在12个晶振周期中能执行12条指令,从这个角度看,如果晶振频率相同,AVR的速度是51的12倍到24倍。

  AVR有32个通用寄存器,在进行大量复杂运算时,AVR的32个寄存器可相当于51的32个累加器,克服了51系列单片机只有单一累加器数据处理造成的瓶颈现象,在复杂运算时速度比51快5倍以上。由此可看出,51与AVR相比是多么慢,AVR是多么快。

   AVR 系列单片机多内部集成了多路AD转换器、电压比较器、ISP、I2C、JTAG总线电路、UART串口、大功率IO口、看门狗等实用电路,并且很多AVR 单片机型号有EEPROM、FLASH、SRAM三种存储器,可以实现实时修改程序存储器中的内容,即AVR单片机可以自己修改自己的程序。同时AVR一 般能工作在宽电压范围(2.7~6.0V),有的居然可以在1.8V电压下工作。以上这些性能只是AVR众多性能中的一部分,然而已经让51系列单片机望 尘莫及了。

  如此高性能的单片机价格居然和51单片机差不多,比如ATmega8价格为8元左右,ATmega16在13元左右,这是AVR有极高性价比的真实写照。

128.jpg

  2 性能

  AVR家族人丁兴旺,包括ATinyAVR(微小型)、低功耗类、ATmegaAVR高中低档5类单片机。它们都基于同一核心技术,但在内部集成的电路多少上有不同。不论你要做电子手表还是视频处理,都有一款合适的AVR单片机能满足你的需要。

本文只列出ATmega16中档单片机的性能:

  16KB的FLASH程序存储器;512B的 EEPROM;1KB的SRAM;32个快速寄存器;32个大功率IO口;20个中断;2个外部中断口;有SPI、SUART、I2C总线接口;2个8位 定时器;1个16位定时器;3个PWM通道;有实时时钟RTC;8个10位AD通道;电压比较器;看门狗;内置时钟振荡器;JTAG接口;ISP在线编 程;电压范围为2.7V-5.5V;外部时钟晶振0-16MHz;有PID和多种贴片封装。

  AVR的IO口能输出20mA和吸收40mA的电流,不仅可直接驱动LED,甚至可直接驱动微型直流减速电机。而且AVR的IO口可编程设置成输入、输出、高阻态状态,是真正的3态IO口。和51相比使用 AVR开发产品你会发现前所未有的方便和自由。

  AVR单片机可上操作系统,比如UCOS2、Linux等,自主编程实现操作系统功能也很容易。

  根据任务具体需要选择最合适的单片机,使单片机资源充分利用,使系统性价比达到最高,同时兼顾未来扩展需要,不要一味选用高性能单片机,这就是选单片机的原则。

  用ARM+操作系统做超声波测距仪——杀鸡用了牛刀。用AVR中档单片机做机器视觉——有些吃不消。如果把它们调换一下,一切就恰到好处了。

  3 使用方法

  学AVR单片机的好书是《AVR单片机嵌入式系统原理与应用实践》,封面见下图。

   AVR一般采用CVAVR 编程软件编程,也可用GUN GCC AVR、AVR Studio软件编程。可采用汇编或C语言编程。烧程序前先输出HEX文件,然后用SLISP(双龙ISP)软件加载,再通过ISP编程线或者25针并口 连接线烧入AVR单片机,支持在线编程。

  由于AVR单片机最小系统很简单,就是电源+晶振(可不用)+LED+ISP接口(通电就运行,断电就停止,不用复位电路),因此任何初学者都可以用面包板搭出AVR最小系统,并且编程实践。

  4 实践经验

   使用AVR单片机时注意要正确设置熔丝位,SLISP软件就可设置,熔丝位可决定单片机是采用外部晶振还是采用内部时钟振荡器,如果熔丝位设置为采用外 部晶振,而电路中没有接入晶振,则AVR程序不能运行。很多初学者忽视了这一点,他们的AVR系统不能运行却找不到原因。再有就是AVR的IO口在使用前 需先编程设置其状态,否则你将发现程序在运行,但IO口没信号。

129.jpg

  4 应用举例

130.jpg

131.jpg

      五 高级机器人控制器 ARM

  1 简介

   ARM是一个公司名,他们基于同一内核设计了很多高性能处理器,这些处理器都叫ARM。该技术被很多公司购买后生产出了集成很多功能电路的ARM芯片, 使得ARM成为高性能单片机。ARM一般为32位单片机,适于处理大量复杂数据,很多ARM装上了UCOS2、Windows CE、Linux操作系统,能够同时运行多个程序。ARM广泛应用于手机、MP3、GPS导航仪、吸尘机器人等产品上。

132.jpg

  六 音频视频处理首选 DSP

  1 简介

   DSP数字信号处理(Digital Signal Processing,简称DSP),它是一种独特的微处理器,是以数字信号来处理大量信息的器件。其工作原理是接收模拟信号,转换为0或1的数字信号, 再对数字信号进行修改、删除、强化,并在其他系统芯片中把数字数据解译回模拟数据或实际环境格式。它不仅具有可编程性,而且其实时运行速度可达每秒数以千 万条复杂指令程序,远远超过通用微处理器,是数字化电子世界中日益重要的电脑芯片。它的强大数据处理能力和高运行速度,是最值得称道的两大特色。

  在高速小车巡线、语音识别等领域DSP被广泛应用。但如果仅用DSP检测几个碰撞开关、控制几个电机显得大材小用。

  七 新兴控制器 FPGA

  1简介

   FPGA(Field-Programmable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一 种半定制电路而出现的,系统设计师可以根据需要通过可编辑的连接把FPGA内部的逻辑块连接起来,就好像一个电路试验板被放在了一个芯片里。简单说,如果 使用者想开发一个用简单数字逻辑电路就能控制的小车,又嫌搭电路麻烦,他就可用软件给一个FPGA编程让它实现数字电路功能去控制小车。即FPGA可被用 来模拟各种电路。有的FPGA甚至能模拟51单片机的运行。因FPGA通过编程即可修改它模拟的电路结构,因此在系统实验、调试中很方便,很多爱好者尝试 用FPGA做机器人控制器。

  八 更多可供选择的单片机

  我们选择学一款单片机前首 先要考虑自己面对的实际任务需要什么性能的单片机,然后在众多性能满足要求的单片机中作出选择。此时我们还要考虑不同单片机的 “应用广泛程度”,比方说:当我们要做一个电子大赛智能小车,有AVR单片机和PIC单片机可满足任务需要,如何在两者中作出选择需要考虑哪种单片机学起 来比较容易、学习资料容易获取、可供参考的程序和案例更加丰富、哪种单片机更容易获得编程软件和下载器等。笔者感觉要想做智能小车,AVR单片机的资料比 较丰富。

       世界上有种类繁多的单片机,它们当中绝大多数都可用来控制机器人,但存在一个是否合适的问题。比如PLC是可编程控制器,当然可以用来控制爱好者手 中的机器人,但PLC多用于工业控制领域,设备庞大价格昂贵,同时不易获得用PLC控制小型机器人的资料。爱好者选择学一种单片机前,首先得明确自己要用 单片机干什么,然后再选最合适的单片机学习。学单片机重在学精一两种单片机,如果有人泛泛地学ARM、PLC、PIC、凌阳、DSP、FPGA等所有有名 的单片机,那么他将无法拥有真正的深度开发能力。所谓深度开发,以AVR单片机为例,初学者可以用它实现小灯交替闪烁,中级技术人员可以用它控制参加比赛 的机器人,而真正的高级开发人员可以用AVR实现机器视觉、无人机自动驾驶、坦克火控系统……

  AVR单片机过时了吗?

   有初学者甚至中级开发人员认为因ARM性能一般比AVR性能高,因此ARM将代替AVR,AVR将退出历史舞台,或者MSP430将代替51系列单片 机,或者FPGA将取代所有单片机等。这种看法不对,因为不同单片机都有各自的特点和优点,没有哪种单片机是完美的,在不同场合用最合适的单片机,发挥它 们各自的特长,而不存在ARM一统天下,取代所有其他型号单片机的可能性。试想,原本十几元的电子表因为采用ARM控制买到几百元,谁能受得了?因此不要 觉得 AVR已经过时,学完51就直接学ARM,或者觉得学51没用,直接学ARM,否则你将碰壁。

  MSP430系列单片机:比较适于 机器人开发,是美国德州仪器推向市场的一种16位、具有精简指令集的、超低功耗的混合信号处理器。具有Flash存储器,中断源较多,并且可以任意嵌套, 使用时灵活方便。MSP430系列单片机的电源电压采用的是 1.8~3.6V 电压。因而可使其在1MHz的时钟条件下运行时,芯片的电流会在200~400uA左右,时钟关断模式的最低功耗只有0.1uA。MSP430系列单片机 的各成员都集成了较丰富的片内外设。它们分别是看门狗、模拟比较器、定时器、串口0、1、硬件乘法器、液晶驱动器、10位/12位ADC、16位 Sigma-Delta AD、直接寻址模块(DMA)、IO端口、基本定时器(Basic Timer)等的一些外围模块的不同组合。MSP430 系列单片机引进了JTAG技术,不仅使开发工具变得简便,而且价格也相对低廉,并且还可以实现在线编程。

  PIC单片机:可用于机器人开发,是8位单片机,产品种类丰富,采用精简指令集,有不错的开发环境,引脚驱动能力强,可直接连接继电器控制强电。自带看门狗,有睡眠和低功耗模式。很多性能不如AVR和MSP430系列单片机,但因其有特殊优点,也被广泛应用。

   凌阳单片机:比较适于机器人开发,以16位计算机为核心,集成不同规模的RAM、ROM和其他丰富的功能电路,使用者可以根据自己需要选择集成了特定功 能电路的凌阳单片机。凌阳单片机指令系统提供出具有较高运算速度的16位,16位的乘法运算指令和内积运算指令,为其应用添加了DSP功能,因此凌阳适合 进行语音识别。在我国凌阳单片机在学校比较常见,应用实例较多,可作为机器人爱好者选用的单片机。

  九 实例:用AVR单片机创造机器生命

  1 什么是机器生命

   机器生命就是一个能自主生存的机器,一个自动为生存下去而奋斗的机器。对于机器生命来说,生存的含义就是不断电,继续运行。机器生命具有完全自主决策、 自主行动、活动于未知世界、不需人类参与就能持续运行并且自我维护等特征。影片《终结者》中的天网就是超级机器生命。《霹雳5号》描述了一个机器人从无生 命到有生命的过程。

  N.维纳(Norbert Wiener,1894~1964)写《控制论》时创造出第一个机器生命Wiener龟,这个机器龟仅有2个电子管组成的模拟计算机,但它却能实现真正的 乌龟觅食、睡觉、探索、逃避等行为,其表现如同一个有生命的生物一样。机器龟上面有太阳能电池,当自身电池快用完前,机器龟乐于寻找一个光线充足的地方充 电,充满电后可能找个地方睡懒觉,或者探索未知世界,它有避免碰撞和避免到倾斜地方的趋向,我们无法预知它的行踪,因为它不是按照程序运行的,就如同我们 自己一样。后来维纳在他的机器龟上又加了一个电子管,三个电子管连接成简单的神经网络,通过对机器龟训练,维纳通过摇铃可控制机器龟的行为。正如有生物学 家训练狗使得狗听到摇铃声后就流口水。

133.jpg

  2 我们可以自己动手做一个机器宠物

   我们今天有先进的单片机,制作一个更好的机器生命其实不难。机器生命远比按固定程序运行的机器人好玩,就如同宠物狗比玩具狗好玩一样。我们设想的机器生 命可以是一个小型履带式机器人,带有太阳能板,能感受光线强弱,障碍物距离和碰撞,为了实现人机互动,该机器生命具有语音识别功能。试想你学习一天,回到 寝室,叫一声TONY,你的机器宠物转身飞快跑向你,那种感觉只有宠物的创造者才能体会……

134.jpg

  3 如何实现?如何设计电路?如何设计结构?

   这个机器生命方案采用ATmega16单片机做控制器,单片机的8路AD通道和其余24个IO接口都被使用。AVR单片机AD转换频率高于音频,可以用 来进行简单的语音采集。机器生命的程序较复杂,而AVR单片机适合进行快速复杂运算。本设计的电路板上除了ATmega16单片机外,还有2个 LG9110 电机驱动芯片、2个LM386音频功放芯片,和LM393电压比较器芯片,再加上少量电阻电容和三极管,电路简洁,适合初学者和中级爱好者动手制作。

  LCD采用通用1602模块,支持3位控制线4位数据线,如果你采用IO口复用技术,可用6条线控制LCD模块。

  此方案涉及光电检测、自动充电、语音识别、超声波测距、键盘(4个碰撞开关)、LCD液晶显示、电机驱动等技术,这些都是动手做简单机器人的基本技术,如果爱好者能把这个机器生命做好,那么你的电路设计、调试经验和编程能力都会有很大的提高。

  这个机器生命的技术含量相当于20世纪70年代国际机器人领域的先进水平。当时已经有很多非常精密和复杂的工业机器人被应用,但这种简单的机器人怎么能称作先进呢?因为技术的复杂和技术的先进不是一个概念,复杂+精密不一定等于先进。先进的东西不一定复杂和精密。

135.jpg

  A 寻光

   我们可以用光电二极管来检测光线强弱。当然也可以用光敏电阻。将光敏电阻和一个固定电阻串联接在电源正负极之间,光敏电阻靠近正极一侧。从光敏电阻和固 定电阻连接点引出导线接到ATmega16的AD转换输入口。当强光照在光敏电阻时,光敏电阻阻值变小,因此其压降变小,而固定电阻分压增多,引出的AD 检测电位升高,被单片机转化为数字量后判断光线增强。机器生命有5个光电传感器,其中4个面向机器人前后左右四个方向,另一个指向太阳能板所面对的方向。 通过编程可以让机器人自主移动到光线最强的地方。

  B 充电

  本设计采用4.8V镍氢充电电池为系统供电。太阳能电池板 正负极通过一个三极管与电池正负极相连。有一个电压比较器比较电池电压与太阳能板的压差,如果压差高于某值,比较器控制三极管导通,太阳能电池板对充电电 池充电。充电电池电压上升,当高于某值时控制三极管关断,结束充电。为使太阳能板能对电池组充电,要求太阳能板在阳光直射下输出电压高于8V。

136.jpg

  C 语音识别

   用AVR单片机的高速AD检测功能能实现简单的语音识别。声音信号被驻极体电容话筒接收后送至LM386音频功放芯片放大和过滤后送至单片机AD转换 口,单片机对音频信号幅值采样转化为一组数字,然后对这组进行取方差运算,得出一个特征值,该特征值可以用于简单的语音识别。比如你发一个“e”,方差应 该比较小,如果你发“p”爆破音,方差应该较大。当然,如果你用更复杂的数据处理,会得到更好的识别效果。本设计使用了2路声音信号,目的是让单片机判断 出声源的大体方位。

  D 超声波测距

  用AVR的1个IO口输出40KHz信号送至超声波发射电路,当超声波遇到障碍物返回后,被超声波接收头接收,信号经CX20106A解码芯片处理,得到一个低电平脉冲,用该脉冲引发AVR单片机中断,AVR通过检查发波和收到回波之间的时间差即可算出障碍物距离。

  E 电机驱动

  本设计采用2片LG9110电机驱动芯片驱动两台直流减速电机。LG9110输出最大电流为800mA,仅需要2条控制线与单片机IO口直接相连即可控制一台电机正反转或者停止。LG9110仅有8个引脚,使用非常方便。

  F 让机器生命更聪明

   我的这个机器生命设计方案能实现最酷的效果是:白天,阳光明媚,机器生命跑到阳光底下晒太阳,太阳光会随着时间变化,机器生命能自动跑到最合适的位置享 受日光浴。到了晚上,机器生命会找个安静的地方闭目养神,等待明天太阳升起。你可以训练机器生命,让它知道自己的名字叫什么。比如你叫着它的名字,同时站 在它面前用强光照射它的太阳能电池板,如此反复训练,会使机器生命听到自己名字后向声源方向跑去,在距离声源一定远处停止,因为以往这样做它都能享受强光 照射并充电。这就如同真正的宠物狗,你叫它名字它就跑到你跟前希望能获得食物。这一切都是完全能够实现的,关键就在于编程序实现它。

  G 想象无极限,你的机器宠物将无所不能

   以上方案中,ATmega16的功能被发挥到极致,以至于没有空闲的IO口,系统不能再扩展了。如果你用ATmega128单片机做,那么它拥有53个 IO口,30多个中断,128Kb的程序存储器,4Kb的RAM,使得你能编写更复杂的程序、储存更多的动态数据、连接更多的外设,你的机器生命将变得非 常有生命力。比如加入三轴加速度传感器、地磁传感器、GPS定位、雨水传感器甚至摄像头、无线通信模块等,重新设计一个坚固和强劲的底盘,你的机器生命就 可以在室外自由探索了。

  以上芯片外设来源说明:在淘宝上购买很容易

  底盘:340元的高级履带式1:16电动坦克模型

  加速度传感器、地磁传感器:美国AD公司的40元ADXL330加速度传感器

  GPS定位:几十元的车载外置GPS天线

  最后,我想说,机器人是非常好玩的,只要你有想象力,有毅力,努力研究实践就能创造奇迹。


本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。