自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

学徒浩子

个人知识积淀,与君共享

  • 博客(52)
  • 资源 (18)
  • 收藏
  • 关注

原创 FreeRTOS —— 12.故障排除

12.1本章简介和范围本章重点介绍了FreeRTOS新用户所遇到的最常见问题。 首先,它着眼于三个问题,这些问题已被证明是多年来最常见的支持请求来源。 错误的中断优先级分配,堆栈溢出以及对printf()的不正确使用。 然后以FAQ的形式简要介绍其他常见错误,可能的原因及其解决方案。通过立即捕获并识别许多最常见的错误源,使用configASSERT()可以提高生产率。 强烈建议在开发或调试FreeRTOS应用程序时定义configASSERT()。 configASSERT()在第11.2节中介绍。1

2021-04-06 11:09:03 2822

原创 FreeRTOS —— 11.开发者支持

11.1本章简介与适用范围本章重点介绍了一组功能,这些功能可通过以下方式最大程度地提高生产率:提供有关应用程序行为方式的见解。突出优化机会。在发生错误的时刻捕获错误。11.2 configASSERT()在C语言中,宏assert()用于验证程序所做的断言(假设)。 该断言被写为一个C表达式,如果该表达式的值为假(0),则该断言被视为失败。 例如,清单163测试了指针pxMyPointer不是NULL的断言。应用程序编写者通过提供assert()宏的实现来指定断言失败时要采取的措施。F

2021-04-06 10:48:11 1278

原创 FreeRTOS —— 10.低功耗支持

待定。 本章将在最终出版之前撰写。

2021-04-06 02:22:49 849

原创 FreeRTOS —— 9.任务通知

9.1本章介绍与范围已经看到,使用FreeRTOS的应用程序被构造为一组独立的任务,并且这些任务很可能必须彼此通信,以便它们可以共同提供有用的系统功能。通过中介对象进行通信本书已经描述了任务之间可以相互通信的各种方式。 到目前为止描述的方法需要创建通信对象。 通信对象的示例包括队列,事件组和各种不同类型的信号量。使用通信对象时,事件和数据不会直接发送到接收任务或接收ISR,而是会发送到通信对象。 同样,任务和ISR从通信对象接收事件和数据,而不是直接从发送事件或数据的任务或ISR接收事件和数据。 这

2021-04-06 02:21:50 4561

原创 FreeRTOS —— 8.事件组

8.1本章介绍与适用范围已经注意到,实时嵌入式系统必须响应事件而采取行动。 前面的章节介绍了FreeRTOS的功能,这些功能允许将事件传达给任务。 此类功能的示例包括信号量和队列,它们均具有以下属性:它们允许任务在“阻止”状态下等待单个事件的发生。当事件发生时,它们将取消阻止单个任务-未被阻止的任务是等待事件的优先级最高的任务。事件组是FreeRTOS的另一个功能,它允许将事件传达给任务。 与队列和信号量不同:事件组允许任务在“阻止”状态下等待发生的多个事件之一的组合。事件组发生时,事件组

2021-04-04 14:11:19 1321

原创 FreeRTOS —— 7.资源管理

7.1本章介绍与适用范围在多任务系统中,如果一个任务开始访问资源,但是在转换为正在运行状态之前没有完成对资源的访问,则可能会出错。 如果任务使资源处于不一致状态,则任何其他任务或中断对同一资源的访问都可能导致数据损坏或其他类似问题。以下是一些示例:访问外围设备请考虑以下情形,其中两个任务试图写入液晶显示器(LCD)。1.任务A执行并开始将字符串“ Hello world”写入LCD。2.在仅输出字符串的开头“ Hello w”之后,任务B抢占了任务A。3.任务B写下“Abort,Retry

2021-04-03 03:07:23 1335

原创 FreeRTOS —— 6.中断管理

6.1本章介绍与范围事件嵌入式实时系统必须采取措施以响应源自环境的事件。 例如,到达以太网外围设备的数据包(事件)可能需要传递到TCP / IP堆栈进行处理(操作)。 非平凡的系统将不得不处理源自多个来源的事件,所有这些事件都将具有不同的处理开销和响应时间要求。 在每种情况下,都必须对最佳事件处理实施策略做出判断:1.如何检测事件? 通常使用中断,但也可以查询输入。2.使用中断时,应在中断服务程序(ISR)内执行多少处理,而在中断服务程序外进行多少处理? 通常希望使每个ISR尽可能短。3.如何将事

2021-04-02 17:34:00 2515

原创 FreeRTOS —— 5.软件计时器管理

5.1本章介绍与适用范围软件计时器用于在将来的设定时间或以固定频率周期性地调度功能的执行。 软件计时器执行的功能称为软件计时器的回调功能。软件计时器由FreeRTOS内核实现并受其控制。 它们不需要硬件支持,并且与硬件计时器或硬件计数器无关。请注意,与使用创新设计以确保最大效率的FreeRTOS理念一致,除非软件计时器回调函数正在实际执行,否则软件计时器不会使用任何处理时间。软件计时器功能是可选的。 包括软件计时器功能:作为项目的一部分,构建FreeRTOS源文件FreeRTOS / Sourc

2021-04-01 22:20:08 1342

原创 FreeRTOS —— 4.队列管理

4.1 本章介绍与适用范围“队列”提供了任务到任务,任务到中断以及中断到任务的通信机制。范围本章旨在使读者更好地理解:如何创建队列。队列如何管理其包含的数据。如何将数据发送到队列。如何从队列接收数据。阻塞队列意味着什么。如何在多个队列上进行阻止。如何覆盖队列中的数据。如何清除队列。写入队列和从队列读取时任务优先级的影响。本章仅介绍任务之间的通信。 第6章介绍了任务到中断和中断到任务的通信。4.2队列的特征数据存储队列可以容纳有限数量的固定大小的数据项。 队列可以容纳的最大

2021-04-01 16:58:24 1490

原创 FreeRTOS —— 3.任务管理

3.任务管理3.1 本章介绍与适用范围范围本章旨在使读者更好地理解:FreeRTOS如何为应用程序中的每个任务分配处理时间。FreeRTOS如何选择应在任何给定时间执行的任务。每个任务的相对优先级如何影响系统行为。任务可以存在的状态。读者还应该对以下内容有充分的了解:如何执行任务。如何创建一个或多个任务实例。如何使用任务参数。如何更改已创建任务的优先级。如何删除任务。如何使用任务实现定期处理(软件计时器将在下一章中讨论)。空闲任务何时执行以及如何使用。本章介绍的概念是

2021-03-29 22:02:57 1364

原创 FreeRTOS —— 2.堆内存管理

堆内存管理从FreeRTOS V9.0.0起,可以完全静态分配FreeRTOS应用程序,而无需包括堆内存管理器2.1 本章简介与范围先决条件FreeRTOS是作为一组C源文件提供的,因此,成为一名合格的C程序员是使用FreeRTOS的先决条件,因此,本章假定读者熟悉以下概念:如何构建C项目,包括不同的编译和链接阶段堆和堆栈是什么标准的C库malloc()和free()函数。动态内存分配及其与FreeRTOS的关联从FreeRTOS V9.0.0起,可以在编译时静态分配内核对象,或者在运

2021-03-29 16:56:24 817

原创 FreeRTOS —— 1.FreeRTOS发行版

1.1 本章介绍与适用范围FreeRTOS以单个zip文件存档的形式分发,其中包含所有正式的FreeRTOS端口以及大量的预配置演示应用程序。范围本章旨在通过以下方式帮助用户熟悉FreeRTOS的文件和目录:提供FreeRTOS目录结构的顶层视图。描述任何特定的FreeRTOS项目实际上需要哪些文件。介绍演示应用程序。提供有关如何创建新项目的信息。这里的描述仅与FreeRTOS官方发行版有关。 本书随附的示例使用的组织稍有不同。1.2 了解FreeRTOS发行版定义:FreeRTOS

2021-03-29 15:07:20 949

原创 FreeRTOS —— 0.前言

MCU当遇到比较复杂的开发时,往往都会采用RTOS,而FreeRTOS是最为广泛使用的实时操作系统之一,正好目前工作中使用到了FreeRTOS,借助官方使用介绍文档,一边学习一边翻译。翻译工具主要借助GOOGLE,同时也会优化语句。文档来源:https://www.freertos.org/Documentation/RTOS_book.htmlMastering the FreeRTOS Real Time Kernel - a Hands On Tutorial Guide (掌握FreeRTOS

2021-03-29 11:48:23 693

原创 MCU开发 —— GD32篇:5.SEGGER Embedded Studio 使用外链编译器

SEGGER Embedded Studio 凭借着自身超流畅的运行速度,以及跨平台环境用过的人都一致好评,只是在KEIL和IAR几乎统治的MCU开发IDE中,SES略显小众。经过这么几个月的体验下来,感觉已经看不惯KEIL和IAR原来界面了,现在MCU市场纷纷涨价,选择MCU上也不得不下探到最便宜的芯片上,如今GD推出的GD32E230系列,采用ARM-V8架构,而且还是72MHz主频比STM32F0系列性价比高出不少,由于SES还没有正式适配这个系列,没法完全采用SEGGER那一整套开发模式。但可以考虑

2021-02-25 14:29:35 2641 3

原创 MCU开发 —— GD32篇:4.SEGGER Embedded Studio 常规配置

前言在使用SEGGER Embedded Studio 进行开发的时,有些实用性很强的功能可以进行配置来提高开发效率中文字符光标设置默认的界面中,如果输入中文字符,光标会显示在字符的中间,在删减字符时比较难以操作。Tools->Options->Text Editor-> visual appearance 修改字体渲染为“比例” 即可修改后中文字符的光标可以正常显示在字符末尾了,便于操作中文字符光标设置...

2021-02-25 13:50:19 5795 1

原创 软件安装 —— 使用官方ODT定制安装Office

前言正在MacOS11的Big Sur如火如荼的宣传着,我这不争气的Windows系统也终于越看越是臃肿,做为生产力工具,第一还是要稳定精简,一气之下,直接换上了Windows特别版本LTSC,据说这个版本特别特别稳定,很长时间才会更新一次,但用过的都说好,想想还是激动的。重装系统是一个重大工程,那做为Windows第二重要的软件Office目前的安装模式要么官方下载安装包要么离线部署,而官方的安装包可谓是一键超级全家桶搬进C盘,有用的没用的全部装一遍,最终还是靠离线部署来安装了,可以定制想要的软件,还

2020-12-01 15:20:05 8741 2

原创 MCU开发 —— GD32篇:3.添加ARM_DSP库到工程模板里

前言相关代码可以在第一篇文章中的百度云网盘链接中下载上一篇我们重新调整了SES关联的工程文件路径,将必要文件均从SES中解耦出来,方便移植到其他IDE中,本文主要是添加ARM_DSP库添加ARM_MATH在工程中添加对应的源文件在项目配置中,添加宏定义ARM_MATH_LOOPUNROLL 这个是将4个数据为一组同步处理,加速计算使能硬件浮点计算添加代码/*****************************************************************

2020-11-27 19:56:32 3271

原创 MCU开发 —— GD32篇:2.SEGGER Embedded Studio 重构项目工程

前言回顾上一篇SES的环境搭建,已经从基本开发流程新建了工程,并成功运行了点灯的程序。正如文中提到,由于SES是SEGGER自家IDE,有些库更新不及,该篇打算对常用的文件进行更新和工程整理,也是为了方便移植。更新内容CMSISSES下载的CMSIS版本为5.0.4,而最新CMSIS已经更新到5.7.0了。https://github.com/ARM-software/CMSIS_5做了一些对比图,感兴趣的可以通过对比的路径自行查看具体更新细节。而关于CMSIS_DSP变化就较大了,最新

2020-11-27 18:39:12 2673

原创 MCU开发 —— GD32篇:1.开发环境搭建之 SEGGER Embedded Studio for ARM

前言今年芯片市场真是命运多舛,受到疫情的影响,上游晶圆短缺,直接导致今年芯片产能不足,连STM32这样的通用MCU也出现价格涨价甚至价格翻翻,但生活总得继续,STM32价格太贵也只能尝试使用国产的MCU,最受关注的当属兆易创新GD32,今年的产品基本就在这个平台上开发了,从习惯STM32的HAL库开发到GD32的类似标准库开发的转变总归还是有些不适应,而且还不能用STMStuido这样监控变量,既然要走破釜沉舟这条路,不如来个釜底抽薪,重新调研一下现在常用的IDE。得知目前可以用JLINK的JScope

2020-11-27 13:56:09 18595 6

原创 椭圆 —— 从理论推导到最小二乘法拟合

前言椭圆在高中数学里就开始提到,都是从标准方程开始如:x2a2+y2b2=1(a>b>0)\frac{x^2}{a^2}+\frac{y^2}{b^2}=1(a>b>0)a2x2​+b2y2​=1(a>b>0)其中 aaa 为椭圆的长轴,bbb 为椭圆短轴。如长轴为 111 ,短轴为 0.50.50.5 的椭圆可以这样画出ezplot('x^2/1^2 + y^2/0.5^2 = 1',[-1.5 1.5 -1 1])grid on;标准方程可以很方便

2020-10-06 23:20:16 9812 5

原创 蓝牙开发笔记—— Nordic篇:1.开发环境搭建(软件安装和配置)

前言蓝牙应用在生活很多方便,现在任何智能产品都集成了蓝牙功能,现在提供蓝牙方案的供应商也非常多,如TI,ST,Dialog,Nordic等等,而网上资料最多,用户群体最庞大的还属Nordic,做为主流蓝牙芯片,学习和使用对于开发者是比较重要的。而接触的第一步就是开发环境的搭建。文中所需的所有软件下载地址(百度网盘),提取码:pzcj安装Keil开发Nordic芯片当然不止Keil,也有IAR,和SES。我比较熟悉Keil,安装步骤和配置可以参考我的这篇博文软件安装 —— Keil的安装与配置(汉化,

2020-09-24 14:16:45 6834

原创 主题美化 —— IAR篇

主题美化篇由于项目需要,不得不使用IAR进行开发,可是看到默认的主题,简直丑到爆了。寻思已久,还是对环境配色进行下美化,有两种方法,分别是鼠标点点点和配置文件修改。鼠标点点点从工具栏里进入,Tools然后Options然后切换到Colors and Fonts这里有各种关键词下的字体,大小,颜色,背景色。可以根据自己喜好进行修改。需要注意的是可选择的字体不多,有些字体还选不了,这里建议直接修改配置文件配置文件修改打开目录C:\Users\ZhangHao\AppData\Local

2020-09-19 19:27:47 4614 6

原创 控制教程 —— 巡航控制篇:3.根轨迹控制器设计

目录控制性能目标性能设计目标比例控制滞后控制器前面教程已经得出了定速巡航系统的传递函数模型:P(s)=V(s)U(s)=1ms+b[m/sN]P(s) = \frac{V(s)}{U(s)} = \frac{1}{ms+b} \qquad [ \frac{m/s}{N} ]P(s)=U(s)V(s)​=ms+b1​[Nm/s​]本教程采用的系统参数如下:m 车辆质量 1000 kgb 阻尼系数 50 N.s/mu 额定控制力 500 N控制性能目标上升时间 < 5s超调 &

2020-05-26 00:30:09 1408

原创 控制教程 —— 巡航控制篇:2.PID控制器设计

目录系统模型及参数控制性能目标PID概述比例控制PI 控制器PID 控制器系统模型及参数前面教程已经得出了定速巡航系统的传递函数模型:P(s)=V(s)U(s)=1ms+b[m/sN]P(s) = \frac{V(s)}{U(s)} = \frac{1}{ms+b} \qquad [ \frac{m/s}{N} ]P(s)=U(s)V(s)​=ms+b1​[Nm/s​]本教程采用的系统参数如下:m 车辆质量 1000 kgb 阻尼系数 50 N.s/mu 额定控制力 500 N控制性

2020-05-24 22:00:28 5622

原创 控制教程 —— 巡航控制篇:1.系统建模及开环响应分析

这里写目录标题物理模型建立系统动力方程式系统参数配置状态空间模型传递函数模型控制指标设计开环阶跃响应开环极点/零点开环伯德图物理模型建立在现代车辆的反馈控制系统中,自动巡航控制一个典型的例子。巡航控制系统的目的是在不受外界干扰(如风或坡度变化)的情况下保持恒定的车速。可以通过测量测速,将其与期望速度或参考速度进行比较,并根据控制规律自动调节油门来实现。这里我们考虑一个简单的车辆动力学模型,如上面的受力分析图。质量为m的车辆收到控制力u的作用,作用力u表示在道路/轮胎面产生的力,对于这个简化的模型,我

2020-05-24 00:43:39 3690

原创 控制教程 —— 介绍篇:10.基于Simscape为火车系统建模

在之前控制教程 —— 介绍篇:8.基于Simulink为火车系统建模部分已经通过数学模型的方式对火车系统进行了建模和仿真,本教程将使用Simscape工具箱进行物理建模。在Simscape库中提供了非常多物理模块,可以构建复杂的多状态模型,却无需像前面介绍的那样需要应用牛顿第二定律等物理原理来构建数学模型,回顾一下之前的火车系统。文章目录物理配置创建Simscape模型仿真结果物理配置正如之前描述的那样,火车头和车厢的质量分别由M1和M2表示,火车头和车厢采用刚度为k的联轴器连接,牵引力F表示火车

2020-05-14 03:57:57 2705 1

原创 控制教程 —— 介绍篇:9.基于Simulink为火车系统设计PID控制器

上篇博文介绍了如何使用Simulink对火车系统进行数学建模,这篇教程将介绍如何在Simulink中为建立好的火车系统设计控制器。开环被控对象模型回顾上节内容,我们建立了一个火车系统的数学模型。假设火车沿直线方向运动,我们希望能对火车的引擎进行控制,使其能够平稳的启动和停止,并能在稳态下以尽可能小的误差跟踪给定的恒定速度指令。在Simulink中实现PID控制器我们首先创建一个子系统来便于理解,删除三个scope模块和Singal Generator模块,并用sink库中的 out 模块和 in

2020-05-14 02:44:33 7192 10

原创 控制教程 —— 介绍篇:8.基于Simulink为火车系统建模

在Simulink中,对物理系统的数学模型进行建模和仿真是非常简单的。模型在Simulink中是以图形框图的方式表示,用户可以在提供的模型库中找到各种模块。使用Simulink进行动态系统分析的主要优点之一,它使我们能够快速分析复杂系统的响应,而这些系统可能很难分析。Simulink能够从数学上近似解决我们无法或难以手动解决的数学模型。通常,可以从物理定律中得出关于给定系统的数学方程,它使Simulink建模的基础。本次教程中,我们将演示如何导出数学模型,然后再Simulink中实现该模型。火车系统在

2020-05-12 00:06:59 7850 11

原创 控制教程 —— 介绍篇:7.数字控制器设计

在本教程中,我们讨论将连续时间模型转换成离散时间(或差分方程)模型的方法,我们还将介绍z变换,并展示如何使用它来分析和设计离散时间系统的控制器。本教程中使用的主要MATLAB命令为:c2d,pzmap,zgrid,step,rlocus。简介下图展示了我们一直考虑的典型连续时间反馈系统模型。几乎所有连续时间控制器都可以使用模拟电子设备来实现。阴影矩形中的连续控制器可以由如下所示的数字控制器代替,该数字控制器执行与连续控制器相同的控制任务。而区别在于,数字控制器对感应信号的采样是离散而不是连续的。如

2020-05-10 18:11:54 4344

原创 控制教程 —— 介绍篇:6.状态空间控制器设计

在本教程中,我们将展示如何使用状态空间(或时域)的方法设计控制器和观测器。本教程中使用的主要MATLAB命令为:eig,ss,lsim,place,acker。形式有几种不同的方法来描述线性微分方程组,在"控制教程 —— 介绍篇:1.建模"部分中介绍了状态空间描述。对于SISO LTI系统,状态空间形式如下:dxdt=Ax+Bu\frac{d\mathbf{x}}{dt} = A\mathbf{x} + Budtdx​=Ax+Buy=Cx+Duy = C\mathbf{x} + Duy=Cx

2020-05-09 18:38:36 5934 2

原创 控制教程 —— 介绍篇:5.频域方法控制器设计(粗略版)

采用频域响应方法来设计控制器可能不如之前研究的其他方法直观。但是,它具有某些优势,尤其是在实际情况下,例如根据实测数据来对系统进行建模的时候。在本教程中,我们将看到如何使用系统的开环频率响应来预测其闭环时间响应。本教程中使用的主要MATLAB命令为:bode,nyquise,margin,lsim,step,feedback,controlSystemDesigner增益和相位裕度在介绍篇:...

2020-05-07 16:51:20 5127 3

原创 控制教程 —— 介绍篇:4.根轨迹控制器设计

在本教程中,我们将介绍根轨迹,展示如何使用MATLAB来创建根轨迹,并演示如何通过使用根轨迹来设计满足某些性能指标的反馈控制器。本教程中使用的主要MATLAB命令包括:feedback,rlocus,step,controlSystemDesigner。闭环极点开环传递函数 H(s)H(s)H(s) 的根轨迹通常是在比例增益 KKK 在0到 ∞\infty∞ 变化时,形成的闭环极点的轨迹曲线...

2020-05-05 17:08:30 5417 1

原创 CC3200 —— No.1 环境搭建(更新于2020年5月1日)

之前写过一次CC3200环境搭建的教程,但是由于是两年前了,当时使用的CCS还是8.0的版本,如今很多软件都已经更新,于是打算重新再更新一下搭建的过程。软件准备首先是查看官网最新发布的CC3200的SDK说明:传送门目前CC3200的SDK 已经更新到1.5.0版本,而Service Pack也更新到1.0.1.14-2.12.2.8,同时适配的TI-RTOS也使用了针对CC3200的版本...

2020-05-02 01:08:11 3067 4

原创 控制教程 —— 介绍篇:3.PID控制器设计

承接上一篇(控制教程 —— 介绍篇:2.系统分析)介绍完系统建模和基本的系统分析后,我们已经了解了被控对象的特性,这时,就需要用一个合理的控制器,让这个被控对象在该控制器下按照指定的给定来执行,最为广泛使用的那就是PID控制器了。在本教程中,我们将介绍一个简单而通用的反馈补偿结构,比例积分微分(PID)控制器,PID控制器之所以被广泛采用,是因为它非常容易理解并且非常有效,工程师不需要太理解控...

2020-04-30 15:09:26 18818 1

原创 控制教程 —— 介绍篇:2.系统分析

承接上一篇(控制教程 —— 介绍篇:1.建模)。一旦获得了系统的状态空间或传递函数形式的数学模型,我们便可以分析这些模型来预测系统在时域和频域中的动态响应。通常将控制系统设计为高稳定性,高响应速度,低稳态误差,以及减小振荡。也就是“稳准快”。在本节中,我们将展示如何从系统模型中确定这些动态属性。本教程中使用的主要MATLAB命令是:tf , ssdata , pole , eig , step...

2020-04-29 20:03:05 3761

原创 控制教程 —— 介绍篇:1.建模

介绍从这篇文章开始,即进入正式的关于控制教程的介绍,当然介绍框架主要还是来自于密歇根大学的教程网站来,中间也会新增我自己的理解和补充。正文我们所要考察的系统是能够用外力作用来有目的地影响其运动行为的系统。这种系统叫做被控系统,或被控对象,简称对象。通常控制系统设计过程的第一步是要建立其数学模型,这些模型可以从物理定律或实验数据中得出。本节中,将用状态空间和传递函数来表示动态系统,并以一些机械...

2020-04-29 00:09:03 3612

原创 控制教程 —— 写在前面

写在前面写这个系列的初衷主要是,最近在看一些控制类文章,发现好多基础知识点都记得比较模糊了,甚至好多都忘记了,可能年纪大了╮( ̄▽ ̄")╭,于是打算花点时间重新将知识点梳理一下,也是机缘巧合,本来想从一个倒立摆的控制入手时,无意中发现了一个非常好的链接,那就是密歇根大学的一个基于MATLAB/SIMULINK的关于控制的教程,仔细浏览后,发现文章深入浅出,逻辑严谨,非常适合于初学者,于是借这个平...

2020-04-27 13:34:46 717 2

原创 Simulink —— PMSM基础及FOC控制模型

题外终于要到我的老本行了,PMSM的FOC控制,这种算法将三相无刷电机在算法上等效成一个直流电机,通过坐标变换将定子磁场进行解耦,分解成D轴和Q轴两个方向,当将D轴与转子磁场定向时,那么Q轴方向的磁场即提供电机旋转的转矩,当能实时获得转子磁场方向时,可以实时将定子磁场一直定向在Q轴上,这样可以得到最优的转矩,从而提高响应。当然FOC只是基本思想,电机控制中还有非常多改进的算法以及处理方式。本文...

2020-04-24 16:44:34 15254 9

原创 Simulink —— 三相交流控制系统中的坐标变换

参考资料:Simulink - Mathematical Transforms在交流控制系统中:当三相平衡时,电压和电流分别幅值相等,相位互差120°的三相信号,为了方便进行数学推导及控制,提出了Clark,Park变换以及逆变换。而当三相不平衡时,电压和电流的三相信号会出现幅值不相等以及相位互差不为120°的情况,于是引出了正序,负序,零序的概念,即任意三相交流信号均可有正序,负序,零序组...

2020-04-24 00:31:06 11192 2

原创 Simulink —— RC Servo原理和控制模型

RC ServoRC Servo指的是现在使用非常广泛的舵机,它可以将给定信号与输出角度对应的一种伺服电机,内部一般使用的是直流电机+齿轮箱的组合。借助Simulink自带模型,进行了一些翻译,并搭建了一个简单的仿真模型。仿真模型可以从这里下载图片均是4K分辨率,看不清可以点击查看大图...

2020-04-23 16:15:54 2900 8

train_simscape.zip

该模型是火车系统采用simulink中的simscap工具箱的建模仿真,参数已经配置好,仿真结果与通过数学物理模型建立的完全一致。

2020-05-14

train_pid.zip

该模型是在原来的火车模型上加入了PID控制器设计的,与博文内容配套,博文有详细的建模和仿真过程,并详细介绍了如何在simulink中设计控制器

2020-05-14

火车系统的Simulink模型

采用simulink建立的火车系统模型,与博文中的教程配套,描述的是火车头带动车厢的系统,可自行建立,也可以直接下载该模型。

2020-05-12

pmsm and foc

这里面的模型与博文对应,包含PMSM模型,坐标变换的参考对齐方法,以及电压开环控制,电流闭环控制,转速电流双闭环控制。

2020-04-24

RC_Servo_Control.zip

这是基于Simulink自带的RC Servo基础上搭建的一个简单的控制模型,输入就是脉宽,而输出通过传感器检测选择角度和选择角速度,加入了负载转矩,也可以仿真在带载情况下的转速,角度波形。

2020-04-23

直流电机模型.zip

该模型包含,SIMULINK自带的控制模型,以及反电动势,单电压闭环控制模型,和电压闭环电流闭环双闭环控制模型,和我的博文匹配

2020-04-11

my_ee_bldc_speed_control.7z

这个是一个simulink模型,采用六步方波控制BLDC的转速,是MATLAB自带的示例,添加了一些电压,转矩信号的波形,便于对比观察

2020-02-24

q_axis_angle_sensor.7z

这个是一个simulink模型,提取自matlab自带示例ee_bldc_speed_control,关于角度检测和处理的部分,自己添加了一些输入,用来观察角度检测的扇区和信号序列的处理

2020-02-24

Part_5_Alternative_Implementation_of_PWM_Control.7z

这个是一个simulink模型,采用六步方波控制BLDC,已经搭建好六步控制逻辑,采用数字PWM控制其占空比,实现正负电源切换,简单的调节PID参数即可跟踪给定转速。

2020-02-24

Part_4_Model_PWM_Controlled_Buck_Converters.7z

这个是一个simulink模型,采用六步方波控制BLDC,已经搭建好六步控制逻辑,将传统的电源替换成了一个BUCK电源,简单的调节PID参数即可跟踪给定转速。

2020-02-24

Part_3_Modeling_Commutation_Logic1.7z

这个是一个simulink模型,采用六步方波控制BLDC,已经搭建好六步控制逻辑,将传统的电源替换成了可调的电源,简单的调节PID参数即可跟踪给定转速。

2020-02-24

Part_3_Modeling_Commutation_Logic.7z

这个是一个simulink模型,采用六步方波控制BLDC,已经搭建好六步控制逻辑,简单的调节PID参数即可跟踪给定转速。

2020-02-24

Part_2_Modeling_a_Three_Phase_Inverter.7z

这个是一个simulink模型,搭建了6个MOS和相应的信号序列,给定不同的指令,来带动BLDC。不同的序列可使BLDC锁定在不同的角度,基本可以用来做初始角度对齐等计算。

2020-02-24

Part_1_Simulate_Back_EMF_Voltage_of_a_BLDC_Motor.7z

是一个simulink仿真模型,仿真BLDC的梯形反电动势波形,使用一个角速度源带动BLDC,然后采集开路相电压,仿真结果来看,反电动势的电压和趋势均有相应的参数可以调节

2020-02-24

Sheffield的遗传算法工具箱.7z

谢菲尔德遗传算法工具箱是英国谢菲尔德大学开发的遗传算法工具箱。该工具箱是用MATLAB高级语言编写的,对问题使用M文件编写,可以看见算法的源代码,与此匹配的是先进的MATLAB数据分析、可视化工具、特殊目的应用领域工具箱和展现给使用者具有研究遗传算法可能性的一致环境。该工具箱为遗传算法研究者和初次实验遗传算法的用户提供了广泛多样的实例函数

2020-02-07

树莓派系统安装工具.7z

压缩包中是树莓派系统安装所需要的工具——SDCardFormatter,win32diskimager,putty

2020-01-24

移植MPU9250_DMP原代码到STM32F429

最近在使用MPU9250来学习姿态解算,查询了非常多的网上关于MPU6050和MPU9250的资料,发现内置的DMP可以计算出姿态角,可原代码是用在MSP430和STM407上的,手上有块F429的野火板子,移植过程越到非常多的巨坑,现在想记录下来给各位初学者提供一些便利,这里是源代码,包含教程PPT

2019-03-13

matlab 的双馈控制模型

matlab 的双馈控制模型,里面包含了3/2变换,和Pi调节器,限幅等等

2012-12-11

空空如也

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

TA关注的人

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