使用 Arduino UNO 的可变电源 - 电路和代码
如何使用Arduino UNO制作可变电源?
电源是电子电气设备和电路的基本和基本要求。电路和设备种类繁多,因此,不同的电子电路对电源的需求也不同。例如,Wi-Fi 模块、继电器、电机等需要不同的电压。在市场上,我们不会为每种电子产品提供不同的电源,因此我们通过各种方法生成自己的特定电源。解决这个问题的简单方法是使用电池。
电池通常用于为电子电路和项目供电,因为它们很容易获得并且可以轻松连接。但是它们很快就耗尽了,然后我们需要新电池,而且这些电池不能提供大电流来驱动强大的电机。因此电池会放电,而且它们会使电路变得笨重。当电子设备使用时间较长或过度使用时,电池也会变热,并且随着时间的推移电池的寿命会缩短。为了克服这个问题,我们引入了一种更好、更有效的解决方案,可以在任何电路中使用。在这个项目中,我们将向您展示如何从 Arduino UNO 生成可变电源 .
使用此项目,您将能够根据您的电子设备获得可变电源,而无需担心充电、放电、发热等问题。有多种方法可用于生成变量电源,但这是最简单的方法,因为它需要便宜且容易获得的组件。那么我们来看看这个项目所需的组件。
- 相关文章:Arduino 带有物体检测功能的自动门铃
需要的组件
- Arduino UNO
- 16×2 液晶显示屏
- 100 μF 电容器
- 1k Ω 电阻器
- 跳线
- 5 伏电源
- 2N2222 晶体管
软件: AURDINO Nightly 或 Atmel Studio 6.2
- 相关文章:使用 Arduino 和超声波传感器进行距离测量
可变电源电路图
在进入这个项目之前,让我们知道一些关于这个项目的事情。
Arduino UNO
Arduino UNO 是一个开源平台,用于开发电子项目。它可以随时轻松地进行编程、擦除和重新编程。市场上有许多 Arduino 板,如 Arduino UNO、Arduino Nano、Arduino Mega、Arduino lily pad 等,根据用途有不同的规格。在这个项目中,我们将使用 Arduino UNO 来自动控制家用电器。它上面有 ATmega328 微控制器 IC,以 16MHz 时钟速度运行。功能强大,可在 USART、I2C 和 SPI 通信协议上工作。
- 相关文章:使用 Arduino 的自动夜灯
这个板子通常是使用软件 Arduino IDE 使用 micro USB 电缆进行编程的。 ATmega328 带有预编程的板载引导加载程序,无需外部硬件帮助即可更轻松地上传代码。它在制作电子项目或产品方面有着广泛的应用。使用C和C++语言对板子进行编程,非常容易学习和使用。 Arduino IDE 使编程变得更加容易。它将代码分为两部分,即 void setup() 和 void loop()。 void setup()函数只运行一次,主要用于启动某个进程,而void loop()是需要连续执行的部分代码。
该模型由6个模拟输入引脚和14个数字GPIO引脚组成,可用作输入输出,其中6个提供PWM输出和模拟使用pinMode()、digitalWrite()、 digitalRead() 和analogRead() 函数。 6 个模拟输入通道通道从引脚 A0 到 A5,提供 10 位分辨率。该板可使用 5 伏的 USB 电缆或 7 至 20 伏的直流插孔供电。
板载稳压器可产生 3.3 伏电压,用于运行低功率设备。由于 ATmega328 工作在 USART、SPI 和 I2C 通信协议上,有 0(Rx)和 1(Tx)引脚用于 USART 通信,SDA(A4)和 SCL(A5)引脚用于 I2C 和 SS(10),MOSI(11) , MISO (12) 和 SCK (13) 引脚用于SPI通信协议。
- 相关文章:Arduino 的串行通信
Arduino UNO 上的 ADC
Arduino UNO 板载 6 个 ADC 通道,可用于感应或读取 0 伏至 5 伏的模拟信号。当我们将传感器与 Arduino UNO 等微控制器连接时,传感器会生成模拟输出值,Arduino UNO 会感应数字值。因此,ADC 有助于将传感器值转换为模拟值并将其输入微控制器。 ADC有很多应用,如温度传感、距离测量、速度测量以及许多产生模拟值的传感器。
Arduino UNO 具有 10 位 ADC,这意味着它的值在每一步中从 0 变为 1023。这称为分辨率,表示它可以在模拟值范围内产生的离散值的数量。
由于ADC的最大电压为5伏,因此从0到1023的ADC的每一步的值大约相当于5 mV。 Arduino UNO板上有6个ADC通道,从A0到A5,意味着它可以同时控制或连接6个产生模拟值的设备。
Arduino IDE提供读取模拟值的内置函数:analogRead(pin)。
通过简单地给出从 A0 到 A5 的引脚编号来连接设备,这个函数可以帮助我们读取模拟值。
- 相关文章:什么是 Crowbar 电路?设计和运营
Arduino UNO 上的 PWM
脉冲宽度调制 (PWM) 是一种通过改变脉冲宽度同时保持频率恒定来使用某些数字源生成模拟信号的技术。定义 PWM 的两个主要重要因素是:占空比和频率。
信号的占空比:
信号在一个完整周期内为ON的部分称为占空比。
占空比 =100*Ton / (Ton + Toff)
这一般用于通过打开和关闭信号来控制传递给负载的功率。例如,它可用于控制光的强度或某些电机的速度。在调用analogWrite() 函数后,该引脚将生成指定占空比的稳定方波,直到下一次调用analogWrite() 或调用同一引脚上的digitalRead() 或digitalWrite()。
- 相关文章:使用 555 定时器和 BC547 晶体管的简单触敏开关电路
信号频率:
信号的频率表示信号完成其周期的速度意味着它从 ON 状态切换到 OFF 状态或反之亦然的时间。通过在特定的占空比下这样做,输出的行为就像一个恒定的模拟电压。大多数引脚上的 PWM 信号频率约为 490 Hz。在 Uno 和类似电路板上,引脚 5 和 6 的频率约为 980 Hz。 Leonardo 上的引脚 3 和 11 也以 980 Hz 运行
Arduino UNO 有 6 个 8 位 PWM 通道,上面有符号 ~。我们可以使用Arduino IDE中的analogWrite函数来获取模拟电压:
analogWrite(引脚,占空比)
Pin:接Arduino UNO上用来产生模拟输出的pin。
Duty Cycle:取值范围从 0(最小值)到 255(最大值)作为输入来更改占空比。
- 相关文章:使用齐纳二极管的简单过压保护电路
16×2 LCD 显示屏
在 LCD 上生成自定义字符并不难。它需要LCD的定制生成随机存取存储器(CG-RAM)和LCD芯片控制器的知识。这是关于将 Arduino UNO 连接到 16×2 JHD162A LCD 模块。 JHD162A 是一款基于日立 HD44780 驱动器的 16×2 LCD 模块。 JHD162A 有 16 个引脚,可以在 4 位模式(仅使用 4 条数据线)或 8 位模式(使用全部 8 条数据线)下工作。在这个项目中,我们将使用 4-bit 模式,因为它需要连接线。
16×2液晶模组管脚说明:
固定在LCD上 | 说明 |
VSS | 接地针 |
VCC | +5V供电 |
VEE | 引脚改变LCD对比度 |
RS | 寄存器选择:数据模式或命令模式 |
RW | 读写模式 |
E | 启用LCD |
DB0-DB7 | 使用这些引脚输入数据和命令 |
LED+ | 背光LED的阳极 |
LED- | 背光LED的阴极 |
- 相关文章:自动浴室灯开关电路图和操作
这个LCD没有自己的光,所以屏幕后面有一个LED作为显示器的背光。将此 LCD 与 Arduino UNO 连接非常简单,因为 Arduino IDE 提供了一个 LiquidCrystal 库,该库具有许多内置功能,可以更轻松地初始化和打印显示器上的任何内容。本项目中我们主要会用到的LCD功能有:
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
lcd.begin()
lcd.clear()
lcd.print()
- 相关文章:12V 至 5V 转换器电路
使用 Arduino 工作的可变电源
正确连接电路图中给出的电线。在这个项目中,我们将获取在输出端获得的电压,并将其作为输入到 ADC 通道之一。此外,ADC 通道给出的数字值随后显示在 16×2 LCD 显示屏上。项目中使用的按钮用于增加和减少电压,并连接到 Arduino UNO 的引脚 4 和引脚 5。由于 Arduino UNO 具有 10 位分辨率,这意味着它在 0 到 1023 之间变化,并且最大 ADC 电压为 5 伏,因此一位等于 5/1024 =4.9 毫伏(大约)。那么我们移动数字值的递增和递减从0到1023不等。
现在我们正在读取A0通道的ADC值。 Arduino IDE 提供内置函数 analogRead(pin) 来读取 ADC 值,这里的 pin 是 A0,因为通道是 Arduino UNO 上的 A0。此外,我们将引脚 3 用于 Arduino UNO 的 Pwm。 Arduino IDE 提供函数analogWrite(pin,Duty Cycle) 以在pin 3 产生具有给定占空比的所需输出电压。
现在按下两个按钮,我们正在改变 pwm 信号的占空比,从而改变输出电压。一个按钮是增加占空比,另一个是减少占空比。 Arduino Uno 的 PWM 值从 0 变为 255,其中 0 为最小值以达到 0 伏,而 255 为最大值以达到 5 伏。管脚 3 进一步馈入 NPN 晶体管,该晶体管在其发射极提供可变电压并充当开关器件。
晶体管的基极将有一个可变的占空比pwm,因此我们可以在终端获得可变的输出电压。由于电压不是线性的,所以我们连接电容以滤除可变输出电压中的噪声。
- 相关文章:使用 IC 4017 和 555 定时器的交通灯控制电子项目
代码说明
包括库:
#include <LiquidCrystal.h>
这是使用 LCD 显示器的内置库。它提供了可以方便地在 LCD 显示屏上显示字符的功能。
LiquidCrystal lcd(8, 9, 10, 11, 12, 13);
int ref_volt =125;
float flag =0;
液晶lcd取数据管脚和液晶显示器的RS、RW、E管脚连接的管脚号。由于我们将参考电压设置为 2.5 伏,因此我们通过将 ref_volt 设置为 125 将占空比设置为 50%。
pinMode (3, OUTPUT);
pinMode (4, INPUT);
pinMode (5, INPUT);
Arduino UNO的pin3设置为PWM输出,pin 4和pin 5设置为电压的递增和递减输入。
lcd.begin(16, 2);
delay(100);
lcd.setCursor(1, 0);
lcd.print("Variable Voltage");
lcd.clear();
delay(1000);
lcd.begin 函数设置液晶显示器的字符数。在开始时,我们在屏幕上显示“可变电压”。
float value = (analogRead(A0));
value = (value*5)/1024;
analogWrite(3,ref_volt);
Value 变量读取从 A0 ADC 通道获得的数字值,并将该数字值转换为电压值。 AnalogWrite 在 Arduino UNO 的引脚 3 提供 PWM。
if (digitalRead(4)==LOW)
{
if (ref_volt<250)
{
ref_volt=ref_volt+1;
delay(100);
}
}
这会检查增量按钮是否被按下。如果有人按下增量按钮,那么它会增加 ref_volt。
if (digitalRead(5)==LOW)
{
if (ref_volt>0)
{
ref_volt=ref_volt-1;
delay(100);
}
}
这会检查减量按钮是否被按下。如果有人按下递减按钮,那么它会降低 ref_volt。
- 相关文章:使用 IC 555 定时器的拍频开关电路 &没有定时器
这样您就可以使用Arduino UNO生成5伏可变电源 不用太担心电池和使电路体积庞大。
工业技术
- 使用 AI 发现供应链中的野生动物和人口贩卖
- 仅使用 Arduino 的 DTMF 解码器
- 使用 Arduino 和智能手机的 DIY 电压表
- WebServerBlink 使用 Arduino Uno WiFi
- Python3 和 Arduino 通信
- 使用 Arduino 和 RDA8057M 的 FM 收音机
- 使用重力传感器智能手机控制的机器人汽车
- 使用 Helium、Azure IoT 中心和 Power BI 的 GPS 跟踪
- 使用 Arduino 的摩尔斯电码通信
- 变速驱动器中的电流、功率和转矩
- 双电源电路图 - 230VAC 至 ±12VDC
- 无变压器电源:克服成本和空间的公认方法