全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 电源和新能源 >

用一个Hercules LaunchPad开发套件控制GaN功率级

时间:2023-04-14 10:06

人气:

作者:admin

标签: GaN  微控制器  集成电路 

导读:与LMG5200评估模块 (EVM) 一同提供的还有一块驱动GaN集成电路 (IC) 的电路。你需要将其断开,并且连接你的LaunchPad开发套件。...

准备评估套件,并将其连接至LaunchPad开发套件

与LMG5200评估模块 (EVM) 一同提供的还有一块驱动GaN集成电路 (IC) 的电路。你需要将其断开,并且连接你的LaunchPad开发套件。

pYYBAGQ4tRKAd48GAACnMh_1MlE465.png

图1:移除电阻器R6和R7

断开板上驱动电路比较容易。你只需要从印刷电路板(PCB,请见图1和图2)上移除两个0Ω电阻器,R6和R7。最简便的方法就是使用一个热风枪、

poYBAGQ4tRKAH4DqAAMPaKI8P08044.png

图2:电阻器R6和R7在PCB上的位置

现在,你有了两个测试点,TP9和TP10,将LaunchPad的脉宽调制 (PWM) 输出连接至LMG5200。在这个情况下,信号与测试点之间没有对应关系。一定不要忘了接地(请见图3)。

pYYBAGQ4tROAKMN6AABI-vM6hhI200.png

图3:PWM信号的位置

按照用户指南,连接电源和偏置电压。将灯连接至输出。如果你按照评估套件用户指南中的顺序将这个设计加电的话(首先是偏置电压,然后是Hercules信号,之后是电源),这个装置将被驱动至其最大功率的10%。在这个功率点上,你可以通过改变HALCoGen中的占空比来更改输出,并重新生成这个项目。这么做可不太方便,那么就让我们来研究一个用户友好的输入机制。

制作旋转编码器

正交编码器随处可见。它们看起来与电位器很相似,不过你可以一直不停地旋转它们。也许你的车载音频系统,或是你的示波器中就有一个。如果你手边就有一个坏了的鼠标,那么这个鼠标中的滚轮就很有可能是一个旋转编码器。

(如果不凑巧的是,你手头那个坏了的鼠标是光电鼠标的话,你就无法将其用于今天的练习了。再找找,或者订购一个与EC101102X2E-VAX相类似的元件。)你使用的旋转编码器类型或者这个旋转编码器所具有的步距数量都不会对这个练习产生太大影响。它们产生的都是格雷码 (Gray code)。

要使这个滚轮变成一个稳定、去抖动输入器件,你还需要其它四个组件:2个10K电阻器和2个0.5µF电容器。如果你在实验室找不到电阻值和电容值完全一样的元件的话,也不用灰心丧气,它们不是那么重要。

搭建旋转编码器电路,并将其连接至LaunchPad开发套件

图4中显示的是如何搭建这个电路。

poYBAGQ4tRSAalRQAAGtbdpfVTc449.png

图4:编码器电路

这2个电阻器是上拉电阻器。它们在旋转编码器开关打开时保持A和B处于高电平。当其中任何一个开关关闭时,相应的输出被开关拉至接地。这些电容器使信号变得平滑,并且过滤掉所有抖动。

你将使用具有滚轮的Hercules eQEP外设(正交编码器)。EQEP模块No.2附近的引脚已经被你用于ePWM输出。所以,如表1和图5中所示,将你的滚轮连接至这个引脚。

pYYBAGQ4tRWAdkAdAAA29roDZ0I428.png

表1:旋转编码器连接

poYBAGQ4tReAXbEkAAC9J8IaeF8782.png

图5:编码器信号的位置

当你接通编码器时,你可以访问HALCoGen,并修改你的固件。

将滚轮集成到固件中

此时所有硬件都已连接。不过,你仍然需要将滚轮功能嵌入其中。在Hercules应用领域内,你必须完成两件事:在HALCoGen中配置eQEP模块,并且在Code Composer Studio™ 软件内修改你的程序。

将编码器功能集成在固件之内

启用eQEP驱动器,并且配置eQEP模块No.2(图6和图7)。HALCoGen设置看起来似乎很神秘,不过我在element14博文中对它们进行了解释说明。

pYYBAGQ4tRiAWuy5AABqDpkPsgw222.png

图6:启用编码器模块2

poYBAGQ4tRmAYoeDAAFQ3korBug219.png

图7:配置编码器2

在Code Composer Studio软件中将驱动器初始化。在你的状态机中,你将定期轮询滚轮的值,并根据其变化做出相应操作。根据旋转编码器的状态,减少或增加PWM信号的占空比。参考rotary.c,pwm.c和HL_sys_main.c文件,查看这些功能是如何实现的。

While(1)
{
uRotary = getRotaryPosition();
if (uRotary != uRotaryLastVal) {
uRotaryLastVal = uRotary;
setPwmDutyCycle(uRotary);
}
}

针对滚轮的代码也不难。在这个设计中,你可不想让编码器超过最大值,或低于最小值。你可以查看rotary.c,看看我是如何进行编码的。这些代码是有效的,不过我对于这个设计在解码处理方面的表现还不是很满意。如果你有任何好的意见和建议,一定要告诉我,我们来一起搭建一个更好的设计。

审核编辑:郭婷

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信