




已阅读5页,还剩32页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本次课程设计我们第11小组的课程内容是自主设计一款管道清扫机器人。机器人主要由电机、后轮、前轮、万向节、毛刷等组成。基于毛刷的弹性与自适应性,利用电机带动毛刷离心运动,使其贴附管壁进行清扫,并且行走部分和毛刷部分通过万向联轴器联结使其完成转向动作,可实现水平大角度转弯、变径管道清扫等功能,克服了机器人在管道中卡死、打滑等缺点。关键字:管道清扫机器人 自主设计 自适应性目录摘要II第一章 设计综述11.1智能机器人系统国内外发展现状11.2智能机器人系统设计任务概述11.3课程设计主要内容1第二章 方案设计22.1机械结构方案设计22.2驱动方案选择22.3工作部分方案选择32.4结构的合理性及参数的合理性4第三章 机械系统设计53.1 机械系统总体方案53.2 关键零部件结构设计53.3 运动轨迹规划7第四章 软件系统设计124.1 控制系统总体方案124.2 运动控制器选型124.3驱动电机控制电路设计124.4 电源供电电路设计13第五章 软件系统设计145.1 软件系统总体方案145.2位姿控制方案与流程14第六章 装配与调试156.1机器人系统整体装配156.2系统调试流程与状况166.3设计创新点166.4系统缺陷与改进17第七章 市场应用前景分析18项目心得19参考文献20附录一 成本分析21附录二 源程序22第1章II第一章 设计综述1.1智能机器人系统国内外发展现状智能机器人是第三代机器人,这种机器人带有多种传感器,能够将多种传感器得到的信息进行融合,能够有效的适应变化的环境,具有很强的自适应能力、学习能力和自治功能。目前研制中的智能机器人智能水平并不高,只能说是智能机器人的初级阶段。智能机器人研究中当前的核心问题有两方面:一方面是,提高智能机器人的自主性,这是就智能机器人与人的关系而言,即希望智能机器人进一步独立于人,具有更为友善的人机界面。从长远来说,希望操作人员只要给出要完成的任务,而机器能自动形成完成该任务的步骤,并自动完成它。另一方面是,提高智能机器人的适应性,提高智能机器人适应环境变化的能力,这是就智能机器人与环境的关系而言,希望加强它们之间的交互关系。在各国的智能机器人发展中,美国的智能机器人技术在国际上一直处于领先地位,其技术全面、先进,适应性也很强,性能可靠、功能全面、精确度高,其视觉、触觉等人工智能技术已在航天、汽车工业中广泛应用。日本由于一系列扶植政策,各类机器人包括智能机器人的发展迅速。欧洲各国在智能机器人的研究和应用方面在世界上处于公认的领先地位。中国起步较晚,而后进入了大力发展的时期,以期以机器人为媒介物推动整个制造业的改变,推动整个高技术产业的壮大。1.2智能机器人系统设计任务概述 此次只能机器人系统设计要求我们小组针对特定应用领域现有机器人无法满足市场应用的现状,自由设计并制作一款新型专用机器人系统。应用领域可具体分为军用机器人、工业机器人、服务机器人、软体机器人、防爆机器人、水下机器人、救援机器人、医用机器人、微型机器人等,但不限这些方向。1.3课程设计主要内容 根据要求,我们小组决定自主创新设计一款管道清洁机器人,主要用于清扫管道内部难以处理的污垢,是一种可沿管道内壁行走的机械,它可以携带一种或多种传感器以及操作装置(CCD传感器、位置和姿态传感器、超声传感器、涡流传感器、管道清理装置、管道裂纹及管道接口焊接装置、防腐喷涂装置、简单的操作机械手等),通过操作人员的控制来进行一系列的操作。第二章 方案设计2.1机械结构方案设计图1 管道机器人整体设计图我们小组设计的管道清扫机器人主要由两个部分组成:行走部分和工作部分。由图可见后面红色的三块亚克力板组成的结构为行走部分,前面的毛刷以及电机组成了工作部分这两个部分之间通过一个万向联轴器来进行连接,这样就可以实现机器人在管道当中进行转向的功能。2.2驱动方案选择清洁机器人的行走方式有多种可以是车轮式的、履带式的、也可以是腿式的等。腿式机器人能跨越较小的障碍,但移动速度慢;车轮式移动速度快、控制灵活,但维持一定的吸附力较困难,车轮的直径会使机器人相对于管壁的扭矩增大,使机器人运行的稳定型和安全性相应降低;履带式着地面积大,机器人运行平稳,但其不易转弯。这三种行走方式的跨越障碍能力都很弱。由于车轮移动方式的大部分技术比较成熟。控制也比较容易,所以本设计就采用轮式移动结构。一般采用轮式驱动可以选择三轮、四轮、六轮等,在此根据清洁机器人的大小采用的是了三轮的行走机构。用两个轮做驱动使机器人行走。 行走部分是在末端的三个轮子上安装马达驱动整个机器人在管道中行走,其中为了适应不同的管道内径,我们设计了一个丝杠用于调节三个轮子的收缩与伸张。图2 行走部分结构组成:整个行走部分由步进电机控制的滚珠丝杠、丝杠螺母、三块亚克力板、三条驱动腿、三个由直流电机驱动的马达、三根光轴和直线轴承组成。工作原理:由步进电机驱动的丝杠通过软件控制可以实现丝杠螺母上下移动的距离,同时丝杠螺母固定在中间的亚克力板上面带动板来回往复移动。三根光轴与直线轴承配套可以起到一个稳定的作用,使中间的亚克力板能够平稳的上下移动,这样就可以实现三条腿的向外扩张与收缩,使其能够紧贴管道内壁以适应不同的管径。在贴紧内壁之后,腿部末端装有三个直流电机驱动的轮子,通过软件可以控制电机转动,最终就可以实现整个机构在管道中的前进和后退。2.3工作部分方案选择通过学习国内外现在的管道机器人的结构,我们小组发现现如今的产品的工作部分都是都是固定外径结构的,在清扫不同的管道是不能自身调节工作外径,需要不断的更换毛刷。为此我们小组自行创新设计了一个能够自行调节外径用以适应不同管道内奸的工作结构,这样会使产品的使用更加的方便与快捷。具体结构见下图:图3 工作部分 结构组成:整个工作部分由绿色的毛刷、白色的伸缩杆和红色的管径调整部件组成。 工作原理:工作部分如图所示,中间红色的管径调整部件通过旋转可以实现三个白色的伸缩杆的向外拉伸与向里收缩,其实质上是构成了三个曲柄滑块机构,通过这三个曲柄滑块机构控制整个清扫毛刷调整外径用于适应不同的管径。旋转中心连接直流电机马达,通过软件编程可以实现电机带动整个工作部分运转(在这个过程中红色的部件也随着电机一起转动,它只起一个控制毛刷外径的作用),用毛刷清扫管道内壁达到预期目的。2.4结构的合理性及参数的合理性 我们小组自行设计的管道清扫机器人在结构的布置上较为合理,首先整个机器人的重量集中在后面的驱动部分,这样保证的了机械结构的重量集中在了后面,使整个机器人在管道中能够保持平稳的状态。其次,在设计工作部分时,为了适应不同的管径,我们设计了旋转控制零件,用于控制毛刷的工作半径,使得工作更加的方便。第三章 机械系统设计3.1 机械系统总体方案经过我们小组成员的努力,最后设计出来的机械系统总体方案的三维图如下图所示:图4 机械系统总体方案图3.2 关键零部件结构设计为实现毛刷能够根据管径大小进行自我调整,我们小组在毛刷的工作部分设计了一个旋转控制零件如下图5所示:图5 旋转控制零件图6 曲柄滑块机构图7 连接杆卡槽 这个旋转控制零件通过与几个连接杆组合形成了三个曲柄滑块机构,同时在连接杆上加工了一个卡槽以防止杆件脱离,这样在毛刷转动的过程中就可以利用转动产生的离心力使得毛刷紧贴管道的内壁清扫,这样就实现了毛刷对于不同大小管径管道的自动调节。3.3 运动轨迹规划 为了了解管道机器人的轨迹方程就必须知道管道机器人在管道的运动状态。管道机器人在通过弯道时的运动状态分为两种运动状态: 其一是过渡阶段。这时管道机器人单元体处在弯道和直管之间,单元体的运动是 平面运动。假定单元体进入弯道一端中心,围绕管道曲率中心行走,见图8。为了 便于说明机器人通过性的问题,此后所列的轨迹方程是以机器人长为 L=70mm,管道曲率半径为 R=120mm,管道直径为 D=80mm,取用工程常用的 R/D=1.5 ,管道环绕角度为90来分析。 图8 其二是旋转阶段。这时单元体完全处在弯道范围内,它的运动是绕弯道曲率中心的 转动,见图8。同时假定单元体是以某一种姿态通过弯道的,如图8所示。 以姿态角 来描述,设管道直径为 D,弯道曲率半径为 R=1.5D(工程常用),静坐标 系为 O -(x ,y, z ) ,过渡坐标系为 O- (x, y, z), ,动坐标系为 O-( x, y, z) 设置如图8所示 。 设单元体前后两组行走轮间距为 L,以管道机器人的姿态角 来描述,在过渡阶段单元体坐标系的设置如图9所示。动坐标系由过渡坐标系旋转() 角来形成。首先必须确定前后两组行走轮在直管中的动坐标系 O-( x, y, z) 与管道曲面的接触点的矩阵:R (表示机器人后端的行走轮与管道曲面的接触矩阵方程);F (表示机器人前端的行走轮与管道曲面的接触矩阵方程) 图9图10式(415)和式(416)是机器人在过渡坐标系的姿态方程,设 R为机器人动坐 标系矩阵方程,R转 为机器人旋转矩阵(围绕 Z 轴转(-) 角),推出机器人在动坐标系的姿态矩阵方程:R=R转R(4-17)位置矩阵为 。由于很小, 所以cos1;sin, , w 变为 设R新为机器人最终的位姿方程,则R新=R+w,即R新同理可得机器人前端的矩阵 F 新为: F 新=R转F+w,F新=+= 假设行走轮是刚性的,当管道机器人的行走轮正处在直管与弯管道过渡段时,很可能有的行走轮不与管道曲面接触。这时,称行走轮上对应的最边缘的点为可能接触点。从上述位移矩阵分析,可以得到过渡阶段前后两组行走轮上可能接触点的位置矩阵,即R新表示机器人后端一组行走轮的位置矩阵,F新表示机器人的前端一组行走轮的位置矩阵。 角的确定如下: 如图10所示, 角为机器人在过渡阶段围绕弯道曲率中心的旋转角,其值 =0 (带入数据 =0 34) ,其大小与 L、 R 的比值有关。 角其值由 R(1-cos ) = Lsin,得 =。可见 角与 角变化有关。当 角增大时, 增大。因而, 角也一直增大,最后增大到 = /2 为止 (带入数据0 17 ) 。第四章 软件系统设计4.1 控制系统总体方案管道清理机器人由多个功能模块共同组成,这几个模块共同工作、相互协调、相互作用,保证了机器人能够顺利的进行清扫。机器人的中心是控制芯片STM32,它对其它各个功能模块进行控制。蓝牙遥控接收模块可以接收人们对机器人的控制信息,然后把信息传给STM32进行处理。STM32处理之后对直流电机和步进电机进行控制,以完成机器人的工作过程。STM32简介:STM32系列基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex-0内核。ARM公司的高性能Cortex-M3内核:1.25DMips/MHz,而ARM7TDMI只有0.95DMips/MHz。一流的外设:1s的双12位ADC,4兆位/秒的UART,18兆位/秒的SPI,18MHz的I/O翻转速度。低功耗:在72MHz时消耗36mA(所有外设处于工作状态),待机时下降到2A。最大的集成度:复位电路、低电压检测、调压器、精确的RC振荡器等简单的结构和易用的工具。4.2 运动控制器选型直流电机4个和步进电机1个蓝牙模块 1个直流电机驱动模块 2个4.3驱动电机控制电路设计图9 驱动电机控制电路图4.4 电源供电电路设计图10 电源供电电路图第五章 软件系统设计5.1 软件系统总体方案通过蓝牙模块实现手机端的蓝牙遥控,手动实现管道机器人的腿部的伸缩与扩张,在进入管道前进行调节以适应管道大小,还可以控制管道机器人在管道内的的前进与后退。5.2位姿控制方案与流程 在进将机器人放入管道之前,可以通过手机客户端蓝牙控制机器人腿部的伸缩与扩张,使机器人完全适应管壁的大小,从而使机器人可以稳定的在管道内行走。 流程图如下图所示:图11 位姿控制流程图第六章 装配与调试6.1机器人系统整体装配 经过几个星期的设计与装配,我们小组完成了整个机器人的装配,实物图片如下所示:图12 机器人实物图 装配图纸如下图所示:图13 机器人装配图纸6.2系统调试流程与状况 (1)开始的时候我们使一个直流电机转动,但是当我们同时控制4个直流电机运转的时候,发现由于电压的不同导致电机转速不同,电机转速不同必然会导致管道机器人在管道内不能平稳运行。 (2)在开始调试步进电机的时候不清楚步进电机驱动器引脚应该怎么接入STM32,根本不能控制步进电机,后来在丰宗强学长的帮助下终于调试成功,通过输出脉冲信号来控制步进电机运转,但目前还没有在程序中加入方向控制,所以电机目前只能是接高电平沿着一个方向转动,接低电平才会沿着反方向转动。 (3)还有一个问题是控制直流电机和控制步进电机的两个程序目前无法整合到一起,两个程序所用端口有冲突,需要通过电脑分别写入程序然后分别控制两种电机。6.3设计创新点 在此次课程设计中我们小组发现目前市场上的管道清扫机器人对于不同管径的管道无法实现自适应,需要进行人工的手动调整才能实现,过程显得十分麻烦。为此我们小组在工作部分自主创新设计了一个可以根据管径的大小自动改变清扫半径的毛刷,如下图所示:图12 工作部分 中间的管径调整部件通过旋转可以实现三个伸缩杆的向外拉伸与向里收缩,其实质上是构成了三个曲柄滑块机构,通过这三个曲柄滑块机构控制整个清扫毛刷调整外径用于适应不同的管径。旋转中心连接直流电机马达,通过软件编程可以实现电机带动整个工作部分运转(在这个过程中旋转控制部件也随着电机一起转动,它只起一个控制毛刷外径的作用),用毛刷清扫管道内壁达到预期目的。6.4系统缺陷与改进(1) 在结构设计的过程中,由于前期设计的不够合理导致最后做出来的实物尺寸过大,让整个结构显得太大了一些,不太符合管道机器人的设定条件。改进办法:在后期的设计当中,将整个结构成比例的缩小。(2) 在设计的过程中发现前面部分的支撑轮设计结构过于复杂,在现有的条件下无法实现,结构缺乏支撑轮的设计。改进办法:至今尚未解决这个问题。(3) 机器人上面没有设计有摄像头以及个中探测传感器。改进办法:后期设计再加装传感器。第七章 市场应用前景分析 管道机器人目前主要应用于军事、电力、石油石化、无损检测、市政、考古等行业,主要完成城市地下管网检测、市政地下管道检测、管道数据采集工具、管道内取样工具、管道修复以及金属冶炼厂、化工企业等烟气输送管道烟灰堆积层的清理等等。日本、美国、英国、德国等发达国家在管道机器人技术方面已做了大量的工作,取得了比较突出的成绩。其中,日本机器人的发展经过了上世纪六十年代的摇篮期,七十年代的实用期,到八十年代进入普及提高期,并且开始在各个领域内广泛推广使用机器人。 二十世纪七十年代以来。石油化工天然气及核工业等产业迅速发展,各种管道作为一种重要的物料输送设施,得到了广泛应用。灰尘、物料残留物等杂质不可避免的会附着在长时间工作的管道中。同时,多数管道安装环境,人们不能直接到达或不允许人们直接进入。管道清扫机器人是能够在水平管道自由运动完成清扫的一种自动机械装置,广泛应用于工业、农业、餐饮服务业等,伴随各种新能源的出现,管道清扫机器人有着很广阔的市场发展。项目心得在这次课程设计的过程中我们小组成员遇到了很多困难,一度陷入到了举步维艰的地步,但我们成员之间相互扶持、相互鼓励,一步一步的走到了现在,回想之前,在做项目的过程中学习到了很多新的知识,自主学习的能力得到了很大的提高,同时对之前课本上学习到的只是掌握的更见的熟练了,可以说这次的课程设计让我们每一个人都受益匪浅,希望以后还能够有机会参与到这样的项目制作中来。参考文献1李芳.火炮身管内膛直径检测系统设计硕士学位论文.长春:长春理工大学,2003.2成芳.稻种质量的机器视觉无损检测研究博士学位论文.杭州:浙江大学,2004.3httP://blog/userl/64/arclives/2006/200612517226.htnl.4杨纶标,高英仪.模糊数学原理及应用.广州:华南理工大学出版社,2002.5王殿君,李润平,黄光明.管道机器人的研究进展.机床与液压,2008(4):185-187.6机械设计手册(第二版).北京:机械工业出版社,20018陈冬云,杜敬仓等.ATmega128单片机原理与开发指导.北京:机械工业出版社.2006.1.9霍宏伟,牛延超等.ATmega128/2560系列单片机原理与高级应用.北京:中国林业出版社.2006.4.10刘兰香,张秋生.ATmega128单片机应用与开发实例.北京:机械工业出版社.2006.6.附录一 成本分析表一 成本分析表名称单价/元数量/个总价/元车轮10440丝杠电机驱动器3101310直流电机22488直线滑动轴承8324光轴5315万向联轴器15115深沟球轴承313机械加工1001100合计/元592附录二 源程序1.main.c:#include stm32f10x.h#include interface.h#include LCD1602.h#include IRCtrol.h#include motor.h#include uart.h#include gpio.hvoid PWMON(void);/unsigned int speed_count=0;/ 50char front_left_speed_duty=SPEED_DUTY;char front_right_speed_duty=SPEED_DUTY;char behind_left_speed_duty=SPEED_DUTY;char behind_right_speed_duty=SPEED_DUTY;unsigned char tick_5ms = 0;/5msunsigned char tick_1ms = 0;/1msunsigned char tick_200ms = 0;/char ctrl_comm = COMM_STOP;/unsigned char continue_time=0;unsigned char bt_rec_flag=0;/int main(void)delay_init();GPIOCLKInit();/UserLEDInit();/LCD1602Init();/IRCtrolInit();TIM2_Init();MotorInit();ServoInit();USART3Conf(9600);SystemInit();GPIOA_Init();PWMON();GPIO_SetBits(GPIOB, GPIO_Pin_9);/TIM_Cmd(TIM3, ENABLE);/Timer2Init();/RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2 , ENABLE);/TIM_Cmd(TIM2, ENABLE);GPIO_SetBits(GPIOA, GPIO_Pin_6);/GPIO_SetBits(GPIOA, GPIO_Pin_2);/GPIO_ResetBits(GPIOA, GPIO_Pin_3);GPIO_SetBits(GPIOA, GPIO_Pin_0);GPIO_SetBits(GPIOA, GPIO_Pin_8);GPIO_SetBits(GPIOA, GPIO_Pin_13); / add your code here _/* (C) COPYRIGHT 2012 WildFire Team *END OF FILE*/ while(1) if(tick_5ms = 5)tick_5ms = 0;tick_200ms+;if(tick_200ms = 40)tick_200ms = 0;LEDToggle(LED_PIN);continue_time-;/200ms if(continue_time = 0)continue_time = 1;CarStop();/do somethingif(bt_rec_flag = 1)/bt_rec_flag = 0;switch(ctrl_comm)case COMM_UP: CarGo();break;case COMM_DOWN: CarBack();break;case COMM_LEFT: CarLeft();break;case COMM_RIGHT: CarRight();break;case COMM_STOP: CarStop();break;default : break;/LCD1602WriteCommand(ctrl_comm); void PWMON(void)GPIO_InitTypeDef GPIO_InitStructure;TIM_OCInitTypeDef TIM_OCInitStructure;TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;/PWM GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure);/TIM2RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);/TIM2TIM_DeInit(TIM3); TIM_TimeBaseStructure.TIM_Period = 999; TIM_TimeBaseStructure.TIM_Prescaler = 71; TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV2; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);/PWM TIM2_CH2TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;TIM_OCInitStructure.TIM_Pulse = 500; /127,TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; /CCR2 = 500;2.motor.c:#include motor.h#include interface.h#include stm32f10x.h/GPIOvoid MotorGPIO_Configuration(void)GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Pin = FRONT_LEFT_F_PIN;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(FRONT_LEFT_F_GPIO, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = FRONT_LEFT_B_PIN;GPIO_Init(FRONT_LEFT_B_GPIO, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = FRONT_RIGHT_F_PIN;GPIO_Init(FRONT_RIGHT_F_GPIO, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = FRONT_RIGHT_B_PIN;GPIO_Init(FRONT_RIGHT_B_GPIO, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = BEHIND_LEFT_F_PIN;GPIO_Init(BEHIND_LEFT_F_GPIO, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = BEHIND_LEFT_B_PIN;GPIO_Init(BEHIND_LEFT_B_GPIO, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = BEHIND_RIGHT_F_PIN;GPIO_Init(BEHIND_RIGHT_F_GPIO, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = BEHIND_RIGHT_B_PIN;GPIO_Init(BEHIND_RIGHT_B_GPIO, &GPIO_InitStructure); /void CarMove(void) /if(front_left_speed_duty 0)/if(speed_count front_left_speed_duty)FRONT_LEFT_GO;elseFRONT_LEFT_STOP;else if(front_left_speed_duty 0)/if(speed_count 0)/if(speed_count front_right_speed_duty)FRONT_RIGHT_GO;else /FRONT_RIGHT_STOP;else if(front_right_speed_duty 0)/if(speed_count 0)/if(speed_count behind_left_speed_duty)BEHIND_LEFT_GO;else /BEHIND_LEFT_STOP;else if(behind_left_speed_duty 0)/if(speed_count 0)/if(speed_count behind_right_speed_duty)BEHIND_RIGHT_GO;else /BEHIND_RIGHT_STOP;else if(behind_right_speed_duty 0)/if(speed_count (-1)*behind_right_speed_duty)BEHIND_RIGHT_BACK;else /BEHIND_RIGHT_STOP;else /BEHIND_RIGHT_STOP;/void CarGo(void)front_left_speed_duty=SPEED_DUTY+20;front_right_speed_duty=SPEED_DUTY+20;behind_left_speed_duty=SPEED_DUTY+20;behind_right_speed_duty=SPEED_DUTY+20;/void CarBack(void)front_left_speed_duty=-SPEED_DUTY+25;front_right_speed_duty=-SPEED_DUTY+25;behind_left_speed_duty=-SPEED_DUTY+25;behind_right_speed_duty=-SPEED_DUTY+25;/void CarLeft(void) GPIO_ResetBits(GPIOB, GPIO_Pin_9);TIM_Cmd(TIM3, ENABLE);/front_left_speed_duty=-SPEED_DUTY+20;/front_right_speed_duty=SPEED_DUTY+20;/behind_left_speed_duty=-SPEED_DUTY+20;/behind_right_speed_duty=SPEED_DUTY+20;/void CarRight(void)GPIO_SetBits(GPIOB, GPIO_Pin_9);TIM_Cmd(TIM3, ENABLE);/front_left_speed_duty=SPEED_DUTY+20;/front_right_speed_duty=-SPEED_DUTY+20;/behind_left_speed_duty=SPEED_DUTY+20;/behind_right_speed_duty=-SPEED_DUTY+20;/void CarStop(void)front_left_speed_duty=0;front_right_speed_duty=0;behind_left_speed_duty=0;behind_right_speed_duty=0;TIM_Cmd(TIM3, DISABLE);void MotorInit(void)MotorGPIO_Configuration();CarStop();3.Gpio.c:#include gpio.hvoid GPIOA_Init()GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);/APB2GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_0|GPIO_Pin_8|GPIO_Pin_13;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;/50MHzGPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;/GPIO_Init(GPIOA, &GPIO_InitStructure);/GPIOxGPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;/50MHzGPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;/GPIO_Init(GPIOB, &GPIO_InitStructure);/GPIOx4.Uart.c:#include uart.h#include interface.h/UART function/UART3 TxD GPIOB10 RxD GPIOB11void USART3Conf(u32 baudRate)NVIC_InitTypeDef NVIC_InitStruct;/USART_InitTypeDef USART_InitSturct;/1GPIO_InitTypeDef GPIO_InitStruct;/RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3 , ENABLE);/USART3_Tx_Pin Configure GPIO_InitStruct.GPIO_Pin = GPIO_Pin_10;/GPIO_InitStruct.GPIO_Speed = GPIO_Speed_2MHz;/50MHzGPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP;/GPIO_Init(GPIOB , &GPIO_InitStruct)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度新型环保外墙真石漆施工技术服务合同
- 2025版汽车土石方运输与可持续发展战略合同
- 2025年度农业项目反担保抵押合同
- 2025年度土地居间交易全程服务合同细则
- 2025版高级离婚协议范文9A专项法律咨询合同
- 2025年环保型二手房按揭买卖合同示范文本
- 2025年财务共享服务中心聘请合同
- 2025版聘请专利法律顾问合同
- 聚焦建筑行业:农民工权益保障与2025年用工模式变革下的企业文化建设与创新报告
- 2025版委托保密协议(新材料研发)
- 医院保卫科岗位竞聘工作汇报
- 医院科室停电应急预案
- 2025年教育学家教学理论考试试题及答案解析
- 项目初步验收汇报
- 髋关节滑膜炎的护理查房
- 生产管理办法范本
- 混凝土防暴墙拆除方案(3篇)
- 精神病患者的康复护理计划
- 语“你相遇”文启新程-2025年秋季高一语文开学第一课-2025-2026学年高中主题班会
- 个性化教育实施策略
- 2025年安全生产考试题库(安全知识)安全培训课程试题
评论
0/150
提交评论