自动投喂器光伏发电连接霍尔开关

2026-06-30 11:18:13 0点赞 0收藏 0评论

一、接线表(PNP霍尔 + Arduino 5V)

| 霍尔开关引脚 | 接线目标 | 说明 |

|-------------|----------|------|

| VCC(棕) | Arduino 5V | 供电 |

| GND(蓝) | Arduino GND | 共地 |

| OUT(黑) | Arduino D2 | 信号输入(触发时输出5V高电平) |

| 其他部件 | 接线目标 | 说明 |

|---------|----------|------|

| 继电器模块(5V) | VCC→5V,GND→GND,IN→Arduino D3 | 控制电机通断 |

| 直流电机(12V) | 正极→继电器COM,负极→电池负极 | 继电器NO接电池正极 |

| 蓄电池(12V) | 正极→继电器COM,负极→电机负极和降压模块输入端 | 给电机和降压模块供电 |

| 降压模块(12V→5V) | IN+→电池正极,IN-→电池负极,OUT+→Arduino 5V,OUT-→GND | 给单片机和霍尔供电 |

关键点:所有GND(Arduino、霍尔、继电器、降压模块输出)必须全部连在一起,否则信号不稳定。

二、电路连接示意图(简化版)

```mermaid

flowchart LR

subgraph 电源

B[12V蓄电池] --> D[降压模块
12V→5V]

B --> R[继电器
常开触点]

end

subgraph 控制

D -->|5V| A[Arduino]

D -->|5V| H[PNP霍尔]

A -->|D3| R

end

subgraph 执行

R -->|通电| M[12V电机]

B -->|供电| R

end

H -->|OUT→D2| A

```

三、Arduino代码

代码实现:磁铁靠近霍尔时,电机转动3秒后自动停止,防止一次投喂太多。

```cpp

// ===== 引脚定义 =====

const int hallPin = 2; // PNP霍尔输出 → D2

const int motorPin = 3; // 继电器控制 → D3

// ===== 投喂参数 =====

const unsigned long feedDuration = 3000; // 每次投喂转3秒

bool isFeeding = false; // 是否正在投喂

unsigned long feedStartTime = 0; // 本次投喂开始时间

void setup() {

pinMode(hallPin, INPUT); // 霍尔信号输入

pinMode(motorPin, OUTPUT);

digitalWrite(motorPin, LOW); // 初始继电器断开(电机不转)

Serial.begin(9600);

Serial.println("系统启动,等待触发...");

}

void loop() {

// 1. 读取霍尔状态

int hallState = digitalRead(hallPin);

// 2. PNP霍尔:触发时输出HIGH

if (hallState == HIGH && !isFeeding) {

// 磁铁靠近且当前没有在投喂 → 启动

isFeeding = true;

feedStartTime = millis();

digitalWrite(motorPin, HIGH); // 继电器吸合,电机转动

Serial.println("触发!开始投喂...");

}

// 3. 如果正在投喂,检查是否到时间了

if (isFeeding) {

unsigned long now = millis();

if (now - feedStartTime >= feedDuration) {

digitalWrite(motorPin, LOW); // 继电器断开,电机停止

isFeeding = false;

Serial.println("投喂结束,等待下次触发");

}

}

delay(20); // 小延时,防抖

}

```

四、测试步骤(按顺序做,别跳)

第1步:先不接电机,只接霍尔

1. Arduino接上电脑USB供电(或5V电源)。

2. 打开Arduino IDE的串口监视器(波特率9600)。

3. 拿一块磁铁靠近霍尔开关,观察串口打印:

靠近 → 应该打印 触发!开始投喂...

移开 → 等待3秒后打印 投喂结束...

4. 如果没反应,检查:

霍尔电源和地是否接反(VCC和GND)

磁铁是否靠得够近(建议先贴着试)

用万用表测OUT脚,靠近磁铁时应该是5V,移开是 0V

第2步:接上继电器和电机

1. 电池接好,降压模块给Arduino供电(不再用USB)。

2. 磁铁靠近 → 继电器应该“咔哒”一声吸合 → 电机转动。

3. 3秒后继电器断开,电机停止。

第3步:实际安装到投喂器上

把霍尔固定在投喂器外壳上,磁铁粘在活动部件(如食盆盖、动物项圈)上。

调整位置,确保动物来吃食时,磁铁刚好能靠近霍尔。

五、常见问题排查

| 现象 | 可能原因 | 解决方法 |

|------|----------|----------|

| 串口一直打印触发 | 霍尔输出一直为高 | 检查是否磁铁一直贴着,或者霍尔损坏 |

| 磁铁靠近没反应 | 距离太远 / 磁铁太弱 | 换强磁铁(钕磁铁),或把霍尔靠近安装 |

| 电机一启动就停 | 继电器供电不足 | 继电器VCC和GND是否接稳?Arduino 5V输出电流够吗? |

| 电机不转,但继电器有咔哒声 | 继电器触点接线错误 | COM接电池正极,NO接电机正极,电机负极接电池负极 |

| 投喂时间太短/太长 | 代码里`feedDuration`数值不对 | 修改 const unsigned long feedDuration = 3000; 单位是毫秒 |

霍尔AR127 | PNP,5V供电

单片机 | Arduino(5V逻辑)

信号电压 | 触发时输出5V,直连安全

电机控制 | 继电器模块(5V驱动)

电机电源 | 12V蓄电池(独立供电)

代码功能 | 磁铁触发 → 电机转3秒 → 停

系统原理:霍尔检测到磁铁 → 单片机收到高电平 → 继电器吸合 → 电机转 → 3秒后停。光伏板负责给蓄电池补电,实现“不用市电”的离网运行。

自动投喂器光伏发电连接霍尔开关
展开 收起
0评论

当前文章无评论,是时候发表评论了
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
相关好价
最新文章 热门文章
0
扫一下,分享更方便,购买更轻松