结合汽车功能,简单的将汽车中的蠕行、巡航、加减速功能在小车中实现;
需求输入如下:
Vehicle Lever Function Component Lever Control Lever
1 FID_Still&Stop StandBy No Vol
2 FID_Creep Creep_Spd Inc Vol
3 FID_Accleration Acc_Spd Intense Inc Vol
4 FID_Deccleration Dec_Spd Dec Vol
5 FID_Break Break_Spd Intense Dec Vol
6 FID_Constand Speed Const_Spd Const Vol
小车拓扑:
采用STM32CubeMx建立底层接口软件:
1.RCC 外部时钟;
2.TIM1、TIM2的通道1输出PWM;
3.PA6 输入进行车速监测;
4.PB0、PB1按键输入;
采用Matlab/Simulink实现应用层控制:
用一个按键实现小车状态从Stop->Creep->Acc->Dec->Break功能:
通过按键触发不同PWM占空比实现以上功能;
Simulink代码生成直接调用MDK;
业余时间玩一下,后续更新
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
1、ASW应用层软件架构如下:
输入层:STM32_Inputs
该模块放置的是Matlab封装好的STM32 输入外设,像Read IO、Timer的捕获等;
算法层:ASW Function
该模块实现对外部信号的处理、小车功能控制、外部输出信号处理;
输出层:STM32_Outputs
该模块放置的是Matlab封装好的STM32的外设,像Write IO、Timer PWM等;
2、速度采集功能
虽然STM32外设支持脉冲的捕获,但并没有用,而是尽可能通过simulink搭建数学模块实现脉冲计数,从而实现车速监测,同事可实现
车辆的行驶里程
需求及功能实现如下:
需求:
实现小车速度采集后,可以基于模型设计的小车玩的事情就很多了,根据汽车功能可以知道,车辆的定速巡航、ACC自适应巡航、车辆蠕行、以及整车车速限制功能,都需要速度作为输入条件;
功能实现:
在网上买的小车半径r是3.3cm,赠送的码盘间隔Tip是20个,通过STM32Cube设置某一IO为Read,而simulink只是单纯的读取该IO的跳变信号即可,对读取到的触发信号进行计数,计数实现
是通过simulink搭建离散积分器实现;通过控制小车的PWM信号作为积分器的Reset条件,这么做可以对停车后的脉冲清零;采集到的脉冲 n,那么可认为当前车速v=n*(2*Pi*r)/Tip/t,这里的t是
以小车驱动为基准的时间;目前只是搭建了simulink功能,经过MIL测试是没问题的,还没在小车上验证,验证好后会根据车速信号做定速巡航等功能,后续再更新!
谢谢网友们支持!
一周热门 更多>