数码之家

 找回密码
 立即注册
搜索
查看: 1648|回复: 12

[家电] DIY一个根据电压执行相应动作的双路继电器小模块

[复制链接]
发表于 2023-9-28 17:15:59 | 显示全部楼层 |阅读模式
本帖最后由 skywing 于 2023-9-28 18:05 编辑




前言:


做这个小东西的原因是家里的太阳能供电DCDC降压供给网络设备+NAS之后还有富余,想用逆变器把这部分多余的电量利用起来。


最开始我是直接有一个电量监控控制模块控制逆变器的输出端,这模块有多种控制模式可供选择,我用的是放电控制模式。控制逻辑如下:

电池电压低于65V,断开开关;电池电压达到66V,接通开关
这个开关再连接着一个双路继电器实现太阳能逆变AC220V和市电AC220V的自动切换。

使用上没有问题,但开关断开之后逆变器还是开机的,有10-12W的待机功耗,一天有超过10小时在待机,浪费了0.1度电多。就想有一个双路开关,既控制逆变器输出,也控制输入。

控制逻辑如下

接通时先接通输入,逆变器开机延时5秒再接通输出;
断开时先断开输出,延时5秒再断开逆变器输入。

接通和断开都需要延迟主要是因为逆变器开机是软启动,逆变器输入断开也不会立刻切断输出,而是先报警输入欠压,再利用大电容里的电量慢慢下降输出电压,启动和关闭都有一个过程,会导致AC双路切换器切换不迅速导致后端设备重启。

市面上找不到现成的继电器模块可以实现我这个需求,就学习arduino用arduino配合四路继电器切换模块做了一个,纯新手,代码质量不高,已实际使用两三天了,功能实现正常。

模块制作:

主要都是用的手里现有的东西做了下拼凑集成:

arduino nano开发板*1
四路继电器模块*1
LM2596S降压模块*1
7*9CM洞洞板*1

使用降压模块是因为旁边就是12V双路不间断电源,而12V电压无法供应开发板及继电器模块。

成品如下



因为之前其实折腾过一次,烧过一次开发板,这次我做了一些保护措施

1、控制继电器高低电平的两个针脚串连了100欧电阻,以期在继电器出故障时限流保护开发板不烧电源



2、降压模块输出和继电器模块输入处都加了一个5V TVS二极管进行过压保护,继电器模块处的TVS二极管还有吸收继电器动作时的反向电动势的作用。



3、开发板输入额外加了个10uf的电容以稳压和滤波。



4、analogRead()读取电压的针脚加了个1nf的电容以过滤一些高频噪声防止误动作。



读取外部电压值峰值为73V,arduino开发板是无法直接读取这么高的电压的,使用一个简单的分压电路,我使用的电阻阻值为100K和5.1K



逆变器接通的冲击电流太大,无法用继电器模块的小继电器直接控制,使用的是小继电器另外控制一个120A大继电器的办法



注意使用这种大电流继电器一定要在控制脚接二极管以吸收反向电动势,我用示波器看过这120继电器动作时的波形,反向电压高达600V以上,非常恐怖,不保护的话很容易击穿锂电池的保护板!



弄好后背面贴一张青稞纸以防止放在金属表面时发生短路。

两路继电器都动作时测试输入电流为0.1A左右,功耗1W左右。



arduino代码:

  1. const float voltage_lowval = 65;
  2. const float voltage_reval = 66;
  3. const int delay_time = 5000;
  4. const int relay_pin_1 = 9;
  5. const int relay_pin_2 = 10;
  6. const int voltage_reader = A1;
  7. float voltage_val;
  8. bool current_status = 0;
  9. bool last_status = 0;
  10. bool debug_status= 0;

  11. void setup() {
  12.   if (debug_status) {
  13.   Serial.begin(9600);
  14.   }
  15.   pinMode(LED_BUILTIN,OUTPUT);
  16.   pinMode(relay_pin_1,OUTPUT);
  17.   pinMode(relay_pin_2,OUTPUT);
  18.   read_voltage();
  19.   if (voltage_val >= voltage_lowval) {
  20.     current_status = 1;
  21.     turn_on();
  22.   } else {
  23.     current_status = 0;
  24.     turn_off();
  25.   }
  26.   // put your setup code here, to run once:

  27. }

  28. void loop() {

  29.   read_voltage();

  30.   if (debug_status) {
  31.     Serial.print("the current voltage is ");
  32.     Serial.println(voltage_val);
  33.     Serial.print("the current status is ");
  34.     Serial.println(current_status);
  35.     delay(1000);
  36.   }

  37.   check_status();

  38.   if (current_status != last_status) {
  39.     if (current_status) {
  40.       turn_on();
  41.     } else {
  42.       turn_off();
  43.     }
  44.     last_status = current_status;
  45.   }
  46.   // put your main code here, to run repeatedly:

  47. }

  48. void read_voltage() {
  49.   int val = analogRead(voltage_reader);
  50.   voltage_val = val / 1023.0f * 85.7f;
  51.   delay(100);
  52. }

  53. void check_status () {
  54.   if (voltage_val <= voltage_lowval) {
  55.     current_status = 0;
  56.   } else if (voltage_val >= voltage_reval) {
  57.     current_status = 1;
  58.   }
  59. }

  60. void turn_on() {
  61.     digitalWrite(LED_BUILTIN,HIGH);
  62.     digitalWrite(relay_pin_2,HIGH);
  63.     delay(delay_time);
  64.     digitalWrite(relay_pin_1,HIGH);
  65. }

  66. void turn_off() {
  67.     digitalWrite(LED_BUILTIN,LOW);
  68.     digitalWrite(relay_pin_1,LOW);
  69.     delay(delay_time);
  70.     digitalWrite(relay_pin_2,LOW);
  71. }
复制代码



初学者水平,目前测试能正常工作。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

打赏

参与人数 1家元 +9 收起 理由
hongo + 9 原創內容

查看全部打赏

 楼主| 发表于 2023-9-28 23:57:37 | 显示全部楼层
补几张测试大电流继电器的波形图




一定要加二极管!一定要加二极管!一定要加二极管!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-9-29 00:01:25 | 显示全部楼层
下一步计划加按钮加数码管,把其改成动作电压可调,延时时长可调的,自学arduino之前完全没有编程基础的,慢慢摸索中
回复 支持 反对

使用道具 举报

发表于 2023-10-1 09:49:34 | 显示全部楼层
好,不错,学习。
回复 支持 反对

使用道具 举报

发表于 2023-10-1 13:16:48 来自手机浏览器 | 显示全部楼层
不错,可这种并离网效率也一般,最好的出路是储能机加并网,不用经常的转换220V进出,对电器也好。
回复 支持 反对

使用道具 举报

发表于 2023-10-1 16:08:23 | 显示全部楼层
不错,动手能力强,做自己想做的东西
回复 支持 反对

使用道具 举报

发表于 2023-10-1 20:44:09 | 显示全部楼层
羡慕加佩服,动手能力强就是好,需要什么就能做。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-10-1 22:46:04 来自手机浏览器 | 显示全部楼层
fshjl 发表于 2023-10-1 13:16
不错,可这种并离网效率也一般,最好的出路是储能机加并网,不用经常的转换220V进出,对电器也好。 ...

全部都是自己弄的,板子二手的没有手续,逆变器不是并网逆变器,自己没有施工资质,怎么并网。。。
回复 支持 反对

使用道具 举报

发表于 2023-10-7 21:13:42 来自手机浏览器 | 显示全部楼层
skywing 发表于 2023-10-1 22:46
全部都是自己弄的,板子二手的没有手续,逆变器不是并网逆变器,自己没有施工资质,怎么并网。。。 ...

并网不代表要卖电给电网,储能机也能防逆流,他的工作原理是光伏和电池不够,电网来凑。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-10-8 20:15:53 来自手机浏览器 | 显示全部楼层
fshjl 发表于 2023-10-7 21:13
并网不代表要卖电给电网,储能机也能防逆流,他的工作原理是光伏和电池不够,电网来凑。 ...

我了解到这种需要买专用的逆变器,功率不大但不便宜(小众需求溢价会更高),又是一笔支出,不弄了
回复 支持 反对

使用道具 举报

发表于 2023-10-23 23:11:37 来自手机浏览器 | 显示全部楼层
怎么改充电到指定电压物理断开,比如设置充电到10v,到10v就断开?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-5-2 18:10 , Processed in 0.577201 second(s), 12 queries , Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

快速回复 返回顶部 返回列表