《基于arduino板的写字机设计.docx》由会员分享,可在线阅读,更多相关《基于arduino板的写字机设计.docx(42页珍藏版)》请在课桌文档上搜索。
1、摘要Abstract弓I言1总体方案设计1.1 系统方案设计1.2 系统工作原理2硬件电路的设计2.1主控模块设计2.2驱动模块设计2.3时钟模块设计2. 4总电路设计3软件设计3. IArduino开发环境3 .2主程序设计4 .3抬笔落笔的子程序设计3. 4摆臂子程序设计4系统调试3.1 系统硬件调试4. 2系统软件测试结论参考文献附录1舵机及DS3231参数附录2源程序清单致谢摘要为了提高人类生产生活的工作效率,减轻人工抄写的工作强度,顺应科学技术的飞速发展,利用开发板为主控制器,通过下达指令控制位于3D打印写字板下方的舵机来控制笔距离纸面的高低位置,以达到模仿人类抬笔落笔的目的。同时控
2、制位于3D打印机械臂连接处的左右舵机,带动左右小臂进行运动,控制笔尖在板上的位置,配合着底部舵机的运动实现对数字等字体的书写。结果表明,基于ArdUino板的写字机能够代替人工手写,与此同时,整套装置也表现出极好的灵活性、智能化。同时也说明,智能机器人对于帮助人类完成书写工作以及提高人类的书写效率起到了至关重要的作用,机器人书写技术可以使机器人在通过对字体的学习后进行自主书写。而由于机器人写字技术具有灵活性、智能化、高可靠性、高精度的特点,因此,人们致力于将此项技术应用于生活实际工作中,以提高工作效率,并不断拓展写字机的功能。目前,写字机的应用领域已经大大拓宽,这意味着该课题的可行性。关键词:
3、机械臂;舵机;灵活性;智能化AbstractInordertoimprovetheefficiencyofhumanproductionandlife,reducetheintensityofmanualtranscription,andcomplywiththerapiddevelopmentofscienceandtechnology,Arduinoboardisusedasthemaincontrolchiptocontroltheservolocatedbelowthe3Dprintingboardbyissuinginstructionstocontroltheheightofthe
4、pentipfromthepapersurface,soastoachievethepurposeofimitatinghumanliftingandwriting.Atthesametime,controltheservolocatedattheconnectionof3Dprintingforearm,drivetheleftandrightforearmstomove,controlthepositionofthepentipontheboard,andwritethenumberandotherfontsaccordingtothemovementofthesteeringgearat
5、thebottom.TheresultsshowthatthewritingmachinebasedonArduinoboardcanreplacemanualhandwriting,andhasaspeedandstabilityexceedingthatofhumanhandwriting.Atthesametime,thewholedevicealsoshowsexcellentflexibilityandintelligence.Atthesametime,italsoshowsthatintelligentrobotsplayacrucialroleinhelpinghumansco
6、mpletewritingandimprovingtheirwritingefficiency.Robotwritingtechnologycanenablerobotstowriteindependentlyafterlearningfontsorafterreceivinginstructionsfromclockmodules.Thankstotheflexibilityandintelligenceofthewritingmachine,peoplewillbeabletoapplythistechnologytotheirlivesandconstantlyexploititsfun
7、ctions.Atpresent,theapplicationfieldofwritingmachinehasbeengreatlyexpanded,whichmeansthefeasibilityofthesubject.Keywordszmechanicalarm;servo;flexibility;intelligent引言由于ArdUino入门简单,对电路知识的要求并不高,并且发展前景好,所以人们越来越重视此领域的开拓,同时,由于5G时代的到来,VR.AR等可穿戴设备的应用将会更加普及,这就为ArdUinO提供了更多的发展机会,而且随着科技的进步,人们创新意识显著增强,ArdUinO这
8、种易上手、稳定性高的的技术将会更受人们的青睐。本项目主要研究写字机实现书写数字并记录时间的问题,比较深入地研究了ArdUinO板、动力学、轨迹规划、舵机驱动等问题。文字是人类文明延续的重要媒介,知识经济时代已经到来,生产化的高科技产品已经逐渐融入到人类的生活中。机器人技术是一种新的科技领域,生产与生活中不可或缺的一部分。并且为国家的制造业打下了新的基础。不仅如此,这项技术正在逐渐的改变我们的生活,原本繁杂的工作变得越来越简单易处理,原本靠人类自身无法实现的工作也逐渐变成了可能,可以说是开创了一个新时代。目前为止,人类记录时间的、记录数据的方式还停留在手动阶段,虽然很多电子设备中都内置了精密的时
9、钟,但并不能人性化的将时间或重要的数据自动记录下来,而智能写字机的出现将代替人类完成这些繁杂的工作。智能写字机综合了计算机、控制论、仿生学等多学科知识的技术产品,其应用场景广泛,不仅是Al技术的新思维,更是对提高人类书写工作效率有着重大意义。不仅如此,写字机的功能极具开发价值,不仅可以成为记录时间的工具,也可以加入激光头进行激光雕刻,甚至还可以绘制一些复杂的绘画作品。可以说写字机不光是一台会写字的机器,还是一个多功能的艺术创作机器人。在写字机进行绘画的实验中,王晓丽、宫晓博等改善了笔架的运行轨迹,使绘画作品更加生动;此外,在写字机汉字书写实验中,南京林业大学机器人研究所也取得不错的成果,成功的
10、对笔的运行轨迹进行了重新编程,拓展了更多书写字体。与此同时,写字机在国外也有了多项研究成果。MFCrainie等人提出了一种促进证书或传统信用证创建的方法,实现了写字机的机械臂可以在斜面上进行书写。KTahara等人还提出了一种新的控制方案,该方案实现了使笔尖可以从初始位置运动到平面指定任意位置叫。当前,写字机器人存在如下三个方面的问题:写字机器人不够智能,太过于依赖已有的程序,如果程序发生错误,就会影响整个写字过程。系统缺乏异常容错能力,且系统自身并不能找到错误原因。当前的写字机器人只是在同一水平面简单的程序化的进行书写,不能实施多角度的操作,只局限一个方向。当前的写字机器人只局限于纸质品上
11、绘画,写字操作不够精细,且需要人工辅助。最重要的是写错之后不能自动修改。本项目围绕如下几个方面进行研究:关于机械控制,结合机械结构、前进和后退运动学、工作空间、力学和轨迹规控制写字机。对在空间平面、柱面及球面的多角度绘制。模块化设计,针对不同材料、笔触模块的相应设计。标绘时钟,为了能够有效地记录时间数字,需要对时钟模块进行学习。仿生人写字绘画的动作,使得绘制的作品更具人性。本文的主要工作如下:第一章重点说明了系统的方案设计,主要阐述了系统的功能和设计目标,并根据设计目的选择合适的驱动模块,做出了系统的总体方案设计框图。第二章介绍了写字机的硬件设计,其中包含各个模块的设计原理,并根据系统的设计要
12、求选取Arduino板的型号,选择最适合要求的舵机和时钟模块。本章重点介绍了舵机模块的电路设计,以及舵机与ArdUinO板之间的协作。第三章讲述了系统的软件设计;简要介绍了系统的开发环境以及重要函数和系统流程图。第四章是写字机的调试部分,囊括了系统的硬件测试以及软件测试,并就本设计出现的问题,做了简单的论述以及解决办法。1总体方案设计1.1 系统方案设计写字机系统是由一个主控制器、一个执行环节来完成对笔的控制,使笔能够在写字板上写出简单的字体,通过对资料的采集,本系统的可供选择的有步进电机控制执行和舵机控制执行,具体方案如下:方案一:写字机的整体系统由计算机、Arduino板、步进电机以及舵机
13、组成,其中Arduino板为主控制器,步进电机和舵机则控制笔移动。文本信息由计算机转换成G代码传送给Arduino板,其内部程序会将G代码转换成相应的程序代码来控制步进电机和舵机的运动。写字机的主要动力驱动是由步进电机完成的,实践中控制每输出一个控制脉冲,电机就运转带动笔架,进而实现仿写字体。此方案可以仿写人类字体,精度高,但价格高,结构复杂,难实现。方案二:写字机的整体系统由计算机、Arduino板、时钟模块和舵机四部分组成,其中Arduino板主要作为主控制器,三个舵机主要控制笔的抬落以及书写工作。主要由上位机将信号传送到下位机ArdUino板中,在经过简单的几个坐标运算,计算出每个要写的
14、数字或汉字中笔画的重要连接点,同时根据机械臂的几何原理,控制左右机械臂的舵机齿轮在0至180度之间转动,从而带动机械臂与笔的运动,进而进行写字。再利用时钟模块,可以书写出实时的时间。此方案的最大优点是拓展了智能写字机的功能,使其能够自动记录时间,并且价格便宜,结构简单,易实现,并且方便携带。其缺点是写字精度不够且只能写一些简单的汉字。经上述比较,虽然方案一可以写出大量的切精度高的仿写字体,但是研究范围太大,且价格昂贵,而方案二价格便宜并且全舵机控制写字更容易实现,并且增加时钟模块拓展了传统写字机的功能,更具创新意义,故选择方案二通过舵机带动机械臂进行书写。1.2 系统工作原理智能写字机系统采用
15、自动化控制,要求实现抬笔落笔、写字、记录时间,所以系统分为左右以及抬臂舵机部分、控制器部分、时钟模块部分,其中控制器采用ArdUino板来控制写字信号的传输,时钟模块部分则采用时钟芯片传输实时时间信号,舵机部分则采用微型舵机完成对写字信号的执行,系统可以在每一分钟记录一下时间,也可以自行安排写字内容,即一个ArdUinO控制器,操控写字机系统中若干组成模块的正常运作,其控制系统框图如图1.1所示。图1.1控制系统框图2硬件电路的设计2.1 主控模块设计2.1.1 主控模块的选择Arduino是个基于开放源代码的软硬件平台。他的硬件具有丰富的接口,有数字I/O口、模拟I/O口,同时支持SPI、I
16、C、UART串口通信。常见的主板型号有ArdUinOUN0、ArduinoMega2560ArduinolOlArduinoLeonardo等。其中适用于本设计的型号有ArdUinOUnO和ArdUinolOll2。方案一:ArduinolOl是一款拥有入门级别的主板,其拥有高性能、低功耗的特点,同时拥有神经元功能,适用于机器学习,但是其价格昂贵,有时则会出现手动复位的问题,其强大的功能反而被UNO的外形所限制。方案二:ArdUinoUNo作为主控芯片时,实物如图2.1所示,其选用ATmega328MCU控制器为基础,具备14个数字输入/输出引脚(其中6路可用于PWM输出)、6路模拟输入、一个
17、16MHZ陶瓷谐振器、一个USB接口、一个电源插座、一个ICSP接头和一个复位按钮3。其优点主要是性价比很高,同时提供了自动复位的设计,可以通过软件自动复位,不需要再按复位按钮,同时具有极高的稳定性,其缺点是性能中庸。综上对比,UNO作为Arduino平台的参考标准模板,其价格便宜,更适合入门学习,并且相较于Arduino101拥有更高的稳定性,所以选择ArduinoUNO作为主控芯片,其具体实物如图2.1所示。图2.1ArduinoUNO实物图2.1.2 Arduino的最小系统最小系统主要由两个部分组成,分别为:ATmega328p芯片、晶振电路,其电路设计如图2.2所示。5VAVCCKO
18、(ADOFOKn)FCl (ADCI rNTO)AJtEFFC2(ADC2FyTIOFC(ADCFCrTII) PC4 (ADCiSDAKTCTID FC5(ADC5SCtFCTTU) FCI(InrTPCIXTN)PDO (XXD FOTTlO mi r) 皿(TxTopaXT FDJ(K*oc2i) 4OxnCXcXTO) PDf (FOKT:1 OCUTD PD6 OCBrt22 OCXA 心助QRHnJ 4】)FM (POXTO CLKOOl)PBi (FaxnocU) 2 (PONT: OClB) FftJ OCKT) OCU MOtflnM(KZKT4ffS0)Go5OCFCIrG
19、XD n (PCKT7UAxalogini图2.2ArduinoUNO最小系统本设计中Arduino板的电压在4、5V之间可以正常工作。电源部分使用的是USB电源线,可以连接手机充电插头或者5V的移动电源给系统供电。在晶振电路中有两个独立的反向放大器,即输入端XTALl和输出端XTAL2,它们不仅可以与石英晶振配合,作为单片机的内部振荡器。而且能够单独作为一个元器件,需要被外部时钟驱动来使用。图2.3就是内部时钟模式。也就是说,晶振电路中的输入端和输出端分别连接两个电容和一个IMHZ的石英晶振,内部振荡器便产生了。而与其连接的两个电容C4和C3会对振动频率起作用,进而起到调节频率的效果。图2.
20、3晶振电路2.2驱动模块设计本设计主要靠舵机驱动,其内部结构主要有小型马达、小型电路板、齿轮等,舵机的外部接线为黄、红、棕三种颜色。当舵机接收到接收机的信号后,其内部控制电路会检测此时舵机轴的角度,如果此时轴的角度与控制信号不同,则内部的小型马达就会转动到指定的角度,如果轴的角度与信号相一致,则马达不会转动。方案一:SG90型号舵机是最基础,使用最广泛的舵机,并分为90度、180度、360度旋转角度版本,可以控制机械臂摆动并且调整笔的高度,其价格便宜,属于模拟舵机类型,适用于固定翼、直升机KT、小型机器人、机械手等模型。优点是性价比高,缺点是不够耐磨,实物如图2.4所示。图2.4SG90舵机实
21、物图方案二:MG90舵机相当于SG9O舵机的金属齿轮加强版,可以控制机械臂的摆动以及调整笔架的高度,安装尺寸与SG90略微不同,其优点是采用金属舵机齿轮,更加耐磨,但是缺点是其价格也更贵,而且重量达13.6g,不够轻便,适用于450直升机斜盘舵机、小型机器人、航模遥控飞机等。综上比较,SG90舵机更加便宜与轻便,并且能够契合本设计功能的需要,与MG90舵机想比性价比更高。所以选择SG90型号舵机作为驱动,其具体电路图如图2.5所示。VcceatgndVCCBAT3GND年机1VccnArc图2.5SG90航机电路图2. 3时钟模块设计时钟模块是通过ArdUinO板内部或者外部振荡器,处理所提供
22、的高频脉冲,成为ArdUino板内部时钟信号。作用是来配合外部晶体实现振荡的电路,提供给Arduino板一个运行时钟。方案一:DS1302时钟的优点是功耗较低并且性能高,采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAl数据。与此同时,DS1302拥有主电源/后各电源双电源引脚,具备了电流充电的能力。但是DS1302时钟的缺点也很明显,其精度不够高,容易受到外部环境影响4o方案二:DS3231时钟的优点是当电源断开时仍能计时,并且精确度高、成本低、使用寿命长。晶振不仅提高了元器件的精确度,还减少了生产线的元件数量。与此同时:DS3231还提供商用级和工业级温度
23、范围,采用16引脚、300mil的So封装S。高精度的电压基准和比较器电路用来监视VCC状态,检测电源故障,提供复位输出,能够及时自动切换到备份电源。除此之外,DS3231还有其他一些优点,其高稳定性保证了控制电路可以进行自动的检测,实现主电源与备用电源的切换。当主电源重新加电或电压值返回到容许范围内时,片上复位功能可用来重新启动系统微处理器。实物如图2.6所示。图26DS3231模块实物图综上方案比较,由于DS1302模块精度不高而且不够稳定,在设计中并不容易控制,所以最终采用DS3231模块,其具体电路图如图2.7所示。图2.7DS3231模块电路图2.4总电路设计在总电路设计之前,将左右
24、臂舵机以及抬臂舵机固定好,再将机械臂组装好,其中,先将ArdUinO板与拓展版相连接,各个插口一一对应,再将三个舵机的红、黄、棕接线分别接到拓展板的对应位置,DS3231模块的VCC和GND分别对应着接到拓展板的IC口,将左舵机的信号线接ArdUinO拓展板的三口,右舵机信号线接ArdUinO拓展板的四口,抬臂舵机信号线接ArdUino拓展板的五口,最后DS3231模块的SCL对应着接ArdUino拓展板的SCL口,DS3231模块的SDA对应着接ArdUino拓展板的SDA口。具体电路图如图2.8所示。I/Vcc PVM GND5USvcc PWM GND PWM GNDVCC+ GNDUt
25、-TT-一高图2.8总电路设计图3软件设计3.IArduino开发环境ArduinoIDE是一款主要用于ArdUino程序编写和开发的专业工具,支持在线烧录,用户可以免费下载修改程序。可通过USB供电,无需外接电源,也可以使用外部9VDC输入0。其应用强大,利用ArdUino可以实现以往只能使用鼠标、键盘等输入的装置的互动内容。综上,这是一款容易入门,使用方便的编程软件,其界面十分简洁,如图3.1所示。0sketchmayllaIArduino1.7.8X文件编辑项目工具帮助心sketchmaylIavoidsetupOA/putyousetupcodshers,totnoneevoidloo
26、p()/putyoumeincodehere.torunrepeatedlyAiduinoUnoonCOMl图3.IArduinoIDE界面3. 2主程序设计程序部分主要包括笔的抬与落,舵机控制摆臂,此时笔落下。抬笔状态意味着没有书写任务;记录摆臂的轨迹,会以产生中断的方式对行程进行计数;写字部分是关键,摆臂的角度很关键。同时分析要书写的时间汉字,规划机械臂运行的轨迹,编写坐标点。综上分析,程序主要分为:引脚的宏定义部分,擦除函数,抬笔落笔函数,空格函数,主函数等,主函数可以调用规划好的数字函数。这样可以方便的通过修改函数来修改字体,并且不用通过程序的修改。与此同时,在程序中改变调用次序,就可
27、以改变数字或其他字的书写顺序,完成不同数字的书写。在初始化设置中,设置中断引腕1(中断函数将在下面进行介绍),设置串口的波特率,打开串口,设置引脚为输出模式等7。循环体模块,主要是调用子函数,完成想写的单词或者是句子。主程序流程图如图3.2所示。开始定义各舵机引脚初始化各舵机角度为90度修改程序调试程序执行程序编辑控制笔以及摆臂子程序图3.2主程序流程图3. 3抬笔落笔的子程序设计通过舵机的旋转原理可知,由于笔的抬落是由舵机控制的,舵机根据指定的参数值,旋转到指定位置。在笔抬起的过程中,根据机械臂的几何关系,90度角会起到最好的支撑作用;落笔的过程中,机械臂不再有支撑作用,所以回归零度角。由于
28、角度是由脉冲决定的,每接收一个脉冲,舵机就会转动一个角度,这个角度是很小的,只有多个脉冲才能想要转动到需要的角度。当达到指定的角度时,便不会再转动陪。落笔的程序和起笔很是相似,只是转动的角度不一样。即用到的信号脉冲中的高电平的时间是2.0毫秒8。控制笔的程序流程如图3.3所示。图3.3控制笔的流程图3. 4摆臂子程序设计依据余弦定理和勾股定理可以得出两个机械臂间存在着的几何关系和舵机转动的角度关系,在写字板上建立坐标系,以右侧舵机的写字板直角为坐标原点,确定不同数字或汉字的坐标,使笔尖能够在坐标间运动,从而写出数字或汉字。因此,以左右舵机中间点为原点,向左为X轴,向前为y轴建立直角坐标系,先求
29、坐标位置与左舵机转动角度的关系,再设笔尖在白板上的位置为(x,y),那么左右舵机的位置分别为(Xol,YO1),(XO2,YO2)oServorightnuli为右臂转到o度位置时舵机的角度,所以我们就可以确定右舵机转动的每一角度与笔的坐标的关系控制坐标位置的函数,左臂也是如此,把机械臂移动到目标位置的摆动角度程序设计如下:voidset_XY(doubleTx,doubleTy)doubledx,dy,c,al,a2,Hx,Hy,;doublekey_number;delay(l);dx=Tx-01Y;dy=Ty-01Y;c=sqrt(dx*dx+dy*dy);al=atan2(dy,dx)
30、;a2=returnangle(LI,L2,c);key_number=(floor(a2+al-M_PI)*SERVOFAKTORLEFT)+SERVOLEFTNULL);PWMl=(int)key_number;a2=retum_angle(L2,L1,c);Hx=Tx+L3*cos(al-a2+0.621)+M_PI);Hy=Ty+L3*sin(al-a2+0.621)+M_PI);dx=Hx-O2X;dy=Hy-O2Y;c=sqrt(dx*dx+dy*dy);al=atan2(dy,dx);a2=returnangle(L1,(L2-L3),c);key.number=(floor(a
31、l-a2)*SERVOFAKTORRIGHT)+SERVORIGHTNULL);PWM2=(int)key_number;Delay20ms();4系统调试4.1系统硬件调试在系统中,对于硬件电路的检测主要是看焊接时是否有毛刺、无光泽,电路是否有短路、开路、一些具有方向的元件是否方向弄错、电路设计错误等情况。对于漏焊、元件方向弄错的检测方法是仔细对照电路图检查实际焊接的元件是否缺少。如果发现没有或者对不上的情况下需及时的重新对照确定漏焊时及时的补焊。而对于短路、断路、虚焊这些情况,应采用数字万用表检测19。经过测试,实物电路板与原理图一致,所有元器件的插接、方向均正确。改Servoleftnu
32、luservorightnull9Servofaktorleft,SERVOFAKTORRIGHT的参数,前两个参数修改是为了使左右悬臂能够摆动至90度位置,后两个参数修改是为了能使左右悬臂能够摆动到180度位置,在调试的过程中,首先上传程序,让舵机开始带动机械臂运动,当左舵机达到180度时断开电源,调整右侧机械臂舵机为90度,同样的方式再调整右侧舵机,再调节左右臂另一个位置,要保持当一侧舵机转到180度时,另一位置都是垂直于舵机连线位置的10。具体角度如图4.1所示。图4.1摆臂角度平面图4. 2系统软件测试先将程序编译完成,在上传到ArdUino板里,并且设置初始时间为12:30。首先要调
33、节笔的高度,时笔尖刚好落在白板上,又不至于紧贴在白板上,影响书写,此时需要调节Iift(O)函数的值,使其能够刚好触碰到白板,然后调节高抬笔的数值,使笔抬起的高度超过笔擦帽,而且要保证笔落下后刚好插进笔擦帽内,于是不断改变笔擦位置坐标(rubberx,rubbery),笔会在程序运行时先擦除掉白板上的痕迹,然后落笔写字,并且在不同的数字书写过程中会有轻微的抬笔。时间坐标修改成12:30,修改函数值结果如图4.2所示。ShdoCkIArhirCt.?B74R8U*0*=lH).rr三mWinlcuiotB)IdUoeshk1HlI,图4.2修改结果图经过多次测试后,写字机能够清晰准确写出时间数字
34、,并且书写流畅,书写过后会自动擦除,所有软件调试功能都已通过,实现了本次设计的要求。书写时间12:30测试结果如图4.3所示。图4.3测试结果图结论本篇论文针对减少人工书写的强度,同时代替人手动记录时间,在同时做其他工作时并不方便,造成记录偏差的问题,设计出一种基于ArdUinO的写字机。使用者可以根据自己的需求来记录时间数字,或是拓展其写字功能,写一些简单的汉字或图案,抑或用于设计一些文字LOGO,减少了人工书写或记录的强度。设计是由ArdUinO板、舵机、DS3231模块以及外部伸展的电路组成。该系统使用的主控芯片是ArdUinoUN0,它使用内部的ATnIega328p控制器来提高书写效
35、率。系统用SG90舵机来控制笔架以及两个机械臂的运动,实现笔的高度以及在写字板上的位置。当接入DS3231模块时,舵机开始进入时间数字记录模式,对实时的时间开始书写,书写的速度完全可比拟人类的书写速度,并且在设计的时间点停下来。当没有插入DS3231时,还可以通过软件设计特定程序,控制写字机写出相应的汉字、英文、图案等。本设计利用ArdUinOIDE软件编写C语言程序,使各个模块实现相应功能。并且ArdUinO板外围接口简单,功能完善,实现了基于ArdUino的写字机设计。本设计经过了硬件以及软件的测试,各部分均达到预期功能:实现了在DS3231模块连接后对实时时间的记录功能,并且通过对程序的
36、设计,可以实现对汉字、英文、以及图案的书写与描绘。该写字机操作简单,稳定性高,工作效率强。应用本设计产品,可以减轻人类书写工作的麻烦,并且高效记录时间,同时写拓展了智能写字机的功能。参考文献UITimothyDBarfoot,机器人学中的状态估计M.西安:西安交通大学出版社,2017.4:20-252吴竹兵.多自由度灵巧手控制系统的设计与研究D.山西:中北大学出版社,2017.4:123-1303刘勇,张东升,齐高峰,基于Arduino的一种桌面型激光雕刻系统的研发Ul花炮科技与市场,2018,92(2):77-854兰栋,张国恒,王昭武,蓝剑锋,苏梦梦,王艺翔.基于Arduino的激光雕刻机
37、J.电子世界,2018,38(1):35-405田文举,李华,叶葬,刘庆基于arduino平台的两轴激光雕刻机设计J.杭州:南方农机,2018,49(8):81-836伍文进,徐中云,严帅.基于Arduino两轴激光雕刻机的研究与实现J.机床与液压,2018,27(8):99TOO7张宏伟.单片机应用技术M.北京:北京理工大学出版社,2016.6:105-1108张培仁.机器人系统设计与算法M.北京:中国科学技术大学出版社,2008.3:50-609MykePredko.机器人控制器与程序设计M.北京:科学出版社,2004.4:10-2510伍文进,徐中云,严帅.基于ArdUinO两轴激光雕刻
38、机的研究与实现J.机床与液压,2018,48(8):53-6011陈玉,谢玮,孟宪民,杨东岳.智能写字机器人设计J.计算机测量与控制,2016,23(1):45-4912石琪琦,庄杰,黄炜,张佳东,左轩尘.基于姿态识别的机器人人机交互系统设计J计算机工程与设计,2015,25(7):123-12513王光建,廖志勇,陈雪华.机器人写字技术及其运动参数J.重庆:重庆大学学报(自然科学版),2003,31(9):78-8014章杨清,刘政凯.利用分维向量改进神经网络在遥感模式识别中的分类精度JJ.环境遥感,1994,81(1):140-14215章杨清,刘政凯.MOTOMAN-UP6机器人写字功能
39、设计与实现J.机械制造与自动化,2011,39(1):136-14016杨振乾,张旭东,王子城,高文莉,周惠君,周进,基于ArdUino单片机的迈克尔逊干涉仪测量改进J实验室研究与探索,2016,56(1):20-2517郑昊,钟志峰,郭吴.基于ArdUinO的蓝牙通信系统设计J.物联网技术,2018,52(1):30-3518程晨.Arduino开发实战指南M.南京:机械工业出版社,2016.5:50-7519于欣龙,郭浩赞.硬件开源电子设计平台:爱上ArdUinOM.北京:人民邮电出版社,2015.5:60-7520唐乐.Arduino机器人制作指南M.北京:科学出版社,2017.9:30
40、-105附录1舵机及DS3231参数有关技术参数说明如下:SG90舵机参数:尺寸:21.5mmXll.8mmX22.7mm重量:9克(1kg=l公斤=2斤)无负载速度:0.12秒/60度(4.8V)0.002s度堵转扭矩:L2-1.4公斤/厘米(4.8V)使用温度:-30+60摄氏度死区设定:7us(7MHZ)工作电压:4.8V-6V位置等级:1024级脉冲控制精度为2usDS3231特性参数:精度范围:0至+40范围内精度为2ppm-40C至+85范围内精度为3.5ppm工作温度范围商用级:0至+70工业级:-40C至+85接口:高速(40OkHZ)12C工作电压:3.3V数字温度传感器输出
41、:精度为3附录2源程序清单L光调节0、180度的位置。调节到位后,再调节90度位置左右悬臂舵机的0或180度位置,数字增加,左侧舵机逆时针调整,右侧舵机顺时针调整/【此数值可能需要调节】#defineSERVOLEFTNULL2050数值减小,顺时针旋转,加大则逆时针旋转2050【此数值可能需要调节】#defineSERVORIGHTNULL1080数值减小,顺时针旋转,加大则逆时针旋转1050/2.调节到位0、180,再调节下面参数左右悬臂蛇机的90度位置,数字增加,左侧舵机顺时针调整,右侧舵机逆时针调整/【此数值可能需要调节】#defineSERVOFAKTORLEFT650数值加大,顺时
42、针旋转,减小则逆时针旋转630/【此数值可能需要调节】#defineSERVOFAKTORRIGHT605数值减小,顺时针旋转,加大则逆时针旋转605升举舵机的3个角度/【此数值可能需要调节】# defineLIFTO1800落笔写字OndraWingSUrfaCe# defineLIFT12000写字时抬臂动作betweennumbers# defineLlFT22200高抬笔架goingtowardssweeper/【此数值可能需要调节】1/11111111111t调试成功后,将以上代码复制到主程序IUlIllIII以上参数,请运行调试程序plotclock,调整好位置后,将数据复制过来/
43、笔擦的坐标位置,如不能对准笔擦可以微调单位毫米intrubbcrx=72,rubbery=46;/【此数值可能需要调节】三只舵机的接口号# defineSERVOPINLIFT2抬臂舵机# defineSERVOPINLEFT3左臂蛇机# defineSERVOPINRIGHT4右臂舵机速度数字越小越慢,太快了容易抖10002000#defineLIFTSPEED1500/1悬臂的长度,根据图纸测量,无需改变#defineL135#defineL257.2#defineL314.2/1左右舵机轴心的位置,根据图纸测量,无需改变#defineOlX22#defineOIY-25#defineO2
44、X47#define02Y-25需要的库函数#include#inc!ude#include#includeLiquidCrystal_I2Clcd(0x27,16,2);/settheLCDaddressto0x27and0x3ffora16charsand2linedisplay时钟模块,如果没有时钟模块,请用另一个程序DS323IClock;boolhl2;boolPM;intservoLift=LIFT2;Servoservol;/Servoservo2;/Servoservo3;/volatiledoubleIastX=rubberx;volatiledoubleIastY=rubb
45、ery;intlastmin=0;voidsetup(Wire.begin();cd.inil();/initializetheledled.backlight();led.setCursor(0,0);lcd.print(,time:);/第一次运行请设置时间,设置成功后请删除此行代码,或者如下格式注释掉Clock.setMinute(9);/设置分钟Clock.setHour(16);设置小时第一次运行请设置时间,设置成功后请删除此行代码设置一个模拟时间,(小时,分钟,后面全填0)如果此句编译错误,请将文件包内的IibrarieS库放到ArdUino文件夹内,具体操作办法见说明文档Serv
46、oLattach(SERVOPINLIFT);/初始化抬臂舵机IiftingSerVOservo2.attach(SERVOPINLEFT);/初始化左臂舵机Ieftservoservo3.attach(SERVOPINRIGHT);/初始化右臂舵机rhlservoIift;/隔抬笔drawTo(rubberx,rubbery);/停留在笔擦位置delay(1000);voidloop)(intminute,hour;minute=Clock.getMinute();hour=Clock.getHour(h12,PM);/读取时间lcd.setCursor(5,0);led.print(hour);lcd.print(:);lcd.prini(minute);inti=O;下面代码任选一行,进行不同模式的书写/if(last_min!=minute)/每分钟书写一次时间/if(1)反复不间断的擦写模式if(last.mi