智能车竞赛技术报告 | 专科基础组 - 沈阳职业技术学院 - 秋名山菜鸟队

Posted 卓晴

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了智能车竞赛技术报告 | 专科基础组 - 沈阳职业技术学院 - 秋名山菜鸟队相关的知识,希望对你有一定的参考价值。

简 介: 本文以第十六届全国大学生智能汽车竞赛为背景,介绍了专科基础组智能车设计方案。智能车系统采用大赛组委会提供的C 型车模,以宏晶公司的STC16F系列的微控制器 STC16F40K128作为核心控制器,赛车利用舵机获取当前赛车的车身姿态,由车体上方的工字电感采集电磁波信号,经过模拟量信号放大,输入到控制核心,用于赛车的运动控制决策。通过编码器来检测车速,电机转速控制采用 PID 控制,通过 PWM 控制驱动电路调整电机的转速,完成智能车速度的闭环控制。电磁车的设计主要是电磁的电路设计,工字电感是赛车循迹的前提,可靠性是系统设计的第一要求。做好各部分的屏蔽、滤波等工作,使本系统工作的可靠性达到了设计要求。

关键词 电磁智能车单片机自动控制

简 介: Based on the background of the 16th national intelligent car competition for college students, this paper introduces the design scheme of the intelligent car of the junior college basic group. Smart car system adopts series C models provided by the organizing committee, the STC16F series SCM of Hongjing company is used as controller STC16F40K128,the car uses the steering gear to get the attitude of the car. The electromagnetic signal is collected by the I-inductor above the car body, through the analog signal amplification, input to the control core, motion control decisions for racing cars. Speed is detected by the encoder, the motor speed control adopts PID control, PWM control drive circuit to adjust the speed of the motor to complete the closed-loop control of intelligent vehicle speed. Electromagnetic car design mainly electromagnetic circuit design, I-inductance is the premise of car tracking, reliability is the first requirement of system design

关键词 electromagnetismintelligent carSCMautomatic control

学 校:沈阳职业技术学院
队伍名称:秋明山菜鸟队  
参赛队员:李宛哲     
田喜文     
王贺平     
带队教师:姚亮 华莹     

简 介: window window

关键词 windwo_helo

 

第一章


1.1构成及研究内容

  智能车是以汽车电子为背景,涵盖控制、模式识别、传感技术、电子、电气、 计算机、机械等多学科的科技创意性设计,由主要路径识别、速度采集、角度控 制及车速控制等模块组成。其设计与开发涉及控制、模式识别、传感技术、汽车 电子、电气、计算机、机械等多个学科。

  智能车系统可以分为三大部分:传感器检测部分, 信号处理部分,控制系统。检测系统包括:电磁杆对赛道信息的采集、编码器对速度的采集。信号处理部分采用的是宏晶公司的STC16F40K128作为主控芯片,对取得的信号进行快速处理。控制系统是通过主控芯片输出的信号来控制舵机的偏角和电机的转速。利用编码器测量车模速度,构成速度 闭环控制;利用控制舵机输入占空比,实现车模转向;利用 PID 控制算法控制电机和舵机;通过降低重心,减轻车模质量,来获得更好的加速和转弯性能;利用TFT 屏幕等对程序进行调试,获得更好的运行效果。

1.2 车模设计方案

  由竞赛官方提供的C 型车模。我们以宏晶公司提供的STC16F系列的微控制器,智能车系统采用STC16F40K128作为核心控制器,赛车利用差速来控制小车的转向,由车体上方的工字电感采集电磁波信号,经过模拟量信号放大,输入到核心版来控制小车整体。通过编码器来测小车速度,采用PID算法来控制电机转速,通过 控制PWM波的输入来控制电机的转速,对赛车完成方向和速度的控制

 

第二章 统方案设计


2.1系统整体框架设计

  系统由三个部分组成:检测采集系统、信号处理系统和控制系统。检测系统包括:工字电感对赛道信息的采集、编码器对速度的采集。信号处理部分采用的是宏晶的STC16F40K128作为主控芯片。控制系统是通过主控芯片输出的信号来控制舵机的偏角和电机的转速。

▲ 表2.1 系统框架图表

  表2.1 系统框架图

2.2 车模基本参数

▲ 表2.2 车模基本参数表

2.3小结

  硬件电路的良好设计是保证智能车正常运行的前提系统的,稳定性和精度控制有着直接的影响 ,如果硬件电路没有得到很好的设计,那么对小车的精度控制也无从谈起,电磁的设计主要是电感的电路设计,工字电感是赛车循迹的前提,可靠性是系统设计的第一要求。做好各部分的屏蔽、滤波等工作,使本系统工作的可靠性达到了设计要求。

 

第三章 械结构安装与调整


3.1车体机械调整

  车模的机械非常重要,针对信标车车模,我们有几个调整的方向:

  1. 传感器支架必须结实耐撞,安装牢固,使震动最小。震动会导致传感器得到感应电动势"抖动",导致车模会在比赛区域内上摇摆不定,直接关系到赛车是否能准确采集到数值

  2. 降低车模的重心,并且排布均匀。降低车模底盘,车模上的硬件摆放尽量低,可以更好的转向。分布均匀可以减小车模在赛道漂移。

▲ 图3.1 整车布局图

3.2车体布局

  (1)电磁C车体的一部分重心应该放在车的中心,主板放在整车的中间位置。
  (2)驱动板放在车体后端固定。
  (3)电池安装固定在主板下方,降低模型车的重心且节省空间。
  (4)用轻便坚固的碳纤杆作为电磁杆的材料,安置于车体的上方,使车空间更大,方便寻迹.

3.3车体部件

3.3.1编码器

  编码器安装为了更为精确的获得电机转速的返回值,采用迷你编码器512线,车模自带编码器安装支架,使编码器齿轮与轮胎齿轮基本吻合,使得转动齿轮轴保持平行,传动部分轻松、流畅,速度不快的情况下不存在杂音过大和丢失数据情况,并且使编码器安装的尽量靠近车轮的地方,以降低车的重心。编码器安装示意如图

▲ 图3.3.1 编码器接口电路

3.3.2 TFT液晶屏调试

  在小车的调试过程中要整定参数必须要不断的修改参数值,对此我们选用了TFT屏来显示数值调试。此外,比赛的时候,多备用几套速度不同的程序来进行调试。

  我们选用了TFT液晶屏是因为主要是它的显示稳定,清晰,并且质量好,不易损坏。刷新变量所消耗的时间可以通过程序来解决,即在主函数利用分时刷新,避免影响主函数的运行。

 

第四章 要模块介绍及作用


4.1电源管理模块

  电源是智能车的原动力,电源供电的稳定性直接关系到整个系统的稳定性。所以我们要考虑电源的转换效率,尽量降低噪声,防止干扰。比赛规定智能车供电电源只能使用指定型号的7.4V 2000mAh 锂电池供电。而系统单片机需要5V 电源;电机驱动电压为7.4V;一些运放电路以及其它IC大多需要 5V 电源。

4.2电机驱动模块

  一个好的驱动模块电路对于竞速比赛的重要性是不言而喻的,较好的加速与制动能力对小车平均速度的提高有很大帮助。电机的速度与施加的电压成正比,输出转矩则与电流成正比。对直流电机的控制是一个挑战,因为必须在工作期间改变直流电机的速度。一般的,直流电机高效运行的最常见方法是施加一个PWM(脉宽调制)方波,其通-断比率对应于所需速度。电机起到一个低通滤波器作用,将 PWM 信号转换为有效直流电平。 PWM 驱动信号很常用,因为使用微处理器的控制器很容易产生 PWM 信号。虽然用精确的脉冲宽度可以调节电机的速度, 实际应用中的 PWM 频率却是可变的,应对其进行优化,以防止电机颤抖,发出耳朵听得到的噪声。

4.3电磁传感器

  我们使用4颗工字电感,放在电磁杆上,用来检测赛道的电磁波来控制舵机的转向,因其检测的模拟信号较为微弱,我们采用运算放大电路来将其进行放大后输入到控制核心。通过C语言编程来达到准确控制舵机转向来维护车身行进姿态。

4.4编码器

  1024线迷你编码器,是一种把电信号转到把输出轴上的位移量转换成PWM波的传感器,各电子元器件组成检测装置最终通过编码器控制检测输出PWM波信号。机械上编码器齿轮与电机齿轮在一个方向上使得他们同轴转动,通过计算看出mini编码器输出的PWM量而控制电机转速。除此之外还可以判断电机的旋转方向,

 

第五章 件电路设计


5.1主控板

5.1.1 控制芯片

  STC16F40K128是我们这次比赛中采用的主控制器,采用5V电压供电。

▲ 图5.1核心板原理图

  (2)工作范围
  - 电压范围:1.9 至 5.5 V
  - 温度范围(环境):-40 至 85°C
  (3)内核
  -超高16位8051内核
  -24个中断源,4级中断优先级
 
  (4) 存储器和存储器接口
  - 最高 120 KB 的 Flash
  - 32K字节内部扩展 RAM

5.2 电源管理

  智能车使用锂离子电池,充满时电压在7.0~8.2V。可接用于电机供电。原理图如下所示:

5.3电磁传感器

  本设计采用 LC 谐振放大整流的方法来得到最终的信号。首先,通过一级 LC的谐振,达到一个初步的选频滤波功能,即只感应 20KHz 的电流产生的交流磁场,感应信号为正弦波,其幅值随着导线到传感器的距离而变化。然后,我们使用AD8032进行一级放大后再接一级二极管倍压检波电路稳定纹波后得到最终的输出。这种方案电路结构更加简单,输出信号更加稳定,是一种较为理想的设计方案.
 

第六章 件系统设计与算法调试


6.1 速度控制处理

  全程电机转速duty稳定在1500 由于没设pid车会左右摇摆 所以车速不能过快 否则角度过大会冲出赛道 经过多次实验得出结论 电机转速duty=1500为最佳速度 摆动幅度小 上坡时编码器感受到电机转速低于定值 然后利用程序使电机转速增加 达到冲坡。下坡时 由于本身自带转速且下坡加速 编码器感受到值增大 可以利用程序使电机反转达到最大化减速 由于我们组右边编码器不显示数值 所以我们的程序只用到了一个左边的编码器 一个就够了 。

6. 2TFT屏辅助调节

  在参数调节过程中有许多参数在线调试不方便,此时我们使用彩屏进行有效的数据读取,然后通过键盘等外围电路进行参数修改,省去了许多在调试过程中的繁琐动作,大大提高了调试效率。显示的数据为L1,L7,左轮编码器数据,L8,L9

6. 3 方向控制调节

  由于没有设置pid调节 所以方向控制十分简单 仅仅是L1-L7和L7-L1的值,如果那边大于0 舵机就往相应的方向旋转 当两值相减的差相差不大时 舵机为中值

 


  文详细介绍了基于单片机的智能车系统方案。以宏晶公司生产的STC16F40K128为核心控制器,采用基于工字电感获取赛道图像信息,通过窗口算法提取赛道,求出小车与赛道的位置偏差,采用 PID 方式对舵机转向进行反馈控制。通过速度传感器对小车形成 速度闭环的 PID 控制。

  文中分章节分别介绍了小车车模的改装、机械结构的调整和优化,赛车各个硬件模块的工作原理、设计思路和改进方案,并且详细的叙述了整个智能车系统 的开发工具,软件和各个调试模块的设计方法和使用方法。总结整个设计过程,不仅使我们得到了对已有知识进行实践的机会,更培养 了一定的科研能力,拓宽了知识面,同时我们小组在智能车制作的过程中学会了 发现问题,分析问题和解决问题的能力,我们大家互相配合,锻炼了团队精神。 展望未来,智能车技术在以恩智浦杯智能汽车竞赛为背景下必然会有广泛的应用

 


  谢主办方为我们提供的学习锻炼的平台。感谢沈阳职业技术学院为我们提供的资金和场地支持。同时,真诚的向在这个过程中帮助过我们的老师同学表示深深地谢意。谢谢!。最后感谢比赛承办方及评委在百忙之中为我们的技术成果进行评定以及提出宝贵的指导意见.

 


附录A:部分程序代码

  主函数:

//舵机SMCD= 980向右 1150向右  1064#include "headfile.h"
#define DIR_1 P64
#define DIR_2 P60
#define PWM_1 PWMA_CH4P_P66
#define PWM_2 PWMA_CH2P_P62

//定义脉冲引脚
#define SPEEDL_PLUSE   CTIM0_P34
#define SPEEDR_PLUSE   CTIM3_P04
//定义方向引脚
#define SPEEDL_DIR     P35
#define SPEEDR_DIR     P53

int16 tempL_pluse = 0;
int16 tempR_pluse = 0;

/*
 *关于内核频率的设定,可以查看board.h文件
 *在board_init中,已经将P54引脚设置为复位
 *如果需要使用P54引脚,可以在board.c文件中的board_init()函数中删除SET_P54_RESRT即可
 */
 
uint16 dataL1,dataL7,SMCD,dataL6,dataL2,dataL3,dataL4;
int16  dataL8,dataL9;
uint8  dir = 0;
uint16 duty = 0;
int main(void)

{
 DisableGlobalIRQ();       //关闭总中断
 
 board_init();   //初始化内部寄存器
 ctimer_count_init(SPEEDL_PLUSE); //初始化定时器0作为外部计数
 
 ips114_init();        //初始化1.14寸IPS屏幕
 SMCD = 1064;                           //初始化舵机,使舵机居中

 adc_init(ADC_P00,0);      //P00引脚  具体通道与引脚对应关系可以查看zf_adc.h文件
 adc_init(ADC_P01,0);      //P01引脚  具体通道与引脚对应关系可以查看zf_adc.h文件
  adc_init(ADC_P05,0);      //P00引脚  具体通道与引脚对应关系可以查看zf_adc.h文件
 adc_init(ADC_P06,0);                    //定义P06引脚

  pwm_init(PWMB_CH1_P74, 50, SMCD);//duoji       //定义舵机引脚
 /*
 pwm_init(PWM_1, 17000, duty); //初始化PWM1  使用P60引脚  初始化频率为17Khz
 pwm_init(PWM_2, 17000, duty); //初始化PWM2  使用P62引脚  初始化频率为17Khz
 
 gpio_mode(P6_4, GPO_PP);
 gpio_mode(P6_2, GPO_PP);
*/
 
   pwm_init(PWMA_CH1P_P60, 17000, 0); //初始化PWM1  使用P60引脚  初始化频率为17Khz
   pwm_init(PWMA_CH2P_P62, 17000, 0); //初始化PWM2  使用P62引脚  初始化频率为17Khz
  pwm_init(PWMA_CH3P_P64, 17000, 0); //初始化PWM3  使用P64引脚  初始化频率为17Khz
   pwm_init(PWMA_CH4P_P66, 17000, 0);
  
 EnableGlobalIRQ();       //开启总中断
       for(;;)
 {    
    tempL_pluse = ctimer_count_read(SPEEDL_PLUSE);
   
        //计数器清零
        ctimer_count_clean(SPEEDL_PLUSE);

        //采集方向信息
        if(1 == SPEEDL_DIR)    tempL_pluse = tempL_pluse;
      
     ips114_showstr(0, 7, "pluse_L ="); 
     ips114_showint16(8*10, 7, tempL_pluse);
     
  dataL1 = adc_once(ADC_P00,ADC_8BIT);   //采集ADC_P00电压,精度8位
  dataL7 = adc_once(ADC_P01,ADC_8BIT);    //采集ADC_P01电压,精度8位
  dataL2 = adc_once(ADC_P05,ADC_12BIT);       //采集ADC_P05电压,精度12位
  dataL6 = adc_once(ADC_P06,ADC_12BIT);      //采集ADC_P06电压,精度12位
  dataL8 = (dataL7 - dataL1);          //-左
  dataL9 = (dataL1 - dataL7);         //-if (dataL8 > 0 )      // 右比左大
    
     SMCD = 980 ;  //右转
 
   if (dataL9>0 ) //左比右大
  
    SMCD = 1150;  //左转
  
  duty=1450;   //电机转速
           pwm_duty(PWMA_CH1P_P60, duty);       
            pwm_duty(PWMA_CH2P_P62,0);     
                     
         pwm_duty(PWMA_CH3P_P64, duty);       
            pwm_duty(PWMA_CH4P_P66,0);
  
   pwm_SMCD(PWMB_CH1_P74, SMCD); //定义舵机引脚
  
  /*if (dataL1 > 200  )   //下坡减速 编码器数据过大
  {
    SMCD = 1064;  
  pwm_SMCD(PWMB_CH1_P74, SMCD);

  delay_ms(720);
   
   SMCD = 980;
  pwm_SMCD(PWMB_CH1_P74, SMCD);
  delay_ms(100);
  }*/
  if( tempL_pluse  <30     ) //上坡加速 编码器数据过小
   
  {      
            SMCD=1064;
   pwm_SMCD(PWMB_CH1_P74, SMCD);
          duty=4000;
         pwm_duty(PWMA_CH1P_P60, duty);       
            pwm_duty(PWMA_CH2P_P62,0);     
                     
         pwm_duty(PWMA_CH3P_P64, duty);       
            pwm_duty(PWMA_CH4P_P66,0);
          delay_ms(720);
        
  }
 
  if( tempL_pluse > 2500) 
    {   
      
     pwm_SMCD(PWMB_CH1_P74, SMCD);
       duty=1000;
        pwm_duty(PWMA_CH1P_P60, 0);       
            pwm_duty(PWMA_CH2P_P62,duty);     
                     
         pwm_duty(PWMA_CH3P_P64, 0);       
            pwm_duty(PWMA_CH4P_P66,duty);
    delay_ms(200);
        }
      
  //1.14IPS屏幕上显示,需要初始化1.14寸ips屏幕,才能使用。
  ips114_showstr(0,0,"dataL1:"); 
  ips114_showuint16(6*8,0,dataL1);
  ips114_showstr(0,1,"dataL7:"); 
  ips114_showuint16(6*8,1,dataL7);
  ips114_showstr(0,2,"(dataL2):"); 
  ips114_showuint16(6*8,2,(dataL2));
  ips114_showstr(0,3,"dataL6:"); 
  ips114_showuint16(6*8,3,dataL6);
  ips114_showstr(0,4,"(dataL8):"); 
  ips114_showuint16(6*8,4,(dataL8));  
        ips114_showstr(6*16,0,"(dataL9):"); 
  ips114_showuint16(12*16,0,(dataL9)); 
  ips114_showstr(6*16,1,"(dataL3):"); 
  ips114_showuint16(12*16,1,(dataL3)); 
  ips114_showstr(6*16,2,"(dataL4):"); 
  ips114_showuint16(12*16,2,(dataL4));   
        ips114_showstr(0,5,"(duty):"); 
  ips114_showuint16(6*8,5,(duty));
     ips114_showstr(0,6,"SMCD:"); 
  ips114_showuint16(6*8,6,SMCD);
  
 }

}


● 相关图表链接:

以上是关于智能车竞赛技术报告 | 专科基础组 - 沈阳职业技术学院 - 秋名山菜鸟队的主要内容,如果未能解决你的问题,请参考以下文章

智能车竞赛技术报告 | 双车接力组 - 沈阳航空航天大学 - 精神小车成双 - 双轮车

智能车竞赛技术报告 | 双车接力组 - 沈阳航空航天大学 - 精神小车成双 - 三轮车

智能车竞赛技术报告 | 全向行进组 - 沈阳工业大学 - 找不到北队

智能车竞赛技术报告 | 单车拉力组 - 沈阳航空航天大学 - 青梅绿茶队

第十七届全国大学生智能车竞赛西部赛区奖项

17届智能车竞赛技术报告 | 乐师逐飞二队 - 基础四轮组