构建一个 Arduino 控制的 USB 电源

时间:2023-04-10

Arduinos 非常适合自动控制各种电路。在这个项目中,我将展示一种简单的方法,即可以使用 Arduino 制作电源,自动调整其输出以保持恒定电压或恒定电流。我设计此电路以使用 USB 电源运行,它专为小型低压应用而设计。但是您可以轻松修改它,以便为更高功率的应用使用更大的电源。 

材料

Arduino 微控制器
IRF510 功率 MOSFET 
1 kohm 电阻
470 ohm 电阻
2 x 100 kohm 电阻
10 ohm 电阻(额定至少 2.5 瓦)
1000 微法拉电容
SPDT 开关
2 x 瞬时按钮开关 螺丝
端子连接器
USB 连接器电缆
跳线

为电路供电

该项目的电源将由 USB 端口提供并通过 Arduino 路由。Arduino 使用标准 USB 连接器电缆连接到 USB 端口。我们正在构建的电源电路将连接到 Arduino 上的 5V 引脚。该引脚可提供 5V 和高达 200mA 的电流。但是,我已经编写了代码,使电源电路的电流永远不会超过 150mA。 

输出电路

输出电路的主要部分是围绕 IR510 功率 MOSFET 构建的晶体管电路。 

引脚 9 向电路提供 PWM 信号。该信号通过一个 1 kohm 电阻和 1000 微法拉电容器发送,并被平滑为相对恒定的 DC 信号(尽管仍然存在一些波动)。该直流信号被发送到 MOSFET 的栅极。 

一个 470 欧姆的电阻器连接在晶体管的栅极和 5V 之间,以便将栅极电压升高到接近源漏结导电的点。这些值可能需要调整以校准您正在使用的特定部件的电路。1 kohm 电阻和 470 ohm 电阻可以用更高的值代替。这将允许您使用较小的电容器值。 

连接到 MOSFET 漏极的是一个 10 欧姆 10 瓦的参考电阻。该连接点还连接到 Arduino 上的模拟引脚 2。 

10 欧姆电阻的另一侧连接到模拟引脚 1。这用于检测电源的输出。电源输出端接参考电阻和5V。为了方便访问,我使用了一对螺丝端子来连接和断开输出的电线。

开关

为简单起见,控制电路的开关安装在单独的面包板上。两个瞬时按钮用于调节电源的输出。每个开关的一端连接到 GND。另一端连接数字引脚 10 和 11。这些数字引脚还通过 100 kohm 电阻连接到 5V。这些充当上拉电阻器并将数字引脚设置为高电平,直到按下按钮。第三个开关是单刀双掷拨动开关。此开关设置输出模式。开关的两端引脚连接到 GND 和 5V。中心引脚连接到数字引脚 12。当引脚 12 连接到 5V 时,系统设置为输出恒定电压。当引脚 12 连接到 GND 时,系统设置为输出恒定电流。 

代码

在代码的顶部,声明变量中的项是“resistance”变量。这是电路中使用的参考电阻的值。您想要使用万用表来准确测量该值。不要假设它是标记值。当您尝试使用电源时,这可能会给您带来不准确的读数。测量电阻后,将此值(以欧姆为单位)写入代码。

在代码主循环的部分中,analogRead 函数用于测量参考电阻两侧的电压。使用这些值,您可以计算电源的端电压和流经负载的电流。 

接下来,digitalRead 函数用于确定开关的状态。拨动开关设置电源的工作模式。在一种模式下,输出设置为恒定电压。在另一种模式下,输出设置为恒定电流。如果按下其中一个瞬时按钮,则会向上或向下调整目标输出电平。这些功能具有内置延迟,以避免开关弹跳引起的错误触发,并限制输出更改的速度。 

接下来使用 Serial.print 命令显示电源的输出。这对于调试电源的运行很有用。 

代码中内置了各种安全限制。在启动时,在电路开始自动调整自身之前有一个延迟允许输出复位。为避免损坏 Arduino,输出限制为 150mA。控制输出的 analogWrite 函数永远不能超过 250(在 255 的范围内)并且它们永远不能低于 0。系统还限制了输出变化的速度。 

上一篇:使用线性延迟模型在 VLSI 设计中调整晶体管大小
下一篇:电阻式电流检测:低侧与高侧检测

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料