设为首页收藏本站

[应用教程] 用Arduino打造会调酒的机器人

Ash 发表于 2017-4-18 15:35:46 | 显示全部楼层 [复制链接]
7 3352
原文作者:Ted Kinsman   译:花神
由Makezine.TW官方授权   原文链接:Make

任何派对都需要话题,有什么比调酒机器人更棒的话题呢?这不但是个好的话头,也可以让派对发起人不用老是站在吧台后方,可以出去和其他人聊天。这篇文章介绍的调酒迈泰( Mai Tai)的酒精浓度并不高,即使是工作场合的派对也很适合。

cwjgrchywczr.gif

arduino-dr-5019small_orig.jpg

这一台调酒机器人其实就是以一个Arduino微处理器(Arduino Uno)加上许多制作而成。我写了一个简单的程序,让打开一段特定的时间来制作饮料。以目前的设计来说,这个机器人只能做一种饮料,不过只要调整一下程序跟输入开关,要做几十种饮料都不成问题。这篇文章最主要的目的在于让你开始动手做,同时,在制作的过程中学习一些基本观念。
我们的调酒机器人可以调制出完美的迈泰。迈泰酒谱也有很多种,我想称这个酒谱为玛歌迈泰(Margot’s Mai Tai),因为这是我太太玛歌(Margot)画龙点睛调制出的酒谱,最主要的差别在于酒精浓度较低(从三小杯烈酒变成比一杯多一点)。若是只要按一个按钮就可以调出一杯迈泰,那就会有太多人醉倒了,很不方便。此外,在这份酒谱当中,我们用红石榴糖浆和菠萝汁取代了常用的柳橙汁。

PARTS

迈泰调酒原料
•        兰姆酒(Rum),30 ml
•        柑香酒(Curacao),12 ml
•        杏仁糖浆(Orgeat), 5 ml
•        红石榴糖浆(Grenadine Syrup),6 ml
•        菠萝汁+莱姆,120 ml。可以挤10个莱姆,加上1加仑的菠萝汁

机器人组件
•        Arduino Uno微处理器
•        小马达(运作时电流不应耗超过120 mA)
•        水族箱用的蠕动式(2)
•        12V潜水式
•        Elegoo 电阻块
•        门铃开关

[size=14.6667px]
制作机器人
首先,我们要将校准,看看在 12 V直流电之下,液体流动的速度为何。我用的马达购自网络,一个大约5美元。在驱动的时候,使用电流约120mA,因此,我还需要可以供应好几安培的电源供应器来调酒。另外,还有一个重点是饮料完成速度,在我的设计之中,约35秒钟可以调好一杯迈泰。

pumps-dr-5022small_orig.jpg

蠕动式正面

back-of-pumps-dr-5029small_orig.jpg

蠕动式背面。你可以观察到马达上方的蓝色LED上搭载可限制电流的电阻。从正面看,LED会在机器闲置待命时闪烁。开始制作饮料时,LED则会显示哪一个正在运作
透过滚球装置与弹性软管,蠕动式可以送出定量的液体。这种在食品业和医疗产业中都很常见。在这个专题当中,我们用的则是在水族产业中常见的小,目的通常是将化学物质投放到水族箱中。

我用的蠕动式32秒可以打入30ml的液体。请记得在制作专题之前,先测试发送液体的速度。我一开始先用清水来抓一个大概的时间,再以实际要用的饮料来测试。我用时间线图来显示这个过程:
time-volume-graph-small_orig.jpg

在上图中,着色面积代表打入的液体量,因为兰姆酒需要的量最大,所以兰姆酒打开的时间最长,这算是小型蠕动式的其中一项限制。

submersion-pump-dr-5032small_orig.jpg

潜水式12 V运输速率较快,还可以打入菠萝果肉!

的另一项限制就是无法将菠萝汁果肉打出去,因为迈泰酒谱中有120 ml的菠萝汁,用蠕动式马达又太慢,因此我在这里改用潜水式马达,可同时解决果肉和速度的问题。潜水式马达也是使用12 V直流电,用继电器盒来控制即可。用这个马达来打入120 ml的菠萝汁只需要3.2秒!其实,我原先想要用较大的蠕动式马达来处理,但在附近都搜寻不到,便改用另一个专题剩下的潜水式马达。由于我只有一个马达可以打入果肉,只好将菠萝汁跟莱姆汁先混在一起,再用这个珍贵的潜水式马达处理。若是用蠕动式马达,就会被果肉卡住。而为了避免虹吸现象,潜入式要放在果汁液体表面之上。

建议: 蓝色LED也可以升级成彩色LED,加入不同的效果。在制作这个专题时,因时间有限,我使用了有电流限制的蓝色,上面还附有300奥姆的电阻,以防LED烧掉。

relayblock-dr-5026small_orig.jpg

Elegoo出的电阻块有8个通道 ,用 Arduino Uno的5V电压控制。
注意:若要用板子开启继电器, 控制脚位要写为LOW。

pump-schematic-1small_orig.jpg

电阻块的简化示意图。继电器控制了两个蠕动式。注意:Arduino脚位要写为LOW来开启继电器与

doorbellswitch-a_orig.jpg

「启动按钮」其实就是门铃开关,在五金行就能买到

我想在专题中使用一个只接两条电线的门铃开关,因此我将开关上的灯泡拆下来,换成绿色LED。问题是,如此一来按下开关时逻辑不会停在 HIGH值。要解决这个问题,我将逻辑脚位连接Arduino的模拟输入脚位,当模拟的值低于某点,便会触发饮品序列。当然,这不是唯一的解法。我写的简易程序代码是让门铃开关在LED闪烁完毕后才驱动饮料马达。我故意让程序代码简单一些,让它比较好读且好懂。我希望让大家感觉到,这些其实很容易控制,如果能精准控制打入的液体量,除了调酒之外,也可以做许多别的事情,例如用来做一些液体实验。

只要调整下面的程序代码,就可以调出各种不同浓度、烈度的饮料。另外,这个装置也能调制超过一种饮料,例如按不同的按钮就可以调出不一样的饮料。
看完这篇文章后,希望你也可以打造自己的机器人,其实装置本身跟电子组件的部分不难,是很适合新手学习 Arduino、程序编写和电子组件的专题。
程序代码
[AppleScript] 纯文本查看 复制代码
 /*这个程序叫做迈泰调制机器人
 
* 主要功能就是调制玛歌迈泰
 
* 作者是Ted Kinsman Rochester Institute of Technology
 
*March 2017 [url=mailto:emkpph@rit.edu]emkpph@rit.edu[/url]
 
*12v直流马达[color=#333333][size=13px]泵[/size][/color]打出1盎司的液体需要32秒
 
*/
 
#define Rum 1 // (1号[color=#333333][size=13px]泵[/size][/color])12VDC马达连接1号脚位,打入兰姆酒
 
#define LED8 8 // (1号[color=#333333][size=13px]泵[/size][/color])LED显示兰姆酒打入状况
 
 
#define Curacao 2 // (2号[color=#333333][size=13px]泵[/size][/color]) 柑香酒连接 2号脚位
 
#define LED9 9 // (2号[color=#333333][size=13px]泵[/size][/color])LED显示柑香酒打入状况
 
 
#define Orgeat 3 // (3号[color=#333333][size=13px]泵[/size][/color])连接 3号脚位
 
#define LED10 10 // 3号[color=#333333][size=13px]泵[/size][/color]上的LED连接到10号脚位
 
 
#define Grenedine 4 // (4号[color=#333333][size=13px]泵[/size][/color])连接 4号脚位
 
#define LED11 11 // 4号[color=#333333][size=13px]泵[/size][/color]上的LED连接到11号脚位
 
#define PineLime 5 // 5号[color=#333333][size=13px]泵[/size][/color]连接菠萝与莱姆汁
 
#define LED12 12 // 5号[color=#333333][size=13px]泵[/size][/color]上的LED连接到12号脚位
 
#define doorbell 13 // 用门铃启动开关
 
#define pump6 6 // 6号脚位连接大型潜入式[color=#333333][size=13px]泵[/size][/color]
 
 
int strobe=100; // 控制LED闪烁速度
 
int sensorPin = A0; // 模拟读取:用来侦测是否有按压门铃开关
 
int sensorValue = 0;  // 如果读取到门铃值,会写入这里
 
 
void setup()
 
{
 
pinMode(Rum, OUTPUT);
 
pinMode(LED8, OUTPUT);
 
pinMode(Curacao, OUTPUT);
 
pinMode(LED9, OUTPUT);
 
pinMode(Orgeat, OUTPUT);
 
pinMode(LED10, OUTPUT);
 
pinMode(Grenedine, OUTPUT);
 
pinMode(LED11, OUTPUT);
 
pinMode(LED12, OUTPUT);
 
pinMode(doorbell, INPUT);
 
pinMode(pump6, OUTPUT);
 
digitalWrite (LED8, LOW); // 1号LED亮
 
digitalWrite (Rum, HIGH); // 关闭1号[color=#333333][size=13px]泵[/size][/color]
 
digitalWrite (LED9, LOW);
 
digitalWrite (Curacao, HIGH); // 关闭3号[color=#333333][size=13px]泵[/size][/color]
 
digitalWrite (LED10, LOW);
 
digitalWrite (Orgeat, HIGH); // 关闭3号[color=#333333][size=13px]泵[/size][/color]
 
digitalWrite (LED11, LOW); // 关闭4号[color=#333333][size=13px]泵[/size][/color]
 
digitalWrite (PineLime, HIGH); // 关闭4号[color=#333333][size=13px]泵[/size][/color]
 
digitalWrite (LED11, LOW);
 
digitalWrite (Grenedine, HIGH);// 关闭5号[color=#333333][size=13px]泵[/size][/color]
 
digitalWrite (pump6, HIGH);// 关闭6号[color=#333333][size=13px]泵[/size][/color]
 
delay(1000); // 让继电器在开始运行前准备就绪
 
}
 
void loop()   // 这部分的程序代码会持续循环
 
{
 
sensorValue = analogRead(sensorPin);
 
// 这个部分是在让LED闪闪发亮,这样机器人看起来会比较酷
 
// 闪灯在按下开始钮的时候会停止
 
// 按下按钮时,LED会显示在运转的马达
 
digitalWrite (LED8, HIGH); // 开启8号脚位的LED
 
delay(strobe);         // 控制LED闪烁速度
 
digitalWrite (LED8, LOW); // 关闭8号脚位的LED
 
delay(strobe);
 
digitalWrite (LED9, HIGH); // 开启9号脚位的LED
 
delay(strobe);
 
digitalWrite (LED9, LOW); // 关闭9号脚位的LED
 
delay(strobe);
 
digitalWrite (LED10, HIGH); // 开启10号脚位的LED
 
delay(strobe);
 
digitalWrite (LED10, LOW); // 关闭10号脚位的LED
 
delay(strobe);
 
digitalWrite (LED11, HIGH); // 开启11号脚位的LED
 
delay(strobe);
 
digitalWrite (LED11, LOW); // 关闭11号脚位的LED
 
delay(strobe);
 
digitalWrite (LED12, HIGH); // 开启12号脚位的LED
 
delay(strobe);
 
digitalWrite (LED12, LOW); // 关闭12号脚位的LED
 
delay(strobe);
 
sensorValue = analogRead(sensorPin);
 
if(sensorValue < 300){
 
digitalWrite (LED8, HIGH); // 1号LED开启
 
digitalWrite (Rum, LOW); // 1号[color=#333333][size=13px]泵[/size][/color]开启
 
digitalWrite (LED9, HIGH);
 
digitalWrite (Curacao, LOW); // 2号[color=#333333][size=13px]泵[/size][/color]开启
 
digitalWrite (LED10, HIGH);
 
digitalWrite (Orgeat, LOW); // 3号[color=#333333][size=13px]泵[/size][/color]开启
 
digitalWrite (LED11, HIGH);
 
digitalWrite (Grenedine, LOW);// 4号[color=#333333][size=13px]泵[/size][/color]开启
 
delay(8000);       // 等待8秒钟打出1/4盎司液体
 
digitalWrite (LED10, LOW); // 关闭杏仁糖浆LED P3
 
digitalWrite (Orgeat, HIGH);   // 关闭杏仁糖浆[color=#333333][size=13px]泵[/size][/color] P3
 
digitalWrite (LED11, LOW);   // 5号[color=#333333][size=13px]泵[/size][/color]LED关闭
 
digitalWrite (Grenedine, HIGH); // 4号[color=#333333][size=13px]泵[/size][/color]关闭
 
delay(8000);     // 等待8秒钟打出1/4盎司液体
 
digitalWrite (Curacao, HIGH);   // 关闭柑香酒[color=#333333][size=13px]泵[/size][/color] 2号
 
digitalWrite (LED9, LOW); // 关闭柑香酒LED 2号
 
// 这个时候,柑香酒开关开启共16秒,送出1/2盎司。
 
delay(16000);   // 等待8秒钟打出1/4盎司液体
 
digitalWrite (LED8, LOW); // 关闭1号[color=#333333][size=13px]泵[/size][/color] LED
 
digitalWrite (Rum, HIGH);   // 关闭1号[color=#333333][size=13px]泵[/size][/color](兰姆酒)
 
digitalWrite (pump6, LOW);   // 开启菠萝汁[color=#333333][size=13px]泵[/size][/color](6号[color=#333333][size=13px]泵[/size][/color])
 
//digitalWrite (PineLime, LOW); // low 打开继电器,打开[color=#333333][size=13px]泵[/size][/color]
 
delay(2500); // 延迟4秒,送出菠萝汁。
 
digitalWrite (pump6, HIGH);     // 关闭菠萝汁[color=#333333][size=13px]泵[/size][/color](6号[color=#333333][size=13px]泵[/size][/color])
 
//digitalWrite (PineLime, HIGH); // 关闭菠萝汁继电器
 
}
 
}
由Makezine.TW官方授权   原文链接:Make

发表于 2017-4-19 22:02:30 | 显示全部楼层
感谢分享
回复 支持 反对

使用道具 举报

发表于 2017-4-20 08:02:59 | 显示全部楼层
有意思,谢谢分享
回复 支持 反对

使用道具 举报

发表于 2017-4-21 09:25:40 | 显示全部楼层
神了,不知道口感怎么样?
回复 支持 反对

使用道具 举报

发表于 2017-4-22 06:59:39 | 显示全部楼层
口感估计一般,因为没有酒保来振动,
回复 支持 反对

使用道具 举报

发表于 2017-4-25 13:46:22 | 显示全部楼层
hnyzcj 发表于 2017-4-22 06:59
口感估计一般,因为没有酒保来振动,

磁感搅拌 5秒即可
回复 支持 反对

使用道具 举报

发表于 2017-4-25 19:40:43 | 显示全部楼层
太厉害了
回复 支持 反对

使用道具 举报

发表于 2017-4-26 19:17:56 | 显示全部楼层
有趣~~
回复 支持 反对

使用道具 举报

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

本版积分规则 允许回帖同步到新浪微博  

  • 管理员
  • 8899
  • 291
  • 活跃会员

    活跃会员

  • 特邀作者

    特邀作者

  • 版主限定

    版主限定

推荐阅读

精华导读




公司简介| 联系我们| 小黑屋| 加入我们| 微博| 优酷| 英文网站| DF创客社区 ( 沪ICP备09038501号-4  
友情链接| 硬创邦| 花生壳社区| 模友之吧| 电子发烧友社区| 创客星球| 云汉电子社区| 电子工程网| 与非网| Arduino中文社区| 南极熊3D打印网| OneNET|

上海智位机器人有限公司  沪ICP备09038501号-4   

Powered by Discuz! X3.1

Licensed Comsenz Inc.

返回顶部 返回列表