自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 收藏
  • 关注

原创 STM32脱坑【Day 11】

1),其中,CK_PSC为时钟频率,PSC为分频值,代码中写成7200-1,也就是7200分频,ARR为自动重装载值,计数达到此值自动置0,代码中写成10000-1。像之前的中断一样,定时器的配置流程如上图所示,首先是时钟单元的获取(确定用什么时钟,定时频率),然后是时基单元(定多长时间),中断输出(达到定时标志进入中断处理相关任务)简单看了下定时器的内容,挺多的,觉得定时器就是封装的中断,因为单独的一个定时器无法完成任何事,还需要定时器(中断)函数。实验结果:计数周期为1s,OLED上显示数字变化。

2023-06-02 11:17:50 153

原创 STM32脱坑【Day 10】

实验结果:程序移植还是挺有意思的,虽然是个单一功能的项目,但是也花费了不少时间,本来打算使用CubeMx生成代码直接移植的,但是源文件使用标准库写的,比较麻烦,所以还是使用传统的项目建立方法一步步移植了。之前在B站上看到江科大的教学视频使用的4针脚OLED,于是拷贝其项目,然后在自己的板子上点亮,方便后期调试。江科大使用的是硬件模拟I2C通信驱动OLED,因此很方便移植,找到两个空闲引脚配置即可。由于目标板不同,因此首先确定自己的板子引脚,PC_5(SCK)和PC_6(SDA),另外两根线接电源和GND。

2023-06-01 16:40:33 157

原创 STM32脱坑【Day 9】

需要注意的是:由于串口使用的是中断模式,拿串口接收来说,可能需要接收的数据很长,当触发串口接收中断并完成一次接收后,CPU就去执行其他任务了,这时候就需要直到数据何时接收完毕,因此串口中断函数不能写到循环当中,而需要写到主循环之前,在触发串口接收中断并且将完整数据接收完之后再处理其他任务。DMA_6通道作为USART2_RX的串口接收,就是将上位机发来的数据从外设USART2接收端搬到内存变量中,DMA_7作为USART2_RX的串口发送,将板子上内存变量中的数据搬到USART2发送端发到上位机。

2023-05-31 09:39:07 142

原创 CCS仿真用法

点击Resume,开始运行,这时候配置Graph绘图,点击ok后并没有如约出现图像,还需要手动点击Resume按钮旁边的暂停按钮,此时就可以看到图像了。截图快捷键找不到了,步骤放一下:右键工程,选择New,点击Target Configuration file。然后点击Target configuration,添加自己下载的配置文件,就是上面参考文章中提供的资料。由于示波器崩坏,想要整点波形数据还得靠软件仿真,没办法,整整CCS。看一遍,没有TI相关的字眼,没有尝试能不能用,好奇的可以试一下。

2023-05-30 15:52:22 1769

原创 STM32脱坑【Day 8】

关于New Bing:之前在使用GPT 3.5和其他大语言模型,相比之下,New Bing的回答速度稍慢些,但是准确率和人性化的程度丝毫不逊色,感觉使用的是GPT-4模型(一些奇葩问题也能作答)。使用方法:首先注册微软账号,打开EDGE浏览器,然后绕过重定向,进入网址https://bing.com/.之后需要将设置中的国家和地区更改一下。keil5纯手敲代码,实现按键中断,对中断的理解更近一步,当然离不开New Bing 的帮助。实验现象,上电后LED实现呼吸灯效果,按键控制呼吸灯开关。

2023-05-29 11:44:50 85

原创 STM32脱坑【Day 7】

定义收发数据数组receivedata[2],使用HAL_UART_Transmit()函数实现从机向主机发送数据,HAL_UART_Receive()函数接收主机发来的数据。本实验实现了基本的串口收发和外设控制,但是这种控制方式对系统资源占用较大,CPU时钟在检测串口工作状态,资源利用率很低,因此有必要引入中断提高串口收发效率。首先是根据板子原理图找到板载串口号,确认为PA2(USART_TX)和PA3(USART_RX);然后将数据指令与LED状态进行匹配,实现控制小灯的效果。发送R1时,LED点亮;

2023-05-28 19:45:52 97

原创 STM32脱坑【Day 6】

首先配置ioc文件,PB13作为LED口,PA3作为按键中断口,根据个人板子配置,端口输入输出模式,我用的面包板,结合实际电路,按键中断口配置为下拉输入,上升沿检测;LED口配置为无上下拉,输出模式为默认低电平(LOW)。需要将system tick timer的优先级提高,也就是优先级书目字小于中断线3,这里设置system tick timer 优先级为14,EXTI3为15。如果在中断函数中使用了HAL_Delay()函数,还要在ioc文件中修改NVIC优先级。实验目标:中断中实现按键控制小灯亮灭。

2023-05-27 21:09:08 377

原创 STM32脱坑【Day 5】

读取按键信息,单个按键控制LED亮灭,并将LED状态信息传入OLED。STM32按键、LED、OLED使用。

2023-05-27 00:07:39 197

原创 STM32脱坑【Day 4】

目标:使用中断函数处理按键控制LED程序,按键按下作为一次中断输入,也就是一种输入状态。这两天被拉去搞DSP了,读地址读得要吐,看看32缓缓。中断学习,这里只做简单使用。

2023-05-26 16:02:18 117

原创 STM32脱坑【Day 3】

总结一下,simulink将模型以代码形式下载到板上运行,这个应该是下载到了RAM上,因为仿真停止后就没有实验现象了。上面的例子都是开胃小菜,一切都要为下面的这个示例服务,不知道有没有人做过这个,能否指点一二。

2023-05-23 10:37:43 122

原创 STM32脱坑【Day 2】

③在模型设置中将模型将求解器设置为定步长类型,最大步长设置为auto,主要是为了便于看到实验现象,如果设置为定步长,模型中的占空比调节就比较麻烦。串口通信部分查看设备管理器,找到STM32的virtual com号,错误的话将导致无法运行。这里主要参考了第三个网址的文档内容:建立Simulink和板子的通讯,实现实时调节参数。①首先还是安装STM32 Nucleo硬件支持包,还有其他必要的Matlab工具箱。附上一些调节效果,不过还不是实时调节的。不知道什么原因,尚待解决。

2023-05-23 09:22:44 813 8

原创 STM32脱坑【Day 1】

从去年到现在,学习了电机控制相关的算法,也零零散散搭建了仿真事例,也接触到了simulink代码生成方面的内容。很想做一点硬件实现方面的工作,正好手头有一块P-Nucleo-IHM001电机算法评估板,于是萌生了代码实现和部署的想法。简单了解之后我发现需要补充STM32以及嵌入式项目开发的知识,于是写下自己所做的事还有踩过的坑。

2023-05-21 10:09:45 163

原创 matlab系统辨识工具箱及其反向验证

时,通过对输入输出数据采集,通过数学迭代找到控制对象的近似模型。首先制作输入数据,在simulink中的输入数据需要是实数、整型、浮点数,且第一列为时间数据,因此结合原数据采样时间为0.08s,可得制作数据时间间隔为0.08s,数据量为1000,因此时间为0-0.08*1000s。在上述ARX模型中,最终最佳拟合的模型分布为极点个数为3,零点为4,延迟为2。对于estimate中的识别顺序其实是很关键的,因为实际中许多要辨识的系统特征(零极点分布状况)是未知的,所以不能一开始就选择传递函数模型进行辨识。

2023-04-11 10:32:07 3633 2

原创 使用PID—tuner做参数整定

通过调整对应系数,点击打开Show Parameters可以看到调整后的参数,以及系统性能其情况。第一栏表示响应时间快慢,第二栏表示系统暂态性能,反映到响应曲线上就是超调量、调节时间等参量信息。环境:Matlab/Simulink 2020a。虚线是当前参数下的响应曲线,实线是自动调整后的。找到满意参数后,将当前参数更新到仿真模块中。无法跟踪单位阶跃信号。

2023-03-28 11:47:05 1087

原创 使用脚本文件进行系统响应仿真

习惯了simulink搭建仿真模块进行仿真后,发现在代码移植和阅读直观性上不够好,正好最近在学智能优化算法整定参数,发现使用脚本文件可以更快运行。实际运行图,可以结合“递增值并运行节”进行参数整定。Lsim(传递函数名,输入信号量,时间)

2023-03-16 10:42:18 113

翻译 plot作图方法

使用plot作图时,一般可以使用m文件结合循环输出不同系统对于不同参数的响应,那么还有一种类似在线仿真脚本的方式可以得到实时曲线图。然后就可以通过更改数字运行下半部分代码了(需要注意的是,下半部分的代码需要使用‘%%’分节才能实现上述功能)然后对P参数进行调节,右键单击P设置的数值弹出‘递增值和运行节’,这样就可以更直观地地看到参数变化带来的不同响应。

2023-03-15 13:06:57 233

转载 使用m函数进行基于Ziegler-Nichols方法的PID参数整定

该方法的基本思路是将积分呢和微分增益设置为0,然后bili增益从0开始增加,直至达到极限增益Ku,结合此时的系统振荡周期Tu,就可以进行Z-N参数整定。根据控制理论知识,PID控制器是串在系统前级根据误差产生控制效果的。Ziegler-Nichols整定PID 是一种工程经验方法,可以比较方便地进行PID参数整定。3、根据极限增益Ku和辅助多项式确定振荡周期Tu。2、根据Routh判据确定极限增益Ku。1、考虑纯比例控制下的系统的闭环特性。下面是使用m文件进行系统仿真的尝试。文章源自B站UP主学海行舟。

2023-02-27 21:29:37 792

转载 使用m文件进行PID调参--m函数的简单使用

matlab/PID

2023-02-26 11:11:39 1202

原创 MTPA仿真实现和一些比较

书接上文,上回书说到,MTPA这位英雄让无数武林好汉摧眉折腰,究其原因何在?原来MTPA孤傲冷峻的风格(数学表达)和捉摸不定的行踪(pid调参),使他在江湖上名气很大,但是事实真的如此吗?列位看官,且听我徐徐说鱼您听~~花生瓜子啤酒饮料啦~~正文:仿真环境搭建,使用了基本id=0的电流控制模型,在此基础上,接入MTPA控制模块,以求寻得MTPA这位好汉的踪迹;...

2022-04-10 20:48:46 2532 4

原创 永磁同步电机矢量控制学习--MTPA控制策略

MTPA原理要了解MTPA原理,首先要从电机转矩公式说起。这是电机在d-q轴下的电压表达式,电机有功功率部分的1系数1.5是为了补偿3/2坐标变换。结合两个式子,就得出了电机的有功功率模型。

2022-04-10 18:47:09 14761 3

原创 PMSM电机学习记录--DTC控制

DTC--直接转矩控制,各种文献上都说它不同于传统的矢量控制依赖数学变换和电机参数,而且直接通过控制定子磁链进而控制电机转矩 ,直面问题,因此转矩响应速度也比矢量控制要快很多。DTC的模型构建DTC模型在转子旋转坐标系下(d-q轴)建立,控制对象是定子磁链Ψs,从上图可以看出,需要进行定子静止坐标系到转子旋转坐标系变换,那么,定子磁链到d-q轴的变换就是:Ψd=|Ψs|*cosδ,Ψq=|Ψs|*sinδ (其中,δ 是定子磁链与转子磁链之间的夹角,定义为转矩角)既然想要以磁链作为研

2022-03-30 17:22:48 2430 1

原创 PMSM电机学习记录--矢量控制之滞环电流控制(Bang-Bang控制)

PMSM是比较流行的一种电机,它的综合性能优良,因此市场偏爱。但是它也有多变量、强耦合、模型复杂、不易控制等缺点,因此合理的控制方式对于PMSM研究来说至关重要。滞环电流控制,即限制电流幅值,设计转速环和电流环双闭环控制器,可对电机突加负载进行快速响应,是一种比较基本的电机控制方式。部分文本、图片信息来自《现代永磁同步电机仿真》和MatlabR2020a&Simulink....

2022-03-29 16:28:32 3923 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除