Mug-O-Matic:模块化微型 CNC 绘图机器人!
0
全局






Mug-O-Matic 由 arduino nano 和定制的 PCB 分线板驱动,运行 3 个金属齿轮迷你爱好舵机。该设备放置在一个特定的 11 盎司咖啡杯上,用记号笔在杯侧进行绘画。图像会一直保留在那里,直到您用温肥皂水或魔术橡皮擦手动将其擦除。
Mug-O-Matic 的主要接口是一个操纵杆和蓝牙模块,用于操作,以及一个 USB 连接线,用于与电脑进行双向通信,以便用户根据编写的 Gcode 绘制详细的图形。绘制过程通常需要 1-10 分钟,具体取决于复杂程度,整个过程都令人着迷,就像一台 3D 打印机一样。
可绘制分辨率为0.3毫米,重复性极佳,能够反复描绘相同的线条。这个分辨率对于新奇的用途来说已经足够了,但我不会把它归类为玩具。
TinyCNC 系列有 60 多个零件和 2 个主要重复设计模式:
- 按扣式盖子- 无需工具即可更换 PCB 外壳盖。
- 20 毫米螺丝孔图案- 可将不同的模块拧在一起。
这款机器人由 4 节 AA 电池供电,我推荐使用Energizer Ultimate 锂电池。这些电池拥有恒定的高电压,在负载下或接近使用寿命时也不会电压骤降。(数据表在此。)这类电池的前期成本略高,但它们能显著提升性能,并且使用寿命足够长,值得为此付出前期成本。(无论如何,请勿使用充电电池,因为它们的工作电压较低,性能会受到影响。)
继续操作所需的软件下载链接:
Arduino IDE(Arduino用户界面)
NotePad++(强烈推荐用于查看/编辑/保存代码)
Github.com 存储库(发布了 Mug-O-Matic 和 Post-It-Plotter 绘图机器人的程序)
RepetierHost + Slic3r用于将模型转换为 gcode。(必需)
处理通过 USB 从计算机逐行发送命令。(必需)
收集零件、材料和工具









零件和材料:
完整的物料清单链接在这里。如果您只想自己动手修改和采购所有东西,请注意,该系列是围绕TinyCNC PCB 和特定的马克杯设计的,所以您需要从我这里获得足够的材料。
Mug-O-Matic 拥有 17 个独特的 3D 打印部件,全部采用硬质 PLA-Pro 塑料或柔性 TPU 打印而成。更新后的3D 可打印部件文件夹保存在此处:
如果您有自己的 3D 打印机,可以购买“创客套件”并打印您自己的塑料部件。附件是压缩包中的 STL 文件,请注意,所有部件的打印尺寸必须符合以下要求:喷嘴直径 0.4 毫米,层厚 0.2 毫米,周长 4 英寸,填充率 10%,并按照默认打印方向打印。无需支撑。除“限位支架”外,所有部件均首选eSun PLA+材料,该支架需使用Shore 95A TPU 材料,打印设置与上述相同。如果您不想麻烦地打印,可以从我这里购买全套套件!
工具:
*塑料螺丝: TinyCNC 系列产品使用同一种尺寸的螺丝固定,操作简便!这种“塑料”螺丝在拧入时会形成可重复使用的螺纹。因此,第一次拧入时可能会比较困难,所以我建议在组装零件之前,先将所有孔都拧紧形成螺纹,这样组装过程中就不必从奇怪的角度拧入。
*十字螺丝刀- 2 号。
*螺丝刀手柄(3D打印)- 粘在螺丝刀背面的手柄,可增强抓握力。需要注意的是,它是独立的部件,方便您缩小螺丝刀尺寸。手柄背面也经过特殊设计,方便安装伺服喇叭。
*磁铁 -小螺丝很容易掉落,因此将磁铁(包含在套件中)连接到驱动器上可以让您的生活变得更加轻松!
*油脂——对于所有滑动接触的表面,我们都希望涂抹一层薄薄的油脂。我建议用纸巾将豌豆大小的油脂涂抹在两个相互摩擦的表面之间。将油脂抹到缝隙中,然后擦掉90%多余的油脂,基本上就只剩下光亮的表面了!虽然感觉有点浪费,但涂抹过多的油脂可能会产生意想不到的效果,就像在深泥里行走一样!
*镊子(3D打印)- 用于抓取并拉动电缆穿过狭小的插槽。螺丝刀也可以安装在镊子孔内,形成一个摩擦棘轮,这样您也可以从侧面操作。
设置Arduino和中心伺服系统







首先,需要拆开Arduino包装并连接到电脑。组装前,需要将舵机电子设置到中心位置,以确保一切正常。
所有与 Mug-O-Matic 相关的代码都包含在同一个 Arduino Sketch 中。当我们想做其他事情时,只需取消注释某些函数即可。在 GitHub 仓库的GCODE READER 文件夹中,有一个名为“Arduino_Code_Gcode_Reader”的 Sketch。
复制其内容并将其粘贴到 notepad++ 中。确保 notepad++ 的语言设置为 C++,以便它建议的语法更正能够适用。然后,通过删除位于“设置”部分中的“AssemblyAid()”函数前面的两个斜杠,取消注释该函数。该函数包含一个永久循环,因此程序将一直执行汇编命令。
此功能将您的伺服引脚 s8 设置为遵循扫描运动(用于测试目的),并将引脚 s9 设置为进入中心位置以用于组装目的。
每次我说“将伺服电机居中”,其实就是把伺服电机插上电源,然后打开Arduino板的电源,让它居中。组装的时候可以保持电源开启,但要小心!这些伺服电机很小,如果在电源开启的情况下强行操作,可能会损坏它们!
将代码从 Notepad++ 复制并粘贴到 arduino IDE 中。请确保您的 nano 已通过 USB 连接到电脑,并且 arduino IDE 连接设置正确,如图所示。上传代码。(请注意,电池可以设置为“开”或“关”,但如果电池处于开启状态,请小心手臂摆动。)
请参阅附图中的 PCB 引脚图。注意,伺服电机电缆采用颜色编码,如果反向连接则不会移动,请参见附图。
第一个线性执行器组件:Y轴











使用伺服器附带的螺丝将其固定到变速箱盖的顶部。
记得在滑动的表面上轻轻涂抹油脂,包括:
- 齿轮的底面和变速箱盖的底部。
- 变速箱底座上的 4 个口袋位于机架跨接的柱子上。
- 接触后架壁的张紧器/手柄表面
用电动方式将舵机置于中心位置,然后如图所示,用压接工具/螺丝刀手柄将喇叭和齿轮垂直安装。用喇叭中心的机械螺钉将其拧紧,然后再次使用舵机包装袋中最后一个尖头小螺钉将喇叭固定在齿轮上,以防止晃动。使用 S8 针扫描功能验证运动是否顺畅。
现在将齿条放到变速箱底座上并使其居中。然后将伺服盖组件放到位,使齿条上的中心齿轮齿落入齿轮的中心齿谷中,同时将伺服电机置于中心位置。这样就能正确控制系统时钟。
拧紧3个塑料螺丝(不要拧得太紧),将所有部件固定在一起。使用扫描功能检查机架是否移动顺畅。如果出现卡顿或抖动,只需稍微松开机架上的两个塑料螺丝即可。
最后一部分是张紧器,我们用它来消除系统最后一点的晃动。它用一颗垂直的塑料螺钉固定。最后,将张紧器上的螺钉以45度角拧入,使墙面向外弯曲,直到墙面接触到位于中心位置的架子。无需完全拧入,只要接触到架子即可,防止晃动。使用扫描功能验证末端的顺畅运动。
组装末端执行器和柔性支架








这些部件连接到您刚刚搭建的 Y 轴执行器上。请注意图中部件的方向,因为它们很重要。
要组装末端执行器,请准备好M4带帽螺钉、M4螺母和图示的塑料零件。将螺钉放入圆形塑料旋钮中,轻轻按压到位。
然后,用镊子夹住塑料标记座内部的M4螺母,并用M4带帽螺钉将其夹住并拉入到位。利用将M4带帽螺钉完全拧紧的杠杆作用,将螺母和旋钮牢牢地压入到位。
将末端执行器按照图示方向安装到执行器上,使用两个塑料螺钉,将螺钉以对角线的方式分别插入四个孔中的任意一个。(我们只需要两个螺钉就能牢固连接。如果方便的话,您可以暂时移除上一步中安装的张紧器,以便为螺丝刀腾出空间。)
接下来,用镊子将4颗塑料螺丝装入柔性支架。然后安装支架,使带缝隙的一端朝向末端执行器。(参见CAD图)要拧动支架内的螺丝,请将螺丝刀穿过支架上的孔,如图所示。
构建杯盖组件 X 轴






拿起图示的零件,安装 X 轴伺服电机。注意,轴端稍微伸出一点,这样在拧紧螺丝时,它可以帮助组件穿过间隙。
我们将以特定的方向将两个大塑料片接合在一起,但首先在两个移动接触的表面之间涂上一层薄薄的油脂。
然后,将伺服器置于中心位置,如图所示对齐零件两侧的两个凹槽,然后按下喇叭并用机器螺钉将其拧紧。您需要使用螺丝刀的头部和手柄来按下喇叭。
将机械螺钉完全拧紧至合适的位置。然后使用伺服器包装袋中剩下的最后一个小尖头螺钉,将其牢固地拧入喇叭孔中,确保完全拧紧。这颗螺钉可确保喇叭牢固地固定在其所在的塑料部件上。
将伺服电机插入 s8 引脚进行扫描运动检查。运动应平稳,无抖动或失速(抖动表示机器螺丝拧得太紧!)。组件也应紧固,无自由摆动。
第二个线性执行器组件:Z轴











与第一个线性执行器组件完全相同的程序,但有 2 处例外。
1. 根据此步骤中的图片 5-7,您必须将 Z 轴伺服电缆穿过机架下方的凹槽,然后再拧紧将所有部件固定在一起的 3 个塑料螺钉。
2. 最后,暂时把手柄/张紧器取下来。它会妨碍下一步。
连接子组件







我在这里使用了 cad,因为我稍后改变了操作顺序,以便于您操作。)
将两个组件按图示方向安装在一起。使用全部 4 颗塑料螺丝将机架末端固定到活动支架上。拧紧螺丝时,不要拧得太紧,以免将孔挤破。
现在,您可以按照图示安装手柄了。(如果先安装的话,可能会碍事。)然后调整手柄上的张紧器,使其与齿条接触,防止齿条晃动。使用扫描功能验证是否已实现顺畅无晃动的运动。
请注意,您还可以添加支架,以便在手柄上容纳最多 4 支记号笔,但该组件不会包含在套件中。
组装PCB盒









操作顺序在这里很重要,因为后面的步骤可能会阻止前面的步骤。
1. 将 X 轴电机电缆穿过其所连接的杯盖部件中的唯一插槽。
2. 然后将 Zaxis 和 Xaxis 电缆引入 PCB 盒,再用螺丝固定盒子。
3. 然后在安装 PCB之前使用 2 个螺丝安装盒子。
4. 接下来将小矩形盖夹到 arduino nano 上。
我们将在下一步连接电缆,但请确保 Xaxis 电缆在盒子外面留有松弛部分,以便设备可以自由旋转。
安装电缆和笔。物理组装完成!












像这样布线和连接电缆:
- S2 = X(扭曲)
- S3 = Y(垂直)
- S4 = Z(将笔拉到杯子)(我必须在插槽 S1 中为夹持电缆腾出空间,因为电缆无法延伸到另一端。)
按照图示将操纵杆安装到底座上,方向很重要。操纵杆配有一条 5 针扁平线缆,用于将其连接到 PCB 上的 Joy1 排。确保线缆颜色与 PCB 和操纵杆之间的对应标签匹配。(GND、+5V、VRX、VRY、SW)
使用双面胶带将电池盒固定在PCB盒顶部,开关朝上,线缆与PCB电源接口位于同一侧。使用扎带进一步固定电池盒线缆,使其形成一个小环,防止多余的线缆四处晃动。
现在,您可以将设备放在杯子顶部。想要绘画时,请按图示安装 Sharpie Mini 笔。将笔帽按压在马克笔背面,并用它来确定安装位置的深度。不使用时,请盖上笔帽并将其存放在同一位置。
打印时请记住将杯子放在橡胶杯垫的顶部,以防止其滑动。
校准




返回 Notepad++ 程序,重新注释掉 AssemblyAid() 函数。然后取消注释 ManualControl 函数。同样,此函数包含一个永久循环,可让您使用操纵杆进行完全控制。
如果您遵循这些说明,您的所有电机都应该位于我的电机位置的几度范围内,此步骤是为了确保,特别是对于 X 轴。
上传代码并使用操纵杆控制笔的转动。如果 X 轴将笔置于塑料杯盖上方,则需要调整 Xdmin 变量。同样,Z 轴应控制笔在刚好浮出水面和完全啮合之间切换。(操纵杆也是我们用来啮合 Z 轴的按钮。)
完成这些调整后,尝试绘制一个算法形状。注释掉 ManualControl 部分,并取消注释以下三行:
// drawDotRect(Xmin+33,Ymin+29,Xmin+53,Ymin+49,true); //(x0, y0, x1, y1, 布尔笔切换)
//drawRectSpiral(Xmin,Ymin,Xmax,Ymax,6, true); //(x0, y0, x1, y1, 螺旋间距, 布尔笔切换)
//home(); detachAll(); delay(9999999999); //无限期地返回主界面并杀死单位
这将向您展示如何使用点进行绘图,而不是使用直线作为嵌套方块进行绘图,然后将机器归位并关闭。
Gcode绘图-准备图像







步骤摘要:
1. 创建或查找所需的图像。您可以使用微软画图工具编辑任何图像并将其保存为 PNG 文件。(要查找优质的即用型图像,请在谷歌搜索“黑白表情符号”或“黑白剪贴画”)
2. 可选:将图像转换为黑白高对比度轮廓。(白色变为空白处,黑色变为可打印部分。您可以使用彩色图像,但您可能不知道颜色会被检测为更白还是更黑)使用Pixlr.com或 Microsoft Office 工具。
3. 使用Convertio.com或autotracer.org将图像转换为 SVG 。
4. 将 SVG 转换为 STL 文件类型,选择 0.1 毫米厚度。SVG2STL.com 。
5. 可选:您可以在这里编辑 STL 文件:TinkerCAD.com
6. 可选:添加任意字体的文字。MXS Text-STL.com
行话注释:
- .PNG 文件 = 一种非常常见的图像文件。是互联网上最常见的无损图像压缩格式。
- .SVG 文件 = 2D CNC 软件(CNC 路由器和激光切割机)可读取的矢量图像。
- .STL 文件 = 标准 3d 可打印 3d 模型文件类型。
Repetier Slic3r初始设置





我们结合使用 RepetierHost 和 Slic3r 来准备 gcode。两者都是免费开源且积极支持的程序。
如果您是第一次执行此操作,则必须设置打印机尺寸。
Repetier 必须手动设置。点击“打印机设置”选项卡,输入图中所示的值即可完成设置。这些值是 Mug-O-Matic 的行程限制(以毫米为单位)。它们是根据可绘制区域通过数学方法得出的。这一点很重要,否则在绘制时,图像会在 X 轴方向“超出屏幕”。
您可能需要调整这些值,以匹配您在之前校准步骤中对 Xdmin 所做的任何更改。请注意,x 轴可以在 0 到 180 度之间旋转,但我们只使用了可移动区域的一部分,而且 Repetier 主机以毫米为单位,而不是度。我的 Xdmin 是 31 度,所以我将其除以 1.5 度/毫米,将其转换为毫米。(此设置基于杯子的尺寸。)我在 Repetier 中输入的结果是 20.67 毫米。
(请注意,齿条轴的度到毫米的转换是 2.25 度/毫米(180 度/80 毫米)。)
另外,在 Repetier 中,您可以获得我所展示的那个漂亮的青色马克杯背景,以帮助您定位,在打印机设置窗口中向下滚动并从此步骤导入名为“CoffeeMug-RepetierHost”的 STL 文件)
接下来,在 RepetierHost 的“切片器”选项卡中,从切片器下拉菜单中选择“Slic3r”,然后点击“配置”。这将打开 Slic3r。在 Slic3r 中,点击“文件”>“加载配置包”,并从Github导入名为“Slic3r-config-Bundle-Nov2018.ini”的文件。
描述起来有点拗口,但是一旦你掌握了它,你就可以绘制和编辑 gcode,从而快速进入和退出绘图!
绘图-将图像转换为Gcode并发送






要准备绘图,请单击 Repetier Host 中的“加载”以导入 STL 文件。
按你想要的比例缩放,尺寸越大越容易画。注意不要缩放Z轴,这样STL文件的高度就保持在0.1毫米。(否则完成后它会再次尝试描摹原图。)
然后点击带有 Slic3r 按钮的大切片来生成 gcode。您可以检查刀具路径,确保它只在 Z 轴上绘制一层。(您可以通过点击“编辑 Gcode”来查看生成的代码,但该代码现在完全可用。)
现在,点击“打印预览”选项卡,然后点击“保存到文件”按钮,导出 gcode。文件名很重要,因为我们的处理程序需要找到并读取该文件。请选择“GCODE”(不带引号)。
接下来,我们使用一个名为“ Processing”的程序来发送 gcode。在TinyCNC Github的 GCODE_READER 文件夹中,找到保存为文件名“Processing_Code”的特定代码。
请注意,您需要更改代码中的文件路径,才能更改 Gcode 的查找位置。我将我的文件保存在桌面上,但请注意,我的桌面文件路径的用户名与您的不同。右键单击您创建的 GCODE 文件的图标,然后检查文件路径。这就是处理代码的内容,但请注意
从这里复制文件夹路径并粘贴到 Processing 中,但请注意,必须将每个 \ 改为 //,因为 Processing 需要这样写。请参见 Processing 截图中的橙色框。
其余一切都是自动的。请确保您的 TinyCNC 已通过 USB 连接到电脑,并已打开电源。在处理过程中按下播放键,它就会开始绘图!与 arduino 的通信是双向的,因此它会发送一行代码,并等待收到 //LineComplete 反馈消息,然后再立即发送下一行代码。gcode 通常有数百甚至数千行,但整个绘图过程只需几分钟,具体取决于复杂程度。
实验和扩展









这个玩具的一大亮点在于,你可以把它重新拼装成各种不同类型的机器人。所有机器人都使用相同的硬件、电子设备和工具,有时还会改编相同的Arduino代码。
例如,如果您添加一个夹爪和几个操纵杆,就可以将 Mug-O-Matic 变成一个抓娃娃机。TinyCNC 的 PCB 是定制设计的,可以轻松添加您可能需要的电子配件,例如超声波传感器、内置蜂鸣器、最多两个操纵杆、红外遥控器以及安卓智能手机的蓝牙控制。
Tiny CNC 系列的所有零件都具有相同的安装模式,并且经过验证的设计,这意味着它是搭建任何能激发你好奇心的机器人的绝佳工具。(顺便说一下,它还可以驱动更大的伺服电机。)目前,我已经搭建了大约 10 种不同的实用组合。
这些模型和基本代码均可免费共享,但我主要支持的机器人是 Mug-O-Matic 和 Desktop Sentry。此外,STEP 文件也已共享,这意味着您可以根据需要修改 3D 模型。请尊重共享许可证 (CC BY-NC-SA),这意味着您可以做任何事,但不能出售它们。
我正在尝试的另一个实验是通过点阵绘图。基本上,给 Mug-O-Matic 发送一个由 1 和 0 组成的数组,代表每个可能的移动角度,让它沿着类似打字机的路径移动,每次到达 1 时就画一个点。
电子技巧和窍门









由于这个项目需要设计一块定制的 PCB(用 KiCad 制作),我想分享一些我学到的有趣的电子技巧和窍门。(顺便说一下,我是一名机械工程师,所以如果有些技巧比较浅显易懂,请多包涵,但我觉得它们确实很有趣。)
- PCB 的固定和定位是一个容易被忽视的问题。当你从电气角度思考时,你可能会忘记电路板本身也是一个机械部件。不要忘记预留足够数量的孔,以便定位和固定 PCB。
- 如果您有多个伺服器通过盲孔布线,则可以使用银笔标记伺服器及其接头,以便于识别。
- 表面贴装元件与通孔元件的成本考量有所不同。每种元件都需要不同的机器进行安装,因此如果您批量生产,请考虑更换设备的成本。另一方面,有时一种元件的成本会比另一种便宜得多。
- 增加走线厚度会增加成本,但不会增加走线宽度。如果需要降低走线电阻,加宽走线是首选。标准 PCB 铜厚为“1 盎司铜”,而增加到 2 盎司铜厚的成本会相当高。
- 由于机器安装费用,制作一个原型 PCB 的成本基本上与制作 10 个一样多。
- 前期投入可提高可靠性。选择铝电容而非电解电容,可以扩大可接受的输入电压范围,并延长使用寿命。
- 巧妙的设计可以避免用户操作失误。我将蓝牙模块安装到位,使得蓝牙PCB挡住了Nano上的USB接口。这是因为同时连接两个接口会让Arduino感到困惑,所以我避免了用户可能遇到的麻烦。
0
0
0
qq空间
微博
复制链接
分享