汽车模拟控制系统_ 立创&瑞萨训练营
简介
使用瑞萨MCU为主控,制作汽车模拟控制系统,通过电路的逻辑设计,模拟汽车启动、前后档、速度档、油门、刹车、车速灯光指示及屏幕显示、超速警告、左右转向、前灯、倒车灯、刹车灯、鸣笛、紧急双闪等功能。
简介:使用瑞萨MCU为主控,制作汽车模拟控制系统,通过电路的逻辑设计,模拟汽车启动、前后档、速度档、油门、刹车、车速灯光指示及屏幕显示、超速警告、左右转向、前灯、倒车灯、刹车灯、鸣笛、紧急双闪等功能。开源协议
:GPL 3.0
描述
《汽车模拟控制系统》工程技术报告
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
评论