数码之家

 找回密码
 立即注册
搜索
查看: 5204|回复: 65

[Arduino] 基于ESP8266和Arduino以及点灯科技的自动喂食器

  [复制链接]
发表于 2022-7-17 21:48:08 来自手机浏览器 | 显示全部楼层 |阅读模式

爱科技、爱创意、爱折腾、爱极致,我们都是技术控

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

x
方案
采用ESP8266作为主控同时连接Wifi,采用点灯科技的app作为安卓控制端,采用Arduino作为开发平台。

电路图
SCH_Smart_Feeder_fish_2022-06-15.png

电路板 3D仿真图
3D_Smart_Feeder_fish_2022-06-15_t.png
因为嘉立创会打客编,复制指定客编时顺便复制了下标签戳,但是忘记改月份了


焊接元器件
电路板的焊点用手术刀抹上锡浆(试过注射器,到不太好用),然后放上元器件,再放PTC加热上加热,最后用恒压恒流可调电源进行测试(其实这一步并不是很需要,毕竟电路很简单,可是万一呢),电流很小,说明没有短路。
IMG_20220627_224747.jpg


App界面布局
水温、气温、湿度是实时数据,支持存取内气泵的PWM和喂食量数据到EEPROM(这里有个坑,创建的空间大小需要大于使用到的内存地址) 。
Screenshot_20220717_192403_iot.clz.me_edit_59130882496705.jpg

喂食器的出料方案
本想用螺旋叶片杆,但不太好弄到,就用的螺旋弹簧。这个弹簧也很讲究,刚好能够卡住,不至于打滑;前面再用注射器的橡胶垫顶住,弹簧也就不至于在运动中脱离电机轴。
IMG_20220713_151634.jpg

考虑到发热,将温度传感器和步进电机放在了一起。
IMG_20220713_152243.jpg

电机用防尘棉包裹以减震,再盖上锡箔胶带,算是屏蔽一下电机的电磁干扰。
IMG_20220713_221713.jpg

整机上电测试
IMG_20220714_090248.jpg

步进电机测试
经过测试,500步/秒的表现挺不错的(基于AccelStepper电机库)。不过在使用时要注意相序,引脚顺序为1324。
IMG_20220712_181621.jpg

不运行blinker时,循环周期为5us,运行blinker时,循环周期为20ms。
仅运行Blinker时,80多秒才一圈,想找12v的低减速比的电机,合适的几乎没有!
想改直流电机加减速箱配码盘,位置却不够用了,于是只能凑合。
Image_2022-07-10_16-25-14.jpg

温度采样
发现NTC 10 B3950的输出温度不太对劲,经过验证,发现可能是因为没有采用NodeMCU通用的分压方案,于是对采样到的模拟电压除了一个3.3的校正值,输出温度恢复正常。

还有一点就是ADC的NTC温度波动受ESP8266噪音影响明显,于是加了一个滑动平均滤波(之前分析输出温度时拆掉了滤波电容,因此这是未采用电容滤波的数据)让数据稍微稳定一点。
Image_2022-07-16_22-48-23.jpg


架设装置
但是发现会自动重启,一摸,很热。
IMG_20220717_191650.jpg

拆下来拿到室内准备测试,本以为发热的是MOS,测试后发现,即使全负载MOS也不怎么热,光耦倒是有点热,发热最严重的反而是主控ESP8266。

而且还有一点,经过测试,ESP8266在信号极差时会自动重启,而且还是硬重启(会复位寄存器数据)。

总结:如果不能保证良好的信号,采用ESP8266作为主控是有风险的。


打赏

参与人数 6家元 +110 收起 理由
巴闭 + 10
newnet1234 + 20 謝謝分享
jf201006 + 20 原創內容
玛德陛下 + 20 謝謝分享
geek云中漫步 + 20 原創內容
moontree + 20 謝謝分享

查看全部打赏

本帖被以下淘专辑推荐:

 楼主| 发表于 2022-7-17 22:51:53 来自手机浏览器 | 显示全部楼层
螺旋叶片杆取材点:竹蜻蜓
tb_image_share_1654627218064.jpg



基于ESP8266和Arduino以及点灯科技的自动喂食器V1.2(开源)
https://www.mydigit.cn/thread-335581-1-1.html
回复 支持 反对

使用道具 举报

发表于 2022-7-18 08:11:38 | 显示全部楼层
哈哈,不错不错
回复 支持 反对

使用道具 举报

发表于 2022-7-18 10:06:36 来自手机浏览器 | 显示全部楼层
出料容易卡住,建议加上出料检测,通过红外对射类似的检测方式。
回复 支持 反对

使用道具 举报

发表于 2022-7-18 10:34:34 | 显示全部楼层
遇到多次8266重启,当初以为是没有用隔离电源的原因
回复 支持 反对

使用道具 举报

发表于 2022-7-18 11:04:50 | 显示全部楼层
光耦加的电阻太小了,3.3/200=16.5mA,16.5X4=66mA,  200欧可以加大到1500欧,在8266的gpio上就只有8mA的电流了,另外8266用好省电模式,就不发热了。
回复 支持 反对

使用道具 举报

发表于 2022-7-18 12:36:12 | 显示全部楼层
我曾经考虑过用12电机配给减速齿轮,做为下饲料的管道,可是弹簧不好改,一次投喂饲料量不好控制,而且长期使用饲料容易潮湿
回复 支持 反对

使用道具 举报

发表于 2022-7-18 14:00:44 | 显示全部楼层
楼主这个开源吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-7-18 15:14:13 来自手机浏览器 | 显示全部楼层
jpdd521 发表于 2022-7-18 10:06
出料容易卡住,建议加上出料检测,通过红外对射类似的检测方式。

之前简单测试了下,那时是另一个弹簧,卡住时弹簧会打滑。后来的这个弹簧会卡住输出轴,因此不会打滑;后来又发现卡料时弹簧会前移,从而脱离输出轴,于是在最前端放了个橡胶塞,刚好顶住弹簧,不会脱落。再要是卡住,就说明电机扭力不够,得换电机了。除了料道的卡住,料仓的卡住就不太好解决了,这个通过振动可以稍微缓解,另一种方案是在料仓内加电机搅动,但太麻烦。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-7-18 15:22:00 来自手机浏览器 | 显示全部楼层
kindzhon 发表于 2022-7-18 11:04
光耦加的电阻太小了,3.3/200=16.5mA,16.5X4=66mA,  200欧可以加大到1500欧,在8266的gpio上就只有8mA的电 ...

感谢提醒,这确实是个设计失误。通过研究数据手册和计算,驱动负载用的光耦的输入电流可以降到5mA。但是下拉关断用的光耦,如果输入电流太小,输出端的集射压降就会升高,感觉会影响关断?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-7-18 15:23:45 来自手机浏览器 | 显示全部楼层
cv130 发表于 2022-7-18 10:34
遇到多次8266重启,当初以为是没有用隔离电源的原因

除此之外,还有其他原因,正在分析验证。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-7-18 15:34:41 来自手机浏览器 | 显示全部楼层
xktx09 发表于 2022-7-18 12:36
我曾经考虑过用12电机配给减速齿轮,做为下饲料的管道,可是弹簧不好改,一次投喂饲料量不好控制,而且长期 ...

tb_image_share_1658129120307.jpg
这种其实是个不错的选择。一端接弹簧,一端接码盘,光电对射配合码盘中断计数,就可以比较精确的控制出料量。
至于受潮,一则上漂成汽,一则下凝为水。水可以通过料道排出,汽可以通过在瓶顶打孔,或者直接去掉瓶底,然后用过滤黑棉来堵住瓶底,这样就应该可以散去水汽了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-7-18 15:36:25 来自手机浏览器 | 显示全部楼层
kyd12345 发表于 2022-7-18 14:00
楼主这个开源吗?

还有点问题没解决,有些地方也有可以优化的地方,等解决了再开源。



基于ESP8266和Arduino以及点灯科技的自动喂食器V1.2(开源)
https://www.mydigit.cn/thread-335581-1-1.html

回复 支持 反对

使用道具 举报

发表于 2022-7-18 20:03:57 | 显示全部楼层
是真的的厉害~
回复 支持 反对

使用道具 举报

发表于 2022-7-18 20:45:44 | 显示全部楼层
本帖最后由 悠悠悠 于 2022-7-18 21:46 编辑

我觉得还是用简单的单片机定时控制玩具小电机比较好,因为 加热 水泵 气泵 成品都有独立控制器, 集成到一起反而容易引起较大的损失,8266 断电 重新来电后容易卡死
回复 支持 反对

使用道具 举报

发表于 2022-7-18 22:12:52 | 显示全部楼层
鱼食长期暴露在空气中容易受潮,霉变。
回复 支持 反对

使用道具 举报

发表于 2022-7-19 00:25:23 | 显示全部楼层
很专业感觉
回复 支持 反对

使用道具 举报

发表于 2022-7-19 08:55:32 | 显示全部楼层
本帖最后由 zhang_yy007 于 2022-7-19 09:00 编辑

“不运行blinker时,循环周期为5us,运行blinker时,循环周期为20ms。
仅运行Blinker时,80多秒才一圈”

这个的话,用中断或者多线程可以解决吧,就是给的一个脉冲信号间隔不好控制的原因吧。

“ESP8266在信号极差时会自动重启,而且还是硬重启(会复位寄存器数据)。”
这个复位数据的问题,可以定时或者更改数据时存储一下到flash中就可以了,8266可以将数据直接存入flash,它没有eeprom,不过blinker占用了部分空间,这个要跟blinker的占用分开,不然数据会乱。


回复 支持 反对

使用道具 举报

发表于 2022-7-19 09:22:38 | 显示全部楼层
梦幻之心星 发表于 2022-7-18 15:22
感谢提醒,这确实是个设计失误。通过研究数据手册和计算,驱动负载用的光耦的输入电流可以降到5mA。但是 ...

你换一个电阻试试就知道了,理论和实际往往是不同的,光耦里面就当是个普通的LED,1mA的电流足够点亮它。
回复 支持 反对

使用道具 举报

发表于 2022-7-19 10:05:49 | 显示全部楼层
自行设计的鱼食投喂器?牛
回复 支持 反对

使用道具 举报

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

本版积分规则

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

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2024-6-2 14:24 , Processed in 0.343201 second(s), 16 queries , Redis On.

Powered by Discuz!

© 2006-2023 smzj.net

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