南通市网站建设_网站建设公司_Photoshop_seo优化
2026/1/14 15:03:11 网站建设 项目流程

摘 要

为了提高人类生产生活的工作效率,减轻人工抄写的工作强度,顺应科学技术的飞速发展,利用开发板为主控制器,通过下达指令控制位于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 晶振电路

2.2 驱动模块设计
本设计主要靠舵机驱动,其内部结构主要有小型马达、小型电路板、齿轮等,舵机的外部接线为黄、红、棕三种颜色。当舵机接收到接收机的信号后,其内部控制电路会检测此时舵机轴的角度,如果此时轴的角度与控制信号不同,则内部的小型马达就会转动到指定的角度,如果轴的角度与信号相一致,则马达不会转动。
方案一:SG90型号舵机是最基础,使用最广泛的舵机,并分为90度、180度、360度旋转角度版本,可以控制机械臂摆动并且调整笔的高度,其价格便宜,属于模拟舵机类型,适用于固定翼、直升机KT、小型机器人、机械手等模型。优点是性价比高,缺点是不够耐磨,实物如图2.4所示。

图2.4 SG90舵机实物图

2.4 总电路设计
在总电路设计之前,将左右臂舵机以及抬臂舵机固定好,再将机械臂组装好,其中,先将Arduino板与拓展版相连接,各个插口一一对应,再将三个舵机的红、黄、棕接线分别接到拓展板的对应位置,DS3231模块的VCC和GND分别对应着接到拓展板的IIC口,将左舵机的信号线接 Arduino拓展板的三口,右舵机信号线接 Arduino拓展板的四口,抬臂舵机信号线接 Arduino拓展板的五口,最后DS3231模块的SCL对应着接 Arduino拓展板的SCL口,DS3231模块的SDA对应着接 Arduino拓展板的SDA口。具体电路图如图2.8所示。

图2.8 总电路设计图

3 软件设计
3.1 Arduino开发环境
Arduino IDE是一款主要用于Arduino程序编写和开发的专业工具,支持在线烧录,用户可以免费下载修改程序。可通过USB供电,无需外接电源,也可以使用外部9VDC输入[6]。其应用强大,利用Arduino可以实现以往只能使用鼠标、键盘等输入的装置的互动内容。综上,这是一款容易入门,使用方便的编程软件,其界面十分简洁,如图3.1所示。

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

图3.2 主程序流程图
3.3 抬笔落笔的子程序设计
通过舵机的旋转原理可知,由于笔的抬落是由舵机控制的,舵机根据指定的参数值,旋转到指定位置。在笔抬起的过程中,根据机械臂的几何关系,90度角会起到最好的支撑作用;落笔的过程中,机械臂不再有支撑作用,所以回归零度角。由于角度是由脉冲决定的,每接收一个脉冲,舵机就会转动一个角度,这个角度是很小的,只有多个脉冲才能想要转动到需要的角度。当达到指定的角度时,便不会再转动陪。落笔的程序和起笔很是相似,只是转动的角度不一样。即用到的信号脉冲中的高电平的时间是2.0毫秒[8]。控制笔的程序流程如图3.3所示。

图3.3 控制笔的流程图
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所示。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询