基于arduino板的写字机设计

摘 要

为了提高人类生产生活的工作效率,减轻人工抄写的工作强度,顺应科学技术的飞速发展,利用开发板为主控制器,通过下达指令控制位于3D打印写字板下方的舵机来控制笔距离纸面的高低位置,以达到模仿人类抬笔落笔的目的。同时控制位于3D打印机械臂连接处的左右舵机,带动左右小臂进行运动,控制笔尖在板上的位置,配合着底部舵机的运动实现对数字等字体的书写。
结果表明,基于Arduino板的写字机能够代替人工手写,与此同时,整套装置也表现出极好的灵活性、智能化。同时也说明,智能机器人对于帮助人类完成书写工作以及提高人类的书写效率起到了至关重要的作用,机器人书写技术可以使机器人在通过对字体的学习后进行自主书写。而由于机器人写字技术具有灵活性、智能化、高可靠性、高精度的特点,因此,人们致力于将此项技术应用于生活实际工作中,以提高工作效率,并不断拓展写字机的功能。目前,写字机的应用领域已经大大拓宽,这意味着该课题的可行性。

关键词:机械臂; 舵机; 灵活性; 智能化

1 总体方案设计

1.1系统方案设计

写字机系统是由一个主控制器、一个执行环节来完成对笔的控制,使笔能够在写字板上写出简单的字体,通过对资料的采集,本系统的可供选择的有步进电机控制执行和舵机控制执行,具体方案如下:
方案一:写字机的整体系统由计算机、Arduino板、步进电机以及舵机组成,其中Arduino板为主控制器,步进电机和舵机则控制笔移动。文本信息由计算机转换成G代码传送给Arduino板,其内部程序会将G代码转换成相应的程序代码来控制步进电机和舵机的运动。写字机的主要动力驱动是由步进电机完成的,实践中控制每输出一个控制脉冲,电机就运转带动笔架,进而实现仿写字体。此方案可以仿写人类字体,精度高,但价格高,结构复杂,难实现。
方案二:写字机的整体系统由计算机、Arduino板、时钟模块和舵机四部分组成,其中Arduino板主要作为主控制器,三个舵机主要控制笔的抬落以及书写工作。主要由上位机将信号传送到下位机Arduino板中,在经过简单的几个坐标运算,计算出每个要写的数字或汉字中笔画的重要连接点,同时根据机械臂的几何原理,控制左右机械臂的舵机齿轮在0至180度之间转动,从而带动机械臂与笔的运动,进而进行写字。再利用时钟模块,可以书写出实时的时间。此方案的最大优点是拓展了智能写字机的功能,使其能够自动记录时间,并且价格便宜,结构简单,易实现,并且方便携带。其缺点是写字精度不够且只能写一些简单的汉字。
经上述比较,虽然方案一可以写出大量的切精度高的仿写字体,但是研究范围太大,且价格昂贵,而方案二价格便宜并且全舵机控制写字更容易实现,并且增加时钟模块拓展了传统写字机的功能,更具创新意义,故选择方案二通过舵机带动机械臂进行书写。

1.2 系统工作原理

智能写字机系统采用自动化控制,要求实现抬笔落笔、写字、记录时间,所以系统分为左右以及抬臂舵机部分、控制器部分、时钟模块部分,其中控制器采用Arduino板来控制写字信号的传输,时钟模块部分则采用时钟芯片传输实时时间信号,舵机部分则采用微型舵机完成对写字信号的执行,系统可以在每一分钟记录一下时间,也可以自行安排写字内容,即一个Arduino控制器,操控写字机系统中若干组成模块的正常运作,其控制系统框图如图1.1所示。

在这里插入图片描述

图1.1 控制系统框图

2 硬件电路的设计

2.1 主控模块设计

2.1.1 主控模块的选择

Arduino是个基于开放源代码的软硬件平台。他的硬件具有丰富的接口,有数字 I/O 口、模拟 I/O 口,同时支持 SPI、IIC、UART 串口通信。常见的主板型号有Arduino UNO、Arduino Mega 2560、Arduino101、Arduino Leonardo 等。其中适用于本设计的型号有Arduino Uno和Arduino101[2]。
方案一:Arduino101是一款拥有入门级别的主板,其拥有高性能、低功耗的特点,同时拥有神经元功能,适用于机器学习,但是其价格昂贵,有时则会出现手动复位的问题,其强大的功能反而被UNO的外形所限制。
方案二:Arduino UNO作为主控芯片时,实物如图2.1所示,其选用ATmega328 MCU控制器为基础,具备14个数字输入/ 输出引脚(其中6路可用于PWM输出)、6路模拟输入、一个 16MHz陶瓷谐振器、一个USB接口、一个电源插座、一个 ICSP接头和一个复位按钮[3]。其优点主要是性价比很高,同时提供了自动复位的设计,可以通过软件自动复位,不需要再按复位按钮,同时具有极高的稳定性,其缺点是性能中庸。
综上对比,UNO作为Arduino平台的参考标准模板,其价格便宜,更适合入门学习,并且相较于Arduino 101拥有更高的稳定性,所以选择Arduino UNO作为主控芯片,其具体实物如图2.1所示。
在这里插入图片描述

图2.1 Arduino UNO实物图

2.1.2 Arduino的最小系统

最小系统主要由两个部分组成,分别为:ATmega328p芯片 、晶振电路,其电路设计如图2.2所示。
在这里插入图片描述

图2.2 Arduino UNO最小系统
本设计中Arduino板的电压在4~5V之间可以正常工作。电源部分使用的是USB电源线,可以连接手机充电插头或者5V的移动电源给系统供电。
在晶振电路中有两个独立的反向放大器,即输入端XTAL1和输出端XTAL2,它们不仅可以与石英晶振配合,作为单片机的内部振荡器。而且能够单独作为一个元器件,需要被外部时钟驱动来使用。图2.3就是内部时钟模式。也就是说,晶振电路中的输入端和输出端分别连接两个电容和一个1MHz的石英晶振,内部振荡器便产生了。而与其连接的两个电容C4和C3会对振动频率起作用,进而起到调节频率的效果。
在这里插入图片描述

图2.3 晶振电路

3 主程序设计

程序部分主要包括笔的抬与落,舵机控制摆臂,此时笔落下。抬笔状态意味着没有书写任务;记录摆臂的轨迹,会以产生中断的方式对行程进行计数;写字部分是关键,摆臂的角度很关键。同时分析要书写的时间汉字,规划机械臂运行的轨迹,编写坐标点。
综上分析,程序主要分为:引脚的宏定义部分,擦除函数,抬笔落笔函数,空格函数,主函数等,主函数可以调用规划好的数字函数。这样可以方便的通过修改函数来修改字体,并且不用通过程序的修改。与此同时,在程序中改变调用次序,就可以改变数字或其他字的书写顺序,完成不同数字的书写。在初始化设置中,设置中断引腳(中断函数将在下面进行介绍),设置串口的波特率,打开串口,设置引脚为输出模式等[7]。循环体模块,主要是调用子函数,完成想写的单词或者是句子。主程序流程图如图3.2所示。
在这里插入图片描述

图3.2 主程序流程图

4系统调试

4.1系统硬件调试

在系统中,对于硬件电路的检测主要是看焊接时是否有毛刺、无光泽,电路是否有短路、开路、一些具有方向的元件是否方向弄错、电路设计错误等情况。对于漏焊、元件方向弄错的检测方法是仔细对照电路图检查实际焊接的元件是否缺少。如果发现没有或者对不上的情况下需及时的重新对照确定漏焊时及时的补焊。而对于短路、断路、虚焊这些情况,应采用数字万用表检测[9]。
经过测试,实物电路板与原理图一致,所有元器件的插接、方向均正确。
改SERVOLEFTNULL, SERVORIGHTNULL, SERVOFAKTORLEFT,SERVOFAKTORRIGHT的参数,前两个参数修改是为了使左右悬臂能够摆动至90度位置,后两个参数修改是为了能使左右悬臂能够摆动到180度位置,在调试的过程中,首先上传程序,让舵机开始带动机械臂运动,当左舵机达到180度时断开电源,调整右侧机械臂舵机为90度,同样的方式再调整右侧舵机,再调节左右臂另一个位置,要保持当一侧舵机转到180度时,另一位置都是垂直于舵机连线位置的[10]。具体角度如图4.1所示。
在这里插入图片描述

图4.1 摆臂角度平面图

4.2 系统软件测试

先将程序编译完成,在上传到Arduino板里,并且设置初始时间为12:30。首先要调节笔的高度,时笔尖刚好落在白板上,又不至于紧贴在白板上,影响书写,此时需要调节lift(0)函数的值,使其能够刚好触碰到白板,然后调节高抬笔的数值,使笔抬起的高度超过笔擦帽,而且要保证笔落下后刚好插进笔擦帽内,于是不断改变笔擦位置坐标( rubberx, rubbery),笔会在程序运行时先擦除掉白板上的痕迹,然后落笔写字,并且在不同的数字书写过程中会有轻微的抬笔。时间坐标修改成12:30,修改函数值结果如图4.2所示。
在这里插入图片描述

图4.2 修改结果图
经过多次测试后,写字机能够清晰准确写出时间数字,并且书写流畅,书写过后会自动擦除,所有软件调试功能都已通过,实现了本次设计的要求。书写时间12:30测试结果如图4.3所示。
在这里插入图片描述

图4.3 测试结果图

5 结 论

本篇论文针对减少人工书写的强度,同时代替人手动记录时间,在同时做其他工作时并不方便,造成记录偏差的问题,设计出一种基于Arduino的写字机。使用者可以根据自己的需求来记录时间数字,或是拓展其写字功能,写一些简单的汉字或图案,抑或用于设计一些文字LOGO,减少了人工书写或记录的强度。
设计是由Arduino板、舵机、DS3231模块以及外部伸展的电路组成。该系统使用的主控芯片是Arduino UNO,它使用内部的ATmega328p控制器来提高书写效率。系统用SG90舵机来控制笔架以及两个机械臂的运动,实现笔的高度以及在写字板上的位置。当接入DS3231模块时,舵机开始进入时间数字记录模式,对实时的时间开始书写,书写的速度完全可比拟人类的书写速度,并且在设计的时间点停下来。当没有插入DS3231时,还可以通过软件设计特定程序,控制写字机写出相应的汉字、英文、图案等。本设计利用ArduinoIDE软件编写C语言程序,使各个模块实现相应功能。并且Arduino板外围接口简单,功能完善,实现了基于Arduino 的写字机设计。
本设计经过了硬件以及软件的测试,各部分均达到预期功能:实现了在DS3231模块连接后对实时时间的记录功能,并且通过对程序的设计,可以实现对汉字、英文、以及图案的书写与描绘。该写字机操作简单,稳定性高,工作效率强。应用本设计产品,可以减轻人类书写工作的麻烦,并且高效记录时间,同时写拓展了智能写字机的功能。

文档学习写字安装还在学习中1、产品概览 AX4写字框架采用2020工业铝型材,配合5MM亚克力面,XY轴导向采用8mm直径光轴配合直线轴承运动,上下抬笔构采用微型直线导轨系统。本套件XY轴行程297×210mm,标配42步进电,SG90舵,建议运行速度一分钟3000mm。本套件采用开源Arduino系统,配合相关软件可在纸质材料上写字画图等。本套件含包装重量3KG左右,纸箱外形尺寸57×21×6cm。本套件为USB接口,连接电脑才能工作,建议WIN7系统。 2、零部件明细 (1)器框架 8mm光杆 450mm 2条、360mm 2条 2020欧标铝型材 421mm 1条、68mm 4条 LM8UU直线轴承 8个 亚克力 25片 F624法兰轴承 10个 同步轮 2个 同步带 1.5米 3D笔架 1个 扎带 25条 电线固定带 2条 直线导轨组件 1套 (2)电器控制 42步进电2个 Arduino控制器1套 SG90舵1个 电源1个 USB线1条 (3)螺丝清单 M2×6 十字螺丝=4 滑台 M2×10 十字螺丝=2 舵 M2×16 十字螺丝=2 直线导轨 M3×8 十字螺丝=8 步进电 M3×12 十字螺丝=8 亚克力固定 M3×20 十字螺丝=17 光轴固定+限位 M3×30 十字螺丝=4 电路固定 M4×12 十字螺丝=8 光轴紧定 M4×30 十字螺丝=1 后滑轮 M4×25 手拧螺丝=1 笔架 M4×40 十字螺丝=4 十字滑轮 M5×10 十字螺丝=8 亚克力与铝型材 M6×12 十字螺丝=6 铝型材 M2 六角螺母=4 M3 六角螺母=29 M4 六角螺母=5 M4 方块螺母=9 M5 铝型材螺母=8 φ3×20 塑料隔离柱=4 φ4×2 塑料隔离柱=2 φ4×7 塑料隔离柱=8 φ3×20 塑料隔离柱=4(激光头配套) M3×30十字螺丝=4(激光头配套) 3、架组装 (1)组装十字滑台
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值