×

基于Arduino Nano Every的麦格纳涂鸦时钟

消耗积分:0 | 格式:rar | 大小:5.54 MB | 2022-12-14

香香技术员

分享资料个

方案介绍

使用您 TrueType 字体在麦格纳涂鸦上绘制当前时间。

框架:
背框由 1/2 英寸波罗的海桦木胶合板制成。用 3/4 英寸白杨木制作“相框”,将 Magna Doodle 与胶合板隔开。切割步进电机的插槽,以便拉紧橡皮擦带。打开麦格纳涂鸦并将背面拧到“相框”上。在所有东西上钻孔,这样您就可以从框架背面重新组装 Magna Doodle 的正面。

麦格纳涂鸦:
将滑块固定在磁棒上的机制相当草率。所以,我做了一个“正方形”,你可以粘上它,让事情变得更加僵硬。另外,检查条形磁铁和屏幕背面之间是否有间隙。您可以在斑点上将磁铁垫掉,以获得干净的擦除效果。

3D打印:
我用 PLA 制作了 3D 打印部件,20% gyroid 填充物,顶部/底部 4 层,以及 4 个周长。但是,您使用的正常材料和设置应该可以正常工作。一切都应该打印好,除了机架(需要支撑)。它对我来说太粗糙了,我把它推到一根 1/8 英寸的杆上,然后在车床上把它弄平。

步进电机:
我最初是围绕短体 NEMA 17 步进电机设计的,但是两个顶部单元没有足够的扭矩并且变得非常热。所以,我选择了更长的(40mm)。由于这种变化,由于我安装所有东西的方式,我不得不将 Magna Doodle 撞出 3/4 英寸。我仍在使用短体步进电机作为橡皮擦,但更长的会更好。

归位:
与伺服系统不同,步进电机需要一种设置启动位置的方法。我最初的计划是对 TMC2130 驱动程序使用“无传感器归位”,但我无法让它按照我想要的方式工作。您可能会注意到,当您启动步进电机时,它们会“跳”到一个新位置。这些是在微步开始之前对齐所有东西的主要线圈。我们可以将这些位置之一用作家。找到靠近屏幕顶部的位置(但不要触摸顶部)。将所有东西固定到位并用热胶将支架粘在屏幕上。更改代码中的#defines HOME_X 和HOME_Y 以匹配这个新位置。你可以测量它,但我发现最好画一个大矩形并调整值,直到一切都是直的(参见子 DrawRect)。

规模:
SCARA设计被称为“5 杆平行臂” 。手臂仅使用两种尺寸的黄铜管用于接头:一种内径为 1/8 英寸,另一种尺寸更大。

对于两个中间接头:将 0.35" 长的小管粘到两个底部臂中。将 7/8" 长的 1/8" 钻杆压入顶部臂,在底部臂上滑动,然后按下外件应紧贴在钻杆上,中间件应能自由旋转。

对于底部接头(笔):将 0.35 英寸长的较大管子粘到右下臂中。将 1-1/4 英寸的较小管子压入或粘到左下臂中。小管应几乎延伸到绘图表面并一直延伸到薄帽。钻出一个盖子以适合较小的管子并放在左臂下方。滑动右下臂并按下薄盖。我在这个接头的底部使用了一块 5/8" 直径 x 3/8" 厚的 UHMW 塑料,以便在屏幕上滑动而不会刮伤。参见磁铁部分下的图片。

字体:
我想在设计中使用更好看的字体。起初,我在看好时字体,但想要更多种类。我发现TrueType字体只是由我可以在程序中制作的线条和二次贝塞尔曲线组成。

几乎任何 TrueType 字体都可以使用,但这里有一些选择它们的提示:

  • 不要使用斜体字体或字符侵入他人空间的字体。字体的每个字符都应包含在其自己的矩形中。如果没有,橡皮擦会擦掉前一个数字的一​​部分。
  • 使用字符之间有一点间距的字体。和上面一样的问题。
  • 不要使用复杂的字体。该程序必须将每个“轮廓”的所有点存储在一个数组中。我将它设置为保持 100 分,但您可以增加这个数字。如果它没有画出任何东西,这可能是原因。

我在附件中提供了几种免费字体。只需将编号目录保存到格式化为 FAT16 或 FAT32 的 SD 卡。以下是如何添加自己的字体:

  • 安装python:下载Python | Python.org
  • 为python安装FontTools:fonttools·PyPI
  • 在空目录中查找/下载您最喜欢的 TrueType 字体。我对 Open Type 字体 (otf) 没有任何运气。 Google Fonts和Font Squirrel是查找免费字体的好地方。
  • 打开保存字体的目录的命令提示符。运行命令“ttx -g myfontname.ttf”。这会将二进制 ttf 文件提取到许多 XML 文本文件中。
  • 找到 0 到 9 的字形文件并将它们重命名为仅包含名称(例如:zero.ttx、one.ttx、two.ttx。对冒号和 hmtx 文件执行相同操作。查看包含的目录以获取示例。删除所有其他文件。
  • 将这些文件保存到 SD 卡上的新目录中。目录必须是从 1 开始的连续编号。
  • 更新代码中 NUM_FONTS 的“#define”并上传到 Arduino。

实时时钟:
我买的RTC不是很准确。如果您想要更精确的设备,请尝试Adafruit DS3231 。要设置时间,请使用 Adafruit RTC 库中包含的示例。

磁铁:
我最初的计划是使用电磁铁来绘制时间。我延长了末端枢轴并缠绕在一些电磁线上。它起作用了,但是变得非常热并且图像很模糊(RoboClock 设计使用了类似的方法并且也很模糊)。所以,我选择了一个 9g 的伺服系统并设计了一个齿轮和齿条系统。在一小段 1/8" 钻杆的末端放一块 3mm x 1mm 的磁铁,然后在架子上粘上胶水。您可以尝试使用 2mm 的磁铁来制作更细的线条。绘制时,磁铁应该稍微缩回,这样它就不会不要总是在屏幕上摩擦。代码中有一个“#define”可以让你设置距离。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !