瑞萨智能车软件报告

上传人:shaoy****1971 文档编号:108899777 上传时间:2019-10-25 格式:DOCX 页数:38 大小:108.86KB
返回 下载 相关 举报
瑞萨智能车软件报告_第1页
第1页 / 共38页
瑞萨智能车软件报告_第2页
第2页 / 共38页
瑞萨智能车软件报告_第3页
第3页 / 共38页
瑞萨智能车软件报告_第4页
第4页 / 共38页
瑞萨智能车软件报告_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《瑞萨智能车软件报告》由会员分享,可在线阅读,更多相关《瑞萨智能车软件报告(38页珍藏版)》请在金锄头文库上搜索。

1、华 中 科 技 大 学2010瑞萨超级MCU改装四驱车测试程序一 总体规划1 程序流程根据比赛规定和模型车的特征,简要程序流程如下:2.简要说明本方案基于组委会公布的文档,旨在通过在组委会文档上做出一定的修改以加快模型车的速度,提高稳定性。因此在组委会公布的方案上加上一块驱动板把模型车改为四驱的来提高动力,在组委会公布的方案上加上编码器以提高调速的准确性,稳定性,快速性。3.资源分配电机的控制周期上最好一致,经过测试电机周期为1ms是比较合适的,但是在组委会已经确定的方案中,由于硬件的限制,接口上提供的是ITU3来确定后面两个驱动轮和舵机的周期。所以本方案采取的是用ITU0提供1ms的计时中断

2、,用ITU3的同步复位PWM方式,采取16ms的周期提供后轮电机的驱动和舵机控制。由于和两个前轮和编码器的加入。定时端口不够用了,所以我们采取的是用ITU0复用和ITU1一起提供周期为1ms的PWM来驱动前面两个轮子,采取ITU2来进行编码器计数。引脚1编码器的电源VCC引脚10编码器的地GND引脚8编码器的的信号输入端引脚4接电机驱动板的7脚,输出左前轮的方向引脚5接电机驱动板的8脚,输出左前轮的PWM引脚6接电机驱动板的6脚,输出右前轮的方向引脚7接电机驱动板的5脚,输出右前轮的PWM扩展的驱动板B的接口如上图所示。二 加入部分的程序说明1. 前轮PWM设置采取的是用ITU0复用和ITU1

3、一起提供周期为1ms的PWM来驱动前面两个轮子,基本设置如下。定时器周期设置:#define TIMER_CYCLE 3071 /* Timer cycle: 1 ms */ /* When using cy/8, */ /* cy/8 = 325.5 ns */ /* Thus TIMER_CYCLE = */ /* 1ms / 325.5ns */ /* = 3072 */定时器初始化: /* ITU0 and ITU1 PWM modes for front left and right motors*/ITU_MDR = 0x03;/ ITU0, ITU1 PWM Mode ITU0_

4、TCR = 0x43; /TCNT0 is Cleared by GRB Compare Match,/8ITU1_TCR = 0x43; /TCNT1 is Cleared by GRB Compare Match,/8ITU0_IER = 0x01;/interput enable ITU0_GRB = TIMER_CYCLE;/ITU0 dutyITU1_GRB = TIMER_CYCLE; /ITU1 dutyITU1_GRA = 0;ITU0_GRA = 0; /* ITU3 and ITU4 reset synchronized PWM modes for left and rig

5、ht motors and servo */ ITU3_TCR = 0x23; ITU_FCR = 0x3e; ITU3_GRA = PWM_CYCLE; /* Frequency setting */ ITU3_GRB = ITU3_BRB = 0; /* Left motor PWM setting */ ITU4_GRA = ITU4_BRA = 0; /* Right motor PWM setting */ ITU4_GRB = ITU4_BRB = SERVO_CENTER; /* Servo PWM setting */ ITU_TOER = 0x38;速度设置:/*/* Spe

6、ed control */* Arguments: left motor: -100 to 100, right motor: -100 to 100 */* 0: stopped, 100: forward 100%, -100: reverse 100% */*/void speed( int accele_gl, int accele_gr ,int accele_fl, int accele_fr)/* Set PWM*/ unsigned long speed_max1;unsigned long speed_max2; speed_max1 = (PWM_CYCLE-1) ; /G

7、ear PWM periodspeed_max2 = (TIMER_CYCLE-1); /Front PWM period /* Gear Left motor */ if( accele_gl = 0 ) PBDR |= 0x04; ITU3_BRB = speed_max1 * accele_gl / 100; else PBDR &= 0xfb; accele_gl = -accele_gl; ITU3_BRB = speed_max1 * accele_gl / 100; /* Gear Right motor */ if( accele_gr = 0 ) PBDR &= 0xf7;

8、ITU4_BRA = speed_max1 * accele_gr / 100; else PBDR |= 0x08; accele_gr = -accele_gr; ITU4_BRA = speed_max1 * accele_gr / 100; /* Front left motor */if( accele_fl = 0) PADR &= 0xdf;ITU1_GRA = TIMER_CYCLE-1-speed_max2 * accele_fl / 100; else PADR |= 0x20; accele_fl = -accele_fl; ITU1_GRA = TIMER_CYCLE-

9、1-speed_max2 * accele_fl / 100; /* Front Right motor */if( accele_fr = 0) PADR &= 0xf7;ITU0_GRA = TIMER_CYCLE-1-speed_max2 * accele_fr / 100; else PADR |= 0x08;accele_fr = -accele_fr; ITU0_GRA = TIMER_CYCLE-1-speed_max2 * accele_fr / 100; 2. 编码器设置测速测距初始化设置/* ITU2 Encoder pulse input */ITU2_TCR = 0x0

10、c;/ Encoder Pulse input from TCLKA/*=*/* Symbol definition */*=*/#defineENCODER_GIRTH 110#defineERR_GAIN (ENCODER_GIRTH /(SPEED_SAMPLE_TIME + 1)*2)此处的ERR_GAIN乘以当前时间内的脉冲计数就可以算成单位是cm/s的速度具体推算略/* Encoder */unsigned charucSpeedTimer = 0;/ Speed sample time counterunsigned int uEncoderBuff = 0;/ Pulse co

11、unter bufferunsigned long lEncoderLine = 0;/ Crank turn distance recordunsigned long gl_lEncoderTotal = 0; / Total encoder pulses (distance)unsigned int gl_uEncoder = 0; / Current pulse (speed)int gl_curSpeed = 0;int gl_motorPWM = 0;/*/* Function setCarSpeed */* Usage Speed loop */* Argument speed: set proper speed */* Return Value No */*/int setCarSpeed(int setSpeed) static int speedErr3 = 0,0,0;int

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 总结/报告

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号