2021年 01月 28日 星期四
您的位置: 威廉希尔主页 > 单片机技术 >

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

来源:未知     作者:威廉希尔     发布时间:2021-01-28 20:59         

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

  写本文时我仅有3年单片机实践经验,比较了解51系列和AVR系列单片机,因此着重讨论了AVR单片机,我经验有限,有错误在所难免,希望朋友们!

  CPU中文名称为“中央处理器”,典型代表为英特尔8086处理器,现在的奔腾X处理器都是8086的直系后代。处理器,顾名思义,其功能是处理数据,对于中央处理器,就是在数据处理中处于核心地位的处理器,听起来似乎很复杂,但实际上核心就是一个ALU“算术逻辑单元”。这个单元由一些数字门电组成,仅能完成括加、减、乘、除四则运算,与、或、非、异或等逻辑操作,以及移位、比较和传送等操作。CPU内部包含ALU,除此之外CPU还有时钟电,CPU运行的基本原理是:时钟电产生计数脉冲,这个脉冲控制着一个累加器,即每产生一个时钟脉冲,累加器加1,这个累加值以16进制数字的形式通过地址总线唯一选通程序储存器中一个储存单元(在CPU外部),这个单元将内部储存的程序命令代码通过数据总线送到ALU中,ALU根据代码不同执行不同操作,比如把某寄存器数值和某数值相加等,然后将计算结果输出到IO口或者各个总线上。

  总之,CPU的工作就是把程序中的命令代码翻译成不同任务,然后执行,输出执行结果。CPU在一切数字计算机中都发挥了核心作用,即计算机都有CPU。

  由于CPU只有计算功能,其计算的结果需要通过显示器、音箱输出,而其工作的依据,即程序命令则依靠硬盘储存,其执行任务时动态存取的数据要保存在内存中,而人可以通过键盘控制程序命令的执行过程,把所有这些CPU的外设组合在一起就叫做“个人电脑”。

  个人电脑功能强大,计算速度快,是较为理想的计算机。但当我们需要用一个小装置控制微波炉定时开关时,个人电脑就显得笨重和昂贵。因此人们设计出一种浓缩型电脑,大的有几平方厘米,小的比米粒还小,它们叫做“单片机”单片微型计算机。CPU是一个芯片,单片机也是一个芯片,看起来外观差不多,它们有什么不同呢?答案是:单片机内除了集成有CPU外,还集成了程序储存器ROM(可理解为硬盘)、数据储存器RAM(可理解为内存),输入输出接口(可理解为显示器、键盘插座),有的单片机内还集成了电机驱动电、视频解码电、AD转换器、无线传输电等,使得单片机功能变得非常强大。单片机的特长在于可以用单个芯片和简单外部电去实现复杂的控制操作,因此非常适合机器人控制。其实在绝大多数机器人中都有单片机的影子。简单的和中等复杂的机器人可以用单片机直接控制,高度复杂的机器人用“个人电脑”或者“超级计算机”指挥许多单片机来完成机器人控制。

  所谓捷径就是少走弯。我刚开始学单片机时走了不少弯,很多朋友和我都有相似的经历,刚开始接触单片机,面对琳琅满目的图书教材,不知选择哪本;想实践时不知到哪买单片机;不知如何编程下载程序

  B 到图书馆或者书店在数十本单片机书中选一本你能看懂,而且觉得案例有趣的“实在、生动、活泼”的单片机书做为你的入门读物。

  D 在学习过程中实践非常必要。你需要一台电脑。如果是台式电脑,你可以花十几元购买25针并口下载线,如果是笔记本电脑,你只能购买几十元到几百元的USB ISP编程器。

  F 你需要上网下载单片机编程软件,比如51用Keil编程,AVR用CVAVR编程,在编程软件中编好程序,然后生成HEX文件,再上网下载并口烧程序软件或者USB ISP烧程序软件,用烧程序软件加载HEX文件,然后将编程线查到你的单片机电板上,即可把程序烧到单片机中。

  H 如果系统不能正常运行,首先检查电是否接错,然后检查程序是否烧错,如果以上都没毛病,研究程序是否编错。有时系统不能正常运行并不意味着有什么地方错了,只是某些参数没设置好,你需要不断运行、修改程序、调试参数、再运行如此往复,直到你对系统运行满意为止。有时这是一个非常艰苦的重复劳动,调整数百次上千次,你无法回避,只能坚定,勇往直前。

  在数字计算机诞生前,人们用电子管、电容器和电感线圈、电阻搭建模拟计算机,能够完成许多简单的计算和控制任务。所谓模拟计算机就是其计算采用的信号不是 1、0数字信号,而是电压连续变换的模拟信号,类似于自动控制原理中的各种控制器采用的运算。别小看了模拟计算机,上世纪80年代中东战争时,阿拉伯国家使用的苏制全自动自行防空炮内采用模拟计算机实现计算飞机轨迹并控制火炮射击目标。

  在模拟计算机诞生前,也就是蒸汽机时代,有些机械天才硬是用数百个齿轮和凸轮搭建出机械计算机,人们通过转动印有数字的各种齿轮,另一些齿轮就将运算结果显示出来。机械计算机在人类史上上曾经是高科技产品,第二次世界大战时,著名的密码机就是一种机电混合式计算机,它当时是最保密的通信工具。

  在电气时代开始时,人们用钟表内机械的旋转分时控制一些继电器的通断,从而控制一些机床和生产线的运行。这种装置类似于早期洗衣机内的定时器。

  1980,英特尔公司开发出一种简易的8031CPU,在当时该CPU性能不比8086差很多,但价格较便宜,因此被很多低端应用选中。由于市场看好,ATMEL公司购买了8031的内核,把Flash存储器和加强型IO口融入进去开发出了AT89系列单片机。所有兼容8031指令和内核相似的单片机统称为51单片机,它是目前应用最广泛的8位单片机之一。因51单片机结构简单,指令易学,应用广泛,因此是初学单片机首选机型。如果有人想不学51,直接学AVR,那么此人一定会遇到很多难题,困惑和郁闷将伴随着学习过程。如果学了51再学AVR和其他单片机,人们会发现“所谓单片机都不过如此”。

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

  AT89S51有4K的Flash程序存储器,128字节的RAM,32条IO口,中断系统具有6个中断源、5个终端矢量、2个中断优先级的中断结构;串行口是一个全双工的串行通信口;AT89S51的电源电压为4.0-5.5V,AT89LS51的电源电压为2.7-4.0V;振荡器频率 0-33MHz(AT89S51),0-16MHz(AT89LS51); 有ISP 在线编程功能,这个功能的优势在于改写单片机存储器内的程序不需要把芯片从工作中剥离。是一个强大易用的功能。

  有很多公司生产了很多扩展型51系列单片机,有的带有AD转换器,有的带有比较器,有的带有PWM,读者可以根据自身需要选择合适的51单片机,但要注意他们的管脚定义和编程方式。

  AT89S51 适于做单片机学习板、电子时钟、超声波测距仪等不需要采集模拟量和控制大功率外部元件的电。S51与过去的C51的区别在于S51支持ISP在线需要几百元的编程器编程,而S51仅需一条25针并口线和非常简单的转换电即可接在台式电脑打印机接口烧程序,下载烧程序小软件即实现可对 S51单片机编程。对51单片机编程一般选用Keil软件,可采用C语言或者汇编语言,编完程后选择输出HEX文件,然后用烧程序小软件读取HEX文件,再烧写到单片机中。

  A 刚开始看书时,按照书上的电图连线然后通电调试,但总不成功,将自己的电和书上的电仔细对照发现不了问题。原因在于很多书上的电图都是“简化图”,即省略了一些电,而这些被省略的电却关乎系统的运行。比如,当单片机书讲到AD转换电,给出的电图多省略了晶振和复位电,按照AD转换电图搭出来的系统自然不能运行。

  C 51单片机31引脚需要接正极,以选择采用内部程序存储器。如果忘记给这个引脚以正确的电压,你的单片机可能不能执行程序。

  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有极高性价比的线 性能

  AVR单片机可上操作系统,比如UCOS2、Linux等,自主编程实现操作系统功能也很容易。根据任务具体需要选择最合适的单片机,使单片机资源充分利用,使系统性价比达到最高,同时兼顾未来扩展需要,不要一味选用高性能单片机,这就是选单片机的原则。

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

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

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

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

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

  单片机学习。学单片机重在学精一两种单片机,如果有人泛泛地学ARM、PLC、PIC、凌阳、DSP、FPGA等所有有名的单片机,那么他将无法拥有真正的深度开发能力。所谓深度开发,以AVR单片机为例,初学者可以用它实现小灯交替闪烁,中级技术人员可以用它控制参加比赛的机器人,而真正的高级开发人员可以用AVR实现机器视觉、无人机自动驾驶、坦克火控系统AVR单片机过时了吗?有初学者甚至中级开发人员认为因ARM性能一般比AVR性能高,因此ARM将代替AVR,AVR将退出历史舞台,或者MSP430

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

  430系列单片机:比较适于机器人开发,是美国仪器推向市场的一种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技术,不仅使开发工具变得简便,而且价格也相对低廉,并且还可以实现在线编程。

  凌阳单片机:比较适于机器人开发,以16位计算机为核心,集成不同规模的RAM、ROM和其他丰富的功能电,使用者可以根据自己需要选择集成了特定功能电的凌阳单片机。凌阳单片机指令系统

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

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

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

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

  我们可以用光电二极管来检测光线强弱。当然也可以用光敏电阻。将光敏电阻和一个固定电阻接在电源正负极之间,光敏电阻靠近正极一侧。从光敏电阻和固定电阻连接点引出导线的AD转换输入口。当强光照在光敏电阻时,光敏电阻阻值变小,因此其压降变小,而固定电阻分压增多,引出的AD检测电位升高,被单片机为数字量后判断光线个光电

  ,其中4个面向机器人前后左右四个方向,另一个指向太阳能板所面对的方向。通过编程可以让机器人自主移动到光线最强的地方。

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

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

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

      威廉希尔