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