AVR单片机工业控制方案合集

发布者:梦想启航最新更新时间:2015-08-06 来源: elecfans关键字:工业控制  AVR单片机  微控制器 手机看文章 扫描二维码
随时随地手机看文章
  AVR单片机是1997年由ATMEL公司研发出的增强型内置Flash的RISC(Reduced Instruction Set CPU) 精简指令集高速8位单片机。可以广泛应用于计算机外部设备、工业实时控制、仪器仪表、通讯设备、家用电器等各个领域。本文为大家介绍基于AVR单片机的工业电子设计方案,包括机器人,智能小车等。

  基于AVR单片机的灭火机器人设计与实现

  1 引言

  机器人竞赛是近年来迅速开展起来的一种对抗活动,它涉及人工智能、机械、电子、传感器、精密机械等诸多领域。通过竞赛可以培养学生的创新意识、动手能力、团队写作能力等。其中灭火比赛是开展范围最广、影响最大的机器人竞赛项目之一。

  比赛规则为模仿生活中消防员灭火,机器人从H点出发,在四个房间内寻找任意摆放的蜡烛,并且设法将其灭掉。比赛场地的墙壁高33cm,材质为木板,颜色为黑色。尺寸如图1所示。对于比赛,得的分越低成绩越好。另外根据选择的模式不同,计分时要乘上相应的系数。

  

  2 系统硬件设计

  2.1 系统总体设计

  系统以ATmega32单片机为核心,它是一种基于增强RISC结构的、低功耗的8位单片机。其特点为:①片内具有32K字节的可编程 Flash;2K字节的片内SRAM数据存储器;1024个字节片内在线可编程EEPROM数据存储器。②片内含JTAG接口。③外围接口。两个带有分别独立、可设置预分频器的8位定时器/计数器;一个16位定时器/计数器;四个通道的PWM输出;8路10位ADC;32个可编程的I/O口。④低功耗,最高工作频率为16MHz。

  根据灭火比赛的规则要求,配以碰撞传感器、灰度传感器、火焰传感器和红外传感器。通过两路PWM控制两只电机以驱动灭火机器人,另外一路灭火电机由I/O口通过光电耦合器直接驱动。

  

  2.2 系统电源部分

  系统采用单电源供电电路时比较简单,但是考虑到电动机起动瞬间电流很大,会造成电源电压不稳,影响单片机和输入电路工作的稳定性和可靠性,因此采用双电源供电方案。将电机电源和单片机电源完全隔离。单片机以及传感器电路使用8V供电,电动机使用12V供电。提高电动机的供电电压,可以提高机器人的运行速度,从而可以提高灭火的成绩。

  2.3 电机驱动部分

  机器人需要控制在一个合适的速度行驶,在灭火的过程中既要以较快的速度找到火源,又要防止因为碰撞而影响比赛的成绩。小车的速度是由两只直流电机控制。 L298驱动芯片是性能优越的小型直流电机驱动芯片之一。它可被用来驱动两个直流电机或者是双极性步进电机。在6—46V的电压下,可以提供2A的额定电流。L298还有过热自动关断功能,并有反馈电流检测功能。为保证L298正常工作,建议加装片外续流二极管。由ATmega32单片机直接输出两路 PWM驱动L298N。改变PWM调制脉冲占空比,可以实现精确调速。脉冲频率对电机转速有影响,脉冲频率高连续性好,但带负载能力差;脉冲频率低则反之。通过PD2和PD3两根I/O口线来控制电机的转动方向。

  

  2.4 传感器部分

  灭火比赛需要机器人在尽量不碰撞墙壁的基础上尽可能快地找到蜡烛并将火灭掉。在完成任务的过程中首先需要不碰撞墙壁,然后需要判断前方是否有火焰。在找到火焰后需要判断蜡烛旁边的白线。如果碰撞墙壁的话,需要机器人能检测出来并进行处理,不然就会发生机器人卡死的情况,那就不能完成任何任务。

  图5所示为红外传感器的发射和接收电路。红外射管采用脉宽调制(PWM)驱动,工作在38KHz的频率下,减少发射电路的功耗。脉冲发生器由 NE555构成,通过外部的电位器R1来调节占空比和脉冲频率,由于红外肉眼不可见,所以电路中加入一个LED指示灯来指示红外发射管是否在工作。该 LED和红外发射管串联,当红外发射管正常工作时,该LED灯会点亮。接收电路采用西门子公司生产的红外专用集成接收芯片SFH506-38,它只有接收到38KHZ的脉冲波时才会作用。它内部集成了选项、滤波、放大电路,对外只有3个引脚:①脚为信号输出端;②脚为接地端;③脚为电源端,所以使用起来非常方便,效果比较理想。

  

  灰度传感器是模拟传感器,有一只发光二极管和一只光敏电阻,安装在同一面上。灰度传感器利用不同颜色的检测面对光的反射程度不同,光敏电阻对不同检测面返回的光其阻值也不同的原理进行颜色深浅检测。

  

  火焰传感器是模拟传感器。它利用红外敏感型元件对红外信号强度的检测并将其转换为机器人可以识别的信号,从而来检测火焰信号。火焰传感器可以用来探测波长在700nm~1000nm范围内的红外线,探测角度为60º;,其中红外线波长在880nm附近时,其灵敏度达到最大。

  碰撞传感器使用碰撞开关,通过I/O口可直接作为数字量输入。

  2.5 LCD显示及其它电路

  液晶显示器以其微功耗、体积小、显示内容丰富、超薄轻巧的诸多优点,在袖珍式仪表和低功耗应用系统中得到越来越广泛的应用。这里采用2行16个字的DM-162液晶模块,通过与单片机连接、编程,完成显示功能。

  

  3 灭火机器人软件设计

  场地的四个房间内的任何地方都有可能摆放蜡烛,所以机器人必须能够实现搜索所有的房间,而且在行走的过程中不允许碰撞墙壁。找到火源后,通过灭火装置迅速将火灭掉。根据以上的要求设计机器人的灭火逻辑如图8所示。

  

  机器人采用左手走规则,左手走规则是指机器人始终沿着左面的墙壁行走,一直走完全程。在行走的过程中按照起点、一号房间、二号房间、三号房间、四号房间的顺序搜索火源并灭火。机器人首先读取传感器信息,然后对传感器的信息进行判断。如果发现火源,则进入灭火子程序,该子程序完成趋光、灭火等功能。[page]

  4 结论

  本文根据灭火比赛规则的要求,基于单片机及传感器原理,以AVR单片机ATmega32为控制核心,小型直流电机作为驱动元件,设计出一种价格低廉、简单实用的灭火机器人。通过简单的修改,可以将此机器人用于其它的竞赛项目。

  针对市场上大多数教学无人车设计采用单片机单一控制导致其功能扩展性弱、灵活度低等问题,设计了一种基于Atmega128单片机和无线通信的智能教学无人车控制系统,该系统包括PC机控制部分和无人车控制部分,通过PC控制端软件可以经无线通信模块实现对无人车的准确运动控制。实验结果表明,系统工作稳定,无人车在遇到干扰的情况下顺利完成货物运输、环境勘察、敌我识别、打击等功能,控制效果理想。

  基于AVR的智能教学无人车控制系统设计

  智能教学无人车是一种履带式移动机器人,目前市场上的无人车大多采用单片机对其进行控制,其优点是体积小,成本低,结构简单,但仅仅依靠单片机远不能使无人车在复杂多变的工作环境中进行及时调整,并且极大地限制了其功能的扩展。基于此不足,本设计主要利用PC机与无人车的无线通信,使无人车在PC机无线指令下完成前进、后退、转弯、打击、生命值显示、调速和自动行驶等功能,并通过车载摄像头实时获取无人车所处环境信息,实现了远程监控。在执行任务时,如遭遇敌方车辆干扰通信,无人车在抵御干扰信号同时进行敌我识别,适时作出反击。

  1设计原理

  教学无人车控制系统由上位机(PC)控制部分和下位机(教学无人车)控制部分组成。系统结构框图如图1所示。

  

  系统工作原理为:打开教学无人车电源时,Atmega128单片机通过语音模块使扬声器发出启动提示。当上位机无线控制台及PC端软件准备好后,PC端控制软件通过USB口向无线控制台单片机发出指令,使其配置无线模块相关寄存器,芯片进入指令发射模式;下位机由Atmega128单片机控制,在接收到上位机的指令后通过其集成的PWM外设模块产生2路PWM波和4条转向控制线经电机驱动模块增大驱动能力后控制左右2个电机产生相应的动作。例如,当PC端发出“左转”的指令时,下位机的无线模块接受成功后会自动返回接受成功应答信号。接着Atmega128单片机通过PA口控制L298P,使左侧电机反向转动,右侧电机正向转动,从而实现左转的功能;当PC端发出“打击”指令时,Atmega128则通过PE5口使红外发射管发出相应码制的红外进攻信号;当PC端发出“自动行驶”指令时,Atmega128结合接收霍尔传感器采集回来的数据,通过相应算法来协调左右两侧的电机,使坦克完成直线行走、转过固定角度,行驶固定距离等功能。教学无人车通过连接到PE5口的红外传感器感应对方无人车的攻击信号。如果接收到红外信号,PE5口会输入固定码制的信号,此时主控芯片会将生命参数减一并熄灭一个LED灯,当所有LED灯都被熄灭后,主控模块会通知语音芯片发出阵亡提示,无人车停止一切动作。

  2硬件电路设计

  教学无人车控制系统硬件电路设计包括PC端无线控制台部分和下位机无人车控制部分的硬件设计。

  2.1 PC端无线控制台部分

  硬件设计无线控制台部分由PC机、STC12LE5A60S2单片机、NRF24L01无线模块及PL2303组成。PC端控制台软件通过USB口向 STC12LE5A60S2发出指令,使其通过SPI串行通信协议配置NRF24L01的相关寄存器,随后芯片进入发射模式,将上位机指令转发给下位机。其设计电路图如图2所示。

  

  2.2下位机无人车控制部分

  硬件设计下位机硬件由MCU模块、电机驱动模块、传感器模块、无线模块、语音模块、LED生命值显示模块以及电源模块组成。

  2.2.1 MCU模块

  MCU模块以Atmega128单片机为核心,Atmega128单片机是一款高性能、低功耗的AVR 8位微处理器,处理速度可达1 MIPS/MHz,应用先进的RISC结构,特别是具有I2C、SPI、PWM、RS232串口、ADC、定时器等功能十分全面的外设。该单片机通过 SPI串行通讯接口与无线模块连接,通过通用可编程I/O接口与电机驱动模块、语音模块、红外发射管和接收管连接。

  2.2.2电机驱动模块

  电机驱动模块用于驱动直流电机,采用L298P电机驱动芯片。L298P是SGS公司的产品,为20管脚的专用电机驱动芯片,内含二个H—Bridge的高电压、大电流双全桥式驱动器,接收标准TTL逻辑准位信号,可驱动46 V、2 A以下的步进电机和直流电机,具有高电压、高电流的特点。电路设计如图3所示。

  

  Enable控制电机停转,接到单片机的PE3、PFA口上,由这两个I/O口产生PWM波控制电机转动。input1—input4控制电机的正反转,接到单片机的PA0-PA3口上。OUT1、OUT2和OUT3、OUT4之间分别接2个直流电机。

  2.2.3传感器模块

  传感器模块包括红外模块和霍尔模块两部分。

  红外模块包含接收和发射两个功能模块。红外接收模块由一个红外接收管构成,接收对方车辆发射的红外攻击信号。当系统接收到进攻信号时,PE6引脚上会出现一个高电平,触发一次外部中断,在中断服务程序中处理并判断红外数据。如果确认为进攻信号,则使生命值变量减一,同时熄灭一个LED灯。发射模块由一只红外发射管和一个三极管组成,红外攻击信号经过三极管放大后由红外发射管发出。攻击信号为8位数据,当收到进攻指令时,发射模块将程序中设定好的8位数据按位发出。

  霍尔模块由两只霍尔传感器和四片磁铁组成,用于测速,以实现调速、自动行驶等功能。磁铁正反安放在左右两个电机减速箱的二级齿轮的边缘上。当教学无人车行驶时,电机带动齿轮转动,两片磁铁就会交替从霍尔元件下面经过,由于两片的磁场方向不同,就会使霍尔元件内部的电子发生不同的偏转,这样,二级齿轮每转过一周就会使霍尔元件产生一个脉冲信号,构成闭环系统。主控芯片接收脉冲信息,通过不同算法可控制两电机完成不同的控制要求。

  2.2.4语音模块

  语音模块由WT588D语音芯片和SPI寻址的8M ROM芯片及其外围电路组成。使用前将需要播放的语音烧写在ROM芯片中。语音模块使用三线串口控制模式,这种控制模式由CS,DATA,CLK 3条通信线组成,分别连接到Atmega128的PC0、PC1、PC2 3个I/O口。控制时序根据标准SPI通信方式。

  2.2.5无线模块

  无线模块主要包括NRF24L01和Atmega128.NRF24L01采用FSK调制,内部集成NORDIC公司自家的Enhanced Short Burst协议,可实现点对点或是1对6的无线通信,无线通信速度可达2.4 Gbps,并可以通过配置其寄存器实现调频传输。主控芯片通过SPI协议配置NRF24L01的相关寄存器来完成对无线模块的初始化和数据的传输。无线模块的SPI信号线对应的接到Atmega128的PB0-PB3 4个I/O口上,CE端接到PE2,利用Atmega128内部集成的SPI功能进行通信。无线模块电路设计如图4所示。

  

  3软件设计

  软件设计包括控制端软件的设计和终端软件的设计。

  3.1控制端软件设计

  无人车控制台的主控软件将键盘指令转化为控制码发往下位机,控制小车的动作并显示下位机发来的状态信息???。该软件利用Labview串口通讯将键盘指令转化为二进制字符串送到上位机。利用模拟SPI的方式,通过STC12LESA60S2配置NRF24L01的寄存器使其处于发射模式。当收到PC串口发送的数据时,NRF24L01在单片机的控制下将数据逐位发出。设计的控制端软件如图5所示。

  

  3.2终端软件设计

  教学无人车的终端软件主要包括无线接收程序、驱动控制程序等。程序中定义变量Life为生命值标识,定义Date为小车的控制标识,定义函数Motor()为电机控制函数。流程图如图6所示,主要分为以下步骤:

  

  1)小车启动后,首先初始化各I/O口、系统中断、SPI接口以及NRF24L01的相关寄存器。小车的无线模块配置为接收模式。

  2)下位机接收到无线信号后会产生一个中断,将数据通过SPI送到Atmega128中。在控制程序中,用多分支选择结构switch—case判断Date的值,通过调用Motor()函数控制电机做出相应动作。

  3)接收到红外信号时,经判断若为有效信号,则使生命值标识Life减一。同时判断当前的Life值,设置PA口的值控制LED灯(生命值)的显示。

  4结束语

  文中进行了一种基于Atmega128单片机和无线通信的无人车控制系统设计。实验结果表明,教学无人车在无障碍区域无线通信有效传输距离可达 80~100米,利用车载摄像头可以实时获取无人车所处环境信息,实现远程监控。其创新点是采用了PC控制模式和单兵运行模式两种方式对无人车进行控制,极大地增强了无人车的功能性和环境适应能力。在实际对抗演练中,无人车在遇到干扰的情况下顺利完成货物运输、环境勘探、反击敌方车辆等功能,取得了良好的控制效果。该设计可广泛应用于短途货运客运、应急救援、恶劣环境下自动作业等领域。

  基于AVR单片机的控制系统设计

  引言

  现在许多的系统都采用了多通道Input/Output的设计,控制系统的设计也日趋复杂、庞大,所以有必要将控制电路单独分离出来。过去许多系统均采用 C51系列单片机作为控制电路,但其功能有限,电路设计较为复杂、影响了系统的稳定性,也不易扩展。本文介绍的AVR单片机由美国ATMEL公司生产,采用RISC指令集,内置RAM及可以擦写数千次的FLASH,采用哈佛结构,速度较快。ATmega128为此系列中功能最强大的一款,用于设计控制系统能适应现时复杂系统的要求。

  系统硬件设计框架

  硬件系统主要由CPU(AVR单片机)、人机操作和显示接口(液晶显示、键盘、指示灯和蜂鸣器)、通信接口组成。系统框图如图1所示

  

  图1系统硬件设计框图

  CPU为核心处理器件,通过I/O接口方式或A/D总线方式与液晶、显示键盘、指示灯和蜂鸣器交互,作者实现了两个版本,分别采用I/O方式和A/D总线方式。通信接口主要用到了UART接口和扩展的网络接口。其中UART提供了RS-232和RS-485接口,RS-232提供全双工单对单通信同时,而 RS-485以主/从方式与系统的多个部分通信,可用于多通道的输入输出设备。该芯片本身并不带网络接口,通过扩展一个W3100A连接RT- L8201(L)芯片,实现TCP/IP协议栈,从而使设备可以接入LAN,实现在LAN内的远程控制管理和监控。[page]

  系统软件结构

  系统软件体系分为几个部分:

  (1)系统的循环检测部分,用于检测各通道的系统设备工作是否正常,出现异常时则通过三色指示灯报警(绿色代表正常,红色代表异常,黄色为中间状态)。

  (2)系统的设置部分,接受用户按键,用户可以在GUI上设置希望设置的参数。

  (3)网络接口部分,此时单片机系统不参与设置,主要功能将网络部分获得的数据导至各通道。软件系统的核心部分在于菜单结构的设计。

  本系统采用一种基于节点编号的三叉树状菜单的设计。将整个菜单看作一个菜单树,每个界面对应于树中的一个节点,父节点为当前菜单的上一级菜单;右节点为当前菜单的“兄弟”菜单,亦即上级菜单的其余子菜单。

  我们采用对节点编号的方式将整个菜单树串起来,通过识别节点编号(ID)就能知道该节点处于哪一级菜单,同时也便于我们将菜单数初始化。编号方式:每级子菜单的编号为上级父菜单ID乘以10再加上该级子菜单在上级菜单中对应的子项号(1,2,3.),我们将根节点ID编号为1,则根节点菜单的子菜单对应的 ID分别为11,12,13.ID为11的节点的下级菜单ID为:111,112,113.一个树型结构菜单的结构和ID编号的实例如图2所示。

  Typedef structmenu{ long ID; / /当前菜单ID void ( * disp laymenu) ( long i, unsigned char j) ; / /当前菜单对应处理函数char cur; / /当前菜单子项char total; / /子菜单总数structmenu * up, * down, * right; / /毗邻子菜单}MENU;

  

  图2 一个菜单树的实例

  对于用户按键操作切换不同的菜单时,我们只需修改一个指向对应菜单节点的全局菜单节点指针即可。当用户按下“ESC”键时,菜单指针指向当前节点的父节点,按下“Enter”键时,则指针指向对应节点的子节点。

  用于AVR单片机的RAM空间较小,只有4KB,我们需设计一种合理而简洁的数据结构,我们将菜单的数据结构定义为(C语言实现)。

  

  图3 menuselect函数的流程图

  将菜单分为显示型菜单和功能性菜单,显示型菜单项用于切换各级菜单,功能型菜单则执行最底层菜单所对应的操作,total变量为0则表示为功能型菜单,大于0则表示选择型菜单。通过菜单的ID,即可以知道当前菜单的显示位置和内容,将此信息放在对应的displaymenu函数中可以节省数据空间,不用对于功能型菜单建立额外的ID与处理函数间的对应关系表,从而实现功能型菜单和显示型菜单的一致性操作。一个供参考的执行函数可以写作:

  if(g_pmenu->total>0)

  { g_pmenu=menuselect(g_pmenu,Key);} else {(g_pmenu->displaymenu)(g_pmenu->ID,g_pmenu->cur);}

  其中menuselect函数用于切换对应的菜单子项,按键为“UP”键和“DOWN”键时,只需修改g_pmune->cur即可;按下 “ENTER”键时,则g_pmenu=g_pmenu->down,再根据cur值,g_pmenu=g_pmenu->right;按下 “ESC”键,则g_pmenu=g_pmenu->up.

  这种设计使得代码数据量变得较小,同时增强了程序的扩展性,需要增加或修改菜单项时,不论是功能型菜单还是执行性菜单,只需要修改对应的菜单结构的数组即可,而不必修改对应的执行代码。经过这样的简化后,发现对于菜单数较多的多通道输入/输出系统,系统RAM区还是不够用。对于一个8输入通道的系统,每个通道的参数设置项可能多达40项,总菜单节点大于300个,每个节点占用14B,则整个菜单节点所占的RAM已超过4K,所以这种方式还是需要进一步改进。

  注意到多通道的参数设置项完全相同,ID为111,112,118的菜单分支完全一样,ID为121和122的菜单分支也完全相同。可以定义一种 Sibling菜单,从而删去ID为112~118以及ID为122的菜单节点和子节点(虚线框所示),其上级菜单(ID为11和ID为12)的项目中的 total值均变为1.为了区别不同的通道分支,有两种实现办法:

  一种处理方法采用全局变量

  增加一个g_CODER_Channel_Number的全局变量,用于保存当前的通道号。在menuselect函数中,增加一个针对本系统设计的一个判断,当ID为11时,则不修改对应的g_pmenu->cur,而是直接修改变量g_CODER_Channel_Number,进入对应的显示函数后,直接根据g_CODER_Channel_Number判断通道号,从而输出对应的值。这种方法不需要改变系统设计的结构,但需要针对不同的系统修改主处理函数menuselect.

  另一种处理方法在菜单结构中增加一个MenuSibling结构,定义为

  typedef struct _menuSibling{

  signedcharcur;signedchartotal;}SIBLING;同时对应的菜单结构修改为typedefstructmenu{……

  SIBLINGSibling;}MENU;

  这样,ID为11的结构项的Sibling.total为8,Sibling.cur为当前的子菜单项。判断到total>0且 Sibling.total>0时,可知其下一级菜单为SIB2LING菜单,此时以前需修改cur想的操作则修改Sibling.cur即可。这种设计下,每个节点增加了2B的空间,但是保证的程序的一致性,对于不同的系统其设计基本一致。

  以上菜单项的设计用于系统设置部分,当退出系统设置时,即进入系统循环检测部分。单片机通过RS-485接口检测各个通道是否正常,当正常时则显示为绿灯,出现异常则显示为红灯,黄灯为中间状态。指示灯的流程参见图4.

  

  图4循环检测的指示灯流程

  结束语

  按照本文提供的方法优化后的设计,可以满足大多数的多通道输入/输出系统的控制系统的需要,整个系统的设计主要在于建立一个菜单树,将对应的节点编号,再编写对应的节点处理函数即可。这种设计使得程序的开发、维护都很容易,具有较强的可扩展性和可移植性。

  基于AVR单片机的有害气体红外感应及语音警示控制系统

  引言

  利用红外感应系统感应附近有无有害气体,当红外感应系统感受到有有害气体接近时,送出持续一段时间的高电平;单片机通过开启中断,启动语音芯片,单片机通过串口通信,从上位机提取的有害气体参数提示给附近人体,并经过与安全值的比较判定当前环境是否安全。对语音芯片的使用,先将必要的文字、数字信息录制进去,放音时,通过单片机自动寻址,把实时参数读取出来。为便于以后系统改进或移植到其他系统,可设计录音、放音电路,通过切换录制不同内容。系统设计友好、方便,给人的信息也更加直接。

  1系统总体设计方案

  在气体浓度是现有可利用的数据的基础上,考虑了系统的衔接性和可移植性。系统总体方案见图1。

  

  本系统分为四大模块:核心控制模块、语音电路模块、红外感应模块以及数据的读取。在气体浓度为现有可利用资源的前提下设计了系统如何进行读取控制。核心控制模块采用单片机作为控制器件,配合适当的外围电路,控制整个系统的运行。红外感应模块以一个红外传感器为核心,配置一定的信号处理电路,往单片机发信号。语音电路以语音芯片为核心,设计了录音、放音两种电路。

  1.1核心控制模块的设计

  核心控制器件选用了单片机,其最小系统构成如图2所示。

  

  该模块是系统的核心,当红外感应系统感应到人体,会送出中断信号,单片机得到信号后执行中断,通过串口通信读取气体浓度,然后到语音芯片寻址,并控制语音模块把气体浓度报告出来。除了基本的外围电路,核心控制模块外主要应用了中断、串行通信和基本的输入、输出功能。

  本系统中上位机通过串口实现与单片机通信,然后由单片机进行处理,单片机接受红外信号后,控制语音芯片工作,播放相应的语音信息。可选的单片机较多,如AVR、AT89C51等。采用单独的控制芯片的好处是减少主控芯片(CPLD)的工作量,提高系统的性能。我们选用了AVR单片机。AVR是基于RISC(精简指令集计算机)结构的单片机,简称AVR单片机,该系列单片机在吸收PIC及8051单片机优点的基础上,进行了重大改进。与普通的51系列单片机相比,AVR单片机有很多优点。首先给人最直观的就是具有JTAG边界扫描、仿真、编程功能,不会造成以往仿真通过而脱机不行的现象。

  1.2红外感应模块的设计

  该模块相对简单,核心用了红外传感器,只把信号进行了简单处理,送给单片机的中断即可,见图3。

  

  1.3数据读取方式的设计

  对数据的读取有两种方法:一种是直接与硬件电路结合,16位二进制数据读取过来,进行整理还原;另一种是通过串口通信,把已经由上位机整理好的数据,通过RS-232协议读取过来。显然,较第1种方法,通过串口的方式避免了对数据重复整理,编程更简单。对整个项目而言,设计更合理,缩短了开发周期。

  本系统采用的是串行数据通信方式,接口为RS-232串口,实验证明这种通信方式简单易行,符合本系统要求。本系统采用的是半双工配置,它要求下位机和主机控制器双方都具有独立的发送和接收能力。

  接收/发送时钟用来控制通信设备接收/发送字符数据速度,该时钟信号通常由微机内部的时钟电路产生。接收数据时,接收器在接收时钟的上升沿对接收数据采样,进行数据位检测。发送数据时,发送器在发送时钟的下降沿将移位寄存器的数据串行移位输出。

  接收/发送时钟频率与波特率有如下关系:

  

  式中:Fe为接收/发送时钟频率;n为频率系数,n=1,16,64;vc为收/发波特率。

  接收/发送时钟的周期Tc与发送的数据位宽Td之间的关系是:

  

  式中:n=1,16,64。

  若取n=16,那么异步传送接收数据实现同步的过程如下:接收器在每一个接收时钟的上升沿采样接收数据线,当发现接收数据线出现低电平时就认为是起始位的开始,以后若在连续的8个时钟周期(因n=16,故Td=16Tc)内检测到接收数据线仍保持为低电平,则确定它为起始位(不是干扰信号)。通过这种方法,不仅能够排除接收线上的噪声干扰,识别假起始位,而且能够相当精确地确定起始位的中间点,从而提供一个准确的时间基准。从这个基准算起,每隔 16Tc采样一次数据线,作为输入数据。一般来说,从接收数据线上检测到一个下降沿开始,若其低电平能保持nTc/2(半位时间),则确定为起始位,其后每间隔nTc时间(一个数据位时间)在每个数据位的中间点采样。[page]

  2通信软件设计

  系统通信软件由下位机、主机控制器通信软件和上位机监控软件3部分组成。下位机通信软件功能主要是接收主机控制器发送过来的信号,针对各下位机地址发送应答信号,再根据主机控制器发来的控制信号做出相应的反应,随后发送主机控制器所需数据。其通信功能使用了单片机的串行中断和查询收发状态标志位的方法实现。下位机平时对各监控点进行数据采集并定时存储,当有串行中断时执行串行中断服务程序,判别是否为本机的地址信息,地址信息与本机地址相符时,转为接收控制命令,并执行相应的操作;地址信息与本站地址不符时则退出中断。下位机通信流程图如图4所示。

  

  主机控制器的通信软件实现功能主要包括呼叫各从机(下位机),并向各从机发送查询控制命令。其工作过程为:控制器发送需呼叫的从机的地址,然后等待接收从机的应答信号,若应答信号正确即发送控制命令,若应答信号不正确则重新发送需呼叫的地址,并等待接收应答信号,接收到应答信号后接收下位机发送的数据,存储在相对应的数据存储区并在LCD(液晶显示器)显示屏中显示出来。对同一从机多次呼叫而在规定时间内无应答信号或应答信号不正确,则提示错误信息。图5为主机控制器通信流程图。

  

  上位机监控软件由Visual C++编写,具有良好的可视效果,功能包括数据查询、数据存储、串口通信设置、视频监控、图表显示(单机、多机)等。上位机的数据来自主机控制器,其通过RS-232串口网络传送给上位机,它的接口与RS-485网络的接口是并行的,标准接口有25条线、4条数据线、11条控制线、3条定时线、7条备用和未定义线,但常用的只有9根。

  3结束语

  针对该系统,除了可以使用自己设计的上位机软件进行调试,还可以利用一个简单的串口调试器来实现。该系统覆盖了单片机技术及一部分模拟、数字电路的知识,系统具有一定的操控性、工作稳定、实现容易、成本低,具有很高的使用价值,在系统建成后,运行结果表明系统工作稳定可靠,在工业控制领域有着广阔的前景。

  基于AVR处理器的CAN总线应用

  1 前 言

  现场总线是当前工业总线领域中最活跃的一个领域, CAN 总线是工业数据总线领域重要的现场总线之一。CAN 是Contro ller Area N etw ork的缩写, 是国际标准化的串行通信协议。在当今的汽车产业中, 出于对安全性、舒适性、方便性、低公害、低成本的要求, 各种各样的电子控制系统被开发出来。由于这些系统之间通信所用的数据类型及对可靠性的要求不尽相同, 由多条总线构成的情况很多, 线束的数量也随之增加。为减少线束的数量、通过多个LAN进行大量数据的高速通信, 1986年德国电气商博世公司开发出面向汽车的CAN 通信协议。而今CAN 在欧洲已是汽车网络的标准协议。CAN 的初衷是为了解决汽车里多种复杂数据的通信, 后来证实在很多工业领域也能应用自如。

  2 CAN 总线特性及当今状况

  CAN 总线与其他通讯网络的不同之处在于: 报文传送中不包括目标地址, 以全网广播为基础, 各接收站根据报文中反映数据性质的标识符过滤报文;强化了对数据安全性的关注, 满足控制系统较高的数据需求。它具有如下显着特征: 极高的总线利用率、低成本、高速的数据传输速率、远距离传输、可靠的错误处理和检错机制、可根据报文的ID决定接收或屏蔽该报文, 节点在错误严重的情况下具有自动退出总线的功能等等。

  CAN 总线所需完善的通信协议可由CAN 控制器芯片和接口芯片实现, 大大降低了系统的开发难度、组成成本、缩短了开发周期, 其高性能高可靠性以及灵活的设计受到人们的重视, 应用也越来越广泛。目前比较流行的控制器芯片是飞利浦公司的SJA1000和收发器芯片TJA1050

  由于近几年来 CAN 总线技术逐步在我国推广开来, CAN 总线技术的独特特点 传输数据的可靠性和实时性, 已获得国际自动化控制领域的认可,其应用前景十分光明。国内推动CAN 总线技术进步的应用事例不断扩展, 积极促进了我国自动化技术的进步。由于CAN 总线本身的特点, 其应用范围己经扩展到过程工业、机械工业、数控机床、医疗机械、家用电器及传感器等领域, 而在电梯控制系统中, 主板需要接收不同楼层呼梯、轿厢里呼梯、调整电梯运行参数等多路信号, 因此CAN 总线的优势明显。如图1所示。

  

  图1 CAN总线应用拓扑结构

  3 集成CAN 控制器的ARM 微处理器

  CAN 总线基于一组严格的协议, 一般来说在主CPU 外接一个专用CAN 控制器以实现。由于近年来微处理器的迅速发展, 出现了很多功能强大的集成CAN 控制器的CPU, 使得在CAN 总线应用上又简便了一些。而在价格上, 集成CAN 总线的微处理器和一般处理器加上专用CAN 控制器芯片的价格相当, 所以, 集成CAN 总线的微处理器必然成为今后CAN 总线应用的趋势。NXP 公司生产的ARM结构LPC2294就是其中一款流行的带CAN 总线控制器的CPU。它是基于一个支持实时仿真和跟踪的32位ARM7TDM I- S CPU 的微控制器, 并带有256k字节嵌入的高速Flash 存储器。极低的功耗、多个32位定时器、8路10位ADC、4路CAN以及多达9个外部中断使它们特别适用于工业控制, 因此,LPC2294也可作为电梯控制系统的主控制器。

  4 集成CAN 控制器的高端8位AVR

  上文提到, 电梯控制系统需要处理多路信息, 而且它们可能是具有不同传输速率的, 因此需要使用不同通道的CAN 总线控制器。对于控制系统, 必须具有可操作性, 考虑到要减轻主CPU 的负担, 因此,设计一个简单的操作系统对主系统进行操作, 而数据的交换方式就是采用CAN 总线传输, 此文中称这个操作系统为副系统。副系统相对比较简单, 其功能主要包括: ! 和主板进行信息交换; ? 具有按键供输入; # 具有显示信息的显示器。针对功能的需要和程序的体积, 选用了ATMEL公司近年力推的8位AVR控制器at90can128。

  at90can128是一种基于AVR 增强型R ISC结构的低功耗CMOS 8位单片机。通过执行一个单时钟周期的高效指令, AT90CAN128每MH z能达1M IPS,这就可让系统设计人员将功率损耗与处理速度优化。AVR内核具有丰富的指令集并带有32个通用目的工作寄存器。32 个寄存器全都直接连到运算逻辑单元( ALU ) , 允许两个独立的寄存器在一个时钟周期执行单个指令的方式访问。其结果就是, 采用这种结构的速度比常规的R ISC单片机快10倍的同时代码效率更高。它除了拥有一般AVR 处理器的AD 模块, SPI模块外, 还集成CAN 控制器, 为搭建基于CAN 通信的系统提供了便利。控制结构如图2所示。

  

  图2 at90can128的CAN控制结构。

  对于复杂的CAN 通信协议, 在此不详述, 以下就at90can128的CAN控制器使用作介绍。

  a t90can128的CAN 控制器提供了所有有利于消息管理的硬件, 对于每个要发送或接收的信息都是通过一个叫做消息对象( message ob ject) 的东西来封装起来的。在对模块初始化的时候, 程序会指定哪些消息要发送, 哪些消息要接收, 只有那些约定好标识符的消息才能被正确无误地交换。另外, 对于接收到的远程帧, 控制器会进行相应的自动回复。

  所以在这种方式下, 相对于最原始的CAN 控制方式, CPU 的负担大大减小了。用户可以根据自身要求, 通过对相关寄存器进行配置达到自己的要求。

  而在发送消息之前, 必须初始化几个字段:

  其中IDT 是标识符字段, IDE 是标识符扩展使能选择, RTRTAG是远程传输请求, DLC 是数据长度代码, RBnTAG 是保留字段( n = 0, 1) , MSG 是指向相应MOB的CAN 数据。当MOB 的发送指令执行后, MOB 就会准备发送一个数据或者是一个远程帧。接着, CAN 通道就会扫描各个MOB, 寻找到优先级最高的MOB, 将其发送出去。当传送成功后,MOB 状态寄存器CANSTMOB 中的TXOK 位就会置位。而最重要的是, 对于每一次新的数据传输都必须重新对相关寄存器初始化, 否则无法正常工作。

  接收消息之前所要做的初始化步骤基本相同,只是多了IDMSK 和IDEMSK 标识符掩码的设置。

  以下就给出基于AVR at90can128CAN 总线接口初始化以及发送、接收功能模块的关键代码及注解(见图3)。

  

  图3 电梯系统主板与调试器之间的CAN通信

  CAN 初始化:

  CANGCON | = 0X01;

  for( i= 0; i< 15; i+ + )

  {

  CANPAGE = i< < 4; / /将15个MOB 都初始化一次

  CANCDMOB = 0;

  CANSTMOB= 0;

  CAN IDT1= 0;

  CAN IDT2= 0;

  ……

  for( j= 0; j< 8; j+ + )

  CANMSG= 0;

  CANBT1= 0X1E; / /设置CAN 传输波特率, 16分频

  CANBT2= 0X40;

  CANBT3= 0X49;

  CANPAGE = ( 0< < 4) ; / /选择MOB0作为接收MOB, 并设定标识码

  CAN IDT1= 0X00;

  CAN IDM1= 0X00;

  ……

  CANPAGE = ( 1< < 4); / /选择MOB1作为发送MOB, 并设定标识码

  CAN IDT1= 0X00;

  ……

  }

  发送模块代码:

  CANPAGE = ( 1< < 4); / /选定MOB1

  If( ( CANGSTA& 0X10) = = 0) / /查询CAN 状态寄存器的TXBSY 位, 为0, 则可以发送

  for( i= 0; i< 8; i+ + )

  {

  CANMSG= my _dada[ i] ; / /将要发送的数据装入数据寄存器中, 共8 by te

  CANCDMOB | = 0X48; / /发送

  }

  接收模块代码是类似的, 设计思路都是在判断发送允许标志之后, 如果允许, 就将数据装入到指定的MOB中, 而每个MOB 一个发送周期一共可以发送8byte的数据。而CAN 总线的另一端是NXP公司LPC2294的CAN总线外围, 其结构和原理都差不多。

  当然, 在寄存器设置中会有一点差别, 但只要两个CPU 约定好数据帧的标识符编号是什么, 传输速率相同, 就可以进行数据交换了。由于篇幅有限,LPC2294的CAN接口设置在此就不作介绍了。

  最后给出了CAN 总线应用CPU 外部的硬件原理参考图, 如图4所示。

  5 CAN 总线收发器TJA1050硬件连接图

  图中CAN 收发器为NXP公司的TJA1050, TXD和RXD分别连接到CPU 的CAN接口, CANL和CANH 则为与另一个CPU 连接的总线, CANL 和CANH 之间电阻值约为120欧姆, 开关S可以作为CAN 总线的硬件启用开关。另外, 如果在抗干扰要求高的场合, 可以对TXD 和RXD使用光电隔离。

  

  图4 CPU 外围收发器的硬件原理图。

  6 结束语

  基于at90can128的CAN 总线模块设计的电梯系统调试器, 经过长时间的检验, 使用良好, 通信正常无误。在众多的现场总线当中, CAN 总线凭借其优秀的特性已经为越来越多的工程人员认同和偏爱, 而随着越来越多的高端CPU 对CAN 控制器的集成和综合成本的下降, CAN 总线的使用必定会越来越普遍, 其中集成CAN 控制器的8位AVR 也会受到越来越多人的青睐。

关键字:工业控制  AVR单片机  微控制器 引用地址:AVR单片机工业控制方案合集

上一篇:解读ATmega2560无人机摇杆微控制器设计方案
下一篇:AVR——使用定时器必须弄清的几个概念

推荐阅读最新更新时间:2024-03-16 14:27

51单片机让发光二极管闪烁
简介:学过汇编的同学都清楚,单片机机在执行指令时,是一条一条指令顺序执行的,对于C语言也一样,也是一条一条语句执行,而每执行一条指令或一条语句,都要占用一定的时间,利用单片机执行程序的这个特点就可能用来实现发光二极管闪烁。 大家经常可以看到外面大街小巷各种各样漂亮的闪烁的流水或者说广告灯,如图1,这是怎么实现的呢,这节课我们就来讲下如让发光二极管闪烁和流水灯程序的设计。 图1漂亮的广告灯 1如何实现发光二极管闪烁和简单延时 学过汇编的同学都清楚,单片机机在执行指令时,是一条一条指令顺序执行的,对于C语言也一样,也是一条一条语句执行,而每执行一条指令或一条语句,都要占用一定的时间,利用单片机执行程序的这个特点就
[单片机]
51<font color='red'>单片机</font>让发光二极管闪烁
PIC系列单片机的中断资源特点及其应用方法详解
1 PIC单片机简介 PIC系列单片机是美国Microchip技术公司推出的高性能价格比的8位嵌入式控制器(Embedded Controller),它采用了精简指令集计算机RISC(Reduced Instruction Set Computer)和哈佛(Harvard)双总线以及两级指令流水线结构。具有高速度、低工作电压、低功耗等特点和优良的性能价格比,因而PIC系列单片机越来越受到单片机开发与应用工程技术人员的青睐。该系列独特的结构和中断资源使其在使用时与其它系列的单片机有许多不同之处。下面以PIC16CXX系列微控制器为例来介绍PIC系列单片机的中断资源特点以及应用方法。 2 中断资源的开发与屏蔽 图1是PIC16C6
[单片机]
PIC系列<font color='red'>单片机</font>的中断资源特点及其应用方法详解
如何给MSP430开发板下载程序 并做一个串口实验
1简介 我们需要下面这些软件 CH340驱动软件:是使用BSL下载程序的话,电脑需要和单片机通信,他们之间的桥梁就是CH340芯片,电脑想要识别CH340芯片就需要驱动。下载程序需要使用CH340芯片,让单片机接受指令也需要使用CH340芯片,总之电脑和单片机之间的通信就是靠CH340芯片。 IAR软件:我们需要在这个软件里面写c代码,然后利用这个软件的编译功能,将c代码编译成hex文件,hex文件就是机器文件,单片机依靠这个文件来工作,这个文件最终是要下载到单片机里面去的。 串口助手软件:下载程序有专门用的软件,和单片机相互通信也有专门的软件,串口助手软件可以帮助你和单片机通信,可以在串口助手软件中写一个字符串发送给单片机,同
[单片机]
如何给MSP430开发板下载程序 并做一个串口实验
相同的功率下MSP430™ MCU 性能提升达 100 倍
最新数学函数库在保持超低功耗的同时,为开发人员实现显著性能提升。 2014 年 4 月 4日,北京讯---日前,德州仪器 (TI) 宣布针对其超低功耗 MSP430™ 微控制器 (MCU) 推出免费易用型数学函数库的扩展产业环境,充分利用智能外设与优化软件减轻复杂数学指令的工作量。MSPMATHLIB 与 IQmathLib 软件库理想适用于定位跟踪等性能与功耗都非常重要的应用。现在我们可使用反正切函数通过 MSP430 MCU、加速器以及 IQmathLib 在极短的时间内测量间距与侧倾角。这些优化数学函数软件库的其它理想应用还包括无线传感器节点、智能仪表、心率监视器以及支持电容式触摸或图形功能的任何产品。 MS
[单片机]
STM8S单片机入门(前言)
STM8S单片机是一款广泛使用的8位低功耗单片机,具备系统成本低、功能强大等特点。功能强大也带来了学习入门相对较难的问题。本入门教程面向无任何单片机基础的人,从开发环境的搭建开始,通过详细讲解一个典型单片机应用系统最基本设计和实现过程,帮助大家快速入门。 单片机应用系统的形态很多,但基本模式类似。以智能硬件的应用为例,各种智能硬件区别大多是输入电路(各种传感器及外部信号输入)和输出电路(控制电路、动作电路)的不同,基础部分单片机、电池和充电管理、无线数据模块都是类似的。 所以本入门教程选取包含开关机电路、锂电池充电及电源管理、蓝牙无线接口的一个单片机应用实例,通过讲解这些功能的实现过程,把 STM8S单片机的G
[单片机]
STM8S<font color='red'>单片机</font>入门(前言)
AVR单片机学习活动之带你学会WinAVR
对于GCC(注:本文中所说GCC与WINAVR是同一个概念)的介绍这里不做赘述,对于学习AVR单片机的朋友相信都听说过这款编译软件。AVR的开发软件很很多,下面是本人在网上搜索到的对于几个编译软件的一点比较,仅供参考: 相信对于每个已经在学习AVR的朋友都有一款自己喜欢使用的编译软件,我们推荐使用GCC,原因是它是真正的免费的,对C语言的支持是很好的。可能很多朋友对于使用汇编编程还是使用C语言编程都有不同的见解,在这里我们推荐使用相对高级的C语言进行编程,现在一个好的编译软件对于程序的优化是可以让人接受的,其编译出的程序效率足以满足我们的要求,并且其良好的可移植性为不同平台下的程序编写提供了方便。 这里是GCC的下载页面:
[单片机]
<font color='red'>AVR单片机</font>学习活动之带你学会WinAVR
51单片机实现判断数据尾来接收一串数据的串口通用程序框架
一、使用proteus绘制简单的电路图,用于后续仿真 二、编写程序 /******************************************************************************************************************** ---- @Project: USART ---- @File: main.c ---- @Edit: ZHQ ---- @Version: V1.0 ---- @CreationTime: 20200703 ---- @ModifiedTime: 20200710 ----
[单片机]
51<font color='red'>单片机</font>实现判断数据尾来接收一串数据的串口通用程序框架
芯原业界领先的嵌入式GPU IP赋能先楫高性能的HPM6800系列RISC-V MCU
先楫新一代的仪表显示产品具有高画质、低功耗等特点 2024年3月4日,中国上海—— 芯原股份今日宣布先楫半导体(简称“先楫”)的HPM6800系列新一代数字仪表显示及人机界面系统应用平台采用了芯原的高性能2.5D图形处理器(GPU)IP。 HPM6800系列产品基于RISC-V CPU内核,具备高算力、低功耗、高集成度和出色的多媒体功能,适用于汽车仪表、人机交互界面(HMI),以及电子后视镜(CMS)等需要复杂图形处理、高分辨率显示和高性能多媒体用户界面的应用。 芯原支持OpenVG的2.5D GPU IP能够为MCU/MPU设备提供高能效的图形处理和优质的图像输出,同时显著降低CPU负载。 凭借成熟的可扩展性,该GP
[嵌入式]
芯原业界领先的嵌入式GPU IP赋能先楫高性能的HPM6800系列RISC-V <font color='red'>MCU</font>
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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