0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何在微控制器上用相对较少的引脚驱动多个LED

454398 来源:wv 2019-09-03 11:25 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

第1步:两个LED

如何在微控制器上用相对较少的引脚驱动多个LED

charlieplexing背后的基本思想最好只用两个引脚和两个LED来说明。随意使用此SIMULATION - 切换开关,看看会发生什么(模拟中使用的开关用于将中间引脚连接到+或 - )。

如果你已经完成了模拟游戏,或者你只是想要一种不那么互动的学习方式,请继续阅读。

与标准灯泡不同,LED仅在一个方向上传导电流。这意味着当您“正确”连接时LED将发光,并在连接“错误”时充当开路。如果以不同方向并联连接两个LED,则无论极性如何,其中一个LED都会发光。要选择哪个LED发光,您可以调制哪个引脚为+和哪个 - (图像2 )。如果您将booth设置为+或 - ,则当前将无法流动,关闭两个LED(图像3 )。

您可能已经注意到我只使用了一个电阻用于两个LED。这可以做到,因为无论极性如何,电都“看到”只有一个LED。要计算电阻值,请使用标准公式或使用此在线计算器。请记住,Arduino的最大电流输出为40mA(推荐20mA)。

步骤2:三个LED

用两个引脚进行查询是没用的。它消耗两个引脚来驱动两个LED,并取消了同时打开它们的选项。

幸运的是,当你添加第三个引脚时,它会好得多。使用三个引脚进行charlieplexing可以控制6个LED。如果您打算使用SIMULATION进行此设置,请在阅读之前进行。

您已经看到,只要您翻转一个开关,两个LED就会亮起。无论你做什么,都没有两个LED点亮。这是因为+和 - 端子之间总是有两个LED(图像2 )。

此模拟中显示了此问题的解决方案。您将看到唯一的区别是我添加了三个断开终端的交换机。我再次建议您在阅读之前先完成模拟。

新增加的开关的唯一目的是防止不需要的电流流动。现在你可以只打开你想要的LED,但突然间我们看到鬼影。在运行于5V的arduino上,当使用红色或绿色LED时,重影很明显。这是因为这两者上的电压降小于2.5V,因此一些小电流流过+和 - (图像3 )之间的两个LED。如果你要在一个运行在3.3伏特上的微控制器上实现charlieplexing,就不会出现重影。

现在关于电阻器的说法:Charlieplexing通常使用与用于驱动LED的引脚一样多的电阻器来进行。每个电阻的值是以“经典”方式驱动单个LED所需电阻的一半。

最后解决房间里的大象:我在原理图中使用了三个符号:+, - 和x。他们如何翻译成arduino? +和 - 很简单。将Arduino的引脚配置为OUTPUT并写入HIGH(+)或LOW( - )。断开连接(x)状态有点不太直观。如果将引脚配置为INPUT,它将进入所谓的高阻抗模式(高阻态),这意味着电流不能流入或流出该引脚,有点像断开的引脚。更多关于我谈论Arduino实现的步骤。

步骤3:N个LED

直到现在可以很容易地绘制原理图而不需要任何交叉线。对于任何超过三个引脚,这是不可能的。

您可以尝试弄清楚上图中的电路如何工作,或者您可以尝试此模拟。请注意,我省略了开关和Arduino。

您将看到原理图中的LED(图像1 )排列在NxN网格中。省略了灰色的LED,因为它们将与阴极和阳极连接到相同的引脚。第一行中所有LED的阳极(+)连接到pin1,因此第一行中的所有阴极都连接。其他二极管也是如此。

如果你想知道你可以用这种LED安排做什么,不要害怕。这只是一个原理图,仅用于简单布线。 PCB布局可能非常不同。在这个模拟中,我采用了与之前完全相同的项目并重新排列LED以形成一个圆圈(我还更改了代码,以便LED复制电位计的旋转)。查询复用的另一个常见用途是LED立方体 - 6个引脚允许您驱动30个LED,足以容纳3x3x3立方体,而9个引脚足以容纳4x4x4版本!

步骤4:代码

在向您展示如何为charlieplexing应用程序制作电路之前,我想谈谈这样的Arduino代码项目。我将通过4个引脚进行示例,与上一步中的SIMULATION中使用的代码相同。随意玩它,看看会发生什么。

如前所述,所有引脚都需要设置为三种可能状态之一:HIGH(+),LOW( - )和HIGH-Z(未连接)。前两个很容易。将引脚配置为OUTPUT并使用digitalWrite(引脚,状态)在HIGH和LOW之间进行选择。 HIGH-Z(高阻抗)稍微不那么直观,但不再困难。无论何时将引脚配置为输入,它都会进入HIGH-Z模式,这意味着引脚无法吸收或提供任何电流。

最好通过定义哪个Arduino引脚来启动代码对应哪个charlieplexing pin。默认情况下,所有引脚都配置为数字输入引脚,这意味着它们处于HIGH-Z模式。

接下来是配置引脚以打开所选LED的功能 - charlieWrite(led)。它首先将所有引脚设置为HIGH-Z。然后是SWITCH语句,将正确的引脚配置为正确的电平输出。将引脚配置为数字输出时,默认设置为LOW,这就是为什么我只将电平值写入要设置为HIGH的引脚。

最后要做的是填充SETUP()和LOOP()函数。如果您不需要任何其他功能,SETUP()可以保留为空,而LOOP()的内容取决于所需的操作模式。

在第一个DEMO中,代码设置为通过所有带有for语句的LED并按顺序打开它们。

第二个DEMO更先进一点。它经历了所有LED和伪造效应,其中任意数量的LED同时打开。 LOOP()首先测量电位计值。通过FOR循环,将该测量值与对应于每个LED的阈值进行比较。如果值高于阈值,则LED亮起,否则忽略。无论发生什么,都会调用相同的delay()。这可确保LED亮度不会随着点亮的LED数量而变化。请注意,比较“while(micros() - time 《1000){}”将是一个更好的方法,但我不会折磨模拟器会好得多。附加的Arduino代码写得正确。

步骤5:EAGLE CAD

制作电路。最后。

您可以始终遵循步骤3中的原理图,并将所有LED和电线放在首选电路CAD程序的原理图上。这就是我做的方式,直到我想制作一个240 LED显示屏(16针)。要放置240个LED,重命名它们,连接它们。..。..让我们说它会耗费时间。..。..

幸运的是我去了PCB CAD程序,Eagle CAD(免费最多2个)图层和80cm2区域以XML格式保存文件。这意味着,我可以使用python几乎自动生成我想要的文件!

我的python代码生成一个LED网格以及所有需要的布线。您需要将输出 .sch 文件放在项目文件夹中,并按照您认为合适的方式完成原理图。您需要至少添加电阻和连接端子。

从那时起它非常直接。转到电路板编辑器,放置所有组件并激活自动路由器:)

Python脚本和支持文件必须在同一个文件夹中才能工作。您将需要python版本3.x来运行它。该脚本生成一个“schematic.sch”文件,您可以将其放入您的eagle项目文件夹中。您可以通过打开python脚本并更改“package”索引来更改要使用的LED类型(有关详细信息,请参阅代码注释,默认为5mm LED)。

我还包括两个EAGLE CAD一个简单的charlieplexed时钟的文件 - 与我用于解释如何为一个charlieplexing工作编程Arduino相同。请随意查看它们。

第6步:时钟

我为12个LED时钟做了模拟,我为12个LED时钟制作了原理图,我为12个LED时钟制作了一个PCB文件,然后我制作了驱动12个LED时钟的代码。如果我没有完全循环并制作一个12 LED时钟,那将是一种耻辱,现在不会这样:)

我制作PCB有一些问题,因为我非常想要用激光切割机制作它。最后,我不得不放弃那个梦想,回到可信赖的照片转移。如果您知道使用CO2激光器制作PCB的方法,请在评论中告诉我,因为我现在还不想放弃这个梦想。

除此之外,我做了PCB尽可能容易制造。蚀刻铜,钻孔,修补板的形状,放在表盘上,最后焊接在LED中(如果你错过极性,它仍然会“工作”,不是你想要的),电阻和跳线。请注意,在选择颜色时我选择了红色和绿色LED,以避免重影效果。

步骤7:备忘单

如前言所述,Charlieplexing允许您仅使用微控制器上的N个引脚驱动N *(N-1)个LED。请记住,您总是可以使用更少的。

同时几乎点亮的LED数量受微控制器的限制。您需要每秒至少刷新所有LED 60次。如果您的微控制器没有足够的处理能力,那么在更高的LED数量下您将无法实现这一点。如果你在低级别编程,就很难在Arduino上实现240个LED(16个引脚)。

明智地选择电阻。您将找到LED的最大额定电流。如果您希望它们持续点亮(不是虚拟),请选择电阻将电流限制为该值。如果您同时有多个点亮,您可以选择电阻将电流限制在最高40mA(Arduino的限制)。确保刷新周期内的平均电流不会超过LED的额定值(例如:12个LED,Imax = 2mA | Ioverclock/12 《2mA ==》 Ioverclock = 24mA)

不要忘记电阻应该具有驱动单个LED的一半电阻,因为电流流过两个电阻。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 微控制器
    +关注

    关注

    48

    文章

    8260

    浏览量

    162649
  • led
    led
    +关注

    关注

    243

    文章

    24452

    浏览量

    687831
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    在筋膜枪应用的MCU微控制器方案

    筋膜枪是现在很多人必不可少的放松肌肉的健身工具,而实现筋膜枪的高效、稳定、安全运行,则需要内部搭载的MCU微控制器来负责控制电机运转、保护电路安全并实现各种智能功能。英尚微电子的筋膜枪方案采用CH32V007 MCU微控制器为核
    的头像 发表于 12-09 16:39 394次阅读
    在筋膜枪<b class='flag-5'>上</b>应用的MCU<b class='flag-5'>微控制器</b>方案

    选择微控制器MCU几个步骤

    到数字输入、PWM等。 这两种类型接口将决定微控制器需要提供的引脚数量。 步骤2:检查软件架构 软件架构和要求将显著影响微控制器的选择。处理负担是轻是重将决定是使用80MHz的DSP还是8MHz
    发表于 11-26 07:09

    FT62FC6X 8位微控制器型号命名规则,引脚介绍及PORT端口结构框图

    FT62FC6X系列的型号命名规则、引脚介绍以及PORT端口结构框图,帮助读者更好地理解和应用这一系列微控制器。   FT62FC6X型号命名规则 FT62FC6X系列微控制器的型号命名遵循了一套严格的规则,这些规则不仅反映了芯
    的头像 发表于 09-18 16:22 664次阅读
    FT62FC6X 8位<b class='flag-5'>微控制器</b>型号命名规则,<b class='flag-5'>引脚</b>介绍及PORT端口结构框图

    如何使用GPIO模拟ARGB2 LED定时序列,并在M258系列微控制器(MCU)实现彩虹波ARGB2 LED效果?

    使用GPIO模拟ARGB2 LED定时序列,并在M258系列微控制器(MCU)实现彩虹波ARGB2 LED效果
    发表于 08-20 06:55

    何在 M55M1 系列微控制器以低功耗模式使用运动检测功能?

    何在 M55M1 系列微控制器以低功耗模式使用运动检测功能。根据物体检测结果,系统将动态启用或禁用运动检测块,以实现最佳性能和能效。
    发表于 08-19 06:56

    RGB LED 时尚照明控制器 skyworksinc

    电子发烧友网为你提供()RGB LED 时尚照明控制器相关产品参数、数据手册,更有RGB LED 时尚照明控制器引脚图、接线图、封装手册、
    发表于 07-28 18:34
    RGB <b class='flag-5'>LED</b> 时尚照明<b class='flag-5'>控制器</b> skyworksinc

    何在MCXN947微控制器配置安全启动和生命周期

    本文档旨在介绍如何在MCXN947微控制器配置安全启动和生命周期,以确保产品在量产阶段的安全性,防止代码被窃取和篡改,并且能够安全地升级更新固件。通过本应用笔记,开发者可以更好地理解和实施安全启动和固件更新的最佳实践。
    的头像 发表于 06-26 09:49 2116次阅读
    如<b class='flag-5'>何在</b>MCXN947<b class='flag-5'>微控制器</b><b class='flag-5'>上</b>配置安全启动和生命周期

    Analog Devices Inc. LT8355-1双LED控制器带可扩展调光功能数据手册

    Analog Devices Inc. LT8355-1 双LED控制器是一款双通道恒定频率、 恒流/恒压 (CC/CV) 升压功率级控制器,设计用于驱动两串高电流
    的头像 发表于 06-19 14:51 588次阅读
    Analog Devices Inc. LT8355-1双<b class='flag-5'>LED</b><b class='flag-5'>控制器</b>带可扩展调光功能数据手册

    Analog Devices Inc. LT8356-1 DC-DC LED控制器数据手册

    Analog Devices Inc. LT8356-1直流-直流LED控制器设计用于驱动大电流LED。在宽电源和输出电压下,其固定频率、电流模式架构实现了稳定工作状态。电压反馈
    的头像 发表于 06-05 09:58 722次阅读
    Analog Devices Inc. LT8356-1 DC-DC <b class='flag-5'>LED</b><b class='flag-5'>控制器</b>数据手册

    知名厂商微控制器(MCU)芯片手册分享

    微控制器(MCU)又称单片机,是一种高度集成的微型计算机系统,它将中央处理(CPU)、存储(RAM/ROM/Flash)、输入/输出接口(I/O)及多种外设集成在一块芯片,专门用
    的头像 发表于 05-15 18:25 2382次阅读
    知名厂商<b class='flag-5'>微控制器</b>(MCU)芯片手册分享

    家用电器开发中微控制器的选型要点

    ROHM提供融入自有低功耗技术优势的丰富的低功耗微控制器产品。通过供应微控制器产品,为从事电池供电的小型设备、家用电器、工业设备、社会基础设施、车载设备等各种系统开发的微控制器用户提供支持。本文以
    的头像 发表于 04-24 10:26 952次阅读
    家用电器开发中<b class='flag-5'>微控制器</b>的选型要点

    LED7708 16 通道 x 85 mA LED驱动器,配有增压控制器及4线串行接口数据手册

    LED7708 经过专门设计,可从单个低压轨开始为多个 LED 供电。它集成了一个升压控制器、16 个电流发生和一个 4 线串行接口。升压
    的头像 发表于 04-14 17:10 964次阅读
    <b class='flag-5'>LED</b>7708 16 通道 x 85 mA <b class='flag-5'>LED</b><b class='flag-5'>驱动器</b>,配有增压<b class='flag-5'>控制器</b>及4线串行接口数据手册

    LED6001 PWM调光单通道LED驱动器,具有集成增压控制器数据手册

    LED6001 器件是一款 LED 驱动器,结合了一个升压控制器和一个高端电流感应电路,专为驱动一串高亮度
    的头像 发表于 04-09 17:37 933次阅读
    <b class='flag-5'>LED</b>6001 PWM调光单通道<b class='flag-5'>LED</b><b class='flag-5'>驱动器</b>,具有集成增压<b class='flag-5'>控制器</b>数据手册

    ALED6001 带集成式升压控制器的车规级PWM可调光单通道LED驱动器数据手册

    降压-升压。LED亮度的PWM调光通过与LED灯带串联的外部MOSFET来实现,并由专用引脚直接驱动。管理LED电流设置的
    的头像 发表于 04-08 18:00 969次阅读
    ALED6001 带集成式升压<b class='flag-5'>控制器</b>的车规级PWM可调光单通道<b class='flag-5'>LED</b><b class='flag-5'>驱动器</b>数据手册

    STM32H743ZIT6微控制器复位后引脚状态是怎么样的?

    STM32H743ZIT6微控制器复位后引脚状态是怎么样的,我看参考手册写的是大部分引脚复位后是浮空状态,其他引脚的状态呢?
    发表于 03-10 07:16