
MDB开发方式基于simulink模型对硬件进行开发
基于simulink模型对硬件进行开发MDB开发方式,其中主要包括stm32、esp32的开发,包含foc电机开发、pwm波生成以及pwm检测、串口通讯、adc通讯等,以及常见疑难问题处理。
鼾声鼾语
汽车行业研发,人工智能领域及汽车电气自动化工程师
展开
-
simulink取向量值--从二维表中分批次取一组值模块方法
修改constant的值,就可以得到不同3*3向量表中的值了,原创 2025-03-19 14:42:54 · 48 阅读 · 0 评论 -
simulink开发stateflow,延迟等待的写法
[after(400,tick)]原创 2025-02-06 08:58:21 · 252 阅读 · 0 评论 -
Arduino Mega 2560开发板的引脚分配图及说明,以及链接can的方法
串行通信:提供4组串行通信端口,0(RX)和1(TX)作为串口1,19(RX)和18(TX)作为串口2,17(RX)和16(TX)作为串口3,15(RX)和14(TX)作为串口4。外部中断:提供6个外部中断源,分别是2(外部中断0),3(外部中断1),21(外部中断2),20(外部中断3),19(外部中断4),18(外部中断5)SPI通信:53作为SS,51作为MOSI,50作为MISO,52作为SCK。模拟引脚:A0~A15(在引脚号前加A,以区分数字引脚)TWI通信:20作为SDA,21作为SCL。原创 2024-07-31 11:33:25 · 4395 阅读 · 0 评论 -
odrive中can的使用,以及usb配置命令大全
odrive中can的使用。以及usb配置命令大全。原创 2024-07-20 15:12:02 · 326 阅读 · 0 评论 -
用can控制odrive电机角度控制不转的原因是什么?是因为参数必须是浮点数,通过can还可以配置多个控制节点,最多可以控制8个设备
odrive电机角度控制不转的原因是什么?是因为参数必须是浮点数,用工具转换一下就可以了,注意低字节和高字节的位置。我这里就是吧axis0这个电机设置为了nodeid位3,还设置了波特率为50000。原创 2024-07-20 03:07:53 · 187 阅读 · 0 评论 -
ENCODER_ERROR_INDEX_NOT_FOUND_YET,对于SPI的编码器, 注意由于使用的AS5048A是绝对编码器,没有索引信号,所以不用进行索引校准,直接进行偏移校准即可。
注意由于使用的AS5048A是绝对编码器,没有索引信号,所以不用进行索引校准,直接进行偏移校准即可。AS547P一般是增量式编码器。原创 2024-07-19 23:52:55 · 119 阅读 · 0 评论 -
使用simulink进行esp32开发,进行串口收发数据需要注意的地方,为什么收发不成功 --以及端口查看地址
模型直接选择使用的是那组串口就行了,一般情况下我们收发使用同一组就可以,这样收发模块填写的端口号是一样的。1,主要是因为simulink里的配置文件配置的波特率和串口接受软件配置的波特不一致导致的。2,主要有以下三个界面。原创 2024-07-11 22:58:24 · 366 阅读 · 0 评论 -
低通滤波以及卡尔曼滤波
先讲解几个低通滤波,低通滤波比卡尔曼滤波简单,因为卡尔曼滤波涉及到两个输入量,一个是控制量,一个是观测量,而低通滤波是一个输入量。参考地址:https://blog.csdn.net/m0_58683132/article/details/140141942。参考地址:https://zhuanlan.zhihu.com/p/161695666。1,利用工具箱配置低通滤波。2,自己搭建低通滤波。原创 2024-07-08 08:50:43 · 393 阅读 · 0 评论 -
Matlab安装硬件支持包、simulink离线安装硬件支持包安装,离线安装ESP32、stm32等安装包,Are you up-to-date on SoftWare Maintenance?
注意:如果提示出现“没有可从此位置安装的兼容支持包后,这个问题,请查看步骤5,是不是没有按照步骤5进行操作.一般情况下出现“没有可从此位置安装的兼容支持包”后,重新安装选择了默认路径就可以成功。如果不是很清楚,直接安装在默认的文件夹下面,即使这个文件夹下没有matlab相关的文件夹,也要这么下载,没有为什么,切记尽量按默认路径安装,更改下载的路径不成功,别怪我没提醒。:下载到哪里非常重要,如果下载的不是默认的路径下,就需要将其中这个的是这个archives文件夹,连同其他文件一并要复制出来,拷贝到。原创 2024-07-02 09:34:01 · 1159 阅读 · 0 评论 -
simulink-esp32开发foc电机
将 ESP32 连接到计算机的 USB 端口,然后将 ESP32 置于下载模式。ST-Link/V2:ST-Link/V2 是 STMicroelectronics 提供的用于编程和调试 STM32 微控制器的调试器/编程器。ISP(In-System Programming):ISP 是一种使用专用编程器将固件刷写到 STM32 的方法。这允许您使用串行连接或 USB 下载模式将固件刷写到 STM32。串行下载:串行下载可以使用串行连接将固件刷写到 ESP32。这对于已经部署的设备非常有用。原创 2024-07-01 09:40:46 · 396 阅读 · 0 评论 -
simulink开发stm32,使用中断模块,无法产生中断,其中包括使用timer模块,以及ADC都无法产生中断,需要注意的地方
原来是需要在配置文件里开启一下timer的中断,其他模块自动加载ioc就可以了,这个timer需要注意力,需要自己勾选一下。1,其中包括使用timer模块,以及ADC都无法产生中断,需要注意的地方。结果就是可以在log中看到了,非常好。原创 2024-06-29 01:07:59 · 599 阅读 · 0 评论 -
stm32cubemx,adc采样的几种方总结,触发获取adc值的方法dma timer trigger中断
方法1,软件触发方法2:,Timer触发ADC采集通过DMA搬运触发获取adc值的方法Regular Conversion launched by software 软件触发 调用函数即可触发ADC转换Timer X Capture Compare X event 外部引脚触发Timer X Trigger Out event 定时器通道触发,需要设置相应的定时器。原创 2024-06-28 15:04:36 · 1199 阅读 · 0 评论 -
当我尝试用数字写入法将脉冲发生器调到最大值时,可以在求解器中进行设置。我将其设置为 1e-7,但频率仍然无法超过 25kHz。
当我尝试用数字写入法将脉冲发生器调到最大值时,出乎意料的是它已经在 25kHz 时停止了。经过研究,我发现这与 BaseRateSampleTime 有关,可以在求解器中进行设置。我将其设置为 1e-7,但频率仍然无法超过 25kHz。有没有人有过同样的经历,或者我仍然存在配置错误?还是因为 Simulink 无法生成更快的代码?原创 2024-06-25 16:23:50 · 479 阅读 · 0 评论 -
使用matlab开发stm32总结,stm32-matlab常见的问题处理以及报错合集
问题:本来是好的,突然编译运行报错,说是确少包,解决方案:重启以后好了。原创 2024-06-23 20:50:40 · 346 阅读 · 0 评论 -
stm32使用time模块输出pwm波,stm32-matlab开发电机控制
注意在stm32配置了两路的一个互补输出,但实际上在matlab里只需要给定占空比就行了,他会自动输出互补,驱动电机,这是因为有点的电机输出需要6路,有的只需要1路,我们看下图就知道了。原创 2024-06-23 10:51:21 · 341 阅读 · 0 评论 -
Solver-Fixed-step size(fundamental sample time)、Sample time(模块)、Sample time(powergui)三者的辨析
但可以明确的是:B>A,即模块中的Sample time优先级大于Solver中的Fixed-step size,但前者在数量级上必须是后者的整数倍,否则仿真报错。经测试,三者的优先级关系如下:模块中的Sample time>Fixed-step size(Solver中),而Sample time(powergui中)没啥作用,存在与否,不影响下文的测试结果。模块中设置Sample time,如sine wave模块,双击模块后,打开页面的最后一行可设置采样时间,,记为B。Simulink中三者的位置。原创 2024-06-12 10:19:43 · 450 阅读 · 0 评论 -
PID控制中积分项目的理解,消除稳态误差的作用,表示着过去(PID积分控制)
其中我们会加入比例项目,是为了快速达到稳态,否则只有比例项的话,比例系数KI太小,进入系统稳态时间太长,太大会导致振荡严重,所以需要一个KP,让系统快速进入稳态,有了KP的帮助,KI就可以给的很小,便可快速进入稳态,而且KI比较小,不至于由于积分项目的变化太大,导致系统振荡。积分项目是对于历史误差进行的累积,可以理解,系统的误差累积表示不断的在减少误差,最终消除误差,这个过程需要将误差进行累加,才可以真正知道误差的大小是多少,用最终累加的误差作为积分项目,去消除误差,保证系统的稳态。原创 2024-05-28 11:24:26 · 1733 阅读 · 0 评论 -
pid中的d到底是什么意思?微分到底是用来做什么的,什么情况下用,避免入坑实际案例中的使用-----------PDI中的D阻尼调节
下面是没有给D参数值的情况,启动阶段抖动特别厉害,这个原因是系统响应没有负载,响应过快,启动阶段由于差值大,所以比例项计算出来的扭矩大,所以电机有一个大扭矩,但是由于过大了,所以转速很快就变大了,这个时候差值变为相反的的值,PID系统就会输出相反的大扭矩,这个时候有会反着转动,很明显在启动阶段不停震荡,这种现象必须加入D,延迟系统响应,让系统不要过快的响应给电机一个很大的扭矩,但是加入D之后会出现稳态下的高频振荡,这时候把d降低一些.积分(integral):误差积分------过去 0.04。原创 2024-05-27 14:19:02 · 547 阅读 · 0 评论 -
PID控制中的积分到底是什么,为什么它可以将矩形线转换为曲线?simulink搭建PID控制,积分模块1/s
可以看到加速度的变化,积分到了速度,如果加速度先增大,那么速度就会出现快速曲线上升,然后加速度恒定后,速度增加的变成了一个直线,如果加速度减小,那么速度就变成了缓慢增加的过程,这样就直观的看到加速度和速度之间的关系了。PID控制中的积分到底是什么,为什么它可以将矩形线转换为曲线,1/s或者后面的离散积分模块就是做积分使用的。这个问题呢其实道理很简单,用到的是初中的知识。,这样让转速快速达到,实际情况就会变成这样。如下面matlab搭建了积分1/s。需要PID模块的,关注后私信。原创 2024-05-24 09:11:58 · 410 阅读 · 0 评论 -
FOC之反park变化推导笔记
至于为什么PID出来就是电压值,因为Ud和Uq的公式中有id和iq,两者之间有关系,具体的我给出两个链接。而这个反park那就是对电压的变换,最终得到Ualpha和Ubeta,Vd和Vq是Id和Iq电流经过PID控制器后得到的电压值。然后给到SVPWM进行三路PWM的占空比计算。之前的clark和park都是对电流的变化。原创 2024-05-22 11:13:30 · 747 阅读 · 0 评论 -
PID调节常见的问题----积分饱和等问题,以及模糊控制--参考学习(案例学习)
2,PID控制参数整定(调节方法)原理+图示+MATLAB调试。PID控制学习笔记之三—积分的处理。原创 2024-05-15 15:34:53 · 819 阅读 · 0 评论 -
记录一下simulink的pid controller模块某些情况下不能使用的坑
simulink的pid controller模块不能够再function-call subsystem中使用,因为我们使用simulink pid的时候系统的采样时间必须是确定的,因为再这个模块中要使用这个时间,而一般我们使用function-call subsytem的时候,采样时间是集成的,设置的是-1,所以这个时候pid模块生成代码的时候会报错(但是编译的时候不报错)建议2:系统时间确定的情况下可以使用siumlink的pid模块,因为它的工具很齐全,快速调节pid参数很方面,尤其是再仿真的时候。原创 2024-04-28 10:50:09 · 772 阅读 · 0 评论 -
vcu开发,
从整车控制器VCU模型入门simulink。整车控制器功能开发(九):扭矩解析功能管理。一起学习VCU建模吧-驱动扭矩计算。一起学VCU建模吧-蠕行控制。原创 2024-04-24 11:31:21 · 318 阅读 · 0 评论 -
This assignment writes a ‘double‘ value into a ‘logical‘ type.使用stateflow开发需要注意的数据赋值的问题,尤其是boolean类型
原因是在flow中要给boolean值必须用true,或者false,不能使用数字来代替,今天做一个灯光优先级的控制模块,使用了chartflow开发,结果里面报奇怪的错误,原创 2024-04-16 14:00:14 · 1196 阅读 · 0 评论 -
使用simulink对stm32进行开发,并控制电机问题总结:1,出现电机卡卡滞现象,明显转不快,电机发烫,2,ADC采样电流曲线明显不对,不是正旋函数(推荐)
验证完硬件没问题,我们看下我用simulink用程序读取到的adc采样,直接没有修改log的比例尺,显示如下,看着不是很对、、对比示波器50ms一个孤峰,和simulink的log显示的类似,证明我们的数据没什么问题。原因是电机的驱动板的供电有问题,重新开关一下电机供电的驱动板子,重新刷写一下程序就好了,如果我们设置一下比例尺,这个时候再看波形,就是没问题了。1,出现电机卡卡滞现象,明显转不快,电机发烫,电流采样像是杂波,不对的原因是设置的比例不对,2,ADC采样电流曲线明显不对,不是正旋函数。原创 2024-04-04 21:55:41 · 474 阅读 · 0 评论 -
使用simulink开发stm32需要注意的地方--log显示数据的实时性的几种方法--stm32\adc\i2c实时性(推荐查看)
3,修改采样频率–simple time。下面是官方给出的说明,可以仔细阅读查看。2,修改log日志–配置文件中修改。1,提高串口波特率–实测有效果。原创 2024-04-01 16:13:39 · 542 阅读 · 0 评论 -
(1) Outport is driven by a block with non-overwritable output such as a Ground(simulink 问题解决)
这个问题的原因是状态机出来的信号需要添加同步处理模块,并且添加singal conversion模块才可以,否则会报上面的错误问题,记得在后面重新在线上把名字加上,因为这个模块有隔离作用,不能够集成原来的名字。原创 2024-04-01 14:39:12 · 667 阅读 · 0 评论 -
a signal of data type ‘xx‘. However, it is driving a signal of data type ‘uint8‘.枚举量 (simulink 问题解决)
我在使用枚举量的时候碰到这些问题,总是编译不过,总后的原因是我要把枚举量输出出去使用,必须转换为基本类型,否则没法进行运算处理。原创 2024-04-01 14:30:39 · 790 阅读 · 0 评论 -
FOC控制算法---通俗讲解(可以看懂的)
FOC控制算法,即磁场定向控制算法,是一种先进的电机控制技术。它通过精确控制电机磁场的大小和方向,实现了电机运动转矩的平稳、噪声的降低和效率的提高。简而言之,FOC算法能够对无刷电机进行精细的驱动控制,达到传统控制方法无法实现的性能。原创 2024-03-29 15:39:31 · 2530 阅读 · 0 评论 -
灯哥驱动器端口讲解----foc电机驱动必看
CS:是电流采样的引脚,三项采样电流,现在只给了两路,另外一路算出来就行了。SDA,SCL:I2C的引脚用来读取编码器的计数值。tx,rx:引出来了一路串口,没有用。in:三项电流输入,驱动电机使用。原创 2024-03-28 22:30:23 · 499 阅读 · 0 评论 -
之前一直测试我的电机转速不能够读取到准确的i2c角度值,其实不是设备的问题,是串口通讯的原因
之前一直测试我的电机转速不能够读取到准确的i2c角度值,其实不是设备的问题,是串口通讯的原因。我设置位1m的串口波特率就可以看到比较准确的好的角度计算数值了。原创 2024-03-28 20:41:23 · 129 阅读 · 0 评论 -
stm32控制电机--计算电角度以及电角度和机械角度的对应关系---以及foc的控制算法模型及过程(推荐)
1,电角度和机械角度的关系。2,foc模型工程(推荐)原创 2024-03-26 14:33:11 · 1876 阅读 · 0 评论 -
simulink里枚举量的使用--在m文件中创建枚举量实践操作(推荐)
本文将介绍一种非常重要的概念,枚举量,以及它在simulink状态机中的使用,并且给出模型,方便大家学习。:实际上是用一个名字表示了一个变量,能够比较方便的表示标志信息。原创 2024-03-22 13:51:05 · 1095 阅读 · 0 评论 -
基于MPC模型的自动驾驶控制总结---参考学习链接以及常规知识--simulink mpc和adapter mpc的关系和区别
1,mpc。原创 2024-03-14 14:23:27 · 164 阅读 · 0 评论 -
ADC:STM32学习——模数转换器、官方教学视频
STM32学习——模数转换器(ADC)原创 2024-03-04 10:30:52 · 238 阅读 · 0 评论 -
timer:compare 比较模式,stm32F446re Timer Compare Interrupt,输出pwm,timer interrupt ,timer iqr(推荐参考)
使用timer中断以及比较模式的时候需要在simulink里进行配置,才可以,之前只在stm32cubemx里配置,是不能中断任务的,最后看了参考链接之后才把这个功能调通了。原创 2024-03-01 21:52:59 · 299 阅读 · 0 评论 -
stm32 pluse输出一个固定频率占空比的波形---------------小demo
感觉sample timer 没有作用。原创 2024-02-29 21:31:27 · 268 阅读 · 0 评论 -
比较输出模式:ccr比较寄存器,arr自动装载寄存器, psc分频器都是什么意思?定时中断,定时器的配置和使用
(比较寄存器的值CCR)依次为999、1999、2999和3999,这表示在一个时钟500ms周期内,通道1、2、3和4分别在100ms、200ms、300ms和400ms的时候翻转其对应通道引脚的状态。输出比较四个通道 Output compare preload (输出比较预装载)均为Disable, CH Polarity。(通道输出有效状态)均为高电平,输出比较的其他模式如其字面意思较为好理解,这里不再过多阐述,具体的参数配置如。四个通道从上到下其 Pulse。原创 2024-02-29 18:29:41 · 2444 阅读 · 0 评论 -
一般情况下,硬件中使用Repeating Sequence出现波形很奇怪就是数据的周期频率和mcu运行的频率不一致导致的
把timer values 修改为0 1就好了,如果是0,0.1就不行,不会有下面的波形。一般情况下,出现波形很奇怪就是数据的周期频率和mcu运行的频率不一致导致的。原创 2024-02-26 20:16:07 · 566 阅读 · 0 评论 -
stm32时钟的理解--stm32f4,时钟由16MHZ,提高到72MHZ。HSI是内部时钟源 然后经过PLL锁相环,提高时钟频率就能提高到72MHZ,如果不用锁相环的话,就频率会很低
然后有了 72MHZ的频率后,就给其他模块用,什么Timer\主程序等等。原创 2024-02-26 19:29:42 · 424 阅读 · 0 评论