使用 Arduino 的自动夜灯
使用 Arduino 的自动夜灯 - 代码、工作和模拟
自动化基本上意味着发明一种减少或消除人力的方法。在本教程中,我们将解释如何使用 Proteus 软件通过 Arduino 和 Relay 的简单接口实现夜灯自动化。自动化是当务之急,因为应用范围从带有简单恒温器的锅炉控制到带有大量输入和输出数据的大型工业管理。自动化的复杂性可以从基本的“开/关”控制到高度复杂的多变量算法,如工业自动化系统。用于自动化目的的控制系统可以是开环或闭环,这意味着它可以使用单个输入参数或响应作为输入馈送的输出,就像闭环系统一样。
就像每一种技术自动化一样,也各有利弊:
优点
- 提高生产力
- 可预测的质量(质量改进)
- 增强稳健性
- 出色的输出一致性
- 减少人工费用
- 高度准确
- 减少单调工作的人力
缺点
- 容易受到安全威胁
- 开发成本可能超出预期
- 设置成本高
- 许多行业的失业原因
利大于弊,这就是为什么整个世界正在步入自动化时代。
在本教程中,我们尝试在电路检测到光强度发生明显变化时自动打开或关闭灯,并实现我们将要使用的用于自动化的两个最常用的工具,即 Arduino 和 Relay,以及与模拟的接口将由 Proteus 软件实现。
- 相关项目:自动 LED 应急灯电路
需要的组件
- Arduino UNO
- 5 伏继电器
- LDR(光敏电阻)
- 10K 欧姆电阻
- 晶体管 BC547
- 5 伏直流电源
- 交流电源 220 伏
需要软件
- Arduino IDE
- 变形杆菌
自动夜灯电路图
- 相关文章:应急 LED 灯电路 - LED-716 LED 灯原理图
组件说明
Arduino UNO
Arduino 基本上是一个开源的开发板,主要使用Microchip ATmega328P 微控制器,由Arduino.cc 制造。该板带有一组输入/输出引脚,包括数字和模拟,可以连接到不同的扩展板和外部电路。该板带有 14 个数字引脚和 6 个模拟引脚,这些引脚在 IDE(集成开发环境)的帮助下被使用或可编程。程序通过 B 型 USB 电缆烧录。
可以通过 USB 电缆或连接 12 伏直流电源为电路板供电。从设计和工作的角度来看,它与其他家族成员 Arduino Nano 和 Arduino Leonardo 并没有太大区别。
STK500 仍然是 Uno 通信的原始协议。与前代的主要区别在于没有使用FTDI(USB转串口驱动芯片)。
- 相关文章:什么是 Arduino 以及如何对其进行编程?
中继
继电器是一种电磁开关,可以电动操作并用于打开和关闭交流/直流电器。即使像 Arduino 引脚提供的输出一样,它也可以在 5 伏的低电压下进行控制。它由一侧(低压侧)带有金属触点的线圈组成,该线圈可以通过磁化和退磁来打开或关闭另一侧(高压侧)的电路。高压侧由一个带有 3 个插座的连接器组成,即公共 (COM)、常闭 (NC) 和常开 (NO)。继电器有不同的额定值,如 12V、9V、5V 和 3V。
- 相关文章:如何测试继电器?检查 SSR 和线圈继电器
LDR
LDR(Light Dependent Resistor)是一种可变电阻元件,它可以随着光强的变化而改变其电阻值,它是根据光电导原理工作的。电阻值随着光强度的增加而减小。用于光敏检测电路和光敏开关电路。
LDR由高阻半导体构成,无光时电阻为兆欧,有光时电阻为数百欧。
- 相关文章:使用 LDR 和晶体管 BC 547 的自动路灯控制系统
BC547 – NPN 晶体管
晶体管基本上是一种半导体器件,用于放大或切换电子信号和电源。它由半导体材料制成,有 3 个端子用于连接外部电路。在这个电路中,我们使用了BC547,它是一个NPN双极结型晶体管。
- 相关项目:使用 555 定时器和 BC547 晶体管的简单触敏开关电路
其基极的小电流值控制其发射极和集电极的大电流值。晶体管端子需要固定的直流电压才能在其特性曲线的所需区域内工作。晶体管,当用于放大目的时,保持偏置,以便所有输入都部分导通,放大的输出信号在发射极处获取。对于开关应用,晶体管是偏置的,因此如果存在基极端子的信号,它会保持完全导通,而在没有基极信号的情况下它会完全关闭。
- 相关文章:如何用万用表检查晶体管 - NPN 和 PNP - 4 种方法
评分
- VCEO =45 Vdc
- Ic=100mAdc
- VCBO =50 Vdc
- VEBO =6 Vdc
软件说明
Proteus
Proteus 设计套件属于用于执行电子设计自动化的专有软件类别。该软件对于电子设计工程师和相应的技术人员来说非常方便,用于创建原理图和称为 PCB 布局的电子形式的打印。该软件由 Labcenter Electronics Ltd. 在英国约克郡开发,支持英语、法语、西班牙语和普通话等多种语言。
它会定期更新由高级组件组成的新库,并且可以很容易地添加到现有的库列表中。
该软件因其模拟电路或微控制器的能力而被广泛使用。仿真有助于理解设计电路的工作和测试,甚至无需使用物理组件。它的用户界面也比市场上的其他软件更具优势。库部分提供超过 1500 万个组件,因此用户无需浪费时间创建封装或组件。
Arduino IDE
Arduino IDE是一款可以在各种平台上使用的软件。因此,它是一个跨平台的应用程序,是使用编程语言 java 开发的。它的灵魂目的是编写草图并将其上传到与 Arduino 兼容的板上。支持的语言是 C 和 C++,它们稍作修改,取决于所使用的库。软件中内置了各种库,其他库可以从第三方供应商处下载。 IDE 使用一个名为 avrdude 的程序将代码转换为具有十六进制编码的文件,该文件借助预装在电路板固件中的加载程序加载到电路板。
项目代码
代码说明
首先,我们定义了两个整数类型的全局变量。变量analogIN 用于表示将从电路和第二个变量触发器接收模拟值的模拟引脚 表示将提供足够电压的触发输出的数字引脚。
int analogIN =A3;
int Trigger =12;
波特率设置为9600 bits/sec,代表数据传输速率。 pinMode() 函数用于定义引脚的状态。这里我们将引脚 12 设置为输出,引脚 A3 设置为输入。所有这些语句都写在函数 void setup() 中,并且在整个执行期间只运行一次。
void setup()
{
Serial.begin(9600);
pinMode(analogIN, INPUT);
pinMode(Trigger, OUTPUT);
}
根据电路图,我们必须从引脚A3读取模拟值形式的特定数据。对于这个特定的任务,我们使用了函数 analogRead() 因为电路产生的输入是模拟值,所以这就是使用模拟引脚和模拟功能的原因。
现在,我们从模拟引脚A3获取这个模拟值,然后将其值存储在变量“value”中。
此变量将包含一个介于 0 到 1234 之间的整数值,并且会根据模拟输入而变化。这是 10 位 ADC 值,因为 Arduino 带有 10 位 ADC 转换器。
存储在“value”变量中的值用于执行条件运算符(if-else)。通过这个操作符,我们将数字引脚触发的状态设置为 HIGH 或 LOW 来打开和关闭灯。打印存储在变量“值”中的数据的主要优点是我们可以将光强度与特定值相关联,并以所需的光强度打开灯。
函数“void loop()”中的代码将重复运行,直到 Arduino 通电。因此,为了确保项目在所有情况下都处于工作状态,必须确保为此处使用的 Arduino Uno 提供 24/7 电源。
void loop() {
int value =analogRead(analogIN);
Serial.println(value);
if (value <692)
{
digitalWrite(Trigger, HIGH);
Serial.println(“lamp is ON”);
}
else {
digitalWrite(Trigger, LOW);
Serial.println(“灯已关闭”);
}
}
如何获取代码的Hex文件位置?
在您的 Arduino IDE 中单击文件>首选项,然后在“显示详细输出”中检查选项编译和上传,并在下面窗口中的代码编译时选择和复制 hex 文件的位置并在 Proteus 中双击 Arduino 并将文件位置粘贴到 Program file 选项中,然后单击 OK。现在您的电路就可以进行仿真了。
- 使用555定时器的拍子开关电路电子项目
模拟视频
即将推出
夜灯电路工作
现在我们将讨论电路的工作原理,这里我们使用了一个 5V 直流电源(Arduino 的 5V)并在分压器电路中连接了一个 10k 欧姆电阻和一个 LDR。可以通过电阻或 LDR 获取并馈入 Arduino 的模拟引脚(在本例中为引脚 A3)的电压。
借助上面提到的代码,板子将能够检测到提供给它的模拟输入。读取的这个值是根据 LDR 检测到的光强度而定的。
虽然我们可以在串行监视器上查看即将到来的值,以根据光的强度校准电路。因此,我们可以更改代码中提供的条件语句中的条件,以所需的光强度“打开”和“关闭”灯,从而使其成为动态的。
现在,当满足条件语句时,即光强度低于您提供的值(以 ADC 等效形式),板将在引脚处产生“HIGH”输出12 “HIGH”表示它在引脚 12 上产生 5V 输出。
在这种情况下,晶体管的基极产生了足够的电压,晶体管开始导通。结果,电流开始在继电器的线圈中流动并打开,这意味着 NO 端子切换到灯电路已连接到的活动状态,并且在电路完成后灯变为“ON” ”。
当代码中的 else 条件为真时,灯变为“OFF”,即光强度从我们提供的阈值增加。因此,引脚 12 的输出变为“低”,随后继电器关闭,从而关闭灯泡。
- 使用 IC 4017 和 555 定时器的交通灯控制电子项目
底线:
我们都想放松我们的生活方式,自动夜灯在做什么。您甚至不需要打开或关闭夜灯。因为它会根据光线的强度自动打开和关闭。当它在白天时,灯保持关闭状态,因为它在传感器上变暗,灯打开。该项目将帮助您使用基本的电子元件进行相同的设计。我们还解释了代码,以便您开始使用 Arduino 不会有困难。
相关项目:
- 自动植物浇水和灌溉系统 - 电路、代码和项目报告
- 雨警报电路 - 雪、水和雨探测器项目
- 水位指示器电路图 - 两个简单的项目
- 更多电气和电子工程项目
工业技术