圣源电子制作

 找回密码
 立即注册
查看: 16774|回复: 5
打印 上一主题 下一主题

用 Arduino来给泡奶粉的数字杯托-可给开水 热饮降温

[复制链接]
跳转到指定楼层
#
发表于 2012-2-19 13:59:07 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式
转载自:Agu's Mill 阿古作坊!!!

进行 Arduino 开发,除了标准、统一、开放的硬件平台,更让人兴奋的,还是可以面向对象地进行编程(Object Oriented Programming)。就应用层面的编程来说,与汇编算是完全决裂,之于对C,也是整个编程思想的提升。终于可以是用更加“高级”的语言,编写更加符合应用逻辑的代码了。
这里就是最近利用一点业余时间,和@圣源电子 一起实现的,基于Arduino的数字茶盘——CupPlate_Zero。因为是个初号机,所以带个Zero。开发环境,就是在《[Arduino] 使用 Arduino Eclipse 插件进行OOP编程及类库开发》一文中提到的基于 Eclipse 的 Arduino 开发环境,编写类库,并实现功能。
这个制作,献给好友 @米粒儿的饭 和 @饭的米粒儿,以及在2012年2月14日出生的小晴天。

创意来源于如何对奶瓶内的奶水进行测温。记得看过类似《超级奶爸》之类的片子,给小Baby喂奶粉的话,由于无法预知刚刚冲泡好的奶粉是否温度合适,而婴儿的哭闹加上大人(们)的手忙脚乱,可能会造成烫伤,而太凉肯定也不好,尤其在冬天。理想的温度,似乎应该是人体的体温就好。标准的测试方法,似乎是把奶粉滴到手背上来判断温度。
测温的功能好实现的话,接下来就是如何冷却的问题。着急地话,如果放到冰箱里或是凉水里,由于表面降温太快,可能会凉掉,而且会导致冷奶热的情况。放在冰箱里的话,甚至还可能直接忘记奶瓶这回事,因为看不到。于是,最好的方法,应该依然还是风冷。降温不会那么剧烈,就实现角度来说,也比较容易,而且奶瓶一样可以放在原本放它的位置。
技术宅处理这类问题的思路,可能就是这么诡异吧……

制作部分,比较简单,硬件清单如下:
  • Arduino UNO
  • 放得下杯子的洞洞板 * 1,建议是玻纤的, 相对比较抗热变形
  • 5k热电偶*1,测温,我用了2个,因为还在测试这玩意儿
  • RGB LED * 4,1个LED能显示三种状态,不挺好么。放4个的话,四面八方都看得到
  • 5.1k电阻*1,和热电偶串联,构成分压电路
  • 5V/250mA散热风扇,我也用了2个
  • 8550三极管 * 1,用于驱动风扇
  • 1k电阻 * 1,三极管基极限流
  • 热塑管,套在热电偶表面,与杯底绝缘
  • 排针、排座、杜邦线若干,导线
  • 8.8.8.8.数码管的DIY Arduino Shield,这个会另外发文介绍

程序部分,也比较简单,完全面向对象的话,主程序部分就非常清晰明了。
  1. /*
  2. * Arduino Cup Plate
  3. * a Cup Plate based on Arduino, with thermal sensor, led notification, and temperature display
  4. * Author: Weihong Guan
  5. * [url]http://aguegu.net[/url]
  6. * Sharing licensed under Creative Commons Attribution-ShareAlike 3.0 License
  7. * Update On: Feb 19, 2011
  8. * Version: 0.1
  9. */

  10. #include "CupPlate.h"
  11. #include "ColorLed.h"
  12. #include "ThermoCouple.h"
  13. #include "DigitalTubeDisplay.h"
  14. #include "DigitalFan.h"

  15. ColorLed led = ColorLed(A4, A3, A2);
  16. DigitalTubeDisplay dtd(9, 10, 11, 8, 0, 2, 6, 4, 3, 1, 7, 5);

  17. ThermoCouple tc0(A0); // Only A0 is used in fan & led control
  18. ThermoCouple tc1(A1);

  19. DigitalFan fan(A5);

  20. byte c = 0;

  21. void setup()
  22. {
  23.         fan.turnOff();
  24. }

  25. void loop()
  26. {
  27.         int v0 = tc0.getCelsius();
  28.         int v1 = tc1.getCelsius();

  29.         if (v0 > 50)
  30.         {
  31.                 led.turnOn(0x01);
  32.                 fan.turnOn();

  33.                 c = 0;
  34.         }
  35.         else
  36.         {
  37.                 if (c > 0x20)  // Delay for Thermal Balance
  38.                 {
  39.                         fan.turnOff();
  40.                         if (v0 < 30)
  41.                                 led.turnOn(0x03);
  42.                         else
  43.                                 led.turnOn(0x02);
  44.                 }
  45.                 else
  46.                         c++;
  47.         }
  48.         uint16_t v = v0 * 100 + v1;
  49.         dtd.printUIntInDec(v, 0x20);
  50. }
复制代码

在提供类库下载的链接之前,这些代码是不太可能编译通过的。但是有兴趣的朋友应该能很清晰得看到内部的逻辑。操作风扇,其实只是一个开关的操作,引脚设高电平或是低电平,即便是这样已经非常浅显的操作,都“抽象”为对象,从而是代码拥有更强的“自解释性”,那么,还需要注释么?

主要的功能,就是热电偶测温,但温度过高时,Led显示红色,风扇开启;温度适合应用时,Led显示绿色,风扇关闭;温度过低是,LED显示绿色,风扇保持关闭。程序以及视频中,将温度界限控制在50度和30度,是经验值。毕竟在导热过程中,温度的损失还是比较厉害,热电偶既没有和被测对象(水)直接接触,同时基本还都是暴露在空气中,所以显示温度距离还是偏差比较大。而在不同的应用中,可以更具实测温度,灵活进行调整。

热电偶部分,5K热电偶和5.1k电阻,构成测温回路以后,通过Arduino的AnalogRead获取热电偶两端的电压,进而查表获得温度,相关的类库,会在未来文章中进一步介绍和分享。

关于DIY Arduino 的 Shield,如果有把握用面包板搭接电路,而且也想动手玩玩电烙铁,找点玩电子的感觉的话,不妨自己尝试用洞洞板做一个实验电路。因为基本是单面布线,而且线条比较粗犷,排针可能没法实现一个理想的顺序。这时,可以活用杜邦线和多联(2/3/4/5 Pin)杜邦头,在杜邦线内部实现布线调整,实现更符合逻辑的插线顺序。同时尽量根据将杜邦线的颜色与其逻辑意义构成联系,比方说,在CupPlate_Zero上,LED的RGB三端,就是对应 红、绿、蓝 三条线,白色对应VCC,黑色对应GND。


回复

使用道具 举报

5#
发表于 2013-10-14 22:34:35 | 只看该作者
用 Arduino来给泡奶粉的数字杯托-可给开水 热饮降温

1.jpg (1.82 KB, 下载次数: 3)

1.jpg
回复 支持 反对

使用道具 举报

地板
发表于 2012-10-23 17:07:36 | 只看该作者
好样的,有没有的电路图
回复 支持 反对

使用道具 举报

板凳
 楼主| 发表于 2012-3-25 11:14:34 | 只看该作者
lyc4081 发表于 2012-3-25 07:54
这个....有没有基础教程啊....

在这个板块有几个基础 例子的。
回复 支持 反对

使用道具 举报

沙发
发表于 2012-3-25 07:54:42 | 只看该作者
这个....有没有基础教程啊....
回复 支持 反对

使用道具 举报

楼主
 楼主| 发表于 2012-2-19 14:05:25 | 只看该作者


P.S. 视频中有一处口误,2个风扇实际为并联,而非串联。
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|手机版|联系我们|闽公网安备 35012102000020号|闽ICP备11020110号-1|圣源电子

GMT+8, 2024-11-22 00:52 , Processed in 0.046794 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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