TI教室 >
应用与设计 >
工业应用 >
工厂自动化与控制系统 >
Automated Machinery >
TI-RSLK 模块 8 - 连接输入和输出 > 讲座视频第二部分 - 连接输入和输出 - LED
- 本课程为精品课,您可以登录eeworld继续观看:
- 讲座视频第二部分 - 连接输入和输出 - LED
- 登录
- 课程目录
- 相关资源
- 课程笔记
大家好,我是 Jon Valvano。
在本次讲座中,让我们讨论一下发光二极管。
我们将从电压、电流和功率等
基本原理开始。
我们将向您展示如何使用电路将 LED 连接到
LaunchPad。
然后,一旦我们将它连接好,
我们将编写一组函数来使用 LED,
并将这组函数嵌入到软件
驱动程序中 --
驱动程序就是一系列函数的集合。
最后,我们将在本次课程中讨论
LED 对于解决机器人难题而言是一项多么重要的功能。
好,让我们开始吧。
让我们从电阻器这样简单的东西开始,
怎么样?
那么,如果这是一个 1 千欧的电阻器 --
我将执行一个示例 --
如果我在该电阻上施加 2V的电压,我们
知道将有电流流过。
欧姆定律告诉我们,
在电压电阻确定的情况下,就能计算出电流。
那么,假设连接的电压为 2V,
我可以看到它将生成 2mA的电流,
该电流的方向为从电压正极流向负极。
在这一点上,电阻是线性的 --
欧姆定律。
但 LED 不是电阻,对吧?
它是二极管。
因此它具有两种属性,我们马上
就会看到。
首先,它是有极性的。
换句话说,阳极是正极侧,阴极
是负极侧。
因此,如果我在它两端施加2V的电压,将会产生电流。
但是,如果我按照另一个方向施加 2 伏的电压 --
以相反的方向-- 将不会产生
电流,因为它处在曲线这个地方。
因此,当我增加二极管上的电压时,
它最终会达到阈值,然后开始增加。
那么 LED 的第二个方面
是它是指数性的。
该关系是指数性的。
因此,它不仅是极化的,而且是非线性的。
现在,我们要做的是
控制LED的输入功率。
功率是电压乘以电流。
这将设置它的亮度。
例如,如果我对该点感兴趣 --
这里是一组真实 LED 的
电压/电流关系。
我对这个红色的很感兴趣。
我可以看到我在这里有一个运行点,它的
电流为 1mA --
电压为 1.6V。
如果我可以达到该点,您可以
看到我将得到 1.6毫瓦的电功率。
该电功率足以使该 LED 开启。
再说一次,亮度与功率相关。
关于连接LED,我必须知道的另一件事是
由于 LED 是极化的,因此我必须确定
哪一侧是阴极以及哪一侧是阳极。
阳极是正极侧,
它是两根引脚中较长的一端
因此大电压连接到较长的
引脚。
让我们接着连接这个 1.61 毫安的 LED。
这就是我们在这里要做的事情。
但是,正如您看到的,由于是非线性的,该二极管
上的 3 伏电压实际上会毁坏它。
因此我们需要设置该 LED 的
电压和电流,以便它能够
正常工作。
我们将通过放置一个与该 LED 串联的电阻器
来保护它。
现在,它已经连接到微控制器,
因此软件可以开启和关闭它。
例如,如果软件设置该输出端口输出
高电平 -- 我们将在该点得到 3.3V电压。
我希望发生的是,
该电压在 LED 上产生电压降为
1.6 伏。
现在,这一切必须相符。
因此,如果那是 3.3V,而这里
是 1.6V,那么施加在
电阻上的电压必须是1.7V。
现在,我可以使用欧姆定律来选择电阻值,
以便 1.7V可生成1mA的电流 --
这是欧姆定律决定的。
这会将我的电阻器设置为 1.7 千欧。
现在证明 1.7 千欧是一个不通用的电阻值。
如果我到商店并且想买一个,
我会发现一个很接近的电阻器,它是 1.6 千欧。
它将比 1 毫安要亮一点,但它
会很好地工作。
那么,如果我要大致实现它,对于
该电路中的任何LED,我会这么做。
我需要的电阻器值将是微控制器的
输出引脚电压减去
我要设置的二极管电压 --
我要为运行点设置的二极管
电压,然后除以我要
得到的二极管电流。
那么,这是用于连接该类型的 LED 的
一般公式。
一切都会很好地工作,只要我的
电流小于 6 毫安即可,因为这是
我能够从MSP432 的引脚
获取的最大电流。
我们要将这称为正逻辑,
因为输出高电平转换成了 LED 开启。
如果输出是低电平 --
如果这是 0 伏 --
即 0 伏。
没有电流。
这将使 LED 关闭。
那么,该高电压实现开启、低电压
实现关闭的现象被分类为正逻辑。
请注意,有时我们希望使用负逻辑
我们希望采用另一个方向的连接方式。
我们将使用完全一样的 LED,
但现在我要调换输出和
电源的位置。
那么,现在我要将一端连接到 3.3V,
而不是接地。
电阻器现在与 LED串联,但 LED 的底部 --
阴极 --连接到
微控制器的输出端口。
那么,如果我希望开启它,
我会设置输出为低电平。
我会在这里得到 0 伏,在那里得到 1.6 伏,在那里得到 1.7 伏,
并且使用完全一样的公式
来生成所需的电阻器值,1.7 千欧。
再说一次,这是负逻辑,因为
低电压导致 LED导通。
而高电压 --
如果这是 3.3 伏、就没有
电流流过LED,LED 会截止。
因此这是负逻辑。
请注意,有时 LED电流大于 6 毫安。
例如,这里是一个不同的 LED。
如果我对某个运行点感兴趣 --
好的,那么在这里的特定接口中,我将
尝试达到 10毫安、1.8 伏 --
10 毫安、1.8 伏设定点。
我们得到的公式与先前得到的公式非常类似。
但是我们 -- 由于高电流,我们
需要一个驱动器。
因此我们可以使用 BJT,或者我们可以使用开集电路。
这是一个开路集电极,不是栅极,这样一来,
如果微控制器为高电平--
如果这是3.3V--
该驱动器开启,我将在那里得到0.5伏的电压。
现在我可以做与先前相同的事情,
让我们大致执行它。
我需要的电阻值,它将会设置电流大小
3.3V减去这里的二极管电压 --
这是我希望设置的二极管电压 --
减去驱动器这里的输出
低电压,然后除以我尝试
达到的设定点电流。
那么,我大致就是这么做的。
您可以看到,在本例中我有一个 100 欧的电阻器。
因此,如果您的 LED 可以驱动大于 6mA的
电流,这是对的。
现在,MSP432 上有四个引脚 --
端口P2.3、端口P2.2、端口P2.1和端口P2.0。
这四个引脚可以驱动高达 20 毫安的电流,
但所有其他引脚具有6 毫安的最大电流。
好,现在我们已经把它连好了,
让我向您展示如何编写软件。
那么,在这个特定的软件包中,我要
尝试解决的问题是,
端口P2.0连接到一个低电流、高效 LED,
就像这样.
那么我要将微控制器端口P2.0连接到
一个 LED。
那么初始化我,
需要 --
将方向寄存器设置为高电平。
现在,如果我希望具有大电流驱动能力,
我还将设置 DS 寄存器。
它用于这四个具有20mA驱动能力
的引脚。
现在,输出到 LED 的过程包含三个步骤。
我需要读取输出的所有位,
修改我感兴趣的位,
然后写输出寄存器。
这样,我就不会影响其他的位 --
在本例中,不会影响端口P2的其他7位。
因此,它在这里看起来的样子是 --
我将首先读取所有位。
现在,在本例中,我要开启 LED。
在这里的示例中,我要设置该位。
因此,第二步是设置我想要开启且
位于临时变量中的位。
第三步是将数据写到输出寄存器。
因此,您可以看到它的结果
当BIT0变为高电平,LED 开启,
但这个端口相应寄存器的其他
7 个位不受影响。
现在,如果我想清除某个位,我就执行同样的三个步骤。
我要将它们全部读出来。
现在清除我希望清除的位。
在本例中,我将清除BIT0。
再次重新设置寄存器。
仍然保持其他 7 个位不变。
这是您的 LaunchPad。
开箱即用。
它上面已经有 LED。
您可以在这里看到,它的端口P1.0上
有一个低电流 LED,它的端口P2上连接了
三个高电流 LED。
那么,对于该三色 LED,
我们必须要设置这三个引脚的 20mA
电流输出模式。
那么让我们为 LaunchPad和LED 编写驱动程序,以便
您可以使用它们。
再说一次,这里的驱动
函数将配置这个需要高电流驱动的--
三色 LED。
三个 LED,它们分别连接到端口P2.2、P2.1 和
P2.0。
我们要将方向寄存器设置为高电平,这
意味着它是输出。
我们要将驱动强度设置为高,这意味着它现在
可以输出20mA驱动电流。
然后我们将首先关闭 LED
现在,要实现这个动作,我们只需向P2端口
写入 3 个位。
虽然它非常简单,
但您可以看到这里的代码 --
它不仅影响我希望更改的 3 个位,而且
还影响了其他我不想改变的
5 个位。
因此这种方式简单但不可取
那么,如果我希望以恰当的方式做同样的事 --
换句话说,如果我希望将Port2 的低位的3 个位设置为高电平,
以实现输出 --
我将使用读取、修改、写入 --或者“或”、“等于”使其他
5 个位
保持不变。
这会在不影响其他5 个位的情况下设置
低位的 3 个位。
我要再次清除全部 3 个位 --
全部 3 个低位 --不影响其他 5 个位。
现在写入任意数据会
复杂一点。
那么,我们来解决该问题。
第一步是读取。
这里的第一步是,我将看到 --
我将获取端口P2的8位7、6、5、4、3、2、1、0 --
我将获取现有的位。
它是一个 8 位端口。
然后我将以1 1 1 1 0 0 0 结束它。
这样的结果是,它将为我提供
位 7、6、5、4、3 --我不关心其他 5 个位。
但它将使这些位变为 0
那么,现在当我使用我的数据命令它时 --
再次假定数据中具有这些位 --
希望结果是保持
7、6、5、4、3为原来的数据
加上 x、y、z 参数 --
假设该 3 位数是 x、y、z。
我们知道这3个参数代表了BIT2、BIT1、BIT0 --
我们可以看到,一旦我这么做,现在我具有
5 个不变的位,加上 3 个需要改变的位。
然后,当我重新配置输出寄存器的时候,我就对它产生了影响。
现在,如果您希望自己来执行它,
您可以看到,这是称为
输入输出入门项目中的示例代码。
之前我们已经向您展示了 LED 是什么,
我们向您展示了软件代码。
为什么上述方法很重要?
如果您知道调试的一般规则,即 --
我们需要能够控制软件做什么。
然后,我们需要能够观察发生了什么。
LED 为我们提供了一种非常简单、非常快速、
具有极高非侵入性 --
或具有极低侵入性 -- 的方法来查看软件在做什么。
那么,如果我们仅采用一个 LED,我们可以开启它,
我们也可以关闭它。
这基本上是您可以
放置在机器人上的一位基本信息,
您可以在机器人奔跑时查看它。
因此,您的机器人
代码中可能嵌入某种模式、某些条件,
现在您可以在机器人
奔跑时将该想法
向操作员显示为1 或 0 -- 即真或假
因此我们将这称为检测信号。
我们可以通过查看 LED来了解您的软件正在做什么。
另外 -- 即使仅使用单个 LED,
我们实际上也可以获取更多信息。
那么,如果我使 LED 闪烁 --
我开启它,我关闭它 --
我可以通过我的双眼看到它。
只要它的频率小于10 赫兹,我就可以看到它。
但我还可以更改我使它闪烁的频率。
我可以使它每秒闪烁一次,每秒闪烁两次,每秒闪烁四次,
因此,我实际上可以通过 LED 生成多于
1 位的信息。
因此,我可以再次在我的头脑中
对LED不同的闪烁频率状态 --
设定不同的含义 -- 从而进行编码,以便我可以
看到我的软件在做什么。
由于能够观察或了解您的软件
在做什么是调试的
关键部分,因此我鼓励您在您的 LaunchPad 上使用 LED。
在原型板上连接一些额外的 LED,
以便您的机器人
在赛道上赛跑时有大量的闪烁的状态灯。
总之,我们讨论了 LED。
它是具有极性的。
换句话说,它有正极和负极。
阳极是正极,阴极是负极。
它具有非线性特性,我们
需要使用一个电阻来连接它。
该电阻将设置流过LED的电压电流。
我们针对电阻,
而不是针对 LED使用欧姆定律。
然后我们编写了一组软件函数 --
初始化函数,它执行了一次,然后是
输出函数,在我希望LED开启或关闭时使用。
好的,请您尽情享受。
在您的机器人上放置一些 LED,以便您可以看到它在奔跑。
祝您本次实验愉快。
课程介绍
共计3课时,32分59秒
猜你喜欢
换一换
推荐帖子
- 现场5折600购买Sitara入门套件
- 现场5折购买Sitara入门套件!!RMB 600!仅限研讨会当天!! http://www.deyisupport.com/question_answer/f/25/t/15050.aspx...
- wyzamazon DSP 与 ARM 处理器
- TMS320C665x]02、CCS v6.1 Full License 和谐
- [TMS320C665x]01、 CCS 与Process SDK的安装 http://blog.sina.com.cn/s/blog_7e7fa4c80102wdka.html 讲述了软件的安装, 编译是没有问题的,但是用xds200下载与调试时就出错问题, 关键CCS V6.1 Full License 和谐才可以,和谐方法如下 把license文件放在C...
- Aguilera DSP 与 ARM 处理器
- 有一种技术叫电源故障预测
- I. 电子系统的故障预测技术定义 故障是产品不能完成规定功能或性能退化导致不能满足规定要求的状态。电子系统的故障预测技术是以当前电子系统的使用状态为起点,对将来可能出现的故障 进行预测,当预测到故障时及时向用户提出警告,以便用户能够采取措施避免重大恶性事故发生,对现行的系统管理和维修制度具有开创性的作用,达到及时的故障 预测和对电子系统有效的健康管理。故障预测技术是实时地监控系统的健康状态...
- qwqwqw2088 模拟与混合信号
- 有关手机充电器的来龙去脉,,,,
- 本帖最后由 qwqwqw2088 于 2018-10-10 16:52 编辑 充电器将高压转换成低压同时能够对电池进行恒流、恒压等模式进行充电,有时候也称为适配器。对手机充电器来说,充电器负责电压变换、功率输出和以及限流保护,手机内部配有电池管理系统,对电池的电流、电压和电量进行监测和控制。 1、大块头 ...
- qwqwqw2088 模拟与混合信号