发作品签到
标准版

汽车模拟控制系统_ 立创&瑞萨训练营

工程标签

5.6k
0
0
3

简介

使用瑞萨MCU为主控,制作汽车模拟控制系统,通过电路的逻辑设计,模拟汽车启动、前后档、速度档、油门、刹车、车速灯光指示及屏幕显示、超速警告、左右转向、前灯、倒车灯、刹车灯、鸣笛、紧急双闪等功能。

简介:使用瑞萨MCU为主控,制作汽车模拟控制系统,通过电路的逻辑设计,模拟汽车启动、前后档、速度档、油门、刹车、车速灯光指示及屏幕显示、超速警告、左右转向、前灯、倒车灯、刹车灯、鸣笛、紧急双闪等功能。

开源协议

GPL 3.0

创建时间:2022-04-11 20:06:42更新时间:2022-05-09 10:49:39

描述

《汽车模拟控制系统》工程技术报告

 

1. 作品概述

1.1 功能概述

  该项目使用瑞萨MCU为主控,制作汽车模拟控制系统,通过电路的逻辑设计,模拟汽车启动、前后档、速度档、油门、刹车、车速灯光指示及屏幕显示、超速警告、左右转向、前灯、倒车灯、刹车灯、鸣笛、紧急双闪等功能。

 

1.2 实物图

 

1.1  《汽车模拟控制系统》实物

 

2. 技术详情

2.1 功能模块

  汽车模拟控制系统共具有启动、前后档、速度档、油门、刹车、车速显示、超速警告、左右转向、前灯、倒车灯、刹车灯、鸣笛、双闪十多项功能详见图2.1

 


2.1  《汽车模拟控制系统》功能模块示意图

 

2.2 原理图说明

  电路原理如图2.2所示,根据功能模块进行绘制,包括电源模块、主控模块、调试接口、油门刹车模块、前进倒车模块、车速显示模块、鸣笛电路、转向灯与应急双闪灯模块、复位电路、预留测试接口等。

 

2.2  《汽车模拟控制系统》电路原理

 

2.3 PCB设计

  PCB设计如图2.3所示。

 

   

  (a)                                                                              (b)                            (c)

2.3  《汽车模拟控制系统》PCB设计

(a)接线图  (b)2D图  (c)3D图

  该PCB功能分布主要分为四个部分,分别为操作台、仪表盘、汽车显示、其他部件,如图2.4所示。

 

2.4  《汽车模拟控制系统》PCB功能分布

 

 

2.4 软件说明

   主控芯片为瑞萨 R7FA2E1A72DFL主控程序使用e2 studio编写,主要用到了I2C外接OLED屏幕、ADC模拟信号采集GPIO功能引脚定义如图2.5所示。

 

2.5  瑞萨 R7FA2E1A72DFL引脚

 

  核心代码如下(详细代码见附件):

 void hal_entry(void)

{

    //ADC采样车速,并显示

...

 while(1)

    {

...

        (void) R_ADC_ScanStart(&g_adc0_ctrl);

 ...

        err =R_ADC_Read(&g_adc0_ctrl, ADC_CHANNEL_7, &adc_data1);

        assert(FSP_SUCCESS == err);

        a0=(adc_data1/4095.0)*5;

        R_BSP_SoftwareDelay (20, BSP_DELAY_UNITS_MILLISECONDS);

        if(a0<=0.1)//speed zero

       {

            R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_01_PIN_00, BSP_IO_LEVEL_LOW);//speed low

            R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_01_PIN_01, BSP_IO_LEVEL_LOW);//speed middle

            R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_01_PIN_02, BSP_IO_LEVEL_LOW);//speed high

       }

        if((a0>0.1) & (a0<1))//speed low

        {

            R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_01_PIN_00, BSP_IO_LEVEL_HIGH);//speed low

            R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_01_PIN_01, BSP_IO_LEVEL_LOW);//speed middle

            R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_01_PIN_02, BSP_IO_LEVEL_LOW);//speed high

    }

        if((a0>=1) & (a0<2))//speed middle

        {

            R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_01_PIN_00, BSP_IO_LEVEL_HIGH);//speed low

            R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_01_PIN_01, BSP_IO_LEVEL_HIGH);//speed middle

            R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_01_PIN_02, BSP_IO_LEVEL_LOW);//speed high

          }

        if((a0>=2) & (a0<3))//speed high

        {

            R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_01_PIN_00, BSP_IO_LEVEL_HIGH);//speed low

            R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_01_PIN_01, BSP_IO_LEVEL_HIGH);//speed middle

            R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_01_PIN_02, BSP_IO_LEVEL_HIGH);//speed high

         }

      if(a0>=3)//超速声光警告

        {             

      R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_01_PIN_00, BSP_IO_LEVEL_HIGH);

            R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_01_PIN_01, BSP_IO_LEVEL_HIGH);

            R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_01_PIN_02, BSP_IO_LEVEL_HIGH);

            R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_01_PIN_04, BSP_IO_LEVEL_LOW);//蜂鸣器响

            R_BSP_SoftwareDelay (100 , BSP_DELAY_UNITS_MILLISECONDS);

            R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_01_PIN_00, BSP_IO_LEVEL_LOW);//speed low

            R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_01_PIN_01, BSP_IO_LEVEL_LOW);//speed middle

            R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_01_PIN_02, BSP_IO_LEVEL_LOW);//speed high

            R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_01_PIN_04, BSP_IO_LEVEL_HIGH);//蜂鸣器不响

            R_BSP_SoftwareDelay (100 , BSP_DELAY_UNITS_MILLISECONDS);

            continue;

          }

    //twinkle转向灯

    R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_01_PIN_03, BSP_IO_LEVEL_HIGH);

    R_BSP_SoftwareDelay (500 , BSP_DELAY_UNITS_MILLISECONDS);

    R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_01_PIN_03, BSP_IO_LEVEL_LOW);

    R_BSP_SoftwareDelay ( 500 , BSP_DELAY_UNITS_MILLISECONDS);

    }

...

}

 

 

3. 实物展示说明

3.1 电源模块

  该作品供电接口Type-C和接线柱2种,供电电压5V,并接有5.1V稳压管确保系统电压处于安全范围,接通后电源指示亮,仪表盘车辆启动绿灯亮。同时设置了5秒开机动画灯功能,仪表盘速度等有规律闪亮(详见视频《升级功能1:汽车启动动画灯》)。如图3.1所示:

 

3.1  电源模块

 

3.2 车前灯控制

   车前灯开启时,仪表盘前灯指示绿灯亮,车前白灯(×2)亮(详见主视频《汽车模拟控制系统》实物演示)。如图3.2所示:

 

3.2  车前灯控制

 

 

3.3 前进和倒车模块

档位拨动至前进档时,仪表盘前进指示绿灯亮。如图3.3所示:

 

3.3  前进档位

 

档位拨动至倒车档时,仪表盘倒车指示黄灯亮,车尾倒车白灯(×2)亮。如图3.4所示:

 

 

3.4  倒车档位

 

3.4 油门档位刹车车速显示、超速声光警告模块

为了使之符合实际汽车的使用习惯,油门功能有以下特点:

A. 油门的优先级低于前进和倒车档位,只有在前进或倒车档位时,油门才有作用

B. 油门采用非自锁按键,按下时加速,松开时暂停,符合实际汽车的油门使用情况。

C. 油门按下时,车速增加,仪表盘中的车速显示灯分为三种颜色,绿色灯表示低车速,黄色灯表示中速,红色灯表示高车速。按下油门键后车辆加速,速度指示灯依此亮起。当车速超出警告速度(可在软件中设置具体值)时,超速声光警告触发,绿色黄色红色灯同时闪亮,蜂鸣器发出警告滴滴声(详见视频《升级功能2:汽车超速声光警告功能》

D. 油门的实现原理是对RC电路充电,随着充电时间增加,电容两端电压逐渐增大,以此表示车速增加,采集此电压并输入MCU的ADC模块,通过判断电压的大小,控制车速显示灯的亮灭。

E. 档位功能:通果改变RC电路中的R值(滑动变阻器),使充电的时间常数t=RC改变,因此电容充电的速度会发生变化,模拟了车辆的档位功能

  油门控制如图3.5所示:

 

3.5  油门控制与车速显示

 

  F.可拓展升级功能1:为更清晰地展示车速信息,可根据该模拟系统的油门刹车模块的特点,使用数字电压表进行速度展示(详见视频《升级功能3:汽车速度数码管显示》。如图3.6所示:

 

 

3.6 数码管展示实时车速

 

  G.可拓展升级功能2:该项目可外接OLED屏幕显示车速信息和超速警告信息等。通讯协议采用IIC,使屏幕与主控MCU之间进行通讯,展示实时车速详见视频《升级功能4:汽车速度OLED屏幕显示》。如图3.7所示:

图3.7 OLED屏幕展示实时车速

 

为了使之符合实际汽车的使用习惯,刹车功能有以下特点:

A. 刹车的优先级不受前进和倒车档位影响,在前进、倒车档位或空档时,刹车均有作用。比较符合汽车的实际情况。

B. 刹车采用非自锁按键,按下时减速,车尾红色刹车灯亮,松开时暂停减速,符合实际汽车的刹车的使用情况。

C. 刹车按下时,车速降低,仪表盘中的绿车速灯随车速下降而熄灭 当车速小于警告速度时,超速声光警告关闭

D. 刹车的实现原理是对RC电路放电,随着放电时间增加,电容两端电压逐渐减小,以此表示车速降低,采集此电压并输入MCU的ADC模块,通过判断电压的大小,控制车速显示灯的亮灭。

  刹车控制如图3.8所示:

 

3.8  刹车控制与刹车灯显示

 

3.5 鸣笛模块

按下鸣笛键时,蜂鸣器发出滴滴声,以此模拟车辆鸣笛。如图3.9所示:

 

3.9  车辆鸣笛模块

 

3.6 转向灯与紧急双闪模块

拨动左右转向开关时,车辆左右两侧转向黄灯闪亮,仪表盘中左右转向黄灯指示灯闪亮。如图3.10所示:

 

3.10  左右转向灯模块

 

按下应急双闪开关(自锁开关)时,车辆左右两侧转向黄灯同时闪亮,仪表盘中左右转向黄灯同时闪亮。如图3.11所示:

 

3.11  应急双闪模块

 

 

4.项目重点与难点

该项目在设计制作过程中,有以下难点:

A.逻辑设计:同一个器件可能会在不同的模式下使用,需要设计好逻辑。比如转向灯会在左右转向模式与双闪模式时使用,油门和刹车模块需要对同一组RC电路充放电且需要考虑相应的指示灯的连接逻辑

B.器件摆放:由于需将控制台与仪表盘以及车灯的位置分别划分,走线较为复杂。无法像传统电路那样摆放在走线最少的位置。

C.MCU引脚很密集,对于新手较难焊接。

 

5.注意事项与改进建议  

 A.MCU引脚很密集,焊接时应注意用锡量要适中,避免加锡太多而造成引脚间短路。

 B.目前该版本的工程中,MCU只接出了用到的引脚建议可以将可能会用到的引脚都引出来,方便后续进行功能拓展。

 C.建议把电路中的关键信号预留排针测试接口,方便工程的调试

 D.建议设计好LED的限流电阻,确保指示灯不会太亮或者太暗,以达到最佳的展示效果

 E.建议加外壳,起到保护和美观作用。

 F.空间允许的话,建议换大一些的按键,用起来会比较舒服。

 G.使用串口烧录时,如果提示报错,在BOOT键按下的前提下,试着点击一下RESET键复位后再进行烧录。

 

6.个人收获

  通过参加立创&瑞萨硬件训练营,有以下收获:

A.进一步熟悉了立创EDA的使用和设计流程,体验了复杂电路的连线方法,积累了设计经验。

B.熟悉了瑞萨MCU的开发流程,对其GPIO和ADC的配置和使用有了更深的理解。熟悉了e2studio的使用,熟悉了串口模式下载程序到MCU的流程。

 C.对OLED屏幕和I2C的了解加深,学会了点亮OLED屏幕以更直观地显示相关信息。

 D.学习焊接和调试引脚较密集的芯片,熟练了贴片器件的焊接。

 E.训练营中立创和瑞萨的工程师众多,群内学员大神众多,获益颇丰,感谢有此机会参与学习,希望多举办类似活动。

 F.感谢立创和瑞萨公司提供学习机会和技术指导,祝越办越好。

 

 

7.相关附件

  包括硬件设计资料、PCB设计相关文件、基础软件代码等,详见立创开源平台

 

8.效果演示视频

  详见立创开源平台,共包含5段视频

 A.主视频:《汽车模拟控制系统》实物演示.mp4

 B.升级功能1:汽车启动动画灯.mp4

 C.升级功能2:汽车超速声光警告功能.mp4

 D.升级功能3:车速数码管显示.mp4

 E.升级功能3:车速OLED屏幕显示.mp4

 

 

 

设计图

未生成预览图,请在编辑器重新保存一次

BOM

暂无BOM

附件

序号文件名称下载次数
1
《汽车模拟控制系统》实物演示.mp4
5536
2
升级功能1:汽车启动动画灯.mp4
2476
3
升级功能2:汽车超速灯光警告功能.mp4
2431
4
升级功能3:车速数码管显示.mp4
1487
5
升级功能4:车速OLED屏幕显示.mp4
1580
6
BOM_汽车模拟控制系统_ 立创&瑞萨训练营.csv
34
7
Gerber_汽车模拟控制系统_【RA】瑞萨MCU训练项目.zip
28
8
PCB_汽车模拟控制系统_【RA】瑞萨MCU训练项目.json
55
9
PCB_汽车模拟控制系统_【RA】瑞萨MCU训练项目.pdf
32
10
SCH_汽车模拟控制系统_ 立创&瑞萨训练营.json
34
11
Schematic_汽车模拟控制系统_ 立创&瑞萨训练营.pdf
35
12
工程代码文件.rar
55
13
《汽车模拟控制系统》工程技术报告.pdf
53
克隆工程
添加到专辑
0
0
分享
侵权投诉

工程成员

评论

全部评论(1
按时间排序|按热度排序
粉丝0|获赞0
相关工程
暂无相关工程

底部导航