亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

带智能显示屏的智能电池充电器多路复用器

组件和用品

Arduino UNO
× 1
Arduino Proto Shield
× 1
超声波传感器 - HC-SR04(通用)
× 1
Adafruit MCP-3008 8 通道 10 位 Adc
× 1
5V 继电器 - 2 通道光耦合器
× 3
LM2596 电源模块 DC/DC BUCK 3A 可调
× 1
电阻 1k ohm
× 12
6 位端子排
检查图片 - 可以使用大多数类型的连接系统。
× 1

必要的工具和机器

烙铁(通用)

关于这个项目

住在东北部,如果您有一辆旧车、一艘船、割草机或其他以电池启动的车辆,而您在恶劣天气(有些人称之为冬天)下不开车或使用它,您必须决定做什么每个季节都有电池。如果你有一两个,那就很容易了——你可以得到一个涓流充电器。便宜的简单款不到 15 美元——但它们很简单——没有电池反馈或监控,它们只是给电池提供了 13 伏多一点的电压。更好的选择是智能充电器之一——它们通常具有更高/更快的定期充电和雪或涓流充电,可根据电池电压和状况调整其输出。它们运行良好——Harbor Freight 有一个售价 39 美元——当然售价 29 美元,这几乎总是如此。

如果我挂了,我有我的 1975 年 MGB(带有 3.5 升 Oldsmobile V8)、1981 年丰田皮卡、一艘船和一台发电机——所有这些都配有 12 伏电池。然后,如果我们在冬天离开,我们会将其中一辆车留在这里,这样就有了另一块电池。好吧,我必须得到 5 个电池管理器——如果我购买 HF 电池管理器,则需要 150 美元。

考虑到这一点时,我认为我为每个电池准备了一个,戴上它,它使电池达到一定水平,然后它只是在其余时间对其进行监控和涓流充电。所以我想到了这个想法——为什么我不能每天将它连接到每个电池上几个小时——这行不通?那我能不能让它在它们之间自动切换?

嗯,我可以。我拿了我的一个 Arduinos 并编写了一个程序来做到这一点——然后我被冲昏了头脑并添加了一些额外的功能。所以在这里我将详细介绍我最终得到的结果。此版本最多可安装 6 节电池并具有自动感应功能。

它适用于 1 到 6 节电池。第一个电池必须连接到 1 号位置——该连接与为 Arduino 和其他电子设备供电的电压调节器相连。然后可以以任何顺序连接第二个及以上。当您连接电池时,Read_Show_Volts 函数会检测电压并将该电池添加到充电周期中。

它是如何工作的——我想容纳 6 块电池。对于 Arduino UNO,2 线 LCD 控制需要 A4 和 A5 模拟输入,而剩下 4 个模拟输入太少了。所以我连接了一个 MCP-3008 8 通道模拟输入。我使用 2 个 1k 电阻作为 MCP-3008 的每个输入的分压器。

程序中基本上调用了4个函数。

  • 函数read_show_volts 检查每个连接,通过测试是否有大于 8 伏的可用电压来查看是否连接了电池。如果有 8v 或更高电压,则会将该连接添加到充电回路中。
  • 功能check_relays 检查定时器计数器,当它达到最大值时,它将充电器移动到下一个继电器。
  • 函数update_display 就是这样做 - 更新显示。首先它显示线路 1 上连接 1、2 处的电压以及线路 2 上连接 3 和 4 的电压。然后当计时器告诉它发生变化并显示线路 1 上连接 5 和 6 的电压时,因为我有两个额外的模拟输入我显示系统电压(希望是 5 伏)和 iref 电压 - 3.3 伏。不需要这些读数,但有一个空行,我不知道还能显示什么 - 我乐于接受想法。
  • 最后一个函数是read_distance_update .这个很有趣,玩起来最有趣。我连接了一个 HC-SR04 超声波声纳测距装置。我想让液晶显示器监控电压,但我几乎从不站在那里看着液晶显示器——大多数时候它可以关闭。我本可以放一个开关——简单的方法——但我所做的是把 HC-SR04 放进去,然后在几秒钟后关闭液晶显示器。然后,当我把手靠近 HC-SR04 时,我将液晶显示器重新打开 x 秒。

大多数事物都有变量,因此您可以根据需要进行调整。我已将充电定时器设置为每个电池 1 小时。因此,如果连接了两块电池,它将每天充电 1 小时,每次充电 12 次。使用 4 块电池,每天 6 次,每次 1 小时,依此类推。

只要我有 HC-SR04,我就添加了一个例程,将计时器循环更改为更短的时间——每个电池几秒钟。我这样做的原因是我可以看到它在电池之间切换正常,而且我不必等待一个小时就能看到它切换。如果您将手放在 HC-SR04 上几秒钟,它会打开和关闭 lcd 背光,以便您知道它已切换。然后您会听到继电器每隔几秒切换一次。再次将手放在 HC-SR04 上方,它就会切换回来。

这是代码的 zip:BatteryMultiplexer

代码

  • 电池多路复用器 Arduino 代码
电池多路复用器 Arduino 代码Arduino
我使用了 Arduino Uno.
#include #include  // 使用版本 1.2.1#include #include auto timer =timer_create_default(); // 使用默认设置创建一个计时器// LCD 构造函数 - 显示的地址为 0x27 - 对您的地址可能正确也可能不正确// 同样基于 YWRobot LCM1602 IIC V1LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, 正);int zcnt =0;int acnt =0; // 一般目的现在int chargeTime =(10 * 1000); // 在每个电池上花费多少时间充电时间计数器 =59; // 过去了多少次充电时间?int charge_time_max =60; // 经过多少次充电时间?int relay1 =3; // 每个继电器都有自己的 pinint relay2 =4;int relay3 =5;int relay4 =6;int current_relay =0; // 现在是哪个继电器?int max_relays =3; // 如何中继 - 基于 0。开始期待所有三个。float volts1; // 每个电池的电压是多少float volts2;float volts3;int min_volts =1; // 电池电压应充电的最低电压是多少。int volts_update_count =5; // 以秒为单位更新电压读数的频率int volts_update_counter =0; // 跟踪经过的秒数 int volts_update =(500);int read_distance_update =(500); // 每毫秒更新一次距离读取器 time_on_counter =0; // 显示开/关的计数器 time_on_count =100; //秒是onint heart_beat =0; // 将这个 0 翻转到 1 到 0 以显示心跳UltraSonicDistanceSensor distanceSensor(11, 12); // 初始化使用数字引脚 13 和 12 的传感器。int distance;int relays[] ={ relay1, relay2, relay3 };int is_live[] ={ 0, 0, 0}; // 1如果活着,0如果没有。我只有 3int debug =5; // 将此设置为调试消息的级别以转到串行打印机void all_change_to(int which) { // 将所有继电器更改为高或低,您告诉我哪个:) digitalWrite(relay1, which); digitalWrite(relay2, which); digitalWrite(relay3, which);}void toggle_relays(int whichOne) { lcd.setCursor(0, 0); // 在 lcd.print("Relay on:"); 上显示哪个继电器是当前的继电器lcd.print(current_relay + 1); // current_relay 是基于零的 all_change_to(HIGH); // 首先关闭所有 digitalWrite(relays[current_relay], LOW); // 并设置应该在acnt++上打开的那个; // 只是一个计数器来告诉我它在工作 lcd.print(" "); lcd.print(acnt);}void checkRelays() { // 将 current_relay 移动到下一个中​​继 // 如果我们达到最大值,从 0 开始 // 当你在这里时,调用 toggle_relays 以确保我们没有充一个空白或死一个charge_time_counter++; if (charge_time_counter>=charge_time_max) { current_relay++;如果(current_relay>=max_relays){ current_relay =0; } toggle_relays(current_relay); Charge_time_counter =0; }}void read_distance() { // 从 HC-S204 读取任何物体的距离 // 如果它在 80 厘米内,则打开显示器并重置计数器上的显示 // 如果到达计数器,则 80 厘米内没有任何东西关闭显示 distance =distanceSensor.measureDistanceCm(); // 取消注释这些以查看实际测量的距离 // Serial.print("CM 中的距离:"); // Serial.println(距离); if (distance <80) { // 对于我的系统,可以是 200 以下的任何值 取消上面的注释并检查你的 lcd.backlight(); // 打开显示 time_on_counter =0; } else { // 可能会关闭? time_on_counter++;如果(time_on_counter> time_on_count){ time_on_counter =0; lcd.noBacklight(); } }}void read_show_volts() { // 读取每个电池输入的电压 // 如果小于 min_volts,则没有什么值得充电的,跳过该连接 // 这会被一遍又一遍地调用,所以如果电线被敲掉或 // 任何不在充电回路中的东西 volts1 =analogRead(0);伏特1 =(伏特1 * 0.016); lcd.setCursor(0, 1);液晶打印(“”); // 清除行 lcd.setCursor(11, 0);液晶打印(伏特1); volts2 =模拟读取(1);伏特2 =(伏特2 * 0.0164); lcd.setCursor(4, 1);液晶打印(伏特2); volts3 =模拟读取(2);伏特3 =(伏特3 * 0.0166); lcd.setCursor(11, 1);液晶打印(伏特3); // 现在测试电压。如果小于 10,那么让我们假设电池没电/坏了或没有电池 // 所以把它从旋转中取出 // 从清除所有继电器开始 int temp_cnt =0; // 将所有数组设置为 0 - 即关闭 relays[0] =0;继电器[1] =0;继电器[2] =0;如果 (volts1> min_volts) { 继电器 [temp_cnt] =继电器 1; // 继电器 1 很好 temp_cnt++; } if (volts2> min_volts) { 继电器[temp_cnt] =relay2; // 继电器 2 很好 temp_cnt++; } if (volts3> min_volts) { 继电器[temp_cnt] =relay3; // 继电器 3 很好 temp_cnt++; } max_relays =temp_cnt; // 这是对 lcd 的赌注 - 只是告诉我它正在运行 lcd.setCursor(0, 1); if (heart_beat ==1) { lcd.print("<>");心跳=0; } else { lcd.print("><");心跳=1; } lcd.print(charge_time_counter); read_distance();}void setup(){ Serial.begin(19200); Serial.println("开始"); lcd.begin(16, 2); // 16 个字符 - 2 行 lcd.backlight(); pinMode(继电器1,输出); pinMode(继电器2,输出); pinMode(继电器3,输出); all_change_to(HIGH); // 设置定时器。 3 个计时器 - 为每个电池打开充电器的时间,// 显示电压更新的频率 // 以及检查距离读取以打开显示的频率 read_show_volts(); // 做第一次,所以我们不必等待计时器。检查继电器(); timer.every(chargeTime, checkRelays); timer.every(volts_update, read_show_volts);}void loop(){ timer.tick(); // 打勾定时器}

示意图

多路复用器示意图

制造工艺

  1. 智能百叶窗
  2. 使用 Arduino 控制硬币接收器
  3. Arduino 温度。使用 3.2 显示的监视器和实时时钟
  4. Arduino 带蓝牙控制 LED!
  5. Arduino Power
  6. 玩 Nextion Display
  7. DIY 电压表与 Arduino 和诺基亚 5110 显示器
  8. Arduino 培训平台
  9. 使用 Nextion Display 构建 Fridgeye 应用程序
  10. 使用 Arduino 测量太阳辐射
  11. 智能手套
  12. 带 GPS 和 TFT 显示屏蔽的 GPS 位置显示