艾琳·伯恩,MathWorks
本视频向您展示了使用Simulink设计信号处理系统的示例万博1manbetx®.
从一个空白的Simulink模型开始,设计一个信号处理万博1manbetx算法来预测天气是晴天还是阴天,以优化太阳能电网产生的电力。该视频引导您分析传感器信号,设计滤波器,最后生成硬件部署代码。
视频结束时,您将学习Simulink的基础知识,以及如何使用基于模型的设计来建模、模拟、测试和实现真实世界的万博1manbetx信号处理系统。示例中使用的模型文件可以在下面的链接中找到。
我们生活在一个传感器的世界里。它们在工厂的机器人里,在我们的汽车里,在我们的手腕上,甚至在我们的冰箱里,确保我们的食物保持新鲜。这些传感器产生信号。
在本视频中,我们将使用Simulink处理来自传万博1manbetx感器的信号。我们将进行频谱分析以探索信号。基于此,我们将设计和构建数字滤波器,作为信号处理算法的一部分。我们将评估算法的性能,一旦准备好,将我们的模型转换为C代码,可以嵌入到实时硬件中。让我们开始吧…
在马萨诸塞州纳蒂克市的MathWorks总部,有太阳能电池板可以发电。我们将每隔15分钟测量一次阵列产生的功率。这是我们的信号。
当然,功率取决于日照量,日照量取决于一天中的时间。。。还有天气。
预测和管理变化的生产和需求是可再生能源发电的重要组成部分。为了使产生的电力平稳,在阳光明媚的日子里,我们可以把一些电力储存在电池里。然后在阴天,我们用它来补充较低的发电量。
让我们设计一个系统,可以使用Simulink中的信号处理技术预测天气是晴天还是阴天。万博1manbetx
通过单击MATLAB万博1manbetx toolstrip上的Simulink按钮启动Simulink。这将打开起始页,您可以在其中创建新模型、查找示例,甚至查找基本培训。
我们从头开始创建模型,所以我们将选择空白模型并将其保存为sunnyvscloudy。
万博1manbetxSimulink模型由块和信号线组成。打开库浏览器查看所有可用块。
我们将首先可视化两个电源信号——一个来自晴天,另一个来自阴天。
为了查看信号,让我们将两个输入端口(简称inport)拖到模型中。然后添加一个范围块。
让我们将两个输入块标记为“晴天”和“阴天”,并将范围块标记为“时域”。
我们可以通过单击和拖动将块与信号线连接在一起。要标记信号线,请双击并键入名称。
现在我们需要数据。在MATLAB中,我们有两个向量,sunnyDay和cloudyDay,代表六月中两个特定日子的功率测量。相应的时间戳以今天为单位。
我们还有样本频率,以每天样本数为单位,以变量Fs为单位。每15分钟抽样一次意味着我们每天能得到96个样本。
我们必须设置两个输入端口的采样时间,因此双击每个输入端口以调整其块参数。在“信号属性”选项卡下,将采样时间设置为采样频率的倒数。
为了将数据导入Simulink,我们可以转到模万博1manbetx型设置窗口,然后是数据导入/导出窗格,并添加时间和两个功率信号作为输入。我们还应该将总模拟时间设置为1天。
现在,我们可以通过单击工具条中的run按钮来运行模型。
让我们双击范围块以查看信号。
让我们用线连接数据点。
平滑的黄线是晴天。如你所料,蓝线表示多云天气产生的能量更少,而且当云层经过太阳能电池板时,也会有许多短期的变化。
那么,我们如何利用这些特性来决定是晴天还是阴天呢?
我们也来看看频域中的这些信号。我们将使用频谱分析,这有助于我们测量每个信号的频率内容。我们首先从DSP系统工具箱中添加一个频谱分析仪块,然后将两个信号连接到它。
要分支信号线,可以在将信号线拖动到块时右键单击。
我们有短信号,所以我们需要更改频谱分析仪模块中的一些设置,以便正确地看到它们。
这一次,我们可以在Spectrum Analyzer中通过按顶部的绿色按钮运行我们的模型。让我们打开图例看看哪一天是哪一天。
那么,我们在看什么?
x轴是频率值。y轴向我们显示在给定频率下信号的功率。虽然默认的时间单位是秒,但我们实际上是以天为单位测量时间。因此,x轴是每天的周期,而不是每秒的周期(或Hz)。
我们看到这两天的低频含量大致相同,但多云的那一天有更多的高频含量。还记得那些短暂的变化吗?这就是它们在频域中的表现。
所以也许我们可以通过比较高频率和某个阈值的功率来区分晴天和阴天。
然而,太阳能板在夏季产生的电力更多,而在冬季产生的电力更少,这意味着全年的阈值必须改变。
好吧,我们希望一年四季都有一个恒定的阈值。如果我们通过低频的功率来标准化高频功率,我们可以使用一个固定的阈值。因此,让我们尝试计算顶部75%频率的总功率与底部25%频率的总功率的比率。
那么,我们如何区分低频和高频呢?通过构建数字滤波器。我们需要一个用于低频内容的低通滤波器和一个用于高频内容的高通滤波器。
为了构建这两个过滤器,我们首先将模型剥离回单个输入端口和作用域块。。。。并从DSP系统工具箱中拖入滤波器实现向导块。
双击该块以打开过滤器设计器应用程序。如果你在MATLAB中设计过过滤器,你可能以前使用过这个应用程序。让我们点击“设计过滤器”图标开始设计低通滤波器。
因为我们每15分钟只采集一次样本,所以我们需要一个能够处理少量样本的过滤器。我们将使用切比雪夫1型IIR滤波器,并将滤波器顺序设置为4。
然后我们必须指定一个截止频率。记住,我们想让较低的25%的频率通过。所以我们将选择标准化频率并设置wpass为0.25。我们将使通带纹波小于0.05 dB。
最后,按下底部的设计过滤器按钮。我们看到新的反应是我们想要的。
我们可以通过单击Group delay Response按钮来检查过滤器引入的延迟。对于小于0.25的频率,延迟约为3个采样。我们以后再记。
现在我们已经完成了过滤器的设计,让我们通过单击“实现模型”图标将其添加到Simulink模型中。我们将该块称为“低通滤波器”万博1manbetx,并选择“使用基本元素构建模型”选项。这样我们就可以看到用于制作滤波器的基本Simulink块,如延迟、乘法和加法块。
当我们点击“实现模型”按钮时。。。
…在我们的模型中创建了一个新的子系统。让我们双击这个来查看内部。
可以肯定的是,滤波器只是单位延迟、增益和添加块,这是现代DSP芯片和fpga优化实现的。
现在看高频内容。我们可以重复同样的过程来设计和实现高通滤波器。在这种情况下,高通滤波器将输入信号延迟1个采样。
好的,让我们在功率信号上测试我们的新滤波器。
我们添加了三条并行路径:一条用于原始功率信号,一条用于低通滤波版本,另一条用于高通滤波版本。我们想比较一下。
但是记住低通滤波器引入了3个样本的延迟,高通滤波器引入了1个样本的延迟。所以我们需要添加一些延迟块来确保三个信号是对齐的。双击模型,输入“delay”,对3个样本的原始信号快速添加一个延迟块,对2个样本的高通信号快速添加一个延迟块。
我们将对模型进行修改,使其适用于我们拥有的更长的2年半数据集,该数据集存储在时间戳为t的可变电源中。
让我们在望远镜上放大六天。
黄线是原始电源信号。蓝线是低通信号,代表总体平滑趋势。红线是高通信号,它捕捉到云层造成的变化。在多云时期,这些变化可能很大。
现在,我们已经分离出低频和高频信号,我们准备构建我们的Sunny测试。
我们需要积累足够的时间,让我们的过滤器给出合理的结果,但我们不想等太久才得到答案。所以我们将使用3小时的窗口,也就是12个尺寸!
为了在一个时间窗口内存储滤波器输出,我们将使用DSP系统工具箱中的缓冲块。
双击缓冲区,我们可以将缓冲区大小设置为12,以处理三个小时的窗口。每个过滤器路径上都需要一个缓冲区。
现在,我们将使用一些基本的数学运算块来计算sunny测试,比如绝对值、元素的和和块的划分。
让我们添加一个块来比较比率和阈值。使用Sim万博1manbetxulink,您可以很容易地进行实验,以找到这个阈值的合适值。22可以很好地工作,但是可以随意使用这个值,看看它如何改变结果。
比较的输出为0表示非sunny, 1表示sunny。让我们将其缩放到与最大功率匹配,这样它就能在图上很好地显示出来。
我们应该删除Scope块上的额外输入端口。
在我们运行之前,请注意,这些缓冲区为信号增加了一些延迟。为了与原始信号保持一致,我们需要将延迟增加12。
让我们运行一下,看看算法的效果如何。如果我们放大之前的同一天,它看起来工作得很好。
但如果我们看另一组六天,就会发现我们的方法有问题。有时它会说半夜里阳光明媚!
为了解决这个问题,让我们通过添加日光检测器来修改sunny测试。我们将简单地将低频功率与另一个阈值进行比较,这让我们知道太阳是否真的升起了。我们可以用AND块组合这两个条件。
重新运行模型并检查那些天。。。我们发现我们已经解决了错误检测问题。
现在我们有了一个可行的算法,我们想将它部署到嵌入式系统中。使用Embedded Coder,我们可以部署到Arduino, Raspberry Pi, Zynq和许多其他。
让我们将我们的模型部署到Arduino Uno板上。
我们将打开模型设置窗口并选择硬件板。然后,我们用输出端口替换用于测试的Scope块。
现在让我们生成代码。这将采用我们的Simulink模型并生成编译模型以进行部署所万博1manbetx需的所有C文件。您还可以为其他嵌入式系统生成通用C代码。
或者…部署到FPGA的VHDL或Verilog代码。
一旦我们有了生成的代码,我们就把它移植到太阳能阵列的嵌入式硬件上。
看看我们用Simulink做了什么!我们现在有稳定的可再生能源来万博1manbetx源。
您已经了解了如何从空白画布过渡到在嵌入式系统上运行的信号处理应用程序。您也可以尝试一下。这些文件可供下载。
现在您已经对如何使用Simulink有了一些感觉,是时候学习它了。万博1manbetx学习Simulink最好的方法就是使用它。万博1manbetx因此,启动Simulin万博1manbetxk OnRamp,它将教你基本知识。它是免费的,只需要几个小时。
欢迎来到Simulin万博1manbetxk!
您还可以从以下列表中选择网站:
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家/地区网站未针对您所在地的访问进行优化。