




已阅读5页,还剩25页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
.可编辑修改,可打印别找了你想要的都有! 精品教育资料全册教案,试卷,教学课件,教学设计等一站式服务全力满足教学需求,真实规划教学环节最新全面教学资源,打造完美教学模式第二篇 机器人控制部分目录第二篇 机器人控制部分1第一章3轮全方位轮式结构运动原理分析21.1 3轮全方位轮式结构数学模型21.2 任意方向的直线运动31.3其他方向4第二章 机器人电气化系统设计52.1电源模块的设计52.2主控芯片的选择和模块的设计62.3电机驱动器的设计与选择102.4电池参数的计算与选择132.5传感器信息采集模块的设计142.6手动机器人遥控手柄的设计与调试162.7机器人人机界面的设计222.9手动机器人电路总图23第三章 嵌入式程序设计26第三章 嵌入式程序设计263.1.1 系统的主程序263.4.2 初始化任务263.2遥控手柄程序流程图及程序模块263.2人机界面程序模块273.3机器人红方总程序27第四章 设计软件的使用284.1 Proteus284.2 ICC AVR29第一章3轮全方位轮式结构运动原理分析1.1 3轮全方位轮式结构数学模型图2-1-1三轮机器人运动分析图选择固定在车体的坐标系(车体坐标系)XOY,如图一所示:根据运动合成与分解原理,车体的运动和驱动轮的运动之间的运动关系如下: : 三组驱动轮转动的线速度。: 分别是三组驱动轮的转动角。 : 机器人平移速度在机器人车体坐标系下X和Y轴的分量。 :机器人自传的角速度。 :分别是车体几何中心到三组车轮中心的水平距离。R :是车轮的半径。将速度改成角速度: 改写成规范的矩阵形式:, 由这些公式可以很直观的分析出机器人做简单运动时三个驱动轮速度的大小。1.2 任意方向的直线运动此时机器人自转角速度,即机器人平动。则:两种特殊的情况:沿X轴方向是:理论上Vx0,Vy=0。则其分量为沿Y轴方向是:理论上Vx=0,Vy0,的值由线速度决定。1.3其他方向可以直接使用这个公式推断原地旋转:切线运动:由于太复杂,暂时不考虑.第二章 机器人电气化系统设计在开始这章具体内容之前,有必要对我们的专业背景进行一下说明,以便能更好的明白我们为什么会这样设计我们的电路。五年制复合型专业:机械工程及自动化+软件工程。这就意味着我们要有限的时间内学习两个专业的知识,现代机械设计和软件嵌入式,但是嵌入式方向并没有学模拟电路这门极其重要的基础课,仅仅是学过数字电路,所以我们的硬件电路知识是很薄弱和不可靠,更多的是靠我们自学,参考别人的电路模块。所以采取了避开自己弱项,充分发挥自己强项的方法,尽量的使用数字电路而非模拟电路。两年的参赛经验:标准件、商业化的模块才是可靠的。很多时候我们喜欢自己设计一个模块,为自己能设计制作出来而感到有成就感。但是这也容易带来系统的不稳定,也许一个模块小小问题在单独调试时并没有显示太大的缺点,但是一旦集成了一个大系统就容易出现各种不稳定,这一点在09年亚太机器人大赛中感受尤为深切。在09年的比赛中,大部分模块都是队友设计的,很多东西并不具有通用性,什么都需要定制。在北京的一周时间里,我们发现很多好的学校电路几乎都是工业级模块,工业级的产品是经过市场长期检验的,同时具有售后技术服务,性能可靠,而且具有互换性,不会因为自己当初制作时预算数量不够,关键时候出现尴尬。能把各种稳定的模块集成一个新的系统也是一种设计创新。2.1电源模块的设计2.1.1 7805电源模块的设计图2-2-1 7805电源模块电路图单片机最常用的是5V与3.3V两种电压。本线路只用5V电压。输入峰值电压不超过15V,最好使用812V电源。二极管D1防止用户插错电源极性,可以换用1N4148或4007 2.1.2 LM2596电源模块的设计图2-2-2 LM2596电源模块电路图模块性质:非隔离降压模块(buck) ;整流方式:非同步整流输入电压:4.5-35V; 输出电压:连续可调(1.25-30V)输出电流:额定电流2A,最大3A(需加散热片),如果输出功率大于15W,需加上散热片转换效率:最高92%(输出电压越高,效率越高)开关频率:150KHz; 最低压差:2V工作温度:工业级(-40到 +85)(输出功率10W 以内)满载温升:40;负载调整率:0.5%;电压调整率:0.5%输出纹波:输入12V 输出5V 3A 60mV(MAX);输入24V 输出12V 3A 120mV(MAX) 20M带宽;动态响应速度:5% 200uS短路保护:限流,自恢复;输入反接保护:无,或在输入串联二极管接线方式:焊接,加引脚后可直接焊接在PCB上2.2主控芯片的选择和模块的设计对于主控芯片的选择在设计之初大家都有些脱离具体实际情况,想到了用ARM和DSP等32位处理器系列,在2009年ABU Robocon 比赛中我们看到了很多好的学校使用这一类处理器,甚是羡慕。也想到过用16位的PIC或者FREESCAL芯片以及PLC工控模块。但是慢慢的我们都冷静下来,因为这些高端的处理器我们仅仅是了解大概,甚至仅仅是皮毛。我们很多队友连8位的51单片机都还没有在实际项目中用过。尽管之前我们课程中都学过80C51和ARM,但基于大部分队员只能掌握8位的CPU,另外由于我之前就已经开始参加各类比赛,接触51单片机比较早,后来又接触了AVR系列单片机,被AVR的高性能嗦吸引,最后我们的目光还是锁定在了三款8位的单片机80C51、Atmega16、Atmega128上面。从芯片说明书的参数对比中我们看出各款芯片的优劣势,我们一致决定从最初的实验开始就使用Atmega16。Atmega16一直伴随我们完成了初期的各类实验。基本的AVR硬件线路,包括以下几部分:图2-2-3 Atmega16系统电路图1) 复位线路:Mega16已经内置了上电复位设计。并且在熔丝位里,可以控制复位时的额外时间,故AVR外部的复位线路在上电时,可以设计得很简单:直接拉一只10K的电阻到VCC即可(R0)。为了可靠,再加上一只0.1uF的电容(C0)以消除干扰、杂波。D3(1N4148)的作用有两个:作用一是将复位输入的最高电压钳在Vcc+0.5V 左右,另一作用是系统断电时,将R0(10K)电阻短路,让C0快速放电,让下一次来电时,能产生有效的复位。当AVR在工作时,按下S0开关时,复位脚变成低电平,触发AVR芯片复位。实际应用时,如果不需要复位按钮,复位脚可以不接任何的零件,AVR芯片也能稳定工作。即这部分不需要任何的外围零件。图2-2-4 Atmega16系统复位和晶振电路图2) 晶振线路:Mega16已经内置RC振荡线路,可以产生1M、2M、4M、8M的振荡频率。早期的90S系列,晶振两端均需要接22pF左右的电容。Mega系列实际使用时,这两只小电容不接也能正常工作。不过为了线路的规范化,我们仍建议接上。实际应用时,如果不需要太高精度的频率,可以使用内部RC振荡。即这部分不需要任何的外围零件。图2-2-5 Atmega16 AD转换滤波及ISP线路图本系统的熔丝位配置如图5-1所示:系统时钟源采用外接8MHz的石英晶振配合片内RC振荡器的方式,CLKSEL3:0的值为“1111”;SUT1:0的值为“00”,RESET复位启动延时时间/ms为65ms;JTAGEN值为“1”,禁止JTAG功能;SPIEN 值为“0”,允许SPI口下载程序;WDTON值为“1”,WDT定时器由程序控制;BOOTRST值为“1”,启动时第一条执行指令从0x0000开始执行;图2-2-6 熔丝位配置3) AD转换滤波线路:为减小AD转换的电源干扰,Mega16芯片有独立的AD电源供电。官方文档推荐在VCC串上一只10uH的电感(L1),然后接一只0.1uF的电容到地(C3)。Mega16内带2.56V标准参考电压。也可以从外面输入参考电压,比如在外面使用TL431基准电压源。不过一般的应用使用内部自带的参考电压已经足够。习惯上在AREF脚接一只0.1uF的电容到地(C4)。4) ISP下载接口:ISP下载接口,不需要任何的外围零件。使用双排25插座。由于没有外围零件,故PB5(MOSI)、PB6(MISO)、PB7(SCK)、复位脚仍可以正常使用,不受ISP的干扰。5) JTAG仿真接口:这个功能很好很强大,但是一直习惯于用ISP下载然后直接在机器人上面调试所以没有怎么使用,这里就不在介绍。在机器人将开始整体联机调试前,需要将试验阶段的各种小电路模块集成整体电路,在此阶段对立果断的更换了内部资源更多的Atmega128,二者的系统电路没有区别,但极大的减少了芯片数量,减少了我们最薄弱的硬件电路,更好的集成了控制电路,使代码具有更好的效率,也减少了犯错的概率,为调试节约了宝贵的时间。图2-2-7 Atmega128模块系统电路原理图图2-2-8 Atmega128模块系统实物图2.3电机驱动器的设计与选择在直流电机驱动电路的设计中,主要考虑以下几点:功能:电机是单向还是双向转动?需不需要调速?对于单向的电机驱动,只要用一个大功率三极管或场效应管或继电器直接带动电机即可,当电机需要双向转动时,可以使用由4 个功率元件组成的H 桥电路或者使用一个双刀双掷或者两个单刀双掷的继电器。如果不需要调速,只要使用继电器即可;但如果需要调速,可以使用三极管,场效应管等开关元件实现PWM(脉冲宽度调制)调速。不需要调速但能实现电机双向转动的继电器控制电路;图2-2-9 继电器控制电路图对于PWM 调速的电机驱动电路,主要有以下性能指标。1)输出电流和电压范围,它决定着电路能驱动多大功率的电机。2)效率,高的效率不仅意味着节省电源,也会减少驱动电路的发热。要提高电路的效率,可以从保证功率器件的开关工作状态和防止共态导通(H 桥或推挽电路可能出现的一个问题,即两个功率器件同时导通使电源短路)入手。3)对控制输入端的影响。功率电路对其输入端应有良好的信号隔离,防止有高电压大电流进入主控电路,这可以用高的输入阻抗或者光电耦合器实现隔离。4)对电源的影响。共态导通可以引起电源电压的瞬间下降造成高频电源污染;大的电流可能导致地线电位浮动。5)可靠性。电机驱动电路应该尽可能做到,无论加上何种控制信号,何种无源负载,电路都是安全的。下面这个驱动器采用完整的全桥驱动芯片极低内阻的MOSFET组成。完整的全桥驱动芯片可靠的驱动方式,使MOSFET的开关损耗降至最低。提高电源利用率。MOSFET驱动芯片自带硬件刹车功能和电能回馈功能。本驱动器优于功率芯片方案功率余量低和其他半桥组合方案中时序协调复杂问题和互补驱动问题。MOSFET采用耐电流冲击型,内阻为0.005欧,可快速使MOSFET沟道打开,提高电机的加速曲率,同时也能迅速的为电机制动。这可以使的的小车能迅速启动也能迅速杀车。驱动器可以工作在0-100的PWM调制占空比,也是普通驱动器无法做到的。性能参数:额定电压:12V-28V;额定电流:20A;峰值电流:50A外形尺寸:4.4cm*2.7cm*1.2cm图2-2-10全桥驱动电路图及逻辑表安装方式:针脚孔是标准2.54mm间距,可与实验板直接插接。在高精度控制的电机上面我们还需要使用专门的电机控制器;MLSS4805直流伺服驱动器图2-2-12 MLSS4805直流伺服驱动器适用范围 适合驱动有刷、永磁直流伺服电机,力矩电机,空心杯电机; 最大连续电流5A,最大峰值电流10A; 直流电源+1248V; 功率200瓦,过载能力达400瓦; 速度、位置的四象限控制。主要功能 输入脉冲、方向信号进行步进模式控制; 高精度PWM信号速度控制; 通过RS232实现参数调整、在线监测; PID参数数字化存储; 实时读取驱动器内部温度; 过流、过载、过压、欠压保护; 温度保护; 超调、失调保护,动态跟踪误差保护。反馈元件:增量式编码器。接口定义1 1248V 驱动器电源(输入电机额定电压) 输入 电源 2 0V 驱动器电源地 输入 3 MOT+ 电机驱动信号正 输出 电机 4 MOT- 电机驱动信号负 输出 5 +5V 编码器正电源 输出 编码器 6 A 编码器信号A通道 输入 7 B 编码器信号B通道 输入 8 0V 编码器电源地 输出 9 TX RS-232发送端,与编码器电源共地 输出 RS232 10 RX RS-232接收端,与编码器电源共地 输入 11 VCC 控制信号公共电源(4.755.25V) 输入 控制信号 12 CLK / PWM 控制输入(脉冲 / 脉宽)(隔离) 输入 13 DIR 方向控制(只在步进模式有效,隔离) 输入 14 EN / RST 外部使能控制(隔离) 输入 15 FAULT 故障输出(隔离) 输出 16 GND 控制信号,和VCC由外部供给 输入 串口连接驱动器标号 颜色 DB9引脚号 TX 红 2 RX 蓝 3 0V 黄(或绿) 5 PWM速度控制模式 (1)信号来源:PWM信号 (2)设置模式:PWM速控模式,信号源:SCS2 (3)PWM信号规范: 频率范围:100-500Hz;占空比范围:1%占空比99%(推荐,在此范围内,线性度能保证在0.1%以内)。占空比50%,V = 0;占空比50%,电机反转;占空比50%,电机正转。 计算公式:V = Vmax *(占空比*100 50)/50 例如:当设置SSP5000,占空比 = 5%时, V = 5000*(0.05*100 50)/ 50 = -4500 RPM (4)为了保证 PWM占空比为50%时,电机速度为零,可用SMV指令设置最小速度;2.4电池参数的计算与选择电池需要考虑芯片控制电路需要使用的电压一般为5V,而动力驱动为24V,这样就涉及二者到是否需要隔离。考虑到电机启动对电路的稳定影响很大,所以我们采用了两种不同的电池为控制系统和动力系统提供电源。对于机器人电池我们从三个方面考虑:电压,电流,容量:手动机器人主要动力消耗有3台25W的MAXON RE25底盘驱动电机,2台45W的升降的空心杯电机以及2台20W的手臂推块用电机。动力总功率:P=3*25+2*45+2*20=205W电池电压:U=24V最大正常工作情况下总电路电流:I=P/U=205/24=8.5A但实际正常工作的电路中不会出现上面所算出的那么大电流除非电机堵转或者短路。由流程图可以看到机器人最大工作电流为升降时两台45W电机同时工作即90W,此时的电流I1=90/24=3.75A。给电池留有余量所以I=I1*1.5=5.625A。根据机器人的完成任务所需要的时间我们假设为10分钟(实际上场比赛为90s,我们需要留有很大的余量,因为在备场调试还有等待的时间消耗)也就是1/6小时,那么整个动力电池的容量根据上面的定义将需要接近1AH。在家调试的时候我们继续使用的09年亚太机器人大赛留下来的磷酸铁聚合物电池容量为10AH,最大瞬间电流10A。但是磷酸铁聚合物电池体积大重量大,在所有机器人都调试完了准备去北京之前的半个月我们面临超重的严峻问题,在经过大家讨论之后决定更换航模电池,其特点是容量大,放电电流大,重量轻。串联/并联: 当电池组串联时,电压叠加,容量不变;当电池组并联时,容量叠加,电压不变。根据串并联原理我们需要得到24V的电池就需要串联7个电池单元,最后我们得到的组合电池具体如下: 航模电池单元参数芯片电5V航模电池单元参数动力24V航模电池组装参数尺寸(mm):58x9x24尺寸(mm):120x20x50尺寸(mm):120x20x75容量(mAh): 1200容量(mAh): 1200容量(mAh): 1200放电倍率:18c放电倍率:18c放电倍率:18c电压(V):3.7V电压(V):7.4电压(V):25.9重量(g):32g重量(g):65重量(g):250航模电池具有专门的智能充电器,解决了很多后顾之忧。在后来的实践中证明自己组装的电池满足我们机器人的使用。图2-2-11 航模电池单元及智能充电器2.5传感器信息采集模块的设计2.5.1编码器运动控制系统中反馈装置的作用是将物理参数转换成电信号,以便可由仪表转换成数据表示,或者形成反馈通道给控制器提供决策的依据。为了实现运动控制系统的闭环控制,就需要反馈装置把运动机构的位置、速度、转矩、电流和电压等参数反馈给控制器。编码器分为码尺和码盘。码尺是用来测量线性位移的,而码盘是用来测量角度位移的。我们的足球机器人选用光电编码器。光电编码器是把表征物体运动状态的物理量(位移、速度、加速度等)转换成相应的电学数字量,再通过微电子和计算机技术处理,实现自动检测和自动控制,编码器有两种使用方法:1) 通过安装在编码器轴上的从动轮在地面滚动的圈数计算,达到测量机器人在路面上行驶的位移的目的。位移传感器采用光电编码盘。码盘安装在与主动轮同轴的从动轮上,与主动轮同步转动。设从动轮周长为L,码盘线数为M,t时间内码盘输出的脉冲数为N,轮子走过的距离S就是:机器人选用的从动轮码盘采用的500线的中空轴编码盘,输出A、B、Z三相脉冲。在电路实现上码盘的四路信号,可经过差分传输器形成两路信号,且这两路信号有90度的相差,也可以直接利用有90度相差的,两路信号。在CPU中用一路信号对另一路信号进行鉴相就可以知道码盘是正转还是在反转,正转时加计数,反转时减计数。在码盘转轴上的轮转一圈也就代表码盘光栅也转了一圈。所以可以根据从码盘光栅转动的输出信号来判断从动轮转了多少圈,再根据其周长就能算出机器人运动的距离。这里要注意码盘上的从动轮一定要保证始终与地面有一定压力接触,不能丢圈。图2-2-12 增量光电编码器工作原理2) 安装在电机轴上,信号反馈到控制器上实现对电机的闭环控制。原理和上图是一样的,但测量对象发生了改变,通过对电机转速的检测实现电机的实时控制。伺服电机控制器(除步进电机外)的控制也是基于码盘的。图2-2-13 HP 500线编码器接线图及和电机完整的装配图2.5.2光电开关品牌GAODE名称光电开关 漫反射型型号E3F-DS30C4输出方式NPN三线常开外形直径18毫米圆柱体工作电压直流10-36VDC以内检测距离30厘米(CM) 距离可调输出电流300毫安(MA)检测物体不透明体外壳材料塑料ABS常开型(NO)和常闭型(NC)的区别:常开(NO)是平常状态下信号输出线为断开状态,无信号输出,当感应到物体时才闭合,输出信号。常闭(NC)是平常状态下信号输出线为闭合状态,持续信号输出,当感应到物体时才断开,关闭信号。两种类型接近开关或光电开关根据实际需要选用。三根线的接法:粽色接电源的正极,兰色接电源的负极,黑色接负载(信号输出)。2.5.3触动/限位开关最简单最实用的传感器,不在过多介绍。2.6手动机器人遥控手柄的设计与调试2.6.1矩阵按键式使用最为广泛的信号输入设备。2.6.2 PS游戏手柄PS手柄针脚输出: 面对插头 - PIN 1-| o o o | o o o | o o o | _/ 对应针脚及作用 1) DATA 2) COMMAND 3) N/C (9 Volts unused) 4) GND 5) VCC 6) ATT 7) CLOCK 8) N/C 9) ACK 图2-2-14 SONY PS手柄实物图 DATA:信号流向从手柄到主机。此信号是一个8 bit的串行数据,同步传送于时钟下降沿(输入输出信号在时钟信号由高到低时变化,所有信号的读取在时钟前沿到电平变化之前完成。) COMMAND :信号流向从主机到手柄。此信号和DATA相对,同样是一个8 bit的串行数据,同步传送于时钟下降沿。 VCC:电源电压从5V到3V原装的索尼手柄都可以工作。主机主板上装有表面安装的750mA 保险丝 ,用于防止外设过载(750mA是包括左右手柄和记忆卡)。 ATT:ATT 用于提供手柄触发信号。信号在通信期间处于低电平。又有人将此针脚叫做 Select, DTR 和 Command。 CLOCK:信号流向从主机到手柄。用于保持数据同步。 ACK:从手柄到主机的应答信号。此信号在每个8 bits数据发送之后的最后一个时钟周期变低,并且ATT 一直保低电平。如果ACK 信号不变低约60微秒PS主机会试另一个外设。PS手柄信号:所有通讯都是8 bit串行数据最低有效位先行。在PS 手柄总线的所有时码在时钟下降沿都是同步的。传送一个字节的情况如下所示。 |BIT 0|BIT 1|BIT 2|BIT 3|BIT 4|BIT 5|BIT 6|BIT 7| CLOCK -_-_-_-_-_-_-_-_- DATA -000000111111222222333333444444555555666666777777- * * * * * * * * CMND -000000111111222222333333444444555555666666777777- ACK -_- 数据线的逻辑电平在时钟下降沿驱动下触发改变。数据的接收读取在时钟的前沿(在记号*处)到电平变化之前完成。 在被选手柄接收每个COMMAND 信号之后,手柄需拉低ACK 电平在最后一个时钟。如果被选手柄没ACK 应答主机将假定没手柄接入。 当单片机主机想读一个手柄的数据时,将会拉低ATT 线电平并发出一个开始命令 (0x01)。手柄将会回复它的ID (0x41=数字, 0x23=NegCon, 0x73=模拟红灯, 0x53=模拟绿灯). 在手柄发送ID 字节的同时主机将传送0x42 请求数据。随后命令线将空闲和手柄送出 0x5A 意思说:“数据来了”。 下面是一个数字手柄的时钟信号 ATT -_ | Byte 1 | | Byte 2 | | Byte 3 | CLOCK -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- 0xFF 0x41 0x5A DATA -_-_-_-_-_-_- 0x01 0x42 CMND -_-_-_-_- ACK -_-_-_-在手柄执行初始化命令之后将发送它所有的数据字节(数字手柄只有两个字节)。在最后字节发送之后使ATT 高电平,手柄无需ACK应答。 数字手柄的数据传送如下所示(这里A0,A1,A2.B6,B7 是两个字节的数据比特)。 ATT _- | Byte 4 | | Byte 5 | CLOCK -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- DATA -D0D1D2D3D4D5D6D7-E0E1E2E3E4E5E6E7- CMND - * ACK -_- 注意: 没ACK.2.6.3 SPI串行总线介绍3) SPI总线的组成:串行外设接口SPI是由Freescale公司提出的一种采用串行同步方式的3线或4线通信接口,使用信号有使能信号、同步时钟、同步数据输入和输出。典型的SPI总线系统包括一个主机和一个从机,双方通过4根信号线相连,分别是:4) 主机输出/从机输入(MOSI)。主机的数据传入从机的通道。5) 主机输入/从机输出(MISO)。从机的数据传入主机的通道。6) 同步时钟信号(SCLK)。同步时钟是由SPI主机产生的,并通过该信号线传送给从机。主机与从机之间的数据接收和发送都以该同步时钟信号为基准进行。7) 从机选择()。该信号由主机发出,从机只有在该信号有效时才响应SCLK上的时钟信号,参与通信。主机通过这一信号控制通信的起始和结束。8) SPI通信地特点:SPI通信过程是一个串行移位的过程。当主机需要发起一次传输时,它首先拉低,然后在内部产生的SCLK时钟作用下,将SPI数据寄存器的内容逐位移出,并通过MOSI信号线传送至从机。而在从机一侧,一旦检测到有效之后,在主机的SCLK时钟作用下,也将自己寄存器中的内容通过MISO信号线逐位移入主机寄存器中。当移位进行到双方寄存器内容交换完毕时,一次通信完成。如果没有其他数据需要传输,则主机便抬高,停止SCLK时钟,结束SPI通信。9) 可以得出SPI通信的特点如下:10) 主机控制具有完全的主导地位11) SPI通信时一种全双工高速的通信方式12) SPI的传输始终是在主机控制之下,进行双向同步的数据交换AVR的SPI接口原理SPI接口的主要特征:全双工、3线同步数据传输可选择的主/从操作模式数据传送时,可选择LSB(低位在前)方式或MSB(高位在前)方式7种可编程的位传送速率数据传送结束中断标志写冲突标志保护从闲置模式下被唤醒(从机模式下)倍速(CK/2)SPI传送(主机模式下)SPI接口硬件:数据寄存器SPI接口的核心是一个8位移位寄存器,这个寄存器在时钟信号的作用下,实现数据从低位移入,高位移出。一旦程序将需要发送的字节写入该寄存器后,硬件就自动开始一次SPI通信的过程。通信结束之后,该寄存器中的内容就被更新为收到的从机串出的字节,供程序读取。写入发送的字节的操作需要在一字节传输结束之后进行。时钟逻辑当配置为SPI主机时,时钟信号由内部分频器对系统时钟分频产生。这个时钟信号一方面被引入到移位寄存器,作为本机的移位时钟;另一方面还被输出到SCK引脚,以提供给从机使用。当配备为SPI从机时,时钟信号由SCK引脚引入到移位寄存器,与内部时钟无关,此时SPI时钟配置位无效。引脚逻辑SPI引脚方向定义:引脚 主机方式 从机方式MOSI(PB5) 用户定义 输入MISO(PB6) 输入 用户定义SCK(PB7) 用户定义 输入(PB4) 用户定义 输入注:对输入引脚应通过设置相应位使能内部的上拉电阻,以节省总线上外接的上拉电阻。控制逻辑控制逻辑单元主要完成以下功能:SPI接口各参数的设定,包括主、从模式、通信速率、数据格式等传输过程的控制SPI状态标志,包括中断标志(SPIF)的设置、写冲突标志(WCOL)的置位等SPI接口的设计应用要点初始化正确选择SPI的主/从机方式正确设置通信参数正确设置数据串出的顺序引脚的处理在主机模式下,引脚方向的设置(PB4)会影响SPI接口的工作方式,尽量设置成输出方式在SPI(主机模式)操作过程中,并不会自动产生任何的控制信号,所有需要从输出地控制信号均需通过用户程序来完成总线竞争的处理产生总线竞争是当SPI总线上存在多主机情况下产生的,处理总线竞争不仅需要硬件具备相应的功能,同时在SPI中断程序中也需要包含对总线竞争的处理过程。为了防止总线冲突,本机的SPI接口将自动产生以下操作:清除SPCR寄存器的MSTR(主机选择)位,将自己设置为从机。MOSI和SCK引脚自动设为输入SPSR寄存器的SPIF置位,申请中断注:在不需要处理总线竞争的简单SPI系统中,位保证本机作为SPI主机正常工作,应将设置为输出。如果将设置为输入,则应保证该引脚始终为高电平。2.7机器人人机界面的设计LED:最简单的信号显示装置。数码管:要注意区分共阴和共阳。AVR的IO口能直接驱动数码管。LCD:为了显示足够的信息同时节约单片机的硬件资源我们使用了串行控制的12864LCD。这次我们主要采用了LED和12864LCD作为人机界面。图2-2-15 12864与Atmega128接口图LCD液晶模块采用128X64点阵的汉字图形液晶显示模块,可显示汉字及图形,它的内部配置8192个中文汉字、128个字符,方便程序编写,而无需另外编写字模。模块可与CPU直接接口,它提供两种界面来连接微处理机:8-位并行及串行两种连接方式,本电路采用串行连接方式。串行连接方式用到的接口有:VSS、VDD、V0、RS/CS、RW/SID、E/SCLK、PSB、RST、LED+、LED-。VSS为电源地,VDD为逻辑电路提供电压源(+5V),V0为调节液晶屏的亮度。RS/CS、RW/SID、E/SCLK三根引脚为串行总线,RS/CS为双向数据线,RW/SID为读或者写使能引脚,E/SCLK为使能信号线。PSB为串行连接方式或者并行连接方式选择引脚,低电平时为串行连接方式、高电平为并行连接方式;RST为复位引脚,低电平有效;LED+为背光灯正极;LED-为背光灯负极。本系统的LCD液晶屏接口电路采用串口连接方式,其初始化流程图如图2-2-16,其初始化代码如下:#define BIT(x)(1x)unsigned char cs=0 ; unsigned char sid=1 ;unsigned char sclk=2 ; void LcdIni(void) DDRG=0XFF ; PORTG=0XFF ; /PORTB输出全部为1 PORTG |=BIT(cs) ; /片选有效 PORTG &=BIT(rst) ; delay() ; /延时以复位 PORTG |=BIT(rst) ; PORTG &=BIT(cs) ; /片选无效 WrOp(0x20) ; WrOp(0x01) ; WrOp(0x06) ; WrOp(0x0c) ; WrOp(0x80) ;图2-2-16 12864初始化流程图2.9手动机器人电路总图图2-2-17 系统总电路原理图 第三章 嵌入式程序设计3.1 系统程序函数3.1.1系统的主程序系统进入主函数main()函数后,开始各种任务的调度,然后进入一个while(1)函数的死循环,等待着内部的系统调度,系统的主程序的流程图如图2-3-4所示。首先用init()函数初始化各个硬件的寄存器及打开一些中断系统,然后进入while(1)函数的循环等待着各个任务的触发。图3-1-1 系统的主程序流程图3.1.2 初始化任务函数Init()是整个程序最开始的任务,该任务在主函数中创建。为了防止在初始化过程中发生中断,导致系统瘫痪,在进行初始化前使用CLI()函数禁止所有的中断。然后对I/O、计数器、定时器、USART串口、LCD模块和中断控制寄存器进行初始化。在初始化完后,开始总体允许中断标志位SEI()。3.2遥控手柄程序流程图及程序模块SPI接口与手柄之间通信的软件设计SPI参数的设置:1. SPI Mode:Mode32. SPI Clock Rate:115.200kHz(Fosc为7.372800MHz)3. SPI Type:Master4. Data Order:LSB First第四章 设计软件的使用4.1 ProteusProteus软件是英国Labcenter electronics公司出版的EDA工具软件。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。Prote
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论