Arduino 狗粮分配器


崧峻
转载
发布时间: 2025-06-09 23:22:58 | 阅读数 0收藏数 0评论数 0
封面
想要每天按时喂狗,但总是忘记时间?别再找了;这个 Instructable 将教你如何构建自己的 Arduino 驱动的狗粮分配器。这个项目是一次很棒的经历,让我学习了基本的电路和编码
1

收集材料和工具

材料

电子产品

  1. 1 个 Arduino UNO
  2. 1 个Arduino 开发板 电源插头
  3. 1 个标准伺服器(加上螺丝和电机附件)
  4. 2 个 12 极单掷开关
  5. 1 个圆形摇杆开关
  6. 1 节 9V 电池 +电池盒
  7. 1 个 5 毫米LED
  8. 电线

材料

  1. 4 个柜门磁铁
  2. 1/4' 桦木片
  3. 1/8' 丙烯酸片(任何颜色都可以,TAP Plastics 是一家不错的经销商)
  4. 1/8 英寸丙烯酸棒(也可从 TAP Plastics 购买)
  5. 聚酯薄膜
  6. Devcon 2 吨环氧树脂
  7. 丙烯酸胶

工具

  1. 激光切割机
  2. 钢丝钳
  3. 剥线钳
  4. 文件
  5. 烙铁
  6. 计算机(已下载Arduino IDE
2

激光切割胶合板

我为胶合板片创建了 Adob​​e Illustrator 文件。您可以下载附件并使用激光切割机切割这些片。上面的图片告诉您每片的用途。

注意:这些锉刀适用于 12" x 24" 木块。

AI
FFCKMLYKMJ675O7.ai
368.36KB
AI
FWMI4FMKMP5BO24.ai
414.20KB
3

激光切割亚克力片

我为丙烯酸创建了 Adob​​e Illustrator 文件。您可以下载附件并使用激光切割机切割碎片。上面的图片告诉您每块碎片的用途。

注意:这些文件适用于 12" x 24" 丙烯酸片。

AI
FLCWFDJKMP5BO21.ai
314.45KB
AI
FIQDC32KMP5BO22.ai
318.36KB
AI
FYE61TRKMP5BO23.ai
314.90KB
4

组装盒子

除了顶部和两个侧片外,其他所有部件都必须用胶水粘合。侧片使用磁性闩锁固定到位,并且易于拆卸,便于维护。顶部部件卡入凹槽。

首先混合 2 吨环氧树脂*。将环氧树脂涂抹在前片和底片的指接处。将前片连接到底片。确保将部件连接到延伸 0.25 英寸的接头上。从正面看,底部的 0.25 英寸孔必须在左侧。我建议在底部接头的内侧涂抹一些环氧树脂。接下来,在两个车轮支架的接头和边缘上涂抹环氧树脂。将它们滑入底片的孔中,确保木片进入较大的孔中,并且它们与底部精确成 90˚ 角。我使用三角板确保其为 90˚,并使用弹性头带在环氧树脂硬化时固定三角板。将环氧树脂涂抹在后片的指接处并将其连接到底片。确保将部件连接到前片的另一侧,并且孔与前片上的孔位于同一侧。待所有环氧树脂硬化后,使用环氧树脂将磁铁粘贴在前后片两侧的一半位置。测量磁铁粘贴的深度,并将磁铁的另一部分粘贴在侧面丙烯酸片上。

*注意:确保混合环氧树脂时,它完全变成白色;否则,碎片会很快散开。

5

组装车轮、坡道和轮轴

车轮

我标记了所有部件,以便将它们与标记对齐,同时用胶水粘贴轮子。从部件 1 和 2 上的小圆圈中心开始,在圆圈的两侧标记一条 1.25 英寸的线。取部件 3 和 4,画一条线标记较长边的中点。使用丙烯酸胶水,将部件 5 的较短边粘贴到部件 3 上的标记线上。将部件 4 粘贴到部件 5 的另一侧,确保部件 5 与中点标记对齐。现在将部件 5 的较长边粘贴到部件 2 上的标记上。对部件 1 的另一侧执行相同操作。取两个用于电机的连接件。在轮子的每一侧粘贴一个连接器,将孔与轮子圆圈上的孔对齐。在轮子周围添加一张聚酯薄膜,将顶部留空,以便食物掉入。

斜坡

将两个斜坡片较长的一边以 50˚ 角锉平。将丙烯酸胶水涂在锉平的一边,并将其粘贴到另一边的锉平边上。

轮轴

将其中一个轴片粘到丙烯酸轮支架的外侧,使孔对齐。切下一段 1 英寸长的丙烯酸棒,并将其粘到第二个轴片内。使用电机螺钉将两个轴片拧在一起

6

组装漏斗

漏斗

首先,使用上图中标记为 5、6、7、8、9 的部件组装漏斗底座。四个小部件(5、6、7、8)连接到部件 9 上内切口内侧边缘的部件 9。使用丙烯酸胶水将这些部件连接起来;连接好的部件应该看起来像第三张图片。

注意:您可能需要锉平一些碎片以确保它们恰好适合第 9 件。

接下来,连接标记为 1、2、3 和 4 的部件。这将是漏斗的顶部。对于部件 1 和 3,短平行边的长度相同,它们位于正面和背面。对于部件 4 和 2,漏斗的右侧和左侧接触盒子的正面。使用丙烯酸胶水,将部件 1 和 3 连接在部件 4 和 2 的内部。如果在涂胶水之前将部件粘在一起可能会有所帮助。将四个部件连接起来后,将较短的一端锉平,然后与底部部件连接,如上图 5 所示。

将顶部较长的边缘锉平。

7

粘贴斜坡

要安装坡道,首先必须将较长部件的底部锉平。接下来,在坡道的所有边缘涂上环氧树脂,并将坡道滑入车轮支架之间,底部开口的一侧。使坡道与前部齐平并按住 2 分钟。

8

固定轮子和漏斗

漏斗和轮子都是可拆卸部件,便于清洁。

安装轮子:将一个连接器固定在电机轴上。在另一侧,拧紧轮轴,并将轮轴推过轮子支架,进入轮子上的第二个连接器。将轮轴部件拧在一起。

要安装漏斗,请将其放在轮子支架的顶部。外部部件必须接触盒子上的丙烯酸部件。

9

焊接

您需要将电线焊接到 12 极开关上。

取七根公对母电线,剥去公侧的护套。将剥去护套的一侧焊接到两个开关的 1、4 和 7 极上。开关上的极应该贴有标签;如果没有,请使用上图。使用第七根电线,将其焊接到其中一个开关的接地极上。现在取一根公对公电线,剥去两侧的护套。焊接连接两个开关接地极的电线。

注意:为了方便接线,使用不同颜色的电线会很有益。

10

安装电气元件

马达:将马达安装到木轮支架的孔中,并拧入支架。马达轴应位于两个轮支架之间。

Arduino 板:将 Arduino UNO 拧到电机下方,车轮支架的外侧。

LED:将 LED 放入 LED 支架,将其从外面推入正面最上面的孔中。

电池座:将电池座拧到开关下方的木轮支架上。您可能需要折断电池座的底部,以便安装电池。

开关

12 极开关:这些开关位于前面。将开关从内部推入第三个孔和最后一个孔,确保极 1 位于顶部。拧上紧固螺母并添加旋钮。对第二个开关重复上述操作。

*注意:如果螺纹没有穿过木头,请将孔稍微扩大一些。

摇杆开关:此开关位于后面。将开关从外面推入孔中,确保 O 位于顶部。

11

接线

发动机

使用公对公线将红线连接到 5V 端口。

使用公对公线将橙色线连接到数字端口 9。

使用公对公线将棕色线接地 (GND)。

金额切换

使用公对公电线将电线从极 1 连接到数字端口 2。

使用公对公电线将电线从极 4 连接到数字端口 3。

使用公对公线将电线从极 7 连接到数字端口 4。

定时开关

使用公对公电线将电线从极 1 连接到数字端口 5。

使用公对公电线将电线从极 4 连接到数字端口 6。

使用公对公电线将电线从极 7 连接到数字端口 7。

开/关开关

将开关的一个端子连接到电池座的红线。将端子的第二根线连接到电源插孔的红线。将电池座的黑线连接到电源插孔的黑线。所有连接都是通过使用对接连接器压接电线完成的。

引领

剥去两根公对公电线的一端的护套。使用对接连接器,将连接到 LED 的电线压接到一根未剥去护套的公对公电线上。将黑线接地 (GND),将另一根线连接到 Vin。

12

编程

将以下程序复制并粘贴到 Arduino IDE 中,然后上传至开发板。

#include <Servo.h> //Servo library

int fill = 0; //default motor starting position when the continer fills.
int empty= 135; // motor position when emptying the container
int amount = 1; // number of cups to feed
int interval = 4; // interval between feeds in seconds
Servo mainServo;


void setup() {
// put your setup code here, to run once:
mainServo.attach(9);
pinMode(2, INPUT_PULLUP); // pin 1 on amount switch
pinMode(3, INPUT_PULLUP); // pin 4 on amount switch
pinMode(4, INPUT_PULLUP); // pin 7 on amount switch
pinMode(5, INPUT_PULLUP); // pin 1 on time switch
pinMode(6, INPUT_PULLUP); // pin 4 on time switch
pinMode(7, INPUT_PULLUP); // pin 7 on time switch
}

void loop() {
// put your main code here, to run repeatedly:
amount = 1 ; // set to min value
if ( digitalRead(2) == LOW){
amount = 1;
}
else if (digitalRead(3) == LOW) {
amount = 2;
}
else if (digitalRead(4) == LOW) {
amount = 3;
}
runmotor();
if (digitalRead(5) == LOW) {
interval = 4;
}
else if (digitalRead(6) == LOW) {
interval = 8;
}
else if (digitalRead(7) == LOW) {
interval = 12;
}
delay(interval * 3600000);
}

void runmotor(){
for(;amount > 0; amount--) {
mainServo.write(empty);
Serial.write("Motor run starting");
delay(2000);
while(mainServo.read() >100){
mainServo.write(fill);
delay(2000);
mainServo.write(empty);
}
mainServo.write(fill);
delay(2000);
Serial.write("Motor run completed");
Serial.println();
}
}<br>
阅读记录0
点赞0
收藏0
禁止 本文未经作者允许授权,禁止转载
猜你喜欢
评论/提问(已发布 0 条)
评论 评论
收藏 收藏
分享 分享
pdf下载 下载
pdf下载 举报