APP下载

手写抄字及绘图机设计

2020-02-03刘冰鑫李一夫李嘉睿毛宇蓬彭开祥

价值工程 2020年2期
关键词:坐标

刘冰鑫 李一夫 李嘉睿 毛宇蓬 彭开祥

摘要:本文基于Arduino单片机作为核心处理单元,将PC与写字绘图机相对接,使用者通过上位机软件,输出指令信息,通过USB将信息传输至写字绘图机,通过Arduino平台进行数据处理,处理后的信息控制步进电机,带动墨水笔完成书写和绘制。

Abstract: The design is based on the Arduino MCU as the core processing unit. The PC is connected to the writing plotter. The user outputs the command information through the host computer software, and transmits the information to the writing plotter via USB. The data is processed through the Arduino platform. The information controls the stepper motor and drives the ink pen to complete writing and drawing.

关键词:Arduino控制器;坐标;手写绘图

Key words: Arduino controller;coordinates;handwritten drawing

中图分类号:TP311                                       文献标识码:A                                  文章编号:1006-4311(2020)02-0157-04

0  引言

古时有活体印刷术,现在有打印机,这些能够印刷字体。而伴随着科技的进步、社会的发展,在日常生活和生产中有越来越多的地方将人工换成了机器。在这个追求个性与效率的当下,打印机并不能适应全部的情况。所以说一种新型的、便利的、能够兼并手写抄字及绘图的机器显得尤为的重要。

我们注意到了Arduino快捷全面且灵活的特性,最主要是包括硬件和软件部分。因此在Arduino平台上设计写字绘图机具有很好的教育意义,而且将复杂的开发变得简单易行,使得受过基本软硬件设计的大学生也可以在这个平台上进行专业的设计。

在Arduino开平台,配合机械和软件设计,开发出一款可以用户根据通过自己的笔划书写特点,定制自己的字体,实现个性化的手写和绘图机器。

1  绘图机硬件实现

1.1 Arduino控制器

Arduinounor3不仅能够自己对电路的源代码进行开发,还可以下载免费的例程来进行学习和参考。并且还有对应的Arduino控制器的驱动板,不单是节省了在电路上的时间,也变得更加安全、可靠。

1.2 步进电机驱动

L293D驱动板的设计是为了提供每个电机高达600mA,峰值1.2A的电流。在1安电流长时间通過的情况下,需要加上散热模块,要不然会将芯片烧掉。L293D驱动板与Arduino开发板能够很好的兼容。所以会有很多已经开发好的库文件用作参考或者是直接调用,这大大的减少了编写程序的工作量。L293D驱动板可以直接控制两个步进电机的运行。

1.3 步进电机

根据设计分析和硬件要求,选择步距角为0.9度的两相四线双极步进电机。步进电机的静态转矩主要由电机运行时的负载决定,但负载又分成惯性负载和摩擦负载两种[3]。通常,静力矩应该是摩擦载荷的两到三倍。当确定静力矩时,电机外形和长度便能确定下来[4]。电动机的自锁转矩与流过电动机的电流有关。

2  绘图机软件设计

系统控制软件程序功能具有usb与上位机实时通信[5],它负责控制机器的x轴和y轴、步进电机的移度和加速度,并从Arduino控制器中返回一些必要参数。一共有两种绘制方法,一种是位图绘制,另一种是矢量绘制。绘制位图的风格选择是利用程序和坐标变换实现方波和草图。矢量图的绘制主要采用SVG图形转换成直线,通过串口将线段坐标发送给处理器,最后控制电机的绘制。

主程序控制流程如图1。

2.1 坐标系统及坐标映射的设计

坐标系和坐标映射作为这个设计的主要部分,关系到写字或是绘图的起点。将原点设为左上角的步进电机旋转轴,并将横纵两个方向下定为增加方向。坐标映射是通过与控制软件通信获得的坐标,它将坐标映射到两弦的长度。上位机软件将所需要绘制的图像或是抄写文字转换成信息单元点元素,包括坐标、大小和灰度值。该功能的原理是分别利用串口通信得到前后两个坐标。将最大差值除以n,与当前最大线长比较,直到其小于最长线段以找到n的值。然后将差值n加上一个的坐标,转换成弦长,处理器执行一次输出。最后,返回到串行端口通信。

2.2 位图像素处理设计

像素方面的调节是决定图像清晰度和美观度的关键,并且对雕刻速度方面也有很大影响。在图像处理中,像素是从0到255的,其中0表示该像素为黑色,255表示该像素为白色。在这里可以理解成0个灯泡亮时黑色,255个灯泡亮是白色。该机器通过用相同厚度的墨水填充某个像素块来实现灰度值。如果选用的图片相对较暗,每个像素块需要的油墨量就会变多,相反的,当部分色块过浅甚至几乎看不见,对油墨量的要求就会下降。

2.3 矢量作图流程设计

矢量绘图的本质是坐标变换和坐标映射。通过舵机来实现将图像输入控制软件,解析并转换成直线段来控制舵机进行提笔和落笔。上位机软件将获得的信息转换成坐标发送到主控制器。最终通过主控制器将目标长度,电机运动利用三角函数转化出来,并到达给定长度。

在这里我们用了GRBL源代码。GRBL的核心是带有梯形加减速过程的DDA直线插补算法的实现,整个GRBL源代码中包含了以下内容[6]:

①串口中断接收上位机的指令,包括自定义的系统命令和G代码指令;

②串口指令解析,自定义的系统命令直接执行,G代码指令调用相关操作,这里只关注直线段、圆弧指令的解析;

③圆弧拆分成直线段进行插补的方法;

④多条直线段之间转角速度优化的前瞻速度控制的方法;

⑤单条线段梯形加减速过程换算成定时器定时不同时间长短来输出脉冲的方法;

⑥限位条件的判断及轴自动归位的方法;

⑦其它spindle、coolant接口等。

3  手写抄字及绘图机功能测试

这个设计主要创新点在于绘图并且可加入自行设计或手写字体的雕刻功能。

①打开安装的fountcreator,在文件选项中选择“打开已安装字体”(这里选择楷体)。(图2、图3)

②打开网页http://tool.oschina.net/encode?type=2,查询unicode码,查到“北京信息科技大学”的Unicode码为:北京信息科技大学

③再打开的文字库中查找汉字位置,这里使用快捷键Ctrl+F。进入文字编辑,将写好的字的图片导入。

④用手机拍摄写好的字体。

⑤调整阈值,将想要的文字显示清楚,然后将图片导入文字编辑窗口,删掉多余部分。(图6、图7)

⑥将手写的文字放到原文字的位置,然后将原文字删掉。

⑦用同样的方法将其他几个字改为手写体。

⑧保存該项工程。

⑨打开菜单的“文体”选项中属性对话框,修改字体族的名称。

⑩将自定义中的所有附加命名段都删除,添加新的自定义命名字段。

{11}导出字体,安装。实际打印效果如图11所示。

图片雕刻直接由上位软件微雕管家直接导入的道路图,效果如图12所示。

参考文献:

[1]Arduino中文社区.概述Arduino电机驱动扩展板L293D马达板 motor control shield[ER/0L].(2013-10-13).

[2]blankas.步进电机[EB/OL].(2015-07-20) http//baike.baidu.com/link?url=AtUkpIx-vsKkWhiE4ZGppIpjAKRN21peBNMesRQIFI

QDynSFfDg3uln6qTY_XQzD2XCvMq09uNdYvv7D6U5bFK.

[3]于海生.计算机控制技术[M].北京:机械工业出版社,2011:55-76.

[4]陈吕州.RRDUINO程序设计基础[M].北京:航空航天大学出版社,2014:24-171.

[5]CSDN.GR BL源代码分析[EB/OL].(2018-03-27).https://blog.csdn.net/xufeixueren/article/details/79663068.

猜你喜欢

坐标
回归基本概念,让“数”与“形”结合的更美
探讨向量坐标的典例问题
求解中考函数与几何图形结合的试题
大数据给教育带来了怎样的可能
《坐标》